architect
Given a PRD, produces an implementation architecture: file tree, component breakdown, data model, and a phased build plan with…
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.
Claude Code
$ npx -y skills add SethGammon/Citadel --skill verify --agent claude-code
Codex
$ npx skills add SethGammon/Citadel --skill verify -a codex -y
Cursor
$ npx skills add SethGammon/Citadel --skill verify -a cursor -y
Gemini CLI
$ npx skills add SethGammon/Citadel --skill verify -a gemini-cli -y
GitHub Copilot
$ npx skills add SethGammon/Citadel --skill verify -a github-copilot -y
OpenCode
$ npx skills add SethGammon/Citadel --skill verify -a opencode -y
Windsurf
$ npx skills add SethGammon/Citadel --skill verify -a windsurf -y
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
Use this when:
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).
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
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 |
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 <<< '{}'**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".
**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.
---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 ---
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
Given a PRD, produces an implementation architecture: file tree, component breakdown, data model, and a phased build plan with…
Autonomous multi-session campaign agent. Decomposes large work into phases, delegates to sub-agents, reviews output, and…
Generate perfectly aligned ASCII diagrams — architecture, flow, sequence, box-and-arrow. Uses a programmatic character-grid…
Intake-to-delivery pipeline. Processes pending items from .planning/intake/: briefs new ideas, executes approved work through…
Deep cost exploration and transparency. Shows real token usage, session costs, campaign spend, burn rates, and model breakdown.…
End-to-end app creation from a single description. Five tiers: blank project, guided, templated, fully generated, or feature…
You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…
Ask which skill or flow fits your situation. A router over the skills in this repo.