/verify
Post-execution verification gate. Tests, lint, type-check, then see it working.
$ npx -y skills add elb-pr/claudikins-kernel --agent claude-codeShips with claudikins-kernel. Installing the plugin gets this command.
How it fires
How this command gets triggered: by you, by Claude, or both.
- Fires itselfClaude auto-loads it when your prompt matches the work.
- You can call itInvoke it directly when you want it.
- Slash command
/verify
Context preview
What this command does when you run it.
Post-execution verification gate. Tests, lint, type-check, then see it working.
Command definition
verify.mdname: claudikins-kernel:verify
description: Post-execution verification gate. Tests, lint, type-check, then see it working.
argument-hint: <branch-name> [--scope tests|lint|types|all] [--skip-simplify] [--fix-lint]
model: opus
agent_outputs:
- agent: catastrophiser
capture_to: .claude/agent-outputs/verification/
merge_strategy: jq -s 'add'
- agent: cynic
capture_to: .claude/agent-outputs/simplification/
merge_strategy: concat
allowed-tools:
- Read
- Grep
- Glob
- Bash
- Task
- AskUserQuestion
- TodoWrite
- Skill
skills:
- strict-enforcement
output-schema:
type: object
properties:
session_id:
type: string
status:
type: string
enum: [passed, failed, partial]
branch:
type: string
phases:
type: object
properties:
tests:
type: string
enum: [passed, failed, skipped]
lint:
type: string
enum: [passed, failed, skipped]
types:
type: string
enum: [passed, failed, skipped]
visual:
type: string
enum: [passed, failed, skipped]
simplification_applied:
type: boolean
evidence_paths:
type: array
items:
type: string
required: [session_id, status, phases]claudikins-kernel:verify Command
You are orchestrating a verification workflow that ensures code actually works before shipping.
Flags
| Flag | Effect | | ----------------- | ------------------------------------------ | | `--branch NAME` | Verify specific branch (default: current) | | `--scope SCOPE` | test\|lint\|types\|all (default: all) | | `--skip-simplify` | Skip cynic polish pass | | `--fix-lint` | Auto-apply lint fixes | | `--fast-mode` | 60-second iteration cycles | | `--session-id ID` | Resume previous session by ID | | `--timing` | Show phase durations for velocity tracking | | `--list-sessions` | Show available sessions for resume | | `--resume` | Resume from last checkpoint | | `--status` | Show current verification status |
Merge Strategy
JQ merge - verification outputs are combined with `jq -s 'add'`.
Philosophy
> "Evidence before assertions. Always." - Verification philosophy
- Verification is the gate between claudikins-kernel:execute and claudikins-kernel:ship
- Claude MUST see its code working (not just tests passing)
- Human checkpoint with comprehensive report
- Exit code 2 blocks claudikins-kernel:ship until verification passes
- All Opus models for agents (no compromises on judgement)
State Management
State file: `.claude/verify-state.json`
{
"session_id": "verify-YYYY-MM-DD-HHMM",
"execute_session_id": "exec-YYYY-MM-DD-HHMM",
"branch": "execute/task-1-feature",
"started_at": "ISO timestamp",
"status": "initialising|verifying|completed|failed",
"phases": {
"test_suite": { "status": "pending|PASS|FAIL" },
"lint": { "status": "pending|PASS|FAIL" },
"type_check": { "status": "pending|PASS|FAIL" },
"output_verification": { "status": "pending|PASS|FAIL" },
"code_simplification": { "status": "pending|PASS|FAIL|skipped" }
},
"all_checks_passed": false,
"human_checkpoint": {
"prompted_at": null,
"decision": null,
"caveats": []
},
"unlock_ship": false
}Phase 0: Initialisation
Flag Handling
Check for flags first:
--status → Display current verification status, exit
--resume → Load checkpoint, resume from saved state
--list-sessions → Show available sessions, exit
Prerequisite Check (via verify-init.sh hook)
The SessionStart hook validates:
1. execute-state.json exists (C-14 cross-command gate) 2. Execute status is "completed" 3. Creates initial verify-state.json 4. Links to execute session for traceability
**On validation failure:**
ERROR: claudikins-kernel:execute has not been run
You must run claudikins-kernel:execute before claudikins-kernel:verify.
The verification command requires completed execution state.
Run: claudikins-kernel:execute [plan-file]
Project Type Detection
Detect project type automatically:
if package.json exists:
PROJECT_TYPE = "node"
TEST_CMD = "npm test"
LINT_CMD = "npm run lint"
TYPE_CMD = "npm run typecheck" (if typescript)
elif pyproject.toml or setup.py:
PROJECT_TYPE = "python"
TEST_CMD = "pytest"
LINT_CMD = "ruff check ."
TYPE_CMD = "mypy ."
elif Cargo.toml:
PROJECT_TYPE = "rust"
TEST_CMD = "cargo test"
LINT_CMD = "cargo clippy"
TYPE_CMD = "cargo check"
elif go.mod:
PROJECT_TYPE = "go"
TEST_CMD = "go test ./..."
LINT_CMD = "golangci-lint run"
TYPE_CMD = "go build ./..."
else:
PROJECT_TYPE = "unknown"
Ask user for commands
Phase 1: Automated Quality Checks
Run in sequence. STOP on any failure.
Stage 1: Test Suite
# Run tests with timeout
timeout 300 ${TEST_CMD}**On failure:**
Tests failed.
[Show test output]
[Fix tests] [Re-run (flaky?)] [Skip tests] [Abort]
**Flaky test detection (C-12):** If tests fail, offer re-run:
Test failure detected. Could be flaky.
[Re-run tests] [Accept failure] [Abort]
If re-run passes:
Tests passed on retry. Likely flaky.
[Accept with flakiness caveat] [Fix tests] [Abort]
Stage 2: Linting
${LINT_CMD}**On failure with --fix-lint:**
Lint issues found. Auto-fix available.
[Apply fixes] [Show issues] [Skip lint] [Abort]
**After auto-fix, re-run lint to confirm:**
${LINT_CMD}If still failing after fix:
Auto-fix did not resolve all issues.
Remaining issues:
[Show remaining issues]
[Fix manually] [Skip lint] [Abort]
Stage 3: Type Check
${TYPE_CMD}**On failure:**
Type errors found.
[Show errors]
[Fix errors] [Skip type check] [Abort]
Ph
Read more
name: claudikins-kernel:verify
description: Post-execution verification gate. Tests, lint, type-check, then see it working.
argument-hint: <branch-name> [--scope tests|lint|types|all] [--skip-simplify] [--fix-lint]
model: opus
agent_outputs:
- agent: catastrophiser
capture_to: .claude/agent-outputs/verification/
merge_strategy: jq -s 'add'
- agent: cynic
capture_to: .claude/agent-outputs/simplification/
merge_strategy: concat
allowed-tools:
- Read
- Grep
- Glob
- Bash
- Task
- AskUserQuestion
- TodoWrite
- Skill
skills:
- strict-enforcement
output-schema:
type: object
properties:
session_id:
type: string
status:
type: string
enum: [passed, failed, partial]
branch:
type: string
phases:
type: object
properties:
tests:
type: string
enum: [passed, failed, skipped]
lint:
type: string
enum: [passed, failed, skipped]
types:
type: string
enum: [passed, failed, skipped]
visual:
type: string
enum: [passed, failed, skipped]
simplification_applied:
type: boolean
evidence_paths:
type: array
items:
type: string
required: [session_id, status, phases]claudikins-kernel:verify Command
You are orchestrating a verification workflow that ensures code actually works before shipping.
Flags
| Flag | Effect | | ----------------- | ------------------------------------------ | | `--branch NAME` | Verify specific branch (default: current) | | `--scope SCOPE` | test\|lint\|types\|all (default: all) | | `--skip-simplify` | Skip cynic polish pass | | `--fix-lint` | Auto-apply lint fixes | | `--fast-mode` | 60-second iteration cycles | | `--session-id ID` | Resume previous session by ID | | `--timing` | Show phase durations for velocity tracking | | `--list-sessions` | Show available sessions for resume | | `--resume` | Resume from last checkpoint | | `--status` | Show current verification status |
Merge Strategy
JQ merge - verification outputs are combined with `jq -s 'add'`.
Philosophy
> "Evidence before assertions. Always." - Verification philosophy
- Verification is the gate between claudikins-kernel:execute and claudikins-kernel:ship
- Claude MUST see its code working (not just tests passing)
- Human checkpoint with comprehensive report
- Exit code 2 blocks claudikins-kernel:ship until verification passes
- All Opus models for agents (no compromises on judgement)
State Management
State file: `.claude/verify-state.json`
{
"session_id": "verify-YYYY-MM-DD-HHMM",
"execute_session_id": "exec-YYYY-MM-DD-HHMM",
"branch": "execute/task-1-feature",
"started_at": "ISO timestamp",
"status": "initialising|verifying|completed|failed",
"phases": {
"test_suite": { "status": "pending|PASS|FAIL" },
"lint": { "status": "pending|PASS|FAIL" },
"type_check": { "status": "pending|PASS|FAIL" },
"output_verification": { "status": "pending|PASS|FAIL" },
"code_simplification": { "status": "pending|PASS|FAIL|skipped" }
},
"all_checks_passed": false,
"human_checkpoint": {
"prompted_at": null,
"decision": null,
"caveats": []
},
"unlock_ship": false
}Phase 0: Initialisation
Flag Handling
Check for flags first:
--status → Display current verification status, exit --resume → Load checkpoint, resume from saved state --list-sessions → Show available sessions, exit
Prerequisite Check (via verify-init.sh hook)
The SessionStart hook validates:
1. execute-state.json exists (C-14 cross-command gate) 2. Execute status is "completed" 3. Creates initial verify-state.json 4. Links to execute session for traceability
**On validation failure:**
ERROR: claudikins-kernel:execute has not been run You must run claudikins-kernel:execute before claudikins-kernel:verify. The verification command requires completed execution state. Run: claudikins-kernel:execute [plan-file]
Project Type Detection
Detect project type automatically:
if package.json exists: PROJECT_TYPE = "node" TEST_CMD = "npm test" LINT_CMD = "npm run lint" TYPE_CMD = "npm run typecheck" (if typescript) elif pyproject.toml or setup.py: PROJECT_TYPE = "python" TEST_CMD = "pytest" LINT_CMD = "ruff check ." TYPE_CMD = "mypy ." elif Cargo.toml: PROJECT_TYPE = "rust" TEST_CMD = "cargo test" LINT_CMD = "cargo clippy" TYPE_CMD = "cargo check" elif go.mod: PROJECT_TYPE = "go" TEST_CMD = "go test ./..." LINT_CMD = "golangci-lint run" TYPE_CMD = "go build ./..." else: PROJECT_TYPE = "unknown" Ask user for commands
Phase 1: Automated Quality Checks
Run in sequence. STOP on any failure.
Stage 1: Test Suite
# Run tests with timeout
timeout 300 ${TEST_CMD}**On failure:**
Tests failed. [Show test output] [Fix tests] [Re-run (flaky?)] [Skip tests] [Abort]
**Flaky test detection (C-12):** If tests fail, offer re-run:
Test failure detected. Could be flaky. [Re-run tests] [Accept failure] [Abort]
If re-run passes:
Tests passed on retry. Likely flaky. [Accept with flakiness caveat] [Fix tests] [Abort]
Stage 2: Linting
${LINT_CMD}**On failure with --fix-lint:**
Lint issues found. Auto-fix available. [Apply fixes] [Show issues] [Skip lint] [Abort]
**After auto-fix, re-run lint to confirm:**
${LINT_CMD}If still failing after fix:
Auto-fix did not resolve all issues. Remaining issues: [Show remaining issues] [Fix manually] [Skip lint] [Abort]
Stage 3: Type Check
${TYPE_CMD}**On failure:**
Type errors found. [Show errors] [Fix errors] [Skip type check] [Abort]
Ph
Showing the first part of this file.
SRE thinking applied to Claude Code, based on Boris Cherny's Q&A. It enforces a strict 4-stage pipeline with gates between each step. You literally cannot skip verification. You cannot ship without approval.

