debug-hooks

GitHub

提供 Claude Code 钩子(Hook)的系统化调试工作流,涵盖输出检查、注册验证、文件存在性确认、手动测试及静默失败排查,解决钩子未触发或行为异常问题。

.claude/skills/debug-hooks/SKILL.md parcadei/Continuous-Claude-v3

触发场景

钩子未触发 钩子产生错误输出 SessionEnd 钩子失效 PostToolUse 钩子未执行

安装

npx skills add parcadei/Continuous-Claude-v3 --skill debug-hooks -g -y
更多选项

非标准路径

npx skills add https://github.com/parcadei/Continuous-Claude-v3/tree/main/.claude/skills/debug-hooks -g -y

不安装直接使用

npx skills use parcadei/Continuous-Claude-v3@debug-hooks

指定 Agent (Claude Code)

npx skills add parcadei/Continuous-Claude-v3 --skill debug-hooks -a claude-code -g -y

安装 repo 全部 skill

npx skills add parcadei/Continuous-Claude-v3 --all -g -y

预览 repo 内 skill

npx skills add parcadei/Continuous-Claude-v3 --list

SKILL.md

Frontmatter
{
    "name": "debug-hooks",
    "description": "Systematic hook debugging workflow. Use when hooks aren't firing, producing wrong output, or behaving unexpectedly.",
    "allowed-tools": [
        "Bash",
        "Read",
        "Grep"
    ]
}

Debug Hooks

Systematic workflow for debugging Claude Code hooks.

When to Use

  • "Hook isn't firing"
  • "Hook produces wrong output"
  • "SessionEnd not working"
  • "PostToolUse hook not triggering"
  • "Why didn't my hook run?"

Workflow

1. Check Outputs First (Observe Before Editing)

# Check project cache
ls -la $CLAUDE_PROJECT_DIR/.claude/cache/

# Check specific outputs
ls -la $CLAUDE_PROJECT_DIR/.claude/cache/learnings/

# Check for debug logs
tail $CLAUDE_PROJECT_DIR/.claude/cache/*.log 2>/dev/null

# Also check global (common mistake: wrong path)
ls -la ~/.claude/cache/ 2>/dev/null

2. Verify Hook Registration

# Project settings
cat $CLAUDE_PROJECT_DIR/.claude/settings.json | grep -A 20 '"SessionEnd"\|"PostToolUse"\|"UserPromptSubmit"'

# Global settings (hooks merge from both)
cat ~/.claude/settings.json | grep -A 20 '"SessionEnd"\|"PostToolUse"\|"UserPromptSubmit"'

3. Check Hook Files Exist

# Shell wrappers
ls -la $CLAUDE_PROJECT_DIR/.claude/hooks/*.sh

# Compiled bundles (if using TypeScript)
ls -la $CLAUDE_PROJECT_DIR/.claude/hooks/dist/*.mjs

4. Test Hook Manually

# SessionEnd hook
echo '{"session_id": "test-123", "reason": "clear", "transcript_path": "/tmp/test"}' | \
  $CLAUDE_PROJECT_DIR/.claude/hooks/session-end-cleanup.sh

# PostToolUse hook (Write tool example)
echo '{"tool_name": "Write", "tool_input": {"file_path": "test.md"}, "session_id": "test-123"}' | \
  $CLAUDE_PROJECT_DIR/.claude/hooks/handoff-index.sh

5. Check for Silent Failures

If using detached spawn with stdio: 'ignore':

// This pattern hides errors!
spawn(cmd, args, { detached: true, stdio: 'ignore' })

Fix: Add temporary logging:

const logFile = fs.openSync('.claude/cache/debug.log', 'a');
spawn(cmd, args, {
  detached: true,
  stdio: ['ignore', logFile, logFile]  // capture stdout/stderr
});

6. Rebuild After Edits

If you edited TypeScript source, you MUST rebuild:

cd $CLAUDE_PROJECT_DIR/.claude/hooks
npx esbuild src/session-end-cleanup.ts \
  --bundle --platform=node --format=esm \
  --outfile=dist/session-end-cleanup.mjs

Source edits alone don't take effect - the shell wrapper runs the bundled .mjs.

Common Issues

Symptom Likely Cause Fix
Hook never runs Not registered in settings.json Add to correct event in settings
Hook runs but no output Detached spawn hiding errors Add logging, check manually
Wrong session ID Using "most recent" query Pass ID explicitly
Works locally, not in CI Missing dependencies Check npx/node availability
Runs twice Registered in both global + project Remove duplicate

Debug Checklist

  • Outputs exist? (ls -la .claude/cache/)
  • Registered? (grep -A10 '"hooks"' .claude/settings.json)
  • Files exist? (ls .claude/hooks/*.sh)
  • Bundle current? (ls -la .claude/hooks/dist/)
  • Manual test works? (echo '{}' | ./hook.sh)
  • No silent failures? (check for stdio: 'ignore')

Source Sessions

Derived from 10 sessions (83% of all learnings):

  • a541f08a, 1c21e6c8, 6a9f2d7a, a8bd5cea, 2ca1a178, 657ce0b2, 3998f3a2, 2a829f12, 0b46cfd7, 862f6e2c

版本历史

  • d07ff4b 当前 2026-08-20 12:46

同 Skill 集合

.claude/plugins/braintrust-tracing/skills/trace-claude-code/SKILL.md
.claude/skills/agentica-claude-proxy/SKILL.md
.claude/skills/agentica-infrastructure/SKILL.md
.claude/skills/agentica-prompts/SKILL.md
.claude/skills/agentica-sdk/SKILL.md
.claude/skills/agentica-server/SKILL.md
.claude/skills/archive/leann-search/SKILL.md
.claude/skills/ast-grep-find/SKILL.md
.claude/skills/braintrust-tracing/SKILL.md
.claude/skills/cli-reference/SKILL.md
.claude/skills/commit/SKILL.md
.claude/skills/compound-learnings/SKILL.md
.claude/skills/continuity_ledger/SKILL.md
.claude/skills/create_handoff/SKILL.md
.claude/skills/dead-code/SKILL.md
.claude/skills/debug/SKILL.md
.claude/skills/describe_pr/SKILL.md
.claude/skills/discovery-interview/SKILL.md
.claude/skills/explore/SKILL.md
.claude/skills/firecrawl-scrape/SKILL.md
.claude/skills/fix/SKILL.md
.claude/skills/github-search/SKILL.md
.claude/skills/help/SKILL.md
.claude/skills/hook-developer/SKILL.md
.claude/skills/implement_plan_micro/SKILL.md
.claude/skills/implement_plan/SKILL.md
.claude/skills/implement_task/SKILL.md
.claude/skills/loogle-search/SKILL.md
.claude/skills/math-help/SKILL.md
.claude/skills/math-router/SKILL.md
.claude/skills/math-unified/SKILL.md
.claude/skills/math/abstract-algebra/fields/SKILL.md
.claude/skills/math/abstract-algebra/groups/SKILL.md
.claude/skills/math/abstract-algebra/rings/SKILL.md
.claude/skills/math/category-theory/categories-functors/SKILL.md
.claude/skills/math/category-theory/limits-colimits/SKILL.md
.claude/skills/math/category-theory/natural-transformations/SKILL.md
.claude/skills/math/complex-analysis/analytic-functions/SKILL.md
.claude/skills/math/complex-analysis/contour-integrals/SKILL.md
.claude/skills/math/complex-analysis/residues/SKILL.md
.claude/skills/math/functional-analysis/banach-spaces/SKILL.md
.claude/skills/math/functional-analysis/hilbert-spaces/SKILL.md
.claude/skills/math/functional-analysis/operator-theory/SKILL.md
.claude/skills/math/graph-number-theory/graph-algorithms/SKILL.md
.claude/skills/math/graph-number-theory/modular-arithmetic/SKILL.md
.claude/skills/math/graph-number-theory/prime-numbers/SKILL.md
.claude/skills/math/information-theory/channel-capacity/SKILL.md
.claude/skills/math/information-theory/entropy/SKILL.md
.claude/skills/math/information-theory/source-coding/SKILL.md

元信息

文件数
0
版本
d07ff4b
Hash
a5fb9b2e
收录时间
2026-08-20 12:46

首页 - Wiki
Copyright © 2011-2026 iteam. Current version is 2.155.2. UTC+08:00, 2026-09-09 14:41
浙ICP备14020137号-1 $访客地图$