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.
- License 许可
- MIT
- 最近更新
- 2026-11-06
- Stars
- ★ 929
- Forks
- 84
01 前言 Front Matter
- 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.
- auto-trigger
- false
- last-updated
- 1774569600000
- user-invocable
- true
- trigger_keywords
- [ "verify", "verify hooks", "hook health", "self-test", "check hooks", "harness health" ]
03 SKILL.md 正文
/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:
-
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
truetofalse: → 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.tsor 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
---
04 同仓库更多 Skills
workspace
Multi-repo campaign coordinator. Same lifecycle as fleet -- scope claims, discovery relay, wave-based execution -- but the unit of work is a repo, not a file. Coordinates campaigns across repositories with shared context.
wiki
Markdown-first knowledge base where the LLM acts as librarian. Ingests raw sources, compiles and interlinks topic files, self-maintains an index. No vector DB or embeddings required -- uses LLM-native navigation over structured markdown up to ~400K words.
watch
File sentinel that monitors the working directory for changes and marker comments, then auto-triggers appropriate skills. Poll-based via git diff against the last scan commit. Writes intake items for batch processing and routes marker actions through /do. Use for automatic reactions to file changes; do NOT use for one-off inspection or tasks needing human judgment per file.
unharness
Safely leave Citadel using the active adoption receipt. Produces a no-write, reviewable plan, preserves a portable archive, removes only exact owned material, and reports modified or externally registered surfaces as retained or unknown. Legacy installs must be imported before exact leave is claimed.
triage
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.
test-gen
Generate and verify tests — happy path, edge cases, error paths — using the project's own framework and patterns