design.how vs DESIGN.md files

A DESIGN.md file describes a design as YAML tokens plus Markdown prose, in the format Google Stitch opened in April 2026. A design.how system brings that kind of description and the parts it describes: components to import, a skill the agent loads on its own, and a lint that fails on the code. A DESIGN.md tells an agent what the design should be; a design system gives it the parts and checks the result.

Side by side

DESIGN.mddesign.how system
FormatMarkdown prose and YAML tokens. The sections are Overview, Colors, Typography, Layout, Elevation & Depth, Shapes, Components, and Do's and Don'tstokens.css, React components, a SKILL.md, and a Markdown agent view of every docs page
ComponentsDescribes how components are styled. The spec calls this section actively evolvingInstalls 50 to 66 components per system as source you import
How the agent finds itYou point to it, for example with @DESIGN.md in CLAUDE.md. The Claude Code, Codex and Cursor docs don't list it among the files they loadThe theme writes the skill to .claude/skills/ and .agents/skills/, which the agents load on their own
What gets checkednpx @google/design.md lint checks the file, including WCAG contrastThe lint checks your app's code, such as npx eslint -c quartz.eslint.config.mjs .
Ready-made onesawesome-design-md has 84 files, added with npx getdesign add <slug>. Its README calls them inspiration files, not official design systems3: Glaze, Quartz, Lime
LicenseThe spec is Apache-2.0; awesome-design-md is MITMIT

The gap a DESIGN.md leaves

Text is context, not enforcement. Claude Code's own docs say it treats memory files "as context, not enforced configuration", and a DESIGN.md read through CLAUDE.md is the same. One reported failure is specific: the agent reads the tokens, then builds its own button from them instead of using the one in the component library. A Design Systems Collective post describes it under the title "I Gave My Agent CLAUDE.md and DESIGN.md. It Ignored My Entire Component Library."

A design.how system closes that gap in two places. Its skill tells the agent to use a component before writing custom markup, as rule quartz-components-first, and its lint fails when the agent restyles one:

"h-14" restyles the height of <Button>; use its variant and size props, and keep className for placement such as w-full, flex-1, self-start or mt-4.

Using both

  • Keep a DESIGN.md as the brief for your brand: what it should feel like and why. It is easy to read and diff.
  • If you have a brand DESIGN.md and no system yet, build-design-system can take it as the design source you choose and turn it into tokens, components and checks.
  • shadcn's official skill added a DESIGN.md workflow in October 2026 that maps a DESIGN.md's tokens onto a shadcn/ui theme, if you build on shadcn/ui directly.

Sources