Skip to content
Development
Skill

/verify

Self-test the Citadel hook pipeline from within a live session. Exercises real tool calls (Write, Edit, Bash, Read) and checks that hooks fired, telemetry accumulated, and no errors occurred. Reports HOOK HEALTH: PASS or HOOK HEALTH: FAIL with a per-hook breakdown.

From plugin
citadel
92948 skills7 agents

Claude Code

$ npx -y skills add SethGammon/Citadel --skill verify --agent claude-code

SKILL.md

verify.SKILL.md
name: verify
license: MIT
description: >-
  Self-test the Citadel hook pipeline from within a live session. Exercises
  real tool calls (Write, Edit, Bash, Read) and checks that hooks fired,
  telemetry accumulated, and no errors occurred. Reports HOOK HEALTH: PASS
  or HOOK HEALTH: FAIL with a per-hook breakdown.
user-invocable: true
auto-trigger: false
trigger_keywords:
  - verify
  - verify hooks
  - hook health
  - self-test
  - check hooks
  - harness health
last-updated: 2026-03-27

/verify — Hook Pipeline Self-Test

Use this when:

  • Hooks were recently updated and you want a live sanity check
  • Something feels wrong (tools seem too slow, quality-gate not firing)
  • After installing Citadel in a new project

Protocol

Step 1: Baseline

Read the current telemetry state:

.planning/telemetry/hook-timing.jsonl  → count lines (baseline_timing)
.planning/telemetry/audit.jsonl        → count lines (baseline_audit)
.planning/telemetry/hook-errors.log    → size in bytes (baseline_errors)

If telemetry directory doesn't exist, note it (init-project may not have run).

Step 2: Exercise hooks

Run these tool calls in sequence. Each exercises a different hook:

1. **Write** a temp file at `.planning/verify-temp.ts`:

   // citadel verify probe
   export const verifyProbe = true;

→ Exercises: PreToolUse (protect-files, governance), PostToolUse (post-edit)

2. **Edit** the same file — change `true` to `false`: → Exercises: PreToolUse (protect-files, governance), PostToolUse (post-edit)

3. **Bash** a harmless read command: `echo "verify-probe"` → Exercises: PreToolUse (governance)

4. **Read** the temp file back → Exercises: PreToolUse (protect-files — should allow, it's not .env)

5. **Delete** the temp file: `rm .planning/verify-temp.ts` or equivalent → Cleanup

Step 3: Check side effects

After all tool calls complete, read telemetry again:

| Check | Expected | Result | |---|---|---| | hook-timing.jsonl grew | +2 or more lines (Write + Edit post-hooks) | PASS/FAIL | | audit.jsonl grew | +3 or more lines (Write + Edit + Bash pre-hooks) | PASS/FAIL | | hook-errors.log unchanged | same size as baseline | PASS/FAIL |

Step 4: Report

Output a results block:

=== HOOK HEALTH CHECK ===

hook-timing.jsonl:  +N lines  [PASS / FAIL]
audit.jsonl:        +N lines  [PASS / FAIL]
hook-errors.log:    no errors [PASS / FAIL — N new errors]

HOOK HEALTH: PASS

Or if any check fails:

HOOK HEALTH: FAIL

Failing checks:
- hook-timing.jsonl did not grow: PostToolUse hooks may not be firing
  → Verify hooks are installed: node scripts/verify-hooks.js
  → Check settings.json: cat .claude/settings.json | grep PostToolUse

- audit.jsonl did not grow: governance hook may not be firing
  → Check: node hooks_src/governance.js <<< '{}'

Edge Cases

**No .planning/telemetry/ directory**: Init-project may not have run. Output: "HOOK HEALTH: FAIL — .planning/telemetry/ not found. Run: node hooks_src/init-project.js"

**Hooks installed but telemetry still zero**: The project may have a harness.json that disables telemetry. Check `features.telemetry` in `.claude/harness.json`, Citadel's shared config path for all runtimes including Codex.

**First-time run (no baseline)**: If the files don't exist before the test, they should be created during the test. Treat "file created" as equivalent to "grew".

What This Does NOT Test

  • Hook correctness on edge cases (use verify-hooks.js for that)
  • Full PreToolUse → tool → PostToolUse sequence isolation (use integration-test.js)
  • Skill output quality (use skill-bench.js --execute)

Quality Gates

  • All 3 telemetry checks must pass: timing grew, audit grew, no new errors
  • Temp file must be cleaned up regardless of pass/fail outcome
  • Report must include exact counts (+N lines), not just PASS/FAIL
  • If .planning/telemetry/ does not exist, FAIL immediately — do not fabricate counts

Contextual Gates

**Disclosure:** Creates and deletes `.planning/verify-temp.ts` during the test. No other files modified. **Reversibility:** green — temp file deleted on completion; no persistent changes. **Trust gates:** Any — no restrictions.

Exit Protocol

---HANDOFF---
- Hook pipeline: PASS / FAIL
- hook-timing.jsonl: +N lines
- audit.jsonl: +N lines
- hook-errors.log: N new errors (0 expected)
- Reversibility: green — no persistent changes; verify-temp.ts cleaned up
- Next: if FAIL, run node scripts/verify-hooks.js for deeper diagnostics
---
Read more
@sethgammon
Ships withcitadel

An open-source operating layer for Claude Code and OpenAI Codex. Citadel routes requests, preserves repository state between sessions, coordinates parallel work, applies repository safeguards, and records evidence and handoffs around the coding agent you

92948 skills7 agents
Get the whole plugin

Stars on GitHub

Momentum

stars in total
929
Star history of SethGammon/Citadel on GitHub, a chart by star-history.com

Other skills on citadel.

architect

architect

Given a PRD, produces an implementation architecture: file tree, component breakdown, data model, and a phased build plan with…

@sethgammon@sethgammonInstall Skill
archon

archon

Autonomous multi-session campaign agent. Decomposes large work into phases, delegates to sub-agents, reviews output, and…

@sethgammon@sethgammonInstall Skill
ascii-diagram

ascii-diagram

Generate perfectly aligned ASCII diagrams — architecture, flow, sequence, box-and-arrow. Uses a programmatic character-grid…

@sethgammon@sethgammonInstall Skill
autopilot

autopilot

Intake-to-delivery pipeline. Processes pending items from .planning/intake/: briefs new ideas, executes approved work through…

@sethgammon@sethgammonInstall Skill
cost

cost

Deep cost exploration and transparency. Shows real token usage, session costs, campaign spend, burn rates, and model breakdown.…

@sethgammon@sethgammonInstall Skill
create-app

create-app

End-to-end app creation from a single description. Five tiers: blank project, guided, templated, fully generated, or feature…

@sethgammon@sethgammonInstall Skill

More skills from other plugins.

brainstorming
Auto-invoked

brainstorming

You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…

@obra@obraInstall Skill
ask-matt

ask-matt

Ask which skill or flow fits your situation. A router over the skills in this repo.

skills13d309k
@mattpocock@mattpocockInstall Skill
accessibility
Auto-invoked

accessibility

Design, implement, and audit accessible UI to WCAG 2.2 Level AA across Web, iOS, and Android — semantic ARIA roles and labels,…

ecc2w293k
@affaan-m@affaan-mInstall Skill
compiler-commit

compiler-commit

Use when you want to verify compiler changes and commit with the correct convention. Runs tests, lint, and format, then commits…

react4d252k
@facebook@facebookInstall Skill

Questions about verify.

Which coding agents can use verify?
verify installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.