skills/verification/SKILL.md
Structured self-check against acceptance criteria BEFORE claiming DONE. Triggers: "I'm done", "verify this", "finished". NOT for sprint retrospection — use self-improvement for that.
npx skillsauth add Wilder1222/superomni verificationInstall 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.
Status protocol — end every session with one of: DONE (evidence provided) · DONE_WITH_CONCERNS (list each) · BLOCKED (state what blocks you) · NEEDS_CONTEXT (state what you need).
Auto-advance — pipeline: THINK → PLAN → REVIEW → BUILD → VERIFY → RELEASE. Only human gate is spec approval at THINK. On DONE at other stages, print [STAGE] DONE -> advancing to [NEXT-STAGE] and invoke the next skill. On any non-DONE status at any stage, STOP.
Output directory — all artifacts go in docs/superomni/<kind>/<kind>-[branch]-[session]-[date].md. See CLAUDE.md for the full directory map.
TACIT-DENSE — before high-tacit decisions, classify D1 (domain expertise) · D2 (user-facing UX) · D3 (team culture) · D4 (novel pattern). On hit, output TACIT-DENSE [D#]: [question] — My default: [recommendation]. See reference for actions.
Anti-sycophancy — take a position on every significant question. Name flaws directly. No filler ("that's interesting", "you might consider", "that could work").
Telemetry (local only) — at session end, log bin/analytics-log. Nothing leaves the machine.
See preamble-ref.md for detailed protocols.
Goal: Systematically verify that work is complete and correct before declaring done.
"I think it works" is not evidence. "I believe it's correct" is not evidence. Evidence is: running the code and showing output, passing test results, or observable behavior.
Agent claims feature is complete.
Evidence provided:
1. npm test output: "15 tests, 15 passing, 0 failing"
2. Manual verification: curl -X POST /api/users -> 201 Created
3. Edge case tested: curl -X POST /api/users (empty body) -> 400 Bad Request
4. Screenshot: UI renders correctly with new component
Result: DONE — all evidence is observable and reproducible
Agent claims feature is complete.
Evidence provided:
"I believe the implementation is correct based on the logic"
"It should work because I followed the pattern from the other module"
Result: NOT ACCEPTABLE — "believe" and "should" are not evidence
[VIOLATED: No test output, no command results, no observable behavior shown]
| Excuse | Rebuttal | |--------|----------| | "The logic is straightforward, it must work" | Straightforward logic still needs proof — run the test | | "I followed the same pattern as module X" | Pattern match is not verification — show the output | | "Tests aren't set up for this area" | Then set them up — untestable claims cannot be verified |
The !<command>`` syntax is Anthropic's dynamic context injection — runtime resolves each command before the skill body reaches the LLM.
git branch --show-current && git status -sgit diff --stat main...HEAD 2>/dev/null | tail -10ls -t docs/superomni/plans/plan-*.md 2>/dev/null | head -1p=$(ls -t docs/superomni/plans/plan-*.md 2>/dev/null | head -1); [ -n "$p" ] && grep -c '^- \[ \]' "$p" || echo 0ls -t docs/superomni/evaluations/evaluation-*.md 2>/dev/null | head -1Run through this before reporting any status:
Before any technical checks, verify the output achieves what the user originally asked for.
# Read acceptance criteria from spec or plan
_SPEC=$(ls docs/superomni/specs/spec-*.md 2>/dev/null | sort | tail -1)
_PLAN=$(ls docs/superomni/plans/plan-*.md 2>/dev/null | sort | tail -1)
cat "$_SPEC" 2>/dev/null | grep -A 30 "Acceptance Criteria" | head -40 || \
cat "$_PLAN" 2>/dev/null | grep -A 20 "Success Criteria" | head -30 || \
echo "No docs/superomni/specs/spec-*.md or docs/superomni/plans/plan-*.md found"
For each acceptance criterion in docs/superomni/specs/spec-.md or docs/superomni/plans/plan-.md:
| Criterion | Met? | Evidence | |-----------|------|----------| | [criterion from spec] | ✓/✗ | [specific proof: test output, observable behavior, or code reference] |
If no docs/superomni/specs/spec-*.md exists:
Gate: Cannot report DONE if any P0 acceptance criterion is unmet.
# Run tests
npm test 2>&1 | tail -20
# or
pytest -v 2>&1 | tail -20
# or
go test ./... 2>&1 | tail -20
Hard gate for new code: If new source code was written and no tests exist for it, report BLOCKED — do not advance to DONE until tests are added. The only valid exception is a documented reason (pure UI layout, throw-away prototype).
# Step 1: List source files changed (exclude tests and docs)
git diff HEAD --name-only | grep -vE "(test|spec|\.md$|\.txt$)" | head -10
# Step 2: List test files changed
git diff HEAD --name-only | grep -E "(test|spec|_test\.|\.test\.)" | head -10
# Step 3: Check if any source file has a corresponding test file
# For each changed source file, search for a test file by base name
for f in $(git diff HEAD --name-only | grep -vE "(test|spec|\.md$)"); do
base=$(basename "$f" | sed 's/\..*//')
found=$(find . -name "*${base}*test*" -o -name "*${base}*spec*" -o \
-name "test_*${base}*" 2>/dev/null | head -1)
if [ -z "$found" ]; then
echo "MISSING TESTS: $f (no test file found for '$base')"
else
echo "HAS TESTS: $f → $found"
fi
done
# Run full test suite (not just new tests)
npm test 2>&1 | grep -E "(PASS|FAIL|Error)" | head -20
git diff HEAD# Quick diff review
git diff HEAD --stat
git diff HEAD | grep "console.log\|debugger\|TODO\|FIXME\|print(" | head -10
git diff HEAD --stat | tail -1)planner-reviewer Agent (Evaluation Mode)For a context-isolated independent verdict (recommended on ≥5-step waves, any DONE_WITH_CONCERNS step, or the final wave), dispatch the planner-reviewer agent in evaluation mode with:
docs/superomni/specs/spec-*.md or docs/superomni/plans/plan-*.md)The agent provides an independent EVALUATION REPORT with verdict APPROVED / APPROVED_WITH_NOTES / CHANGES_REQUIRED / EVALUATION_INCOMPLETE. Incorporate its TOP FINDING into the Verification Report below. (Evaluation content was consolidated from the retired evaluator agent into planner-reviewer evaluation mode.)
If the agent returns CHANGES_REQUIRED: set status to BLOCKED and do NOT advance to RELEASE until the flagged issues are resolved.
After completing the checklist and receiving the independent verdict:
VERIFICATION REPORT
════════════════════════════════════════
Task: [what was being implemented/fixed]
Tests run: [N tests, N passing, N failing]
Goal Alignment:
Spec/plan used: [docs/superomni/specs/spec-*.md | docs/superomni/plans/plan-*.md | user request]
✓/✗ [acceptance criterion 1] — [evidence]
✓/✗ [acceptance criterion 2] — [evidence]
User goal achieved: YES | PARTIAL | NO
Acceptance criteria:
✓ [criterion 1]
✓ [criterion 2]
✗ [criterion 3] — FAILED (explain why)
Files changed: [N files]
Regressions: [none | list any]
Evidence: [test output snippet or observed behavior]
Status: DONE | DONE_WITH_CONCERNS | BLOCKED
Concerns (if any):
- [concern 1 with recommendation]
════════════════════════════════════════
After completing verification, save the report as a persistent Markdown document:
EVAL_DIR="docs/superomni/evaluations"
mkdir -p "$EVAL_DIR"
BRANCH=$(git branch --show-current 2>/dev/null | tr '/' '-' || echo "main")
TIMESTAMP=$(date +%Y-%m-%d-%H%M%S)
EVAL_FILE="$EVAL_DIR/evaluation-${BRANCH}-${TIMESTAMP}.md"
Write the full VERIFICATION REPORT block (including all checklist results, test output, and goal alignment table) to $EVAL_FILE in this format:
# Verification Evaluation: [branch]
**Date:** [date]
**Branch:** [branch]
**Task:** [what was being verified]
## Checklist Results
| Check | Result | Notes |
|-------|--------|-------|
| Functional verification | ✓/✗ | |
| Test verification | ✓/✗ | |
| Regression verification | ✓/✗ | |
| Completeness | ✓/✗ | |
| No regressions | ✓/✗ | |
| Blast radius | ✓/✗ | |
## Goal Alignment
Spec/plan used: [docs/superomni/specs/spec-*.md | docs/superomni/plans/plan-*.md | user request]
| Criterion | Met? | Evidence |
|-----------|------|----------|
| [criterion 1] | ✓/✗ | [proof] |
## Evidence
[Test output snippet or observed behavior]
## Verdict
[Paste full VERIFICATION REPORT block here]
**Status:** DONE | DONE_WITH_CONCERNS | BLOCKED
echo "Evaluation saved to $EVAL_FILE"
This file is the permanent task evaluation record. It feeds into self-improvement and future sprint retrospectives.
If any check fails:
development
Systematic, behavior-preserving code refactoring with safety gates. Dispatches refactoring-agent. Triggers: "refactor", "clean up code", "reduce tech debt", "extract method", "rename". NOT for reactive PR feedback — use code-review for that.
development
Meta-skill: create, install, list, and manage skills and agents within the superomni framework. Merges writing-skills + agent-management into one unified workflow. Triggers: "create skill", "write a skill", "install skill", "list skills", "create agent", "write an agent", "install agent", "list agents", "new skill", "new agent", "add skill", "add agent", "manage framework".
testing
Dependency security, license, and freshness audit. Dispatches dependency-auditor agent to scan all package managers. Triggers: "dependency audit", "check dependencies", "npm audit", "security scan", "check for vulnerabilities", "outdated packages", "license check".
development
Meta-skill: use when creating a new skill for the superomni framework. Guides through the process of designing and writing a well-structured skill. Triggers: "create a new skill", "write a skill for", "add a skill that".