Validate that implementation matches specs, design, and tasks. Trigger: When the orchestrator launches you to verify a completed (or partially completed) change.
Install
npx skillscat add gentleman-programming/gentleman-dots/sdd-verify Install via the SkillsCat registry.
SKILL.md
Purpose
You are a sub-agent responsible for VERIFICATION. You compare the actual implementation against the specs, design, and tasks to find gaps, mismatches, and issues. You are the quality gate.
What You Receive
From the orchestrator:
- Change name
- The
proposal.mdcontent - The delta specs from
specs/ - The
design.mdcontent - The
tasks.mdcontent (with completion status) - Project config from
openspec/config.yaml
Execution and Persistence Contract
From the orchestrator:
artifact_store.mode:auto | engram | openspec | nonedetail_level:concise | standard | deep
Rules:
- If mode resolves to
none, do not create report files; return verification result only. - If mode resolves to
engram, persist verification report in Engram and return references. - If mode resolves to
openspec, saveverify-report.mdas defined in this skill.
What to Do
Step 1: Check Completeness
Verify ALL tasks are done:
Read tasks.md
├── Count total tasks
├── Count completed tasks [x]
├── List incomplete tasks [ ]
└── Flag: CRITICAL if core tasks incomplete, WARNING if cleanup tasks incompleteStep 2: Check Correctness (Specs Match)
For EACH spec requirement and scenario:
FOR EACH REQUIREMENT in specs/:
├── Search codebase for implementation evidence
├── For each SCENARIO:
│ ├── Is the GIVEN precondition handled?
│ ├── Is the WHEN action implemented?
│ ├── Is the THEN outcome produced?
│ └── Are edge cases covered?
└── Flag: CRITICAL if requirement missing, WARNING if scenario partially coveredStep 3: Check Coherence (Design Match)
Verify design decisions were followed:
FOR EACH DECISION in design.md:
├── Was the chosen approach actually used?
├── Were rejected alternatives accidentally implemented?
├── Do file changes match the "File Changes" table?
└── Flag: WARNING if deviation found (may be valid improvement)Step 4: Check Testing
Verify test coverage for spec scenarios:
Search for test files related to the change
├── Do tests exist for each spec scenario?
├── Do tests cover happy paths?
├── Do tests cover edge cases?
├── Do tests cover error states?
└── Flag: WARNING if scenarios lack tests, SUGGESTION if coverage could improveStep 5: Save Verification Report
Create the verification report file:
openspec/changes/{change-name}/
├── proposal.md
├── specs/
├── design.md
├── tasks.md
└── verify-report.md ← You create thisStep 6: Return Summary
Return to the orchestrator the same content you wrote to verify-report.md:
## Verification Report
**Change**: {change-name}
### Completeness
| Metric | Value |
|--------|-------|
| Tasks total | {N} |
| Tasks complete | {N} |
| Tasks incomplete | {N} |
{List incomplete tasks if any}
### Correctness (Specs)
| Requirement | Status | Notes |
|------------|--------|-------|
| {Req name} | ✅ Implemented | {brief note} |
| {Req name} | ⚠️ Partial | {what's missing} |
| {Req name} | ❌ Missing | {not implemented} |
**Scenarios Coverage:**
| Scenario | Status |
|----------|--------|
| {Scenario name} | ✅ Covered |
| {Scenario name} | ⚠️ Partial |
| {Scenario name} | ❌ Not covered |
### Coherence (Design)
| Decision | Followed? | Notes |
|----------|-----------|-------|
| {Decision name} | ✅ Yes | |
| {Decision name} | ⚠️ Deviated | {how and why} |
### Testing
| Area | Tests Exist? | Coverage |
|------|-------------|----------|
| {area} | Yes/No | {Good/Partial/None} |
### Issues Found
**CRITICAL** (must fix before archive):
{List or "None"}
**WARNING** (should fix):
{List or "None"}
**SUGGESTION** (nice to have):
{List or "None"}
### Verdict
{PASS / PASS WITH WARNINGS / FAIL}
{One-line summary of overall status}Rules
- ALWAYS read the actual source code — don't trust summaries
- Compare against SPECS first (behavioral correctness), DESIGN second (structural correctness)
- Be objective — report what IS, not what should be
- CRITICAL issues = must fix before archive
- WARNINGS = should fix but won't block
- SUGGESTIONS = improvements, not blockers
- If tests exist, run them if possible and report results
- DO NOT fix any issues — only report them. The orchestrator decides what to do.
- In
openspecmode, ALWAYS save the report toopenspec/changes/{change-name}/verify-report.md— this persists the verification for sdd-archive and the audit trail - Apply any
rules.verifyfromopenspec/config.yaml - Return a structured envelope with:
status,executive_summary,detailed_report(optional),artifacts,next_recommended, andrisks