CtrlK
BlogDocsLog inGet started
Tessl Logo

sdd-verify

Validate that implementation matches specs, design, and tasks. Trigger: "verify", "verificar", "validate", "check implementation", "quality gate", "sdd verify", "revisar cambio", "/sdd:verify".

Install with Tessl CLI

npx tessl i github:Yoizen/dev-ai-workflow --skill sdd-verify
What are skills?

86

Does it follow best practices?

Validation for skill structure

SKILL.md
Review
Evals

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.md content
  • The delta specs
  • The design.md content
  • The tasks.md content (with completion status)
  • Artifact store mode (engram | openspec | none)

Execution and Persistence Contract

Read and follow skills/_shared/persistence-contract.md for mode resolution rules.

  • If mode is engram: Read and follow skills/_shared/engram-convention.md. Artifact type: verify-report. Retrieve all prior artifacts (proposal, spec, design, tasks, apply-progress) via 2-step recovery.
  • If mode is openspec: Read and follow skills/_shared/openspec-convention.md. Create verify-report.md in the change directory.
  • If mode is none: Return the full verification report inline. Do NOT create any project files.

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 incomplete

Step 2: Detect and Run Automated Checks

This step is MANDATORY — do not skip it. Attempt all checks and report each result.

Step 2a: Detect Commands

Build command detection:
  openspec/config.yaml → rules.verify.build_command
  package.json → "scripts.build"
  Makefile → "build" target
  Otherwise → skip build check

Test command detection:
  openspec/config.yaml → rules.verify.test_command
  openspec/config.yaml → rules.apply.test_command
  package.json → "scripts.test"
  pytest.ini / pyproject.toml → pytest
  Makefile → "test" target
  Otherwise → skip test run

Coverage threshold:
  openspec/config.yaml → rules.verify.coverage_threshold (default: 0 = disabled)

Step 2b: Run Checks

AUTOMATED CHECKS (attempt all — report result for each):
├── Linter: e.g., npm run lint, ruff check, biome check
├── Type checker: e.g., tsc --noEmit, mypy, dotnet build
├── Build: {detected build_command}
├── Tests: {detected test_command} — run ALL tests, not just new ones
└── Coverage: if threshold > 0, check coverage report against threshold

If a command cannot be determined, mark that check as ⏭ Skipped and note why. NEVER mark a check as Skipped just to avoid running it.

Step 3: Check Correctness — Spec Compliance Matrix

For EACH spec requirement and scenario, build a behavioral compliance matrix.

A requirement is COMPLIANT only if ALL of the following are true:

  1. Code evidence exists for the implementation
  2. A test covers this specific scenario
  3. That test PASSED in Step 2b (or tests were not run and evidence is clear from code review)
FOR EACH REQUIREMENT in specs/:
├── Search codebase for implementation evidence
├── Search test files for tests covering each SCENARIO
├── Cross-reference with test results from Step 2b
└── Classify as:
    ✅ COMPLIANT     — implemented + tested + test passed
    ⚠️ PARTIAL       — implemented but test missing or test failed
    ❌ NOT COMPLIANT — not implemented
    ⏭ SKIPPED       — intentionally deferred (must be noted in proposal/tasks)

Step 4: 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 5: Security & Regression Audit

SECURITY AUDIT:
├── Are there hardcoded secrets, keys, or passwords?
├── Is user input validated/sanitized before use?
├── Are new dependencies from trusted sources?
├── Are new API endpoints properly authenticated/authorized?
└── Flag: CRITICAL for security issues, WARNING for best-practice gaps

REGRESSION CHECK:
├── Do existing tests still pass? (from Step 2b full test run)
├── Are there breaking changes to public APIs or interfaces?
├── Do file deletions leave dangling imports/references?
└── Flag: CRITICAL for regressions, WARNING for potential issues

Step 6: Persist Verification Report

  • engram: mem_save with topic_key: sdd/{change-name}/verify-report
  • openspec: Write to openspec/changes/{change-name}/verify-report.md
  • none: Return content inline only

Step 7: Return Summary

## Verification Report

**Change**: {change-name}
**Persistence**: {engram (ID: #{id}) | openspec (path) | none (inline)}

### Completeness
| Metric | Value |
|--------|-------|
| Tasks total | {N} |
| Tasks complete | {N} |
| Tasks incomplete | {N} |

{List incomplete tasks if any}

### Automated Checks
| Check | Result | Details |
|-------|--------|--------|
| Linter | ✅ Pass / ❌ Fail / ⏭ Skipped | {details if failed or reason if skipped} |
| Type Check | ✅ Pass / ❌ Fail / ⏭ Skipped | {details if failed} |
| Build | ✅ Pass / ❌ Fail / ⏭ Skipped | {error details or reason if skipped} |
| Tests | ✅ X passed / ❌ Y failed / ⏭ Skipped | {failing test names or reason if skipped} |
| Coverage | ✅ X% (≥ threshold) / ❌ X% (< threshold) / ⏭ Disabled | |

### Spec Compliance Matrix
| Requirement | Implemented | Tests Exist | Tests Pass | Status |
|------------|-------------|-------------|------------|--------|
| REQ-XXX-001: {name} | ✅ / ❌ | ✅ / ❌ | ✅ / ❌ / ⏭ | ✅ COMPLIANT / ⚠️ PARTIAL / ❌ NOT COMPLIANT |
| REQ-XXX-002: {name} | ✅ / ❌ | ✅ / ❌ | ✅ / ❌ / ⏭ | ... |
| NFR-001: {name} | ✅ / ❌ | ✅ / ❌ | ✅ / ❌ / ⏭ | ... |

**Scenario Coverage:**
| Scenario | Spec Req | Test Exists | Test Passed | Status |
|----------|----------|-------------|-------------|--------|
| {scenario name} | REQ-XXX-001 | ✅ | ✅ | ✅ COMPLIANT |
| {scenario name} | REQ-XXX-002 | ✅ | ❌ | ⚠️ PARTIAL |
| {scenario name} | REQ-XXX-003 | ❌ | ⏭ | ❌ NOT COMPLIANT |

### Coherence (Design)
| Decision | Followed? | Notes |
|----------|-----------|-------|
| {Decision name} | ✅ Yes | |
| {Decision name} | ⚠️ Deviated | {how and why} |

### Security & Regression
| Check | Status | Notes |
|-------|--------|-------|
| Hardcoded secrets | ✅ None / ❌ Found | {details} |
| Input validation | ✅ OK / ⚠️ Gaps | {details} |
| Auth on new endpoints | ✅ OK / ⚠️ Missing | {details} |
| Breaking changes | ✅ None / ⚠️ Found | {details} |
| Dangling references | ✅ None / ⚠️ Found | {details} |

### 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}

Error Recovery

SituationAction
Cannot run automated checks (no test infra)Perform manual code review only; note as limitation; mark all checks ⏭ Skipped with reason
Tests fail but failure is pre-existingMark as WARNING (not CRITICAL); note the test was already failing before this change
Cannot find implementation for a requirementSearch thoroughly (file search + grep); if truly missing, mark ❌ NOT COMPLIANT
Design.md is missingSkip coherence check; focus on spec compliance only
Verify-report already exists (re-verification)Append a new section with date; preserve the history
Coverage threshold not metMark as CRITICAL if P0 reqs lack coverage; WARNING otherwise

Rules

  • ALWAYS read the actual source code — don't trust summaries
  • ALWAYS attempt automated checks — ⏭ Skipped requires a written reason
  • Compare against SPECS first (behavioral correctness), DESIGN second (structural correctness)
  • A requirement is COMPLIANT only if: implemented + has test + test passed
  • Be objective — report what IS, not what should be
  • CRITICAL issues = must fix before archive (security flaws, missing P0 requirements, build failures, failing tests for P0 reqs)
  • WARNINGS = should fix but won't block (missing P1 reqs, test gaps, style issues)
  • SUGGESTIONS = improvements, not blockers (P2/P3 gaps, refactoring opportunities)
  • Always run security and regression audit — do not skip even for small changes
  • DO NOT fix any issues — only report them. The orchestrator decides what to do.
  • In none mode, NEVER create or modify any project files
  • Apply any rules.verify from openspec/config.yaml or the engram project context
  • Return a structured envelope with: status, executive_summary, detailed_report (optional), artifacts, next_recommended, and risks
Repository
Yoizen/dev-ai-workflow
Last updated
Created

Is this your skill?

If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.