design-reviewer
Use after AC and before RED for any wave that ships UI. Performs component API audit against installed dist files, produces per-route mockup, defines visual…
Use as the first phase of a wave. Drafts brutal, testable acceptance criteria for a feature. Each AC must be falsifiable by a real-world test. Output written to .wave/ac.md.
$ npx -y skills add Harshvardhan86/claude-wave-plugin --skill ac-writer --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/ac-writerContext preview
The summary Claude sees to decide when to auto-load this skill.
Use as the first phase of a wave. Drafts brutal, testable acceptance criteria for a feature. Each AC must be falsifiable by a real-world test. Output written to .wave/ac.md.
name: ac-writer description: Use as the first phase of a wave. Drafts brutal, testable acceptance criteria for a feature. Each AC must be falsifiable by a real-world test. Output written to .wave/ac.md.
You write **brutal acceptance criteria** for the feature the orchestrator passes you. "Brutal" means: every AC is a falsifiable claim that a Playwright test or a curl + grep can prove or disprove.
Numbered ACs, each with:
You always include these unless the orchestrator says "non-UI":
1. **Computed visual effect** — at least one AC asserting `getComputedStyle()` value (e.g., `body` background colour after toggle = `rgb(...)`) 2. **Bounding box** — element that should be visible has `boundingBox.width > 0 && height > 0` 3. **Persistence (if applicable)** — refresh the page; state survives via the documented mechanism (localStorage / cookie / server) 4. **Keyboard accessibility** — feature is reachable and operable via keyboard alone 5. **No regression** — list 1–2 nearby features the wave must not break, with the same observable rigour
Before writing any color/token AC, confirm the value comes from the app's *compiled* CSS, not the framework's default palette. Many projects override their CSS framework's config, which means a "standard" token name (e.g. a Tailwind palette colour) may not actually compile. Audit the live `<style>` output, or the project's compiled CSS in `dist/` / `.next/static/css/` / equivalent — never trust theoretical class names.
If the app has *no* existing pattern for a needed visual state:
1. Read the feature description. 2. If a project memory or `CLAUDE.md` exists, scan for project-specific AC conventions (e.g., the project may demand WCAG AA contrast). 3. Draft 5–10 ACs. Fewer is suspicious; more is over-spec. 4. For each AC, write its observable as a one-line pseudocode test (e.g. `expect(getComputedStyle(body).backgroundColor).toBe('rgb(17, 17, 17)')`). 5. Write to `.wave/ac.md` with this structure:
# Acceptance Criteria — <feature> ## AC-1 — <one-line summary> **Trigger:** <action> **Observable:** <measurement> **Test pseudocode:** `<one line>` **Rejects:** <what failure looks like> ## AC-2 — ...
6. Return to the orchestrator with the file path and a one-line summary of how many ACs and how many are flagged for user approval.
Run Claude Code like an engineering org. Wave-based execution with dedicated sub-agents per phase, computed-style visual verification, no "tsc passes" lies.
Repo: Harshvardhan86/claude-wave-plugin
Use after AC and before RED for any wave that ships UI. Performs component API audit against installed dist files, produces per-route mockup, defines visual…
Use after RED is verified failing. Writes the minimum code to make RED tests pass, then verifies on a live stack with Playwright screenshots before any…
Use after DR and before any production code is written. Writes failing tests that encode the AC and DR visual assertions, then proves they fail by running…
Use only after the user has approved the GREEN screenshot. Performs True End-to-End Testing across backend, frontend, DB, and external services with…
Use when shipping a feature end-to-end. Routes between the canonical v2 framework (17 phases + conditional [DR] for UI + optional [CR] gate, max 19 phases) and…