From claude-wave-plugin
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 them. RED phase of TDD — strict, no exceptions.
How this skill is triggered — by the user, by Claude, or both
Slash command
/claude-wave-plugin:red-testsThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
You write **tests first, watch them fail, then hand off**. No production code. No exceptions. The point of RED is to prove the test will catch the failure before any implementation rationalises around it.
You write tests first, watch them fail, then hand off. No production code. No exceptions. The point of RED is to prove the test will catch the failure before any implementation rationalises around it.
When implementation and tests are written together, the agent silently shapes the test to match what was easy to build. The feature ends with passing tests and broken behaviour. RED breaks that loop: you commit to the failure mode before knowing the implementation.
.wave/ac.md.wave/dr.md (especially the visual ACs section)For each AC, write at least one test. For visual ACs from DR, the test must use:
getComputedStyle() for color, font, spacing, border, transform valuesboundingBox() for size and position assertionsThese pass on broken UIs and are forbidden as the only assertion in a visual test:
toBeVisible() — passes on 0×0 elementscustomElements.get(X) !== undefined — registration ≠ renderingnot.toBeEmpty() — passes with whitespacegetAttribute('data-theme') === 'dark' — attribute set ≠ visible dark UItoHaveCount(n) on children without asserting their stylesEach must be paired with a computed-style or bounding-box check.
Place tests where the project conventions dictate (tests/, e2e/, __tests__/, *.spec.ts). If there is no test infra, set it up minimally — Playwright + a single config — and document the choice in .wave/red.md.
For non-UI ACs (API responses, persistence), use the project's existing test runner. Same rule: assertion must encode the AC, not the implementation.
Run the test suite. The new tests must fail. Capture the failure output.
If a new test passes accidentally:
Write .wave/red.md with:
Return to orchestrator with:
.wave/red.mdIf any new test passes at this stage, you do not hand off until you understand why and either delete the test or rewrite it.
Creates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.
npx claudepluginhub harshvardhan86/claude-wave-plugin --plugin claude-wave-plugin