architect
Given a PRD, produces an implementation architecture: file tree, component breakdown, data model, and a phased build plan with end conditions that Archon can…
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.
$ npx -y skills add SethGammon/Citadel --skill verify --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/verifyContext preview
The summary Claude sees to decide when to auto-load this skill.
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.
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.
**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
Repo: SethGammon/Citadel
Given a PRD, produces an implementation architecture: file tree, component breakdown, data model, and a phased build plan with end conditions that Archon can…
Autonomous multi-session campaign agent. Decomposes large work into phases, delegates to sub-agents, reviews output, and maintains campaign state across…
Generate perfectly aligned ASCII diagrams — architecture, flow, sequence, box-and-arrow. Uses a programmatic character-grid approach so alignment is guaranteed…
Intake-to-delivery pipeline. Processes pending items from .planning/intake/: briefs new ideas, executes approved work through research → plan → build → verify.…
Deep cost exploration and transparency. Shows real token usage, session costs, campaign spend, burn rates, and model breakdown. Reads Claude Code's native…
End-to-end app creation from a single description. Five tiers: blank project, guided, templated, fully generated, or feature addition to existing codebase.…