ac-writer
Use as the first phase of a wave. Drafts brutal, testable acceptance criteria for a feature. Each AC must be falsifiable by a…
Use after AC and before RED for any wave that ships UI or changes existing behaviour. Audits component APIs against installed dist files, writes a per-route mockup and visual ACs to .wave/dr.md.
Claude Code
$ npx -y skills add Harshvardhan86/claude-wave-plugin --skill design-reviewer --agent claude-code
Codex
$ npx skills add Harshvardhan86/claude-wave-plugin --skill design-reviewer -a codex -y
Cursor
$ npx skills add Harshvardhan86/claude-wave-plugin --skill design-reviewer -a cursor -y
Gemini CLI
$ npx skills add Harshvardhan86/claude-wave-plugin --skill design-reviewer -a gemini-cli -y
GitHub Copilot
$ npx skills add Harshvardhan86/claude-wave-plugin --skill design-reviewer -a github-copilot -y
OpenCode
$ npx skills add Harshvardhan86/claude-wave-plugin --skill design-reviewer -a opencode -y
Windsurf
$ npx skills add Harshvardhan86/claude-wave-plugin --skill design-reviewer -a windsurf -y
name: design-reviewer description: Use after AC and before RED for any wave that ships UI or changes existing behaviour. Audits component APIs against installed dist files, writes a per-route mockup and visual ACs to .wave/dr.md.
You produce the **Design Review document** for the wave. This phase exists because assumed component APIs and theoretical class names cause more visual bugs than any other failure mode.
You run when the wave ships UI **or** changes existing behaviour — the gate is either flag, not `ui` alone. On a behaviour-changing wave with no UI, sections 1 to 4 below are about the surface the changed behaviour is reached through rather than its pixels: which component or endpoint owns the behaviour today, what its observable contract is, what the new one is, and what the observable difference is. Sections 5 and the OPEN-item gate are unchanged. If the wave ran `[BEN]`, read `.wave/ben.md` first: its authority census already names every existing component that decides the same outcome, and those are exactly the surfaces this review must account for.
Past waves burned 20+ iterations on bugs caused by:
You prevent this by reading **what the app actually ships**, not what it should ship.
For every design-system component the wave plans to use:
For each route or screen the wave touches, write a markdown mockup like:
## Route: /settings (dark-mode toggle)
Header
└── ThemeToggle (web component: <x-toggle> from your installed design system)
├── attr: aria-pressed → bound to themeStore.isDark
├── attr: variant → "ghost"
└── slot: default → "Dark mode"
Body
└── <body data-theme={theme}>
└── computed style: background-color: var(--color-surface)Show which component goes where, which attribute holds which value, where role-based conditionals apply.
Convert the AC phase's general visual ACs into **concrete computed-style assertions**, e.g.:
Each visual AC keeps the data-state line it inherits from `.wave/ac.md`. A computed-style assertion that only holds once records of the new kind exist is a different assertion from the one that must hold on the day of the deploy, and the mockup must show both: what the surface renders with records in every new value, and what it renders with none.
These visual ACs are what the RED tests will assert and TEET will verify.
If the design system is missing a needed pattern, the DR document must:
The orchestrator pauses on any OPEN item. You do not paper over.
Write `.wave/dr.md` with sections:
1. Component API audit (per component) 2. Compiled CSS audit (tokens actually available) 3. Per-route mockup 4. Visual ACs (concrete computed-style assertions) 5. Component gaps / open questions
Return to orchestrator with: file path, count of ACs converted, count of OPEN items.
Run your coding agent like an engineering org. Wave-based execution with dedicated sub-agents per phase, computed-style visual verification, no "tsc passes" lies.
Use as the first phase of a wave. Drafts brutal, testable acceptance criteria for a feature. Each AC must be falsifiable by a…
Use at Phase 0.8 of a behaviour-changing wave, before any acceptance criteria are written. Produces the Benefit AC, the authority…
Use after RED is verified failing. Writes the minimum code to make RED tests pass, then verifies on a live stack with Playwright…
Use after DR and before any production code is written. Writes failing tests that encode the AC and DR visual assertions, then…
Use only after the user has approved the GREEN screenshot. Performs True End-to-End Testing across backend, frontend, DB, and…
Use when shipping a feature end-to-end. Routes between the canonical v2 framework (31 phase rows, 18 always and 13 conditional)…
You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…
Ask which skill or flow fits your situation. A router over the skills in this repo.