From hook-spike
One-shot hook smoke test — dispatches the hs-heartbeat subagent, which makes one Bash call. Reports whether the plugin's PreToolUse and PostToolUse hooks fired, and what ${CLAUDE_PLUGIN_ROOT} / ${CLAUDE_PROJECT_DIR} expanded to. Use this first before hook-spike (the full matrix) — if heartbeat doesn't fire, nothing will.
How this skill is triggered — by the user, by Claude, or both
Slash command
/hook-spike:hs-heartbeatThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Simplest possible test that the plugin's `hooks.json` hooks fire at all in this Claude Code install. If this fails, plugin hooks don't work in your environment, period — don't bother with the full spike matrix until this passes.
Simplest possible test that the plugin's hooks.json hooks fire at all in this Claude Code install. If this fails, plugin hooks don't work in your environment, period — don't bother with the full spike matrix until this passes.
rm -f /tmp/hook-spike/heartbeat-pre.fired /tmp/hook-spike/heartbeat-post.fired
mkdir -p /tmp/hook-spike
Agent(
subagent_type="hs-heartbeat",
description="Hook heartbeat smoke test",
prompt="Run the heartbeat test per your agent instructions. Make exactly one Bash call, then return. Quote any '*** HOOK-SPIKE: ***' lines you see in the Bash stderr output."
)
ls -la /tmp/hook-spike/heartbeat-*.fired 2>/dev/null
for f in /tmp/hook-spike/heartbeat-*.fired; do [ -f "$f" ] && { echo "=== $f ==="; cat "$f"; }; done
Hook Heartbeat Results
| Event | Canary fired | CLAUDE_PLUGIN_ROOT | CLAUDE_PROJECT_DIR | Message visible in transcript |
|--------------------|--------------|---------------------|--------------------|-------------------------------|
| PreToolUse(Bash) | yes/no | <value or UNSET> | <value or UNSET> | yes/no |
| PostToolUse(Bash) | yes/no | <value or UNSET> | <value or UNSET> | yes/no |
Verdict:
- BOTH fired → plugin hooks.json is fully wired. Proceed to /hook-spike matrix.
- ONE fired → partial support; investigate which event works.
- NEITHER fired → plugin hooks.json isn't being applied. Check:
* Plugin is installed AND enabled (`claude plugin list`)
* Marketplace was re-added after recent push (`/plugin marketplace update ddpoe/axiom-graph`)
* Claude Code version supports plugin hooks
Quote the agent's echoed *** HOOK-SPIKE: ... *** lines (if any) directly in the report so the user can see the raw evidence.
npx claudepluginhub ddpoe/axiom-graph --plugin hook-spikeProvides a checklist for code reviews covering functionality, security, performance, maintainability, tests, and quality. Use for pull requests, audits, team standards, and developer training.