mcpField
B
brand-mod

brand-mod

github.com/cofoundyDesign & UI6589 installsUpdated 1w ago
Repository

About brand-mod

Brand Mod turns an existing brand package into a Claude Code mod that applies its visual identity and vocabulary in the terminal and desktop app. It requires preview approval before generating or shipping the plugin.

Key features

  1. 01Reads brand palette, logo, and vocabulary
  2. 02Generates a Claude Code plugin
  3. 03Previews terminal and desktop appearance
  4. 04Uses brand-specific phase and end-of-turn words
  5. 05Validates and tests the plugin optionally

Use cases

  1. 01Adapting Claude Code to a team's brand
  2. 02Reviewing a mod preview before generation
  3. 03Packaging an approved brand mod for a repository

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/cofoundy/brand-skills --skill brand-mod

After installing, type/brand-modin Claude Code to confirm it loaded.

Bundled files

References and scripts installed along with SKILL.md.

method.md
examples/cofoundy/
brand.yaml
mod.json
examples/cofoundy/assets/
logo-light.svg
logo.svg
examples/cofoundy/mod/cofoundy-spinner/
preview.html
README.md
examples/cofoundy/mod/cofoundy-spinner/.claude-plugin/
marketplace.json
plugin.json
examples/cofoundy/mod/cofoundy-spinner/hooks/
brand.ts
hooks.json
register.tsx
spinner.test.tsx
spinner.ts
scripts/
brand-mod.py
template/
preview.html.tmpl
README.md.tmpl
template/.claude-plugin/
plugin.json
template/hooks/
brand.ts
hooks.json
register.tsx
spinner.test.tsx.tmpl
spinner.ts

Details

From the project README

Brand Mod

Branded spinner in the terminal

You turn a finished brand into a Claude Code mod: while Claude works, the terminal and the desktop app show the brand's colors, words and logo. You never ship it blind. You show it in HTML, get approval, then generate.

Before You Start

Load the brand package first. Look for brand.yaml (in ./, ./brand/, or brands/<slug>/); read it, identity.md (palette) and voice.md (vocabulary) from the same folder. No package yet? Run brand-init, then brand-identity and brand-voice. You need at least a primary color and an SVG logo.

Confirm the team uses Claude Code (the terminal, or the Code tab of the desktop app). Mods are Claude Code plugins; they don't run in Cursor, claude.ai chat, or other agents. Ask; don't assume.

Steps

  1. Write mod.json in the brand package (schema in the docstring of scripts/brand-mod.py):
    • primary from identity.md (the script derives an 8-tone scale for the glint), or stops if the brand already has its scale.
    • logo_svg (color logo: desktop app, light theme) and logo_light_svg (light logo: terminal and desktop dark theme) from assets/.
    • words per turn phase and done for the end of turn — see Words below.
    • name, slug and the domain come from brand.yaml; don't repeat them.
  2. Generate: python3 scripts/brand-mod.py <package>/mod.json --media --check Writes <package>/mod/<slug>-spinner/: the installable plugin (also its own marketplace), preview.html, a README.md with the GIFs first, and media/. --media needs agent-browser and ffmpeg; --check runs claude plugin validate and claude plugin test. Both are optional; without rsvg-convert the terminal gets no logo.
  3. Show it: open or share preview.html (two windows: Ghostty and the desktop app, light/dark toggle, "inside herdr" toggle). If your host can publish HTML pages (e.g. Claude Artifacts), publish it and hand over the link.
  4. Approval gate: the owner approves the preview or asks for changes. Changes go into mod.json and you regenerate. Never edit hooks/brand.ts by hand, and never install or ship before approval.
  5. Ship: the generated folder goes into a repo. Its README carries the install steps and the /<slug>-spinner on|off command. Set artifacts.mod: true in brand.yaml.

Words

  • Gerunds the team actually says, in their language: 3–6 per phase (thinking, tool-use, tool-input, responding, requesting). Pull them from voice.md (vocabulary, tone), not from puns on the brand name.
  • Cut anything nobody says. In testing, invented phrases ("herding subagents", "big-braining") and brand puns ("Cofounded") read as forced the moment people saw them.
  • The end of turn reads « for 12s» (the engine adds "for"): past participles work ("Shipped", "Cooked").
  • Have someone on the team read the list before shipping.

What the mod does

  • Terminal: a 2×2 square of three cubes with a turning gap, then the phase word; one glint in the brand scale crosses the square and the word. The logo sits at the right edge in Ghostty or kitty run directly (kitty graphics); in herdr, tmux, zellij or screen there is no logo and no stand-in.
  • Desktop app (Code tab): the logo with a soft SMIL sweep, color logo on light themes and the light one when the OS is dark, and the word in one readable color.
  • End of turn: the brand's done words instead of "Baked".
  • /<slug>-spinner off brings back Claude Code's own spinner and is remembered.

Design decisions and the failures behind them: method.md. Worked example: examples/cofoundy/ (package, mod.json, generated mod with its README).

Related skills

  • brand-identity — the palette and logo direction this skill reads.
  • brand-voice — the vocabulary the spinner words come from.
  • brand-guidelines — add the mod's preview to the brand book's applications section.

Comments

Markdown supported