← ClaudeAtlas

definition-of-done-validatorlisted

Verify that every acceptance criterion declared in a feature spec has at least one corresponding test, and that business workflow tests exist for personal projects ([Project A], [Project B]). Use this skill before opening a PR, before promoting a branch from dev to staging, when the user asks "is this done", "did I cover all the acceptance criteria", "are the tests sufficient", or as a final gate after the implementation phase. Refuses to approve a PR if any criterion is uncovered.
Xipher-Labs/walter-os · ★ 5 · AI & Automation · score 67
Install: claude install-skill Xipher-Labs/walter-os
# Definition of Done Validator The check that prevents the classic "tests pass but the feature is wrong" trap. Bridges spec to tests. Runs as the final gate before PR creation. ## What "done" means in Walter-OS A task is done only when: 1. The spec at `docs/specs/<slug>.md` declares acceptance criteria. 2. Every criterion has ≥1 test that demonstrably verifies it. 3. For personal projects in regulated domains ([Project A], [Project B]), a business-workflow test exists in `tests/business/<project>/`. 4. All tests pass. This skill validates 1–3. The test runner validates 4. ## Spec format expected Specs declare criteria in a parseable section: ```markdown ## Acceptance Criteria - [AC-1] Logged-in user can submit a tender bid via the dashboard. - [AC-2] Bids submitted within 60s of deadline are accepted; later bids rejected with code TENDER_CLOSED. - [AC-3] Each bid generates a Solana transaction containing the bid hash; tx signature stored in `bid.tx_sig`. - [AC-4] Audit log contains: timestamp, user_id, tender_id, bid_hash, tx_sig. ``` Format rules: - Each criterion on its own line, prefixed `- [AC-N]`. - IDs unique within the spec (not globally). - Stated as observable behavior, not implementation. - Bad: "use the `submitBid()` function" — that's how, not what. - Good: "user can submit a bid; system records it" — observable. ## Coverage mapping Tests declare which AC they cover via marker comments: ```typescript // tests/tender-submission.test.ts describe('ten