design-md
Skill1 starsChanged 52 days agoMITView on GitHub
Design-system-first workflow for visual and UI work. Establishes a DESIGN.md token contract at the project root — adapted from a bundled library of 74 real production design systems (Linear, Stripe, Vercel, Apple, Notion, Supabase, Figma, Airbnb, Nike, Ferrari, WIRED and more) — then builds every screen strictly from those tokens, with WCAG contrast validation and a drift audit. Use this whenever building, restyling, or theming any interface: landing pages, marketing sites, dashboards, web or mobile apps, component libraries, design systems, themes, "make this look better", "give it a fresh coat of paint", choosing colors or fonts or spacing — even when the user never says the word "design". Also use whenever a DESIGN.md already exists in the repo, so new work matches what is already there. Not for API, database, or system-architecture design.
65 other projects use a version of this.
Adopted by
Most recently taken up by
- rakaarwaky/agents-arwakytheir own version, first seen Nov 8, 2026
- informaticolorenzo/skill-maestra-publictheir own version, first seen Nov 8, 2026
- ashleysbrain/skillstheir own version, first seen Nov 8, 2026
- pietz/skillstheir own version, first seen Nov 8, 2026
- alunadev/ald-skillstheir own version, first seen Nov 8, 2026
- figueroaignacio/ignaciofigueroa.devtheir own version, first seen Nov 8, 2026
Used with
Projects with it also use touchdesigner-mcp, teams-meeting-pipeline and 10 more.
Other files people use alongside this one.
Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
john-data-chenSkilltouchdesigner-mcp
Control a running TouchDesigner instance via twozero MCP — create operators, set parameters, wire connections, execute Python, build real-time visuals. 36 native tools.
Also in 7 projects that use this
john-data-chenSkillteams-meeting-pipeline
Operate the Teams meeting summary pipeline via Hermes CLI — summarize meetings, inspect pipeline status, replay jobs, manage Microsoft Graph subscriptions.
Also in 9 projects that use this
aivrarSkillcompetitor-news-monitor
Watch named companies for material news; cited digests.
Also in 6 projects that use this
mae616Skillp5js
p5.js(クリエイティブコーディング)のProcessing由来「コードでスケッチ」思想を軸に、setup/drawループ・座標系・インタラクション・パフォーマンス最適化を整理する。p5.js、Processing、クリエイティブコーディング、ジェネラティブアート、インタラクティブ表現、ビジュアルプログラミング、Canvas描画、パーティクル、フラクタル、ノイズ表現に関する相談で必ず使うこと。ユーザーが「コードでアート」「動くビジュアル」「インタラクティブな描画」と言った場合にも適用する。
Also in 12 projects that use this
jh941213Skilldocs-ci
문서 CI(링크·OpenAPI lint·breaking 게이트·mermaid 검증)나 문서 드리프트 감지(docs.yaml 신선도 검사)를 설치하거나 돌릴 때 사용. 문서 내용 작성은 docs-architecture·docs-interfaces·docs-manuals.
Also in 3 projects that use this
jh941213Skilldocs-interfaces
API·이벤트 인터페이스 문서(OpenAPI·swagger·AsyncAPI 명세, 엔드포인트 레퍼런스, API 구성도·시퀀스, API CHANGELOG)를 만들거나 코드와 맞출 때 사용. 시스템 구성도는 docs-architecture, API 설계 원칙은 api-design-principles.
Also in 3 projects that use this
- +4 more from jh941213
Other versions65 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 65
- loongclaw-ai/loongclaw★ 640same name
- aivrar/portable-hermes-agent★ 239same name
- bifrost-proxy/bifrost★ 168same name
- diodeme/Gold-Band★ 164same name
- jh941213/ADLC-harness★ 125same name
- jh941213/my-cc-harness★ 125same name
- jh941213/my-claude-code-asset★ 125same name
- CaesiumY/ko-design-md★ 75same name
- vobase/vobase★ 60same name
- tdimino/claude-code-minoan★ 41same name
55 more not listed
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository5 other files it gives its agents.
- CLAUDE.mdCLAUDE.md
- data-analysisSkill
- erpnext-frappeSkill
- report-writingSkill
- video-productionSkill
The file
We split this skill into the rules it gives an agent
7 rules. 0 are common, 3 are distinctive, and 4 are very specific to this project.
0
Common
Most of the 56 edited versions we read keep these.
3
Distinctive
This author's own choices. Worth a look.
4
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 42
If one exists, it is the contract — read it in full and build from it.
- Distinctive: line 69
If you land on one by default, that is a signal to look harder.
- Very specific: line 73
Path A — adapt a reference: Read references/catalog.md and pick one or two systems whose *character* matches the direction.
- Very specific: line 89
Path B — author from scratch: When the brief has its own brand, or nothing in the library fits, derive tokens directly.
- Very specific: line 105
Start from assets/DESIGN.template.md — a greyscale structural skeleton with every slot marked REPLACE.
- Very specific: line 110
Write it to the project root as DESIGN.md.
- Distinctive: line 152
When you need a value the system does not have, add it to DESIGN.md and regenerate.
“Common” is measured: kept by at least 6 in 10 of the 56 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Design with a token contract
Machine-generated UI fails in a specific way. Not ugliness — incoherence. The third section introduces a fourth grey, the modal invents a shadow the rest of the page never uses, tomorrow's session picks a different blue, and the result reads as assembled rather than designed.
The fix is to make the design system an artifact instead of a memory. A DESIGN.md at the
project root holds the tokens and the reasoning, gets validated, and gets read by whoever
touches the project next — including you, next session. Every value in the code traces back to
it. That single constraint is most of what separates a system from a pile of CSS.
Match the ceremony to the task. A fresh project that needs a whole visual identity earns the full path below. A single component in a repo that already has a DESIGN.md is Step 0 → Step 5 → Step 7, and that is the whole job. Do not make someone sit through a design exercise to get a button restyled.
If frontend-design also applies, use both. They do different jobs: frontend-design
decides the taste — what makes this page distinctive rather than templated. This skill makes
that decision durable, checkable, and consistent across sessions. Do the aesthetic thinking in
Steps 1–2, then encode the result as tokens.
Step 0 — Is there already a DESIGN.md?
ls DESIGN.md docs/DESIGN.md .design/DESIGN.md 2>/dev/nullIf one exists, it is the contract — read it in full and build from it. Do not quietly redesign around it. If it genuinely does not cover what you need, extend it (Step 6) rather than working outside it. If the user is explicitly asking for a redesign, say what you are replacing before you replace it.
Also worth a look: an existing tailwind.config, theme.ts, globals.css, or brand assets.
A project often already has a de-facto system that nobody wrote down, and reverse-engineering it
into a DESIGN.md is usually the highest-value thing you can do.
Step 1 — Pin the subject, then the direction
Design decisions come from the subject. If the brief does not say what the product is, who it is for, and what the page's single job is, decide it yourself and state your choice in one line — an unpinned brief is what produces generic output.
Then name the direction in plain words before touching any color: the canvas (dark, light, warm, paper), the density (dense and technical, or airy and editorial), the voice (precise, editorial, cinematic, playful, institutional), and what carries the page — photography, product screenshots, type, or data.
Two failure modes to steer around:
- The industry match. A fintech dashboard usually wants a data-dense reference, not another fintech's marketing site. Choose on character, not on category.
- The three AI defaults. Cream
#F4F1EA+ high-contrast serif + terracotta; near-black + one acid-green accent; broadsheet with hairline rules and zero radius. All three are legitimate when the brief asks for them, and all three are what you produce by reflex when it does not. If you land on one by default, that is a signal to look harder.
Step 2 — Source the system
Path A — adapt a reference. Read references/catalog.md and pick one or two systems whose
character matches the direction. Read those files from references/library/<slug>.md in full,
paying most attention to Do's and Don'ts — that section encodes what the designers deliberately
ruled out, which is the part a palette dump can never give you.
Then extract the system logic and leave the identity behind. Keep the structure: how many surface levels, how scarce the accent is, how tracking curves across the type scale, what the system refuses to do. Replace the identity: accent hue, display face, photographic subject. A page wearing another company's exact palette and typeface is a knockoff, not a design — and it is also just worse work, because those choices were made for their brand and not for this one.
python scripts/design_md.py catalog --mode dark
python scripts/design_md.py catalog --grep 'editorial|gradient|mono'Path B — author from scratch. When the brief has its own brand, or nothing in the library
fits, derive tokens directly. references/format.md has the derivation method: surface ladders,
ink steps, accent scarcity, the tracking curve, spacing base.
Either path, decide these five before writing anything:
- Canvas — the anchor surface, and whether the system is single-mode or dual.
- Surface ladder — 3–5 evenly stepped levels, each with exactly one job.
- Accent — one chromatic accent, plus a written rule for where it may appear. Two accents is almost always a mistake.
- Type — display face, text face, optional mono, plus the tracking curve. If a face is proprietary, name the licensed-free substitute now.
- Depth — what carries hierarchy: surface ladder, shadow, or border. Pick one primary.
Step 3 — Write the DESIGN.md
Start from assets/DESIGN.template.md — a greyscale structural skeleton with every slot marked
REPLACE. It is deliberately colorless so it cannot become a default look; you supply the
identity, it supplies the shape. Full schema and section-by-section guidance in
references/format.md.
Write it to the project root as DESIGN.md. Two things people get wrong:
- Quote every value containing
#. YAML reads#as a comment, soprimary: "#5e6ad2"is required andprimary: #5e6ad2 # brandsilently loses data. This is the most common corruption in real DESIGN.md files. components:hold token references, never literals."{colors.primary}", not"#5e6ad2". A literal there means the token has stopped being a single source of truth.
The prose is not decoration. A generator that knows primary: #5e6ad2 but not "used only on the
brand mark, focus ring, and one CTA" will paint the accent across the page. Write the rules down.
Step 4 — Check it before you build
python scripts/design_md.py check DESIGN.mdValidates structure, resolves every {token} reference, and runs WCAG AA contrast on every
component declaring a background/text pair. Base states are errors; interaction states are
warnings; disabled is a note.
Fix what it reports now, while it is one file — not after it is spread across forty components. Expect the accent-on-white CTA to be the failure: mid-tone accents need dark text, not white. Running this across the bundled library finds real WCAG failures in roughly half of it, because marketing sites optimize for brand voltage over contrast. Inheriting a contrast bug from a famous brand is still a contrast bug.
Step 5 — Build only from tokens
Generate the variable layer rather than retyping values:
python scripts/design_md.py export DESIGN.md --format css -o src/styles/tokens.css
python scripts/design_md.py export DESIGN.md --format tailwind -o src/styles/theme.css
python scripts/design_md.py export DESIGN.md --format json -o src/design-tokens.jsonThat file is a generated artifact — never hand-edit it; regenerate when DESIGN.md changes.
references/building.md covers wiring into Tailwind v3/v4, CSS-in-JS, shadcn/ui and React Native,
and the quality floor every direction owes regardless of style (focus-visible, 44px touch targets,
reduced motion, 360px with no horizontal scroll, semantic HTML).
When you need a value the system does not have, add it to DESIGN.md and regenerate. It takes ten seconds, and it is the entire difference between a system and a pile of CSS.
Step 6 — Extend deliberately for product surfaces
Reference systems come from marketing sites, so they document heroes and pricing cards and say nothing about tables, form errors, modals, empty states, or disabled controls. This gap is where generated UI usually falls apart, because each new surface invents its own greys.
Derive from what exists rather than inventing: table headers sit on surface-1, row rules use
hairline, error borders use semantic-danger, disabled text drops to ink-tertiary on an
unchanged surface. references/building.md has the full derivation set. Whatever you add, write
it back into DESIGN.md as a component entry — a system that grows in the code but not in the
document stops being a contract after one session.
Re-run check after extending. When the change is substantial, the official CLI can tell you
whether it regressed anything: npx @google/design.md diff OLD.md DESIGN.md reports token-level
adds, removals and modifications, and exits 1 if the new file has more findings than the old.
Step 7 — Audit, then look again
python scripts/design_md.py audit src/ --design DESIGN.mdReports color literals outside the palette and fonts outside the type system, with file and line. Exit code 1 means drift. Run it before calling the work done, and fix what it finds — either pull the value back to a token, or promote it into DESIGN.md if it earned its place.
Then look at the result, ideally rendered. Ask the two questions that matter: is the accent still scarce, and does every section obey the same spacing rhythm? Those two are where coherence dies first. Cut one decorative element that is not serving the brief.
Reference files
| File | Read it when |
references/catalog.md | Choosing a direction — 74 systems indexed by character, with selection guidance |
references/library/<slug>.md | You picked a reference and want its full system |
references/format.md | Writing or extending a DESIGN.md — full schema, section spec, token derivation |
references/building.md | Wiring tokens into a stack, extending to product surfaces, quality floor |
assets/DESIGN.template.md | Starting a new DESIGN.md |
The library, honestly
The 74 systems in references/library/ come from
VoltAgent/awesome-design-md (MIT) and record
publicly visible CSS values from production sites. Three things to keep straight:
- Typefaces are usually proprietary. Linear Display, Sohne, SF Pro, Airbnb Cereal and most
other custom faces are not licensed for your project. Most files carry a
Note on Font Substitutesnaming a free equivalent — use it. Never ship afont-familynaming a face you have no right to serve. - Logos, wordmarks and brand names are trademarks. Borrowing a system's structure is normal design practice; shipping its wordmark is not.
- Adapt rather than clone when the work is someone's own product. Cloning is the right call for a deliberate pastiche or a study; for a real product it produces a page that belongs to somebody else.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

