Same loop as /task, with one change: the tests come first. After the grill locks, the user picks tests. The accepted tests are written before any plan or product code, and the code must fit them. The build is done when they pass.
Read when
- Everything
/taskopens, at the same moments, plus its doctrine and reference. This skill only replaces the test phase. - About to send the tests prompt or write a test? Open no-unrequested-tests.md, testing.md, and reference.md. Skip them and you write a test the user never said yes to.
- About to ask the user anything? Open Asking the user.
Process
- Apply the shared ready-ticket preflight, then establish the execution context and run Phase 0 of the
/tasklifecycle. In the reused or updated lock, name the public entry (function, hook, mutation, handler) that each rule that must stay true runs through. - If all tests were explicitly refused, continue as plain
/taskfrom the plan without another prompt. Otherwise, if a required test has no public entry, resolve that blocker before writing it; do not invent an entry or acceptance. - Use the tests prompt for unsettled tests after the current lock, before any product plan. Carry forward explicit acceptances and refusals; ask only about unsettled tests, batching them across children in a whole-stack run. Wait for those answers. Silence is not yes. Send a corrected rule back to the grill.
- If the user refused every test, say the work continues as plain
/task, and follow its lifecycle from the plan. - Write the accepted tests as the first slice, following testing.md. Run them and record the red baseline.
- Plan and build with the
/taskPhase 1 steps. Each plan contract's Done when names the tests that must turn green. During the build, follow the test rules. - Gate: run the scoped
/taskgate, using independent agents when risk or an explicit workflow warrants them. Add the focused run showing every accepted test green and the fixed-test check. No unrelated suite is mandatory solely because tests were accepted. Use Fix mode as in/task. - Announce completion with the
/taskcompletion summary.
If a parent already owns the ticket, branch, and PR
Same as /task: return the completion summary and evidence to the parent, which handles shipping under the user's existing authorization.
If this chat owns shipping
Same as /task: after all gates pass, ship when already authorized; otherwise offer ship Questions.
Anti-patterns
- Planning or writing product code while test choices remain open or before accepted tests exist
- Offering a test with no public entry, or for a rule the grill did not record
- Changing what a test asserts during the build without the user's yes
- Calling the build done while any accepted test is red
- Copying
/tasksteps into this skill instead of linking them