Skip to content
Back to skills

Brand

ASecurity

Use to establish or audit a product's brand so the factory's output looks intentional, not template — when a ticket asks to "create a brand", "define the design system / visual identity / palette / typography", or when delivered UI looks generic and needs a deliberate direction. Detects existing brand and extends it in its own idiom, or commits to one specific direction (palette, type pairing, voice) and writes a BRAND.md. Invoke whenever the factory needs a design foundation before building UI.

  • 2 stars
  • 0 votes
  • 0 copies
  • 3 views
  • Added September 5, 2026
ai-agentsgofrontend

Security analysis

A100/100

Pro scans all 3 files and shows the line behind each finding

Scanned September 29, 2026

npx -y skills add tmj-90/gaffer --skill brand --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Brand?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Brand
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/tmj-90-brand/badge)](https://www.skillsdirectory.com/skills/tmj-90-brand)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: brand
description: Use to establish or audit a product's brand so the factory's output looks intentional, not template — when a ticket asks to "create a brand", "define the design system / visual identity / palette / typography", or when delivered UI looks generic and needs a deliberate direction. Detects existing brand and extends it in its own idiom, or commits to one specific direction (palette, type pairing, voice) and writes a BRAND.md. Invoke whenever the factory needs a design foundation before building UI.
stack: []
area: frontend
---

# Establish or audit the brand

A factory that ships UI without a brand ships templates. This skill gives the product a
**specific** visual and verbal identity — or audits and extends the one it has — and
writes it down in a form delivery agents can consume: `BRAND.md` plus tokens. It owns
identity (direction, palette, type pairing, voice). The token *structure* belongs to the
`design-system` skill; surface execution to the `frontend-design` skill.

| Depth | Reference |
|-------|-----------|
| Palette tiers, `oklch` tokens, contrast, type pairing and fluid scale | `references/color-and-typography.md` |
| Voice spectrums, traits, messaging hierarchy, consistency checklist | `references/voice-and-messaging.md` |

## Steps

1. **Detect.** Call `search_lore` for brand, positioning, voice and design ADRs. In the
   repo look for `BRAND.md`, `DESIGN.md`, token files (`*.tokens.json`, `tokens.css`,
   `theme.ts`), a `:root` block of custom properties, logo assets, and marketing copy.
   Read the product's README and the ticket for audience and purpose. Decide: does a
   brand exist?
2. **Brand exists → audit and extend in its idiom.** Do not replace it with your taste.
   - Score it against the required qualities (step 4) and the banned list below; name
     each gap with the file and value.
   - Measure every text/background pair the brand uses, in every theme, against WCAG
     contrast (4.5:1 body, 3:1 large text and UI) — compute the ratio; `oklch` lightness
     is not a contrast ratio. A brand colour that fails as text gets a darker text-safe
     variant, not a waiver.
   - Fill gaps in the existing direction: hover/active steps, a missing surface tier, a
     dark variant, a text-safe accent, missing semantic roles.
3. **No brand → commit to one direction** and write why it fits this product and
   audience: editorial/magazine, Swiss/International, neo-brutalism, bento, glassmorphism
   with real depth, light or dark luxury, retro-futurism. "Clean minimal" is not a
   direction; dark mode is chosen for the users, not by habit. Then define:
   - **Palette** as `oklch` tokens with a stated job per colour: surfaces (at least two
     tiers), text (primary, muted), accent, and the semantic roles success / warning /
     danger / info — each with a text-safe variant where the fill colour fails as text.
   - **Type pairing** — display + text families with a reason (and mono if the product
     shows code or data), a `clamp()` fluid scale, and a loading plan: self-hosted,
     subset, one critical weight preloaded, metric-matched fallback.
   - **Voice** — audience, the one-line promise, 3–5 voice traits each with a "we say / we
     don't say" pair, and how voice shifts in errors and empty states.
4. **Check the required qualities.** The brand must let delivered UI show at least four of
   the ten qualities listed in the `frontend-design` skill (scale hierarchy, spacing
   rhythm, depth, typographic character, semantic colour, designed states, composition,
   atmosphere, clarifying motion, data-viz in the system). Name the four-plus in
   `BRAND.md`.
5. **Write the artifacts.** `BRAND.md`: direction and rationale, palette table (token,
   value, job, contrast result), type pairing and scale, voice, qualities delivered, open
   questions. When the work is visual, a token file in the repo's format (DTCG JSON or
   CSS custom properties — see the `design-system` skill), for example:

   ```css
   :root {
     --color-surface: oklch(98% 0.01 95);
     --color-text: oklch(22% 0.02 265);
     --color-accent: oklch(64% 0.19 28); /* fill only; text uses --color-accent-text */
     --color-accent-text: oklch(50% 0.19 28);
     --text-display: clamp(2.5rem, 1rem + 6vw, 6rem);
     --text-base: clamp(1rem, 0.94rem + 0.3vw, 1.125rem);
     --ease-out-expo: cubic-bezier(0.16, 1, 0.3, 1);
   }
   ```

6. **Flag, don't invent, unknown strategy.** If positioning or audience is genuinely
   undecided and the ticket does not settle it, do not fabricate one. As a delivery skill,
   `mark_ticket_blocked` with the specific question; as a lore seed, `suggest_lore` the
   brand with the open questions named.
7. **Land it.** As a delivery skill (you are on the ticket's worktree branch — the
   `create-branch` skill verifies), commit, record per-AC evidence with the
   `record-evidence` skill (the `BRAND.md` diff, contrast table, qualities list), then
   stop; the runner submits for review. As a lore seed, `suggest_lore` the brand; it
   stays a suggestion until a human ratifies it.

## Banned (an audit must catch these)

- Default card grids with uniform spacing and no hierarchy.
- The centred headline + gradient-blob hero with a generic CTA.
- Unmodified library/Tailwind/shadcn defaults passed off as finished design.
- Identical radius, spacing and shadow on every component.
- Grey-on-white with one decorative accent colour.
- Default font stacks with no stated reason; more than two families without a reason.
- An accent colour used for body-size text when it fails 4.5:1.
- Reflexive dark mode chosen by habit rather than fit.

## Done when

`BRAND.md` states one direction with its rationale; every palette pair has a measured
contrast result that passes in every theme; the type pairing, scale and loading plan are
defined; voice has traits with examples; four or more required qualities are named;
open strategic questions are listed rather than guessed; tokens exist in the repo's
format.

## Rules

- Commit to a direction and state why; never "clean minimal".
- Tokens, not literals, so delivery agents reuse them.
- Extend an existing brand in its idiom; never overwrite it with preference.
- Motion tokens are for `transform`/`opacity`; never bake layout-bound animation into the
  system.
- Unknown strategy is a named open question, never an invented answer.

Files in this skill

  • SKILL.md7.1 KB
  • references/color-and-typography.md3.1 KB
  • references/voice-and-messaging.md2.7 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.