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