Read time: 8 minutes. You know how your product is tested today. Claude Code access helps; not required.
Stage-gate QA at the end of a phase cannot keep up with agents writing most of the code. In this loop, quality moves into the work: acceptance criteria are written into the spec before code, Claude runs the tests after every step and cannot report done without them, a fresh-context verifier re-checks, the AI review checks the diff against the spec, and evals regression-test Claude’s own configuration. Your expertise moves from executing test cycles to defining what “acceptable” means and making sure the checks stay sharp.
| Stage | Your contribution | How |
|—|—|—|
| 2 Design | Acceptance criteria that are observable and testable | Review Spec: PRs; comment on ## Acceptance criteria. Each AC becomes a test in the plan’s “Proof”. |
| 3 Build | The proof section names the tests that demonstrate each AC | Review plan.md “Proof” in the PR; ask for missing negative and boundary cases. |
| 4 Test | The one-command check Claude runs (commands.test) is complete and exits non-zero on failure | Own the test targets with the platform engineer; list them in sdlc.config.json and CLAUDE.md. |
| 4 Test | Bug reports become failing tests first | Report bugs with a reproduction; the engineer runs /sdlc:verify --fix, which commits the failing test before any fix. |
| 4 Test | Evals: real tasks with deterministic checks that guard the agent configuration | /sdlc:eval-add <PR or incident>; review evals/cases/*.json; keep 20–50 live cases. |
| 5 Deploy | The review policy’s Compliance pass checks spec coverage | Suggest changes to REVIEW.md when review misses what you would have caught. |
| 6 Maintain | Every production incident becomes an eval | /sdlc:eval-add <incident id> after the fix ships. |
/sdlc:status what is in flight and where
/sdlc:verify run the configured checks and paste the proof
/sdlc:verify --ui <mock> screenshot loop against the approved design
/sdlc:eval-add <PR | incident> turn a case into a permanent eval
/sdlc:review <PR> run the REVIEW.md passes locally (findings only)
Good: “For each of the four claim states, the panel renders the matching pill and next-step text.” Good: “A customer requesting another customer’s claim status receives 403.” Weak: “Status is shown correctly.” (not observable, no boundary)
{ "name": "status-endpoint-403-for-other-customer",
"prompt": "Add GET /claims/{id}/status behind existing auth per sdlc/changes/<id>/spec.md.",
"allowed_tools": "Read,Edit,Write,Grep,Glob,Bash(make test)",
"checks": [ { "type": "command", "run": "make test", "expect_exit": 0 },
{ "type": "file_contains", "path": "claims-api/routes/status.py", "pattern": "require_auth" },
{ "type": "no_changes", "globs": ["tests/**"] } ] }
The suite runs nightly and on any change to CLAUDE.md, .claude/**, REVIEW.md or sdlc.config.json; a
drop below the threshold blocks that change. As models improve, retire cases that stop discriminating
("retired": true) and add new ones from real work.
Decide what acceptable means, in observable terms. Judge whether a test proves the criterion or merely passes.
Run manual regression cycles at phase boundaries, or re-test what the toolchain already proved: the PR carries the literal test output, the verifier’s report, and the screenshot.
/sdlc:metrics is run by your platform engineer or leadership; ask them for: first-pass CI success for agent
changes rising; review time per PR falling; regressions caught in CI outnumbering those found in production;
incident → eval time shrinking.