Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Plan structure validation, phase completeness checks, reference integrity verification, and artifact existence confirmation. Provides the structured verification layer ensuring GSD artifacts are well-formed and complete.
.claude/skills/a5c-ai-verification-suite/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-08 | ✗→✓ | ▲ Improved | 74% | 0% |
| case-10 | ✗→✓ | ▲ Improved | 137% | 0% |
| case-11 | ✗→✓ | ▲ Improved | 91% | 0% |
| case-13 | ✗→✓ | ▲ Improved | 50% | 0% |
| case-16 | ✗→✓ | ▲ Improved | 76% | 0% |
.planning/ directory healthy?This corresponds to the original lib/verify.cjs module and the verification patterns in references/verification-patterns.md.
Validate a PLAN.md file for structural correctness:
Checks:
[PASS] Frontmatter present with required fields (status, phase, wave, task_count)
[PASS] XML task blocks present and well-formed
[PASS] Each task has <task>, <context>, <acceptance_criteria> elements
[PASS] Task count matches frontmatter task_count
[FAIL] Task 3 missing <acceptance_criteria> element
[WARN] No depends_on field in frontmatter (optional but recommended)XML task format:
xml<task id="1" title="Implement login endpoint"> <context> Build POST /api/auth/login endpoint with email/password validation. </context> <acceptance_criteria> - Endpoint accepts POST with email and password - Returns JWT token on success - Returns 401 on invalid credentials - Rate limits to 5 attempts per minute </acceptance_criteria> </task>
Verify a phase has all expected artifacts:
Phase 72 completeness:
[PASS] PLAN-1.md exists and status=executed
[PASS] PLAN-2.md exists and status=executed
[PASS] SUMMARY.md exists with commits and files lists
[PASS] STATE.md updated with phase 72 in completed_phases
[FAIL] VERIFICATION.md missing (verification not run)
[WARN] No CONTEXT.md (discuss-phase was skipped)
Completeness: 4/6 checks passed (67%)
Required for completion: VERIFICATION.md must be createdCheck that all file references in GSD artifacts are valid:
Reference integrity scan:
.planning/ROADMAP.md
[PASS] Phase 72 directory exists: .planning/phase-72/
[PASS] Phase 73 directory exists: .planning/phase-73/
.planning/phase-72/PLAN-1.md
[PASS] Referenced file src/auth/oauth.ts exists
[PASS] Referenced file src/auth/tokens.ts exists
[FAIL] Referenced file src/auth/middleware.ts does NOT exist
.planning/STATE.md
[PASS] Current phase 72 exists in ROADMAP.md
[PASS] All completed_phases exist in ROADMAP.mdVerify expected outputs from a phase exist:
Phase 72 expected artifacts:
[PASS] src/auth/oauth.ts created (from PLAN-1.md task 1)
[PASS] src/auth/tokens.ts created (from PLAN-1.md task 2)
[PASS] src/middleware/auth.ts created (from PLAN-2.md task 1)
[FAIL] src/auth/__tests__/oauth.test.ts missing (from PLAN-2.md task 3)Map requirements to phase deliverables:
Requirements coverage:
R1 (project scaffolding) -> Phase 70 [completed] -> PASS
R5 (user auth) -> Phase 72 [completed] -> PASS
R7 (REST API) -> Phase 73 [planned] -> PENDING
R12 (admin dashboard) -> NOT MAPPED -> FAIL
Coverage: 12/13 mapped (92%)
Gap: R12 needs a phase assignmentComprehensive health assessment:
.planning/ health check:
[PASS] config.json exists and valid
[PASS] PROJECT.md exists
[PASS] REQUIREMENTS.md exists
[PASS] ROADMAP.md exists
[PASS] STATE.md exists and parseable
[WARN] phase-70/ has no SUMMARY.md (orphaned phase?)
[FAIL] phase-72/PLAN-3.md references non-existent wave 4
[INFO] 2 debug sessions found in debug/
[INFO] 5 quick tasks found in quick/
Health: 5 pass, 1 warn, 1 fail
Recommendation: Run gsd health --fix to repair issuesGenerate comprehensive milestone readiness report:
markdown# Milestone Audit: v1.0 ## Phase Completion | Phase | Status | Plans | Summary | Verification | |-------|--------|-------|---------|--------------| | 70 | verified | 2/2 executed | present | passed | | 71 | verified | 3/3 executed | present | passed | | 72 | completed | 2/2 executed | present | NOT RUN | | 73 | completed | 2/2 executed | present | passed | ## Requirements Coverage 12/13 requirements covered (92%) Gap: R12 (admin dashboard) - not in v1.0 scope ## Integration Points 3 integration points identified, 2 verified ## Audit Result: CONDITIONAL PASS - Phase 72 needs verification - R12 confirmed out of v1.0 scope
For add-tests process, analyze what needs testing:
Phase 72 test coverage:
src/auth/oauth.ts
Functions: loginUser, refreshToken, revokeToken
Existing tests: none
Recommended: unit tests for all 3 functions
src/middleware/auth.ts
Functions: requireAuth, requireRole
Existing tests: none
Recommended: unit tests + integration testsRead to load the plan fileGlob to find all files in the phase directoryRead to check plan statuses in frontmatterGrep to check STATE.md for phase in completed_phasesRead to load each GSD artifactGlob or Bash(ls) to verify each reference existsGlob to inventory all .planning/ contentsplan-phase.js - Validate plan structure after planner generates plansexecute-phase.js - Verify phase completeness after executionverify-work.js - Artifact existence verification during UATaudit-milestone.js - Full milestone audit report generationadd-tests.js - Test coverage analysis for test generationhealth command - Full planning directory health checkjson{ "operation": "validate_plan|check_phase|check_refs|check_artifacts|coverage|health|audit|test_coverage", "status": "pass|fail|warn", "checks": [ { "name": "frontmatter_present", "status": "pass", "detail": "" }, { "name": "xml_tasks_valid", "status": "fail", "detail": "Task 3 missing acceptance_criteria" } ], "summary": { "total": 6, "passed": 4, "failed": 1, "warnings": 1 }, "recommendations": ["Fix Task 3 in PLAN-1.md"] }
| Setting | Default | Description | |---------|---------|-------------| | strictMode | false | Treat warnings as failures | | requireVerification | true | Require VERIFICATION.md for phase completion | | requireContext | false | Require CONTEXT.md for phase completion | | coverageThreshold | 100 | Minimum requirements coverage percentage |
| Error | Cause | Resolution | |-------|-------|------------| | Plan parse error | Malformed XML tasks or YAML frontmatter | Show specific syntax error location | | Phase directory missing | Expected phase directory does not exist | Create directory or update roadmap | | Stale reference | Referenced file was moved or deleted | Update reference or remove | | Coverage gap | Requirement not mapped to any phase | Add phase or update existing phase mapping |
.planning/ directory recursively| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→fail | 27,954 | 4,725 | -83% | 1 | 1 | 0% | 5,474 | 2,507 | -54% | 0 | 0 | — |
case-02 | fail→fail | 8,435 | 5,419 | -36% | 1 | 1 | 0% | 1,769 | 2,509 | +42% | 0 | 0 | — |
case-03 | fail→fail | 10,576 | 4,946 | -53% | 1 | 1 | 0% | 2,055 | 2,532 | +23% | 0 | 0 | — |
case-04 | fail→fail | 4,508 | 3,984 | -12% | 1 | 1 | 0% | 212 | 2,460 | +1060% | 0 | 0 | — |
case-05 | fail→fail | 11,239 | 8,500 | -24% | 1 | 1 | 0% | 2,592 | 3,786 | +46% | 0 | 0 | — |
case-06 | fail→fail | 18,746 | 7,610 | -59% | 1 | 1 | 0% | 3,614 | 3,774 | +4% | 0 | 0 | — |
case-07 | fail→fail | 10,180 | 1,660 | -84% | 1 | 1 | 0% | 1,863 | 2,552 | +37% | 0 | 0 | — |
case-08 | fail→pass | 9,068 | 2,782 | -69% | 1 | 1 | 0% | 1,555 | 2,711 | +74% | 0 | 0 | — |
case-09 | fail→fail | 8,071 | 1,821 | -77% | 1 | 1 | 0% | 1,192 | 2,521 | +111% | 0 | 0 | — |
case-10 | fail→pass | 14,241 | 3,576 | -75% | 1 | 1 | 0% | 1,277 | 3,024 | +137% | 0 | 0 | — |
case-11 | fail→pass | 8,178 | 2,411 | -71% | 1 | 1 | 0% | 1,407 | 2,684 | +91% | 0 | 0 | — |
case-12 | fail→fail | 7,509 | 3,725 | -50% | 1 | 1 | 0% | 1,466 | 2,862 | +95% | 0 | 0 | — |
case-13 | fail→pass | 10,393 | 2,476 | -76% | 1 | 1 | 0% | 1,812 | 2,715 | +50% | 0 | 0 | — |
case-14 | fail→fail | 3,632 | 3,384 | -7% | 1 | 1 | 0% | 558 | 2,877 | +416% | 0 | 0 | — |
case-15 | fail→fail | 6,207 | 1,590 | -74% | 1 | 1 | 0% | 1,189 | 2,458 | +107% | 0 | 0 | — |
case-16 | fail→pass | 8,898 | 2,475 | -72% | 1 | 1 | 0% | 1,550 | 2,734 | +76% | 0 | 0 | — |
case-17 | fail→pass | 8,092 | 2,536 | -69% | 1 | 1 | 0% | 1,459 | 2,620 | +80% | 0 | 0 | — |
case-18 | fail→fail | 9,421 | 4,017 | -57% | 1 | 1 | 0% | 1,608 | 2,970 | +85% | 0 | 0 | — |
case-19 | fail→pass | 10,137 | 2,246 | -78% | 1 | 1 | 0% | 1,911 | 2,616 | +37% | 0 | 0 | — |
case-20 | fail→fail | 6,681 | 3,535 | -47% | 1 | 1 | 0% | 1,091 | 2,890 | +165% | 0 | 0 | — |
case-21 | pass→pass | 6,742 | 2,499 | -63% | 1 | 1 | 0% | 971 | 2,619 | +170% | 0 | 0 | — |
case-22 | fail→pass | 8,815 | 1,508 | -83% | 1 | 1 | 0% | 1,537 | 2,422 | +58% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted, and 18 counted toward the lift figure. The other 4 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +36 percentage points is the difference between those two pass rates over the 18 comparable cases. 1 case got worse with the skill loaded, and it is included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.