Use when reviewing UI for accessibility — WCAG 2.2 AA, keyboard nav, focus, ARIA, contrast, screen-reader semantics — even on 'is this a11y-OK?' or 'mach das barrierefrei'.
日本語の概要は準備中です。原文の説明を表示しています。
Write and maintain DESIGN.md + PRODUCT.md — captures visual decisions and interaction patterns so design tasks stay consistent across sessions without re-scanning past work.
インストールする前に、エージェントに与えられる指示の中身を確認できます。
Solves "design amnesia" — the failure mode where every AI design task re-invents visual patterns (radius, shadows, motion, spacing) and interaction patterns (destructive-action handling, optimistic UI, filter persistence) because the agent has no cross-task memory of decisions already made.
Boundary:
brand-to-tokensextracts primitives (colors, font families → DTCG tokens).existing-ui-auditinventories what exists. This skill captures usage decisions: "we use 8px radius for elevated surfaces", "all destructive actions require typed confirmation". They are complementary, not redundant.
DESIGN.md and PRODUCT.md serve as the project's design memory. To write useful capture documents and to read/apply them effectively, the agent needs full templates with worked examples showing what a well-structured DESIGN.md and PRODUCT.md look like in practice. A condensed version that says "write down your design decisions" produces documents too vague to be useful. The worked examples teach agents both the vocabulary (elevation, motion strategy, destructive-action policy) and the specificity level that makes these documents actionable across tasks.
DESIGN.md — visual-system decisionsCaptures the visual usage decisions (not token primitives) that agents
should apply consistently across all UI tasks in this project. Unlike
.tokens.json (which records what a color value IS), DESIGN.md records
how and when to use it.
Format:
# DESIGN.md — [Project name] visual system
> AI-readable project design memory. Update after each design decision.
> Last updated: [date]
## Design philosophy
One sentence: [density/formality/complexity philosophy]
## Owned components
| Component | Status | Story file | Registry item |
|---|---|---|---|
| [Name] | stable \| experimental \| deprecated | [path to *.stories.tsx] | [registry item name, or —] |
Example: "Information-dense dashboard; optimize for power users, not casual exploration."
## Owned components — filled from the tree, never from memory
The § Owned components table is populated by **globbing `*.stories.tsx`** (and, when a
Storybook manifest is reachable, reading it — see
[`storybook-workshop`](../storybook-workshop/SKILL.md) § MCP path). One row per component
the project owns: its name, its status, its story file, and its registry item where the
library publishes one.
**Never write a row from memory.** A remembered component is exactly the row a reader will
trust and a `ui-component-architect` run will then skip re-checking — an inventory that is
wrong in the direction of "we already have this" causes the duplicate it exists to prevent.
A component with no story file gets a row with an empty story cell, not an omission: absent
from the table reads as "does not exist".
`deprecated` rows stay in the table. Deleting one loses the only durable record that the
component should not be reached for again.
## Visual system
### Elevation and radius
- Elevated surfaces (modals, sheets, dropdowns): [X]px radius, [shadow-spec]
- Inline elements (cards, chips): [X]px radius
- Buttons: [X]px radius
### Shadows
- Elevated: [box-shadow value]
- Floating (tooltips, popovers): [box-shadow value]
- None (flat cards): [confirm]
### Motion
- Overlays and modals: [spring / easing spec + duration]
- Micro-interactions (button feedback, toggles): [duration + easing]
- Page transitions: [strategy or "none"]
### Spacing
- Base unit: [X]px
- Card padding: [spec]
- Section gap: [spec]
- Tight grouping: [spec]
### Color usage
- Primary action: [token name]
- Destructive: [token name]
- Surface hierarchy: [primary bg → secondary bg → elevated bg]
## Taste Dials
Three 1–10 dials that tune generation. Absent = unset (design-intelligence
infers from the brief via its Dial Inference Table). One-line rationale each.
- Variance: [1–10] — [why; 1 = perfectly symmetric, 10 = expressive/asymmetric]
- Motion: [1–10] — [why; 1 = static, 10 = cinematic]
- Density: [1–10] — [why; 1 = airy, 10 = packed/data-dense]
## Consistency Locks
Within-project invariants (derived from the confirmed system). A value outside
a declared Lock is off-system; the anti-slop detector flags it (rebuttable).
- Theme Lock: [single | light+dark via prefers-color-scheme] — no mid-surface inversion
- Colour Lock: [one accent family] — [the accent hue]
- Shape Lock: [one corner-radius scale] — [the radius set, e.g. 6/12/16px]
## Stack and conventions
- CSS approach: [Tailwind / CSS modules / styled-components / etc.]
- Component primitives: [shadcn / Radix / Headless UI / custom]
- Icon system: [Phosphor / Heroicons / Lucide / etc.]
PRODUCT.md — cross-feature interaction patternsCaptures interaction decisions that should be consistent across features. Unlike a feature spec (which describes one feature), PRODUCT.md captures patterns that apply everywhere.
Format:
# PRODUCT.md — [Project name] interaction patterns
> AI-readable cross-feature pattern memory. Update when a new pattern is established.
> Last updated: [date]
## Destructive actions
Policy: [typed confirmation ("DELETE") / dialog with verb button / undo toast / etc.]
Example: "All destructive actions require the user to type 'DELETE' or the resource name."
## Mutation feedback
Policy: [optimistic UI + inline undo / loading spinner / success toast / etc.]
Undo window: [N seconds, or "not applicable"]
Example: "Optimistic UI for all mutations; inline undo toast for 5 seconds, then commit."
## Filter and sort persistence
Policy: [URL params / localStorage / session / not persisted]
Restore on load: [yes / no]
## Empty states
Approach: [illustration + CTA / text only / skeleton / etc.]
Example: "Illustration + primary CTA for empty lists; text-only for zero-search-results."
## Error handling
Approach: [inline field errors / toast / error boundary / etc.]
Network errors: [retry + message / fail fast / etc.]
## Navigation and routing
Pattern: [SPA / MPA / hybrid / etc.]
Active state: [how active nav items are marked]
## Mental model
One sentence: [how the product conceptualizes itself to the user]
Example: "Dashboard = control panel for power users, not an exploration space."
DESIGN.md and PRODUCT.md already exist in the project root.existing-ui-audit (if not already done for this session) to inventory existing components, tokens, and conventions → proceed to Step 2.state.ui_audit): dominant
radius values, shadow patterns, spacing conventions, motion patterns.
Fill the DESIGN.md template above with the observed values. Mark
un-observed sections as TBD.TBD.DESIGN.md and PRODUCT.md to the project root.DESIGN.md and PRODUCT.md.A consumer can reverse-engineer an existing site/repo's look-and-feel with any external
static-extraction tool and hand the result to this skill as a design-system.json
artifact. We own the import contract, not the crawler. The artifact is observed, not
authoritative: never write it in silently, and a conflict with a registered brand value is
flagged rather than applied (brand-source-of-truth).
Import contract, the /design-system:import supply path, the five-step procedure and the
two source shapes — read only when an import is requested:
references/import-procedure.md. Full schema:
references/design-system-json.md.
When DESIGN.md or PRODUCT.md is present in the project root:
design-intelligence and fe-design: read DESIGN.md at the
start of any design task — use the captured decisions as project
constraints that override corpus suggestions.ui-component-architect: read DESIGN.md for radius/shadow/motion
conventions before proposing any new component.existing-ui-audit: when a full audit is impractical (large project),
read DESIGN.md as a proxy for "what this project's conventions are".The boundary from brand-to-tokens:
.tokens.json carries primitive values (gray-700 = #374151)When handing a design to implementation, emit a README a developer can build
from without the mockup open. Template only — no vendored values (tokens
come from the consumer's .tokens.json / DESIGN.md):
# <Feature> — implementation handoff
Fidelity: <hi-fi = pixel-recreate the mockup | lo-fi = apply the codebase's
existing design system, mockup is directional only>
## Screens
- <screen>: components used + each component's states (default/hover/active/
disabled/empty/error/loading)
## Interactions
- <interaction>: trigger → result, duration + easing (name the token, not a ms
literal)
## Tokens
- Color / type / spacing / radius: reference DESIGN.md / .tokens.json — do not
inline hex or px
## Done means
- Implementable from this README alone; every state and interaction named.
Fidelity declaration is load-bearing: hi-fi vs lo-fi tells the dev whether to recreate the mockup pixel-for-pixel or apply the existing system — the single most common handoff ambiguity.
When the goal is to extract this repo's design system as a reusable package
artifact (not just DESIGN.md prose), the extraction meets this floor — the
handoff shape emitted alongside design-system.json
(import contract).
What to capture FROM a running project: sources first, SSR fetch second, rendered snapshot only with consumer tooling; record the git SHA. Rationale: snapshot preference order.
DESIGN.md/PRODUCT.md before writing; carry
all existing decisions forward and only add/correct. Losing prior
captured history is worse than capturing nothing..tokens.json. It captures usage decisions ("8px radius on elevated
surfaces"), not primitive values ("gray-700 = #374151"). The
distinction is what makes DESIGN.md actionable..tokens.json — it captures decisions,
not token definitions.On create:
DESIGN.md to the project root with the extracted visual decisions.PRODUCT.md to the project root with the extracted interaction patterns.On update:
まだレビューはありません。使ってみた感想をお寄せください。
概要と使いどころ
Use when reviewing UI for accessibility — WCAG 2.2 AA, keyboard nav, focus, ARIA, contrast, screen-reader semantics — even on 'is this a11y-OK?' or 'mach das barrierefrei'.
日本語の概要は準備中です。原文の説明を表示しています。
Use when defining or auditing the activation event — aha-moment selection, retention correlation, falsifiable definition. Triggers on 'what is our aha moment', 'redefine activation'.
日本語の概要は準備中です。原文の説明を表示しています。
Use when capturing an architectural decision — file naming, next ADR number, Status / Context / Decision / Consequences, index regen; fires even without saying 'ADR'.
日本語の概要は準備中です。原文の説明を表示しています。
Adversarial critique — devil's advocate, stress-test, honest teardown ('poke holes', 'be brutal', 'was hältst du davon'); explicit request only. Routine code or design review → code-review.
日本語の概要は準備中です。原文の説明を表示しています。
Use when reading, creating, or updating agent documentation, module docs, roadmaps, or AGENTS.md. Understands the full .augment/, agents/, and copilot-instructions structure.
日本語の概要は準備中です。原文の説明を表示しています。
Use for an adversarial red-team / blue-team / auditor review of an AI agent's CONFIG + behaviour (rules, skills, MCP, hooks, permissions) — attack-chain → defensive-gap list, not a code audit.
日本語の概要は準備中です。原文の説明を表示しています。