DESIGN.md: A format spec for describing visual identity to coding agents

Google Labs released DESIGN.md, a format specification for describing a visual identity to coding agents. The file combines machine-readable design tokens (YAML front matter) with human-readable design rationale (markdown prose). Tokens give agents exact values; prose explains why those values exist and how to apply them.
Format Overview
A DESIGN.md file has two layers delimited by --- fences at the top: YAML front matter for tokens and a markdown body with ## sections. Example excerpt:
---
name: "Heritage"
colors:
primary: "#1A1C1E"
secondary: "#6C7278"
tertiary: "#B8422E"
neutral: "#F7F5F2"
typography:
h1:
fontFamily: "Public Sans"
fontSize: "3rem"
body-md:
fontFamily: "Public Sans"
fontSize: "1rem"
label-caps:
fontFamily: "Space Grotesk"
fontSize: "0.75rem"
rounded:
sm: "4px"
md: "8px"
spacing:
sm: "8px"
md: "16px"The tokens are the normative values. Prose provides context for application.
Key Features
- Token types: Colors (hex sRGB), Typography objects (fontFamily, fontSize, fontWeight, lineHeight, letterSpacing, fontFeature, fontVariation), Dimensions (number+unit), Token references (
{path.to.token}). - Components: Map a name to sub-token properties, e.g.
components.button-primary.backgroundColor: "{colors.tertiary}". - Section order (optional but enforced): Overview, Colors, Typography, Layout & Spacing, Elevation & Depth, Shapes, Components, Do's and Don'ts.
CLI Tools
Validate a DESIGN.md with the linter:
npx @google/design.md lint DESIGN.md
{
"findings": [
{
"severity": "warning",
"path": "components.button-primary",
"message": "textColor (#ffffff) on backgroundColor (#1A1C1E) has contrast ratio 15.42:1 — passes WCAG AA."
}
],
"summary": { "errors": 0, "warnings": 1, "info": 1 }
}Detect regressions between versions:
npx @google/design.md diff DESIGN.md DESIGN-v2.md
{
"tokens": {
"colors": {
"added": ["accent"],
"removed": [],
"modified": ["tertiary"]
},
"typography": { "added": [], "removed": [], "modified": [] }
},
"regression": false
}Use Case
An agent reading the Heritage example will produce a UI with deep ink headlines in Public Sans, a warm limestone background (#F7F5F2), and Boston Clay (#B8422E) call-to-action buttons — all from a single file.
📖 Read the full source: HN AI Agents
👀 See Also

Claude Code Plugin Yoink Replaces Library Dependencies to Reduce Supply Chain Risk
Yoink is a Claude Code plugin that removes complex dependencies by reimplementing only needed functions, using a three-step workflow with /setup, /curate-tests, and /decompose commands. It currently supports Python with TypeScript and Rust support underway.

onWatch: Open-source local API quota tracker with SQLite storage
onWatch is a local-first API quota tracker that stores all data in a local SQLite database with no cloud service, telemetry, or account creation. It's a single binary (~13MB) that runs as a background daemon using <50MB RAM and serves a dashboard on localhost.

Custom llama.cpp Backend Offloads LLM Matrix Multiplication to AMD XDNA2 NPU on Ryzen AI MAX 385
A developer built a custom llama.cpp backend that dispatches GEMM operations directly to the AMD XDNA2 NPU on Ryzen AI MAX 385 (Strix Halo), achieving 43.7 t/s decode at 0.947 J/tok with Meta-Llama-3.1-8B-Instruct Q4_K_M. The NPU decode path saves ~10W versus Vulkan-only while matching decode throughput.

Offload Routine Claude Code Work to Gemma via offload-mcp MCP Server
offload-mcp is a new MCP server that lets Claude offload routine tasks like commit messages and PR summaries to free model APIs (default Gemma via Google GenAI API), saving Claude tokens and running lightweight work without local hardware constraints.