Grok Bots and persistent agents
A coding agent reads the brand while you watch. A Grok Bot keeps working after you leave: across sessions, on routines, on its own. It needs the brand as durable memory, and it needs to know which version a person approved. Agents propose; you approve on the board; every bot reads the approved version.
Set up a bot in three steps
- Connect Typesheet once, for the account. At grok.com/connectors choose New Connector, then Custom, and enter the URL below. Grok opens the sign-in; approve it with your Typesheet account. Every bot on the account can use the connector.
- Add the brand skill. On the brand’s board, open Export and choose Grok Bot skill, or ask any connected agent for it (below). Add it as a Skill on your account. Skills are shared, so every bot uses the same one.
- Give each bot a daily routine that refreshes the brand: “Refresh the acme brand from Typesheet.” The skill says how.
https://typesheet.com/mcpGet the Grok Bot skill for the acme brand from Typesheet.What the skill makes a bot do
- Before it makes any UI, copy, deck, report, video or campaign asset, it calls
get_brand_contextfor the surface it is working on, or uses its cached copy if that is fresher than the limit (a day by default). - It keeps one copy per surface in memory, stamped with the version number, the approval date and when it fetched it, and notes in one line when the version changes.
- It reads the approved version only. It never calls a submit tool.
- Voice and the claims policy apply to every word it writes, whatever it was asked to make. If the brand has neither, it gets a safe default and is told so.
- If Typesheet is unreachable it uses its memory and says the copy may be stale; with nothing in memory, it falls back to the voice, claims and never-list embedded in the skill.
The Brand Keeper pattern
One bot writes. Every other bot reads. A person decides.
- Brand Keeper: one bot with access to the repository that holds the design system. On a routine (daily or weekly) it re-extracts with
get_extraction_guide, submits what it finds, callsget_brand_changes, and if anything moved, posts the summary and the board link. Export its skill as Brand Keeper skill, or ask forget_bot_definitionwith rolekeeper. - Consumer bots (design, code, content, marketing): the Grok Bot skill only. They read the approved brand and never write.
- You: open the board. “Changes since version N” lists what the Keeper proposed: each token, component, rule and voice change, from what to what. Approve, and every bot gets the new version on its next refresh. Nothing reaches a consumer bot until you do.
Every bot in the organization reads the same approved version, so there is no drift between them, and the Keeper cannot approve its own proposals: approval exists only on the board.
Surfaces
Pass a surface to get_brand_context and the context is shaped for it:
product: tokens, type, motion, components with props, the rules and voice.marketing,decks,reports: the palette by role, the type hierarchy, that surface’s rules and voice, without the component API.video: the same, plus durations, easings and when motion is allowed.
Every answer carries the visual and verbal never-list (“never invent a second accent color”, “never say leverage”) and says which version it is.
Several brands
An agency or a company with several products keeps each brand separate in one organization. Every tool takes the brand’s slug, and each skill is generated for one brand, so a client’s bot reads only that client. list_brands shows them all with their approved versions.
Files
The same brand exports as files for anything that is not connected: brand.md (voice, claims, never-list, palette, type), design.md (tokens, type, motion, components and UI voice), tokens.json and tokens.css. Each opens with the brand, version and approval date. Export from the board, or with get_export. Every tool and its parameters.