Концепции
Хуки
Автоматика Claude Code — session, post-edit, task completed, pre-compact
Хуки
Хуки — команды, которые Claude Code запускает автоматически при определённых событиях. dev-workflow устанавливает 5 хуков при init.
Список хуков
| Event name | Когда | Что делает |
|---|---|---|
| SessionStart | Начало сессии | Загружает vault-контекст, intelligence, задачи, workflow |
| SessionEnd | Конец сессии | Сохраняет daily log, обновляет intelligence, паузит workflow |
| PostToolUse | После Write/Edit/MultiEdit | Трекает редактирование файлов в intelligence |
| TaskCompleted | После завершения задачи | Записывает в daily log с названием задачи |
| PreCompact | Перед сжатием контекста | Сохраняет маркер для восстановления |
Stdin JSON
Все хуки получают данные от Claude Code через stdin в JSON-формате, не через env variables:
{
"session_id": "abc123",
"cwd": "/path/to/project",
"hook_event_name": "PostToolUse",
"tool_name": "Edit",
"tool_input": {
"file_path": "/path/to/file.ts"
}
}Каждый хук парсит stdin и извлекает нужные поля:
| Хук | Что читает из stdin |
|---|---|
| SessionStart | cwd, source |
| SessionEnd | cwd |
| PostToolUse | cwd, tool_input.file_path |
| TaskCompleted | cwd, task_subject |
| PreCompact | cwd, compaction_trigger |
Формат ответа
Хуки возвращают JSON в stdout:
{
"continue": true,
"hookSpecificOutput": {
"hookEventName": "SessionStart",
"additionalContext": "vault context injected here"
}
}continue: true— Claude Code продолжает работуhookSpecificOutput.additionalContext— для SessionStart: vault-контекст инжектится в сессию
SessionStart
Самый важный хук. При каждом старте сессии Claude Code получает через additionalContext:
- Имя проекта и текущую ветку
- Содержимое vault (stack, conventions, knowledge, gameplan)
- Branch context (если не на main)
- Текущую задачу (если привязана к ветке)
- Активный workflow (если на паузе)
- Top-15 релевантных паттернов из intelligence
SessionEnd
Автоматический auto-save:
- Создаёт/дополняет
.dev-vault/daily/<date>.md - Записывает: проект, ветка, diff stat, uncommitted files
- Обновляет intelligence: co-edited файлы, данные сессии
- Если workflow был running — ставит на паузу
PostToolUse (Write/Edit/MultiEdit)
Трекает каждый отредактированный файл:
- Извлекает
tool_input.file_pathиз stdin JSON - Записывает в
.dev-vault/.edit-log.json - Обновляет intelligence store (file-edit паттерн)
Ручной запуск (для тестирования)
echo '{}' | node /path/to/dist/hooks/session-start.js
echo '{"tool_input":{"file_path":"src/file.ts"}}' | node /path/to/dist/hooks/post-edit.js