Verify that implemented code meets acceptance criteria from user stories. Use when validating story completion - performs code inspection, test execution, and manual checks against each AC criterion.
This skill inherits all available tools. When active, it can use any tool Claude has access to.
Purpose: Verify implemented code meets acceptance criteria (AC) defined in user stories
Trigger: Called by validation-phase or /audit after code implementation
Input: User stories with AC, implemented files, test suite
Output: {verified, results[], unmet_criteria[]}
For each user story (US-NNN):
- [x] (complete) or - [ ] (incomplete)For each AC in the story:
a. Code Inspection:
b. Test Execution:
__tests__/{filename}.test.{ts,js} or .spec.{ts,js})pnpm test --run {test_file}c. Manual Check Prompts:
For UI/UX or non-automatable criteria:
Compile per-story verification:
{
"story_id": "US-001",
"title": "User Authentication",
"ac_total": 4,
"ac_passed": 3,
"ac_failed": 1,
"ac_results": [
{
"criterion": "User can login with email + password",
"status": "pass",
"method": "test_execution",
"test_file": "src/__tests__/auth.test.ts",
"tests_passed": 2
},
{
"criterion": "Invalid credentials rejected",
"status": "fail",
"method": "test_execution",
"error": "Test 'Invalid credentials' failed: expected 401"
},
{
"criterion": "Login button is visible on mobile",
"status": "pending",
"method": "manual_check",
"prompt_sent": true
}
]
}
VERIFIED (100% pass):
- [x]UNMET (any AC failed):
PARTIAL (manual pending):
| Method | When to Use | Result |
|---|---|---|
| Code Inspection | File/function existence checks | Pass/Fail |
| Test Execution | Automated test suites available | Pass/Fail/Error |
| Manual Check | UI/UX or non-automatable criteria | Yes/No/Skip |
Missing Implementation File:
AC: "User model stores email address"
Method: Code Inspection
Result: FAIL - File 'src/models/User.ts' not found
Action: Return to execution for file creation
Test Failure:
AC: "Invalid password rejected"
Method: Test Execution
Result: FAIL - test 'rejects invalid password' failed
Error: Expected status 401, got 200
Action: Return to execution for code fix
Manual Confirmation Required:
AC: "Login form validation error displays in red"
Method: Manual Check
Prompt: "Verify AC: Login form validation error displays in red"
User Response: "yes" or "no"
Action: Record response, proceed or flag remediation
Success Output:
{
"verified": true,
"status": "complete",
"summary": {
"stories_verified": 5,
"total_ac": 18,
"ac_passed": 18,
"ac_failed": 0,
"verification_time_ms": 12500
},
"results": [
{
"story_id": "US-001",
"ac_total": 4,
"ac_passed": 4,
"ac_failed": 0,
"status": "verified"
}
],
"unmet_criteria": []
}
Failure Output:
{
"verified": false,
"status": "blocked",
"summary": {
"stories_verified": 5,
"total_ac": 18,
"ac_passed": 15,
"ac_failed": 3,
"verification_time_ms": 12500
},
"results": [
{
"story_id": "US-002",
"ac_total": 4,
"ac_passed": 3,
"ac_failed": 1,
"status": "unmet",
"failed_ac": [
{
"criterion": "Password reset email sent within 30 seconds",
"method": "test_execution",
"error": "Test timeout: email not sent"
}
]
}
],
"unmet_criteria": [
"US-002: AC 2 - Password reset email sent within 30 seconds",
"US-003: AC 1 - File upload supports .pdf files",
"US-005: AC 3 - Admin dashboard shows user count"
]
}
Called by:
validation-phase skill (after execution)/audit command (post-implementation)/build command (acceptance validation)Calls:
pnpm test --run)Next step: If verified → proceed to report-phase; If unmet → return to execution-phase
Input Story:
# US-001: User Authentication
## Acceptance Criteria
- [ ] User can login with email + password
- [ ] Invalid credentials rejected with 401 status
- [ ] User session persists after logout + login
- [ ] Login button is visible on mobile (manual check)
## Implementation Status
Test File: src/**tests**/auth.test.ts
Files Modified: src/auth.ts, src/services/AuthService.ts
Verification Process:
1. AC #1: "User can login with email + password"
→ Run src/__tests__/auth.test.ts
→ Test 'login with valid credentials' passes
→ Status: PASS
2. AC #2: "Invalid credentials rejected with 401 status"
→ Run src/__tests__/auth.test.ts
→ Test 'login rejects invalid credentials' passes
→ Status: PASS
3. AC #3: "User session persists after logout + login"
→ Check file: src/services/AuthService.ts exists ✓
→ Run src/__tests__/auth.test.ts
→ Test 'session persists' passes
→ Status: PASS
4. AC #4: "Login button is visible on mobile (manual)"
→ Prompt user: "Verify: Login button visible on mobile?"
→ User confirms: "yes"
→ Status: PASS
Result: ALL AC VERIFIED ✓
Update Story: Status → ✅ Verified, mark all AC checkboxes [x]