Brand is a skill file, not a vibe
Coding agents invent a new look every run unless taste lives as a loadable skill. Tokens, type, spacing, forbidden patterns, and a verify gate so the studio stays the same.
We build production GenAI for operations, knowledge, and data. That sentence usually points at schemas, tickets, and remediations. It also points at the screens those systems ship.
When a coding agent builds a dashboard, a portal, or an ops console, the pixels are part of the product surface. Leave taste in a chat tip and the look mutates every session. Put taste in a skill the harness can load, and the studio stays put.
Reusable skills already taught that know-how should travel as a named pack, not as another pasted prompt. Agent Markdown already taught that identity lives in a versioned contract. This note is narrower.
Brand is the skill that stops the agent from inventing a new visual language on every run. Tokens. Type. Spacing. Forbidden patterns. A verify gate that refuses done when the output breaks the book. Taste is infrastructure, not a vibe prompt.
The look changes every run
Watch a coding agent without a brand skill. First pass: indigo gradients, rounded cards, a font that arrived from last week's training cut. Second pass on the same ticket: a darker theme, different radius, a new accent that clashes with the logo. Third pass: someone typed "make it premium" into the chat and the model answered with glassmorphism and a shadow stack nobody asked for.
The floor sees three products. Leadership sees three demos. The design system sees three defects.
That is not a creativity feature. It is a missing contract. Soft taste is soft permissions for pixels. The model invents a look the way it invents a tool name when the allowlist is soft.
Incident desks still only get 75% lower mean time to recovery when a ranked hypothesis arrives with evidence and a person on the last step. Mapping queues still only show up to 60% less time on schema and mapping, and 3× throughput on attribute mapping, when the model proposes inside a scored contract. UI work is the same pattern with different sensors. Without a scored brand contract, you get confident variation. Variation is not a studio.
Taste is infrastructure
A brand skill is a loadable file. Not a mood board screenshot pasted into the system prompt. Not a paragraph that says "match our look and feel." A file the harness can name in the trace, version in a pull request, and refuse when it does not fit the job.
What belongs in that file is boring on purpose.
Tokens stay named. Primary, secondary, accent, surface, text. Hex or semantic references the codebase already uses. If the agent invents #7C5CFF because it felt modern at 11pm, that is a miss. The skill lists the palette the studio already paid to approve.
Type stays locked. Family, scale, weight rules, line height. One display face. One body face. No "try Inter this time." No silent swap to a variable font the product does not ship.
Spacing stays on a grid. 4, 8, 12, 16, 24. Or whatever the estate already uses. Magic numbers outside the scale are defects. Padding that drifts by two pixels across sibling cards is a defect. The skill says so before the model starts guessing.
Forbidden patterns stay fail-closed. No random gradients. No glass stacks unless the book allows them. No drop shadows that invent a third elevation system. No emoji as UI. No new icon set when the product already has one. Write the bans the way you write tool denials. Models continue. Bans stop them.
Components stay referenced. Buttons, inputs, tables, empty states. Point at the real library path or the design-token package. Intent over last month's class names when the package moves. The skill should describe what to load, not freeze yesterday's CSS.
Ownership still matters. A brand skill without an owner is a prompt that will rot.
When a run ships the wrong radius because the skill was wrong, the fix belongs in the pack. Not only in the next chat.
Read the figure the way a reviewer will read a surprise theme change. Left column is the failure mode everyone already knows: random palette, font drift, magic spacing, a new look per run. Center is the brand skill: tokens, type, spacing, forbidden list, version, owner. Right column is still gather, act, verify. Permissions sit under act because the model will ask for a color that is almost on the list. The vibe path never reaches done. The studio path does, and only when the gate opens.
What the brand skill actually locks
A brand skill is not a style essay. It is a short list of surfaces you are willing to defend in a review.
When-to-use stays explicit. Load this skill when the run touches UI, marketing pages, emails, empty states, or any surface a customer will see. Do not load it for pure schema mapping. If the when-to-use line could fit every job, it fits none.
The book stays mechanical. Colors as tokens. Type as scale. Spacing as grid. Components as paths. The agent should not need to "feel" premium. It should follow the book the way it follows a tool schema.
Forbidden stays louder than preferred. Preferred lists get ignored when the model is paid to continue. Forbidden lists with a verify check get respected. Prefer bans that map to a detector: hex outside the palette, font-family not on the allowlist, shadow values outside the elevation scale.
Version and owner stay on the file. Brand changes are deploys. Diff the skill. Review it. Load the tagged file. Write the skill id into the observability rail. A deliberate bump is cheaper than a silent chat tweak that ships the wrong accent on Friday afternoon.
Slim context packs already taught the packing lesson: the expensive model should see what the job needs, not the estate memoir. The brand skill is how you keep the visual contract stable enough to hash. When that durable pack sits behind an in-network gateway with the rest of the workflow, repeated enterprise runs still show about 68% prompt-cache hit, alongside 42% lower token spend and 2.4× useful completions per 1k tokens. Those numbers are a consequence of stable description plus a loop that does not wander. They are not a reason to skip the brand gate.
Verify for brand violations
Gather loads the skill. Act paints under the book. Verify still owes a gate.
What does a brand gate check? Start with the cheap sensors. Diff the generated CSS or design tokens against the allowlist. Fail if a hex is not in the palette. Fail if a font-family string is not on the list. Fail if spacing values fall outside the scale. Fail if a forbidden pattern string shows up (glassmorphism class dumps, emoji UI, third-party icon CDNs the product does not ship).
Screenshot critique can sit later, after the mechanical gate. A vision pass that scores "does this look like our product" is useful. It is not a replacement for token allowlists.
Mechanical first. Taste second. Both before done.
Numeric gates on coding diffs still sit downstream. Poetry in the brand skill does not impress them. They care whether the change passed the contract. The brand skill should name which visual gate applies. The harness should refuse done when that gate stays shut.
Treat live "make it pop" paste the way you treat live prompt paste on agent files. It is a deploy defect. Someone rewrites the accent mid-ticket because the mock felt flat. Someone adds a gradient "just for this screen." The encoder sees a new prefix if that tip lands in the system block. Reviewers see a mystery. The floor sees a product that no longer matches the book.
What breaks when brand is a vibe
The costume studio. The README says design system. The run is a single completion with "keep it on brand" in the system prompt. No file. No version. No gate. It demos well in a screenshot. It does not survive the third ticket.
The orphan brand.md. A file exists. Nobody owns it. Nobody reviews it. When the person who wrote it leaves, the harness loses a quarter of tribal taste in an afternoon.
The silent palette sprawl. Soft "use our colors" lines. Thirty near-matches. Permissions become a story. The rail cannot fingerprint which token set ran.
The unpatched miss. The run ships the wrong radius. Someone fixes the chat. The skill file stays wrong. The next run inherits the same bug. You paid for a lesson and threw it away.
The description that replaces the loop. Leadership celebrates that "agents have taste now." Sensors stay unplugged. Verify stays optional. Trust leaves quietly when the first ungated theme lands on a customer portal.
Each of these is a harness bug wearing a design costume. A larger model will not fix them.
Tradeoffs you actually have to make
Writing an honest brand skill costs design time. Naming forbidden patterns that are real is harder than pasting a cheerful brief. Versioning and review add process.
Floor staff will ask why they cannot "just tweak the look" during a live build. Pay it. The alternative is a visual identity that mutates under you while the bill and the brand stay yours.
Another trade: one mega brand file versus many small ones. A mega-file is easier to advertise. Small files are easier to review, refuse, and patch. Prefer a core tokens skill plus thin surface packs (email, mobile, marketing) when those surfaces diverge. Compose them in the harness when a job needs two books.
A third trade: screenshot critique versus token gates. Critique looks smarter in a demo. Token gates catch more defects per minute on the floor. Start with tokens. Add critique when the mechanical gate is already green.
We still do not know how far a brand gate should go before it needs its own model pass for layout density and hierarchy. The rule that does not move is simpler. If you cannot point to a versioned brand skill, an allowlist of tokens, and a verify step that can stay shut, you do not have studio taste in the harness. You have a vibe with a receipt.
What production demands
Production wants a studio a reviewer can open.
Keep brand in a versioned skill: when-to-use, tokens, type, spacing, forbidden patterns, component refs, owner. Load that file in gather. Paint under the book at act. Check the named brand gate at verify. Write the skill id into the observability rail. When a run fails because the book was wrong, patch the file so the next run inherits the fix.
Refuse costume taste. Prefer descriptions the harness can load beside a real loop. Keep the model swappable. Keep a person on the last step when the write can hurt a customer-facing surface.
Treat live vibe paste as a deploy defect, not as a clever shortcut.
That is the standard we build to at sunrisegenai.com. The model speaks. The harness finishes the job. The brand skill is how the floor knows which studio it was supposed to paint in. If you cannot open the file, name the version, and show the token allowlist hit in the trace, you do not have taste yet. You have another chat that will invent a new look when the tab closes.