Use this skill for ANY visual / UI / design work on Commonly — picking colors, choosing fonts, styling new v2 components, building HTML mocks, designing marketing pages, or auditing whether a change matches the brand. Triggers on tasks involving v2.css tokens, accent / blue / focus ring / SF font, brand mark / logo, design system, design tokens, agent avatars / role tints, pod / chat / inspector / composer styling, marketing landing or login pages, screenshots / demo polish, "make this look better", "design this", "polish UI", "match the brand", "what's the right color/font/spacing/radius". Sources of truth live at `frontend/design-system/` (tokens.css, README.md, brand mark SVG, preview cards) and `frontend/src/v2/v2.css` (production tokens). Read both before recommending or shipping anything.
96%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
Passed
No findings from the security scan
This skill is a thin pointer — the actual design system lives in the commonly repo at frontend/design-system/. Always read those files when invoked, then apply.
docs/design/signal-identity.md — the identity as a system (Signal, chosen 2026-09-03): five rules, the complete grey ramp, state grammar, component grammar with exact values, copy rules, the process that made it land, how to add a screen. Read this FIRST for anything visual.frontend/design-system/README.md — voice, content rules, visual fundamentals, iconography, layout, animation; § Identity: Signal is the short form of the doc abovefrontend/design-system/tokens.css — the canonical token set as portable CSSfrontend/src/v2/v2.css (top of file, the .v2-root { ... } block) — the production tokens that ship todayvar(--v2-*) — never hardcode hex values in v2 components. If a hex appears in a diff, that's almost always a bug.| File | What it is | Who reads it |
|---|---|---|
frontend/src/v2/v2.css | Production tokens — what actually ships, scoped under .v2-root | The browser |
frontend/design-system/tokens.css | Same tokens as portable --c-* CSS — for HTML mocks, design-review pages, cross-tool skill use | Designers, mocks, this skill |
frontend/design-system/README.md | The system's spec — voice, visual fundamentals, layout (incl. the .v2-root app-shell scroll-containment rule), iconography | Humans + agents during design work |
frontend/design-system/preview/*.html | One-card-per-concept review pages — open in a browser to see live samples | Anyone reviewing the system |
frontend/design-system/assets/commonly-mark.svg | Brand mark — uses currentColor so it inherits the surface | V2NavRail, marketing, login |
Hard rule: when one moves, the other moves in the same PR. If you change a token in v2.css, change it in tokens.css too (and vice versa). If they drift, v2.css is what the user sees but the system has lost its source of truth — fix it immediately.
One colour, two volumes. Cobalt #1d3fd1 is the only accent. Front door (landing, connect, create account, invite): cobalt as BLOCKS. Inside the app: cobalt as MARKS — live dot, agent name in mono, link, focus edge, the 2px ring on the card that needs you. Per docs/design/signal-identity.md §1–3, an open decision card's primary option is cobalt; secondary options are bordered and Other… is cobalt text. Ordinary filled actions use ink #101828; this does not make every action a filled button. Match the screen artboard's control hierarchy (Activity Reply/Open are bordered).
Three faces, one job each. Bricolage Grotesque 700/800 for display (−0.03em), IBM Plex Sans 400/500/600 for body and controls (14/20), IBM Plex Mono 500 for meta (ids, times, counts, status, commands). Self-hosted via @fontsource; the pre-Signal SF-first stack is gone.
Hard edges, no shadows. Radius 4 on controls, rows, chips, avatars (4px squares, never circles); 6 on cards and panels. No shadow anywhere; a pending card is a 2px cobalt ring, not a lift.
No emoji in chrome. Emoji are user-generated content only.
No gradients in chrome. Solid surfaces, only.
Tight letter-spacing on big text. Feature titles -0.03em at weight 850. Body stays at 0.
Sentence case for buttons, nav, section titles. UPPERCASE only for kickers (NOW, LEAD, CURRENT TASK).
Calm motion. 80ms hover, 120ms card hover, 300ms layout. No bounces, no springs, no entrance animations.
v2-layout-invariants.test.ts.frontend/src/v2/v2.css + frontend/design-system/tokens.css in the same commit.frontend/design-system/assets/ and any in-component reference (e.g. inline SVG in V2NavRail.tsx).frontend/design-system/preview/.The design system is meant to evolve. The way to evolve it:
frontend/design-system/preview/*.html in a browser to see it in isolation, plus a v2 page in the app to see it in context.frontend/design-system/tokens.css + lucide icons via CDN. Output static HTML the user can open.var(--v2-*) tokens from v2.css. Match the existing component patterns (V2PodChat, V2PodInspector, V2MessageBubble).frontend/design-system/preview/, then implement against tokens.frontend-design — Anthropic's public design-judgment skill. Pull it alongside this skill for any new surface or redesign work; this skill carries Commonly's tokens and rules, while frontend-design carries the process that stops templated output.Team-Commonly/commonly
931b8ff
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.