skills/verify/SKILL.md
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 skillsauth add SethGammon/Citadel verifyInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
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:
Write a temp file at .planning/verify-temp.ts:
// citadel verify probe
export const verifyProbe = true;
→ Exercises: PreToolUse (protect-files, governance), PostToolUse (post-edit)
Edit the same file — change true to false:
→ Exercises: PreToolUse (protect-files, governance), PostToolUse (post-edit)
Bash a harmless read command: echo "verify-probe"
→ Exercises: PreToolUse (governance)
Read the temp file back → Exercises: PreToolUse (protect-files — should allow, it's not .env)
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
---
development
GitHub issue and PR investigator. Pulls open issues/PRs, classifies them, searches the codebase for root cause or reviews contributed code, proposes fixes with file:line references, and optionally implements fixes. Use for investigating GitHub issues and reviewing PRs; do NOT use for general code review unrelated to GitHub issues.
development
Unified telemetry hub. Shows current session cost, today's spend, all-time totals, hook activity, trust level, and a directory of every telemetry command available. Also the control surface to toggle telemetry on/off and tune thresholds. Single entry point for anyone asking "what does this cost" or "what telemetry does Citadel have".
devops
Manages recurring and one-off scheduled tasks. Session-scoped scheduling via CronCreate/CronDelete/CronList. Documents the cloud path for tasks that need to survive machine sleep or network drops.
tools
Browser-based QA verification. Launches a real browser, navigates the app, clicks buttons, fills forms, and tests user flows. Works as a standalone skill or as a phase end condition in campaigns. Requires Playwright (optional dependency, graceful skip if not installed).