.claude/skills/dan-verify/SKILL.md
Spawn verifier agent to validate phase outputs against requirements and success criteria
npx skillsauth add RavBogard/DAN dan:verifyInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Spawn a dan-verifier agent to validate all phase outputs against REQUIREMENTS.md and each plan's success criteria.
Spawns dan-verifier subagent. Verifier has read-only access (no Write tool).
State operations use the DAN CLI:
node "$HOME/.claude/dan/bin/dan-tools.cjs" --cwd $PROJECT_DIR state set "Status" "Verifying"
<execution_flow>
<step name="parse_phase"> ## Step 1: Parse PhaseParse the phase number from the user's input argument. Resolve the phase directory.
# Resolve phase directory
PHASE_DIR=$(node "$HOME/.claude/dan/bin/dan-tools.cjs" --cwd "$PROJECT_DIR" phase find "$PHASE_NUM")
PADDED=$(printf '%02d' "$PHASE_NUM")
Set PROJECT_DIR to the project root (cwd of the invoking session).
</step>
Read all context files needed by the verifier:
must_haves (truths, artifacts, key_links), tasks, and verification commandsCollect the list of plan file paths for passing to the verifier agent.
# List plan files in phase directory
PLAN_FILES=$(ls "$PHASE_DIR"/*-PLAN.md 2>/dev/null)
SUMMARY_FILES=$(ls "$PHASE_DIR"/*-SUMMARY.md 2>/dev/null)
</step>
<step name="update_state">
## Step 3: Update State
Mark the project as actively verifying.
node "$HOME/.claude/dan/bin/dan-tools.cjs" --cwd "$PROJECT_DIR" state set "Status" "Verifying phase $PHASE_NUM"
</step>
<step name="spawn_verifier">
## Step 4: Spawn Verifier (check_must_haves)
Spawn a dan-verifier agent with the following instructions:
Task(
prompt="You are verifying Phase {PHASE_NUM} deliverables.
Read these context files:
- .planning/ROADMAP.md (phase goal and success criteria)
- .planning/REQUIREMENTS.md (requirement IDs for this phase)
- {each PLAN file path}
- {each SUMMARY file path}
For each plan, run these CLI verification commands:
# Artifact verification -- checks must_haves.artifacts exist and are substantive
node \"$HOME/.claude/dan/bin/dan-tools.cjs\" --cwd \"$PROJECT_DIR\" verify artifacts {plan-path}
# Key-link verification -- checks must_haves.key_links wiring patterns
node \"$HOME/.claude/dan/bin/dan-tools.cjs\" --cwd \"$PROJECT_DIR\" verify key-links {plan-path}
Run phase-level checks:
# Phase completeness -- all plans have matching summaries
node \"$HOME/.claude/dan/bin/dan-tools.cjs\" --cwd \"$PROJECT_DIR\" verify phase-completeness {PHASE_NUM}
# Automated test suite
node --test bin/tests/
Check each must_haves.truths entry against evidence in the codebase.
Check each requirement from REQUIREMENTS.md against deliverable evidence.
Check for stub patterns: TODO, TBD, placeholder text, functions returning hardcoded values, files under 10 lines that should be substantial.
Write your results to: {PHASE_DIR}/{PADDED}-VERIFICATION.md
Use the VERIFICATION.md template (frontmatter with phase/verified/status/score/bugsweep_cycles, criteria table, artifact table, key-link table, requirements table, issues list, test results, bugsweep history).",
subagent_type="dan-verifier",
description="verify phase {PHASE_NUM}"
)
The verifier agent is read-only. It produces {PADDED}-VERIFICATION.md but does NOT fix any issues it finds.
</step>
Read the generated VERIFICATION.md. Extract the overall status and score.
# Update state with verification result
node "$HOME/.claude/dan/bin/dan-tools.cjs" --cwd "$PROJECT_DIR" state set "Status" "Phase $PHASE_NUM verification: $STATUS"
Report to user:
## Verification Complete
**Phase:** {PHASE_NUM}
**Status:** {passed | gaps_found | human_needed}
**Score:** {N}/{M} must-haves verified
**Issues found:** {count}
**Report:** {PHASE_DIR}/{PADDED}-VERIFICATION.md
If status is gaps_found or human_needed, suggest running /dan:bugsweep {PHASE_NUM} to attempt automated fixes.
</step>
</execution_flow>
data-ai
Core DAN workflow protocol and conventions injected into all agent contexts
tools
Close the loop on a completed plan by writing SUMMARY.md and updating state
tools
Show current project progress, blockers, and suggest the next action
tools
Restore session from STATE.md and continue where work left off