Verify
Purpose
Evidence before claims. This skill has two faces: (1) a verification protocol that proves claims with commands, and (2) a multi-mode scanner for quality, security, and governance. Both share the same principle: run the command, read the output, check the exit code. No guessing.
When to Use
- Before claiming "it works" (run the test, show the output)
- Before claiming "it's secure" (run the scan, show the findings)
- Before claiming "Done!" (verify every acceptance criterion with evidence)
- When running quality/security/governance scans on a codebase
Process
Verification Protocol (claim mode)
For every claim, follow IRRV:
I -- IDENTIFY: What command proves this claim?
- "Tests pass" ->
uv run pytest tests/ -v
- "No lint errors" ->
ruff check .
- "No secrets" ->
gitleaks protect --staged
- "File exists" ->
ls -la path/to/file
R -- RUN: Execute the FULL command. Not a subset. Not from memory. Fresh execution.
R -- READ: Read the FULL output. Check:
- Exit code (0 = success, non-zero = failure)
- Warning lines (even with exit code 0)
- Actual numbers (test count, coverage %, finding count)
V -- VERIFY: Does the output CONFIRM the claim?
- If yes: report with evidence (exact command + key output lines)
- If no: report the discrepancy. Do not claim success.
Forbidden words (never use these without evidence):
- "should work", "probably fine", "seems to", "looks good"
- "Done!", "Perfect!", "All set!"
- "I believe", "I think", "most likely"
Scan Modes (7 parallel modes)
| Mode |
Command |
What it assesses |
governance |
/ai-verify governance |
Integrity, compliance, ownership boundaries |
security |
/ai-verify security |
OWASP SAST, secret detection, dependency vulns |
quality |
/ai-verify quality |
Coverage, complexity, duplication, lint |
performance |
/ai-verify performance |
N+1 queries, O(n^2), memory leaks, bundle size |
a11y |
/ai-verify a11y |
WCAG 2.1 AA compliance |
feature |
/ai-verify feature |
Spec vs code gaps, disconnected implementations |
architecture |
/ai-verify architecture |
Drift, coupling, cohesion, boundaries |
platform |
/ai-verify platform |
All 7 modes aggregated -> GO/NO-GO |
Auto-detect: when invoked without a mode, infer from context.
Scan Output Contract
Every scan mode produces:
## Score: N/100
## Verdict: PASS | WARN | FAIL
## Findings
| # | Severity | Category | Description | Location | Remediation |
## Gate Check
- Blocker findings: N (threshold: 0)
- Critical findings: N (threshold: 0)
Scan Thresholds
| Mode |
Blocker if... |
Critical if... |
| governance |
Any integrity FAIL |
Any compliance FAIL |
| security |
Critical/high CVE |
Any secret detected |
| quality |
Coverage < 80% |
Blocker/critical lint |
| performance |
N+1 in critical path |
O(n^2) in hot path |
| architecture |
Circular dependency |
Critical drift from spec |
| platform |
Any blocker in ANY mode |
Score < 60 |
Verification Checklist (use before claiming DONE)
- [ ] Every acceptance criterion verified with a command
- [ ] All tests pass (exact count reported)
- [ ] Lint/format clean (zero warnings)
- [ ] No secrets in staged files
- [ ] Coverage maintained or improved (exact % reported)
- [ ] No forbidden words used in the completion report
Common Mistakes
- Claiming success without running the command
- Running a subset of tests instead of the full suite
- Ignoring warnings when exit code is 0
- Using forbidden words ("should work") instead of evidence
- Not checking exit codes
- Reporting coverage from memory instead of from the tool output
Integration
- Called by:
/ai-dispatch (post-task review), ai-build agent (after implementation), user directly
- Calls: stack-specific tools (pytest, ruff, gitleaks, etc.)
- Read-only: never modifies source code -- produces findings with remediation
$ARGUMENTS
1---2name: verify-203description: Use when you need to PROVE a claim with evidence, run quality/security scans, or validate that work is actually complete. Evidence before claims -- no 'should work' allowed.4---5
6
7
8# Verify
9
10## Purpose
11
12Evidence before claims. This skill has two faces: (1) a verification protocol that proves claims with commands, and (2) a multi-mode scanner for quality, security, and governance. Both share the same principle: run the command, read the output, check the exit code. No guessing.
13
14## When to Use
15
16- Before claiming "it works" (run the test, show the output)
17- Before claiming "it's secure" (run the scan, show the findings)
18- Before claiming "Done!" (verify every acceptance criterion with evidence)
19- When running quality/security/governance scans on a codebase
20
21## Process
22
23### Verification Protocol (claim mode)
24
25For every claim, follow IRRV:
26
27**I -- IDENTIFY**: What command proves this claim?
28- "Tests pass" -> `uv run pytest tests/ -v`
29- "No lint errors" -> `ruff check .`
30- "No secrets" -> `gitleaks protect --staged`
31- "File exists" -> `ls -la path/to/file`
32
33**R -- RUN**: Execute the FULL command. Not a subset. Not from memory. Fresh execution.
34
35**R -- READ**: Read the FULL output. Check:
36- Exit code (0 = success, non-zero = failure)
37- Warning lines (even with exit code 0)
38- Actual numbers (test count, coverage %, finding count)
39
40**V -- VERIFY**: Does the output CONFIRM the claim?
41- If yes: report with evidence (exact command + key output lines)
42- If no: report the discrepancy. Do not claim success.
43
44**Forbidden words** (never use these without evidence):
45- "should work", "probably fine", "seems to", "looks good"
46- "Done!", "Perfect!", "All set!"
47- "I believe", "I think", "most likely"
48
49### Scan Modes (7 parallel modes)
50
51| Mode | Command | What it assesses |
52|------|---------|------------------|
53| `governance` | `/ai-verify governance` | Integrity, compliance, ownership boundaries |
54| `security` | `/ai-verify security` | OWASP SAST, secret detection, dependency vulns |
55| `quality` | `/ai-verify quality` | Coverage, complexity, duplication, lint |
56| `performance` | `/ai-verify performance` | N+1 queries, O(n^2), memory leaks, bundle size |
57| `a11y` | `/ai-verify a11y` | WCAG 2.1 AA compliance |
58| `feature` | `/ai-verify feature` | Spec vs code gaps, disconnected implementations |
59| `architecture` | `/ai-verify architecture` | Drift, coupling, cohesion, boundaries |
60| `platform` | `/ai-verify platform` | All 7 modes aggregated -> GO/NO-GO |
61
62Auto-detect: when invoked without a mode, infer from context.
63
64### Scan Output Contract
65
66Every scan mode produces:
67
68```markdown
69## Score: N/100
70## Verdict: PASS | WARN | FAIL
71
72## Findings
73| # | Severity | Category | Description | Location | Remediation |
74
75## Gate Check
76- Blocker findings: N (threshold: 0)
77- Critical findings: N (threshold: 0)
78```
79
80### Scan Thresholds
81
82| Mode | Blocker if... | Critical if... |
83|------|--------------|----------------|
84| governance | Any integrity FAIL | Any compliance FAIL |
85| security | Critical/high CVE | Any secret detected |
86| quality | Coverage < 80% | Blocker/critical lint |
87| performance | N+1 in critical path | O(n^2) in hot path |
88| architecture | Circular dependency | Critical drift from spec |
89| **platform** | Any blocker in ANY mode | Score < 60 |
90
91## Verification Checklist (use before claiming DONE)
92
93```
94- [ ] Every acceptance criterion verified with a command
95- [ ] All tests pass (exact count reported)
96- [ ] Lint/format clean (zero warnings)
97- [ ] No secrets in staged files
98- [ ] Coverage maintained or improved (exact % reported)
99- [ ] No forbidden words used in the completion report
100```
101
102## Common Mistakes
103
104- Claiming success without running the command
105- Running a subset of tests instead of the full suite
106- Ignoring warnings when exit code is 0
107- Using forbidden words ("should work") instead of evidence
108- Not checking exit codes
109- Reporting coverage from memory instead of from the tool output
110
111## Integration
112
113- **Called by**: `/ai-dispatch` (post-task review), `ai-build agent` (after implementation), user directly
114- **Calls**: stack-specific tools (pytest, ruff, gitleaks, etc.)
115- **Read-only**: never modifies source code -- produces findings with remediation
116
117$ARGUMENTS