К основному содержанию
скилл CX Codex

debug-hooks — скилл для Claude Code: что делает и как установить

Пошаговый сценарий отладки хуков Claude Code, когда они молчат, падают без логов или отдают не те данные.

Установить в Claude Code · Через Skills CLI (Vercel) Все способы и платформы ↓
npx skills add parcadei/Continuous-Claude-v3 --skill debug-hooks -a claude-code
Открыть на GitHub

Что делает debug-hooks

Скилл задаёт системный чек-лист для отладки хуков SessionEnd и PostToolUse. Работа начинается с проверки кеша и журналов в каталоге .claude/cache/. Агент проверяет настройки в проектном и глобальном файлах settings.json, чтобы найти пропущенную регистрацию или задвоение вызовов.

Для проверки логики скилл предлагает запустить скрипт вручную с тестовым JSON. Частая проблема кроется в скрытых сбоях фоновых процессов. Если скрипт использует spawn с параметром stdio: 'ignore', ошибки теряются. В такой ситуации скилл помогает перенаправить вывод во временный лог-файл.

Если исходники написаны на TypeScript, правка .ts файлов не сработает сама по себе. Оболочка вызывает скомпилированный бандл. Поэтому проект придётся заново собрать через esbuild. Для работы скиллу требуются инструменты Bash, Read и Grep.

Какие задачи решает

  • выяснить причину молчания хуков SessionEnd и PostToolUse
  • протестировать скрипты хуков вручную через тестовый JSON
  • найти скрытые ошибки фоновых процессов со stdio ignore
  • устранить двойной запуск хука из-за дублирования настроек

Примеры запросов агенту

  • Почему хук PostToolUse не срабатывает при записи файла?
  • Проверь регистрацию хуков в .claude/settings.json и найди ошибки
  • Хук SessionEnd выполняется без вывода, помоги отладить

Как установить debug-hooks

1Через Skills CLI (Vercel)

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

2Вручную: положить файлы

~/.claude/skills/debug-hooks/SKILL.md

Папка скилла целиком; для одного проекта — .claude/skills/debug-hooks/

По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов

Из того же набора67

compound-learnings Скилл анализирует сохранённые заметки из недавних сессий и превращает повторяющиеся выводы в постоянные правила и новые скиллы проекта. CX Codex +1 505установок hook-developer Справочник по хукам Claude: схемы входных и выходных данных, регистрация в settings.json, тестирование. Пригодится, когда пишешь свой хук и не помнишь формат. CX Codex +1 504установок tldr-code Скилл для анализа кода через CLI tldr: дерево файлов, граф вызовов, потоки данных и мёртвый код. Экономит токены по сравнению с чтением файлов целиком. CX Codex +1 503установок research-external Скилл для поиска по внешней документации, библиотекам и практикам 2024–2025 годов без изучения локальной кодовой базы. Запускает поиск через Perplexity, Nia Docs и Firecrawl. CX Codex +1 501установок describe-pr Готовит описание PR по локальному шаблону, изучая изменения и проверки. Нужен перед обновлением текста pull request через GitHub CLI. CX Codex +1 499установок commit Скилл проводит git-коммиты через согласование с вами и не добавляет упоминаний Claude в сообщения. Пригодится, когда агент накопил правки за сессию. CX Codex +1 499установок braintrust-tracing Скилл объясняет трассировку сессий Claude Code в Braintrust и связь следов субагентов с родительской задачей. Нужен при разборе хуков и пропавших спанов. CX Codex +1 495установок workflow-router Определяет цель задачи и передаёт её нужному субагенту: исследование, план, реализация или отладка. Пригодится, когда непонятно, с какого агента начинать. CX Codex +1 495установок

Похожие

debug-mantra thananon Задаёт порядок от воспроизведения сбоя до проверки гипотез и журнала экспериментов. Нужен при ошибках, журналах ошибок и трассировках стека. CX Codex +1 4 900установок debug jsmastery-pro Скилл запускает цикл поиска первопричины бага: воспроизводит сбой, изолирует место ошибки, проверяет гипотезы и готовит минимальное исправление. CX Codex +1 4 400установок ce-debug EveryInc Находит причину бага по цепочке от триггера к симптому и предлагает решение через тесты. Пригодится при сбоях в CI или падении тестов. CX Codex +1 3 500установок debug-zoom-integration официальный anthropics Разбирает сбои в интеграциях Zoom: от авторизации и вебхуков до SDK, MCP-транспорта и медиасессий. Нужен, когда код уже собран, но не работает. CX Codex +1 2 100установок debug-my-harness zernie Разбирает, почему агентная обвязка сработала не так, читая локальный журнал .vigiles/runs.jsonl. Пригодится, когда скилл перестал запускаться или хук пропустил то, что должен был заблокировать. CX Codex +1 1 500установок debug-issue tirth8205 Скилл ведёт поиск причины ошибки через граф кода, а затем проверяет цепочку вызовов и последствия правки. Пригодится, когда нужно сузить область отладки до чтения исходников. CX Codex +1 1 000установок

Рядом в теме «Настройка агента: память, контекст, субагенты»

Всё по теме «Настройка агента: память, контекст, субагенты» →

Вопросы о debug-hooks

Как установить debug-hooks в Claude Code?

Выполните команду npx skills add parcadei/Continuous-Claude-v3 --skill debug-hooks -a claude-code. Также можно разместить файл вручную по пути ~/.claude/skills/debug-hooks/SKILL.md.

Что делает скилл debug-hooks?

Он даёт агенту шестишаговый сценарий поиска неполадок в хуках. Сценарий охватывает проверку файлов, регистрацию событий, ручной запуск и поиск скрытых ошибок в процессах.

Что нужно сделать после изменения TypeScript-кода хука?

Код требуется пересобрать с помощью esbuild в каталог dist. Оболочка запускает готовый файл .mjs, поэтому одних правок в .ts недостаточно.

Исходный текст

SKILL.md · MIT
---
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)

```bash
# 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

```bash
# 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

```bash
# 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

```bash
# 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'`:

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

**Fix:** Add temporary logging:

```typescript
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:

```bash
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

© parcadei · MIT · parcadei/Continuous-Claude-v3

Смотрите также

Спонсоры проекта

Компании, которые помогают держать аналитику открытой