Продвинутые техники Claude Code:
hooks, headless, голос, Obsidian
Когда базовые навыки освоены, наступает время инструментов уровня мастера. Ray Amjad называет их «скрытыми рычагами»: большинство разработчиков ими не пользуются, хотя именно они кратно ускоряют работу.
1. Hooks — автоматические реакции на события
Hooks — это shell-скрипты, которые Claude Code запускает автоматически при определённых событиях жизненного цикла агента. Они дают полный контроль над тем, что происходит до и после каждого действия.
«Вместо того чтобы писать ограничение в CLAUDE.md (например "никогда не запускай db push"), лучше сделать hook — он будет срабатывать каждый раз. CLAUDE.md игнорируется 1 раз из 30-50, хук — никогда.»
— Ray Amjad, «The Highest Point of Leverage in Claude Code»
Типы hooks
| Hook | Когда срабатывает | Применение |
|---|---|---|
PreToolCall |
Перед вызовом любого инструмента | Валидация, логирование, аудит безопасности |
PostToolCall |
После выполнения инструмента | Форматирование, тесты, уведомления |
PreCompact |
Перед сжатием контекста | Сохранение важного контекста |
Notification |
При уведомлениях агента | Звуки, push-уведомления, Slack/Telegram |
Stop |
Когда агент завершает работу | Запуск тестов, деплой, резюме |
Практический пример: уведомление в Telegram
{
"hooks": {
"Stop": [
{
"matcher": "",
"hooks": [
{
"type": "command",
"command": "curl -s -X POST https://api.telegram.org/bot$TG_TOKEN/sendMessage -d 'chat_id=$TG_CHAT&text=Claude+завершил+задачу+✅'"
}
]
}
],
"PostToolCall": [
{
"matcher": "Bash",
"hooks": [
{
"type": "command",
"command": "echo \"$(date): bash tool called\" >> ~/.claude/audit.log"
}
]
}
]
}
}
Типичные применения hooks
Уведомления о завершении
Звуковой сигнал или push-уведомление когда агент закончил долгую задачу — чтобы не сидеть и не смотреть на экран
Аудит безопасности
Логировать каждый вызов Bash-инструмента: что запускалось, когда, результат. Полный аудит-трейл автоматически
Автозапуск тестов
PostToolCall на Write-инструмент → запускать линтер или тесты. Агент сразу видит результат и исправляет
Сохранение контекста
PreCompact: перед сжатием контекста сохранить ключевые решения в файл. Важная память не теряется
Важно: hooks запускаются как shell-команды с полными правами. Проверяй, что делаешь. Неправильный hook может замедлить работу или создать побочные эффекты.
2. Headless mode — автономная пакетная обработка
Headless mode запускает Claude Code без интерактивного UI. Агент получает задачу, выполняет её автономно и возвращает результат. Это основа для автоматизации, CI/CD и batch-обработки.
«Headless mode — это когда Claude Code работает как фоновый рабочий. Ты пишешь скрипт, который передаёт задачи, и агент молча всё делает. Идеально для обработки большого количества файлов или ночных задач.»
— Ray Amjad
Базовые команды
# Headless: выполнить одну задачу и выйти claude --print "Что такое технический долг?" --output-format text # Передать задачу через stdin echo "Напиши тест для функции sort()" | claude --print # JSON-вывод для парсинга claude --print "Проанализируй этот код" --output-format json # Пропустить разрешения (опасно — только для автоматизации) claude --dangerously-skip-permissions --print "задача"
Batch-обработка файлов
Паттерн, который Ray Amjad использует для обработки больших коллекций:
#!/bin/bash
# Обработать все Python-файлы: добавить docstrings
for file in src/**/*.py; do
echo "Обрабатываю: $file"
claude --print \
--dangerously-skip-permissions \
"Добавь docstrings ко всем функциям в файле $file" \
> /dev/null
echo "✓ $file готов"
done
SDK — для программного управления
Для сложных сценариев — Claude Code SDK (TypeScript/Python). Запускаешь агента из кода, получаешь стриминг сообщений:
import Anthropic from "@anthropic-ai/sdk";
const client = new Anthropic();
// Запустить агента программно
const result = await client.messages.create({
model: "claude-opus-4-5",
max_tokens: 4096,
messages: [{ role: "user", content: "Напиши unit-тесты для этого файла" }],
tools: [/* инструменты */],
});
Совет: Используй headless mode для рутинных задач — рефакторинг большой кодовой базы, генерация документации, добавление тестов. Запускай ночью или параллельно с другими задачами.
3. Голосовой ввод — думай вслух, не печатай
Один из самых недооценённых инструментов рабочего процесса Ray Amjad. Голосовой ввод убирает самый медленный элемент — печать — и позволяет диктовать длинные детальные промпты за секунды.
«Я почти не набираю промпты вручную. Диктую всё через HyperWhisper с настройкой accuracy: highest. Параллельно переключаюсь между сессиями, диктуя в каждую. В разы продуктивнее чем печатать.»
— Ray Amjad, «How I Use Claude Code (After 1,600 Hours)»
Инструменты
Инструмент созданный самим Ray Amjad. Нажал хоткей → говоришь → текст появляется в поле ввода. Настройка accuracy: highest. Используется для всех промптов в рабочем процессе Ray.
Аналог с поддержкой контекста приложения. Автоматически форматирует под тип контента (код, текст, список).
Win+H (Windows) или fn+fn (macOS). Хуже по точности, но работает без дополнительного ПО. Подойдёт для старта.
Как диктовать эффективно
Говори полными предложениями — добавляй контекст, который обычно ленишься печатать
Диктуй «богатые промпты»: описывай что видишь, что хочешь, почему, какие ограничения
Используй видео-спецификации + голос: сначала запись экрана, потом голосовой комментарий к ней
Не диктуй код — только описания и инструкции. Код вставляй из буфера обмена
4. Obsidian как база знаний агента
Ray Amjad использует Obsidian как «второй мозг» для своих AI-проектов. Claude Code читает файлы из Obsidian через файловую систему — это бесплатный, всегда доступный персональный RAG.
Паттерн: Knowledge → Claude
Создай папку проекта в Obsidian
Например: ~/Obsidian/Projects/my-app/ со всеми решениями, архитектурой, деблокерами
Укажи путь в CLAUDE.md
В CLAUDE.md напиши: «Read context from ~/Obsidian/Projects/my-app/ARCHITECTURE.md before making architectural decisions»
Обновляй базу после каждого решения
Попроси Claude: «После завершения задачи — обнови DECISIONS.md в Obsidian с тем, что было сделано и почему»
Obsidian MCP плагин
Существует MCP-сервер для Obsidian — даёт Claude Code полный доступ к vault: создание, редактирование, поиск по заметкам. Настраивается через CLAUDE.md или settings.json.
# Через Claude Code MCP manager
claude mcp add obsidian -- npx -y @anthropic/mcp-obsidian
# Или в .claude/settings.json
{
"mcpServers": {
"obsidian": {
"command": "npx",
"args": ["-y", "@anthropic/mcp-obsidian"],
"env": {
"OBSIDIAN_VAULT_PATH": "/Users/you/Obsidian/vault"
}
}
}
}
5. Управление сессиями и контекстом
Контекстное окно — ресурс, который нужно беречь. Ray Amjad называет симптом неправильного управления контекстом «context anxiety» — когда агент начинает сомневаться в своих решениях из-за переполненного окна.
«Context anxiety — когда агент начинает менять уже принятые решения, потому что контекст переполнен. Это сигнал: пора компактировать или начать новую сессию.»
— Ray Amjad
Компактизация контекста
/compact
Сжимает историю сессии, сохраняя ключевые решения. Используй когда контекст заполнен на 70%+. Можно добавить инструкции: /compact Focus on the authentication implementation we decided on
/clear
Полная очистка сессии. Используй при переходе к независимой новой задаче. CLAUDE.md при этом остаётся — постоянный контекст сохраняется.
claude --resume [session-id]
Возобновление прерванной сессии. Список сессий: claude --list-sessions. Полезно при закрытии терминала.
Контекстная гигиена
Делай
- ✓ Начинай новую сессию на каждую независимую задачу
- ✓ Используй
/compactпри больших задачах - ✓ Сохраняй решения в CLAUDE.md до компактизации
- ✓ Замечай «context anxiety» — смену принятых решений
Не делай
- ✗ Не тяни одну сессию весь день
- ✗ Не вставляй в контекст весь файл если нужна пара строк
- ✗ Не игнорируй когда агент «забывает» ранние решения
- ✗ Не полагайся на память сессии — записывай в файлы
6. Custom Slash Commands и Skills
Slash commands — это шаблоны промптов, сохранённые как файлы. Они превращают повторяющиеся задачи в одну команду. Ray Amjad называет их «мышечной памятью агента».
Создание кастомной команды
--- description: Провести code review текущих изменений --- Проведи code review для следующих файлов: $ARGUMENTS Проверь: 1. Безопасность — SQL injection, XSS, CSRF, открытые секреты 2. Производительность — N+1 запросы, лишние вычисления 3. Читаемость — названия переменных, сложность функций 4. Тесты — покрыты ли крайние случаи Для каждой проблемы укажи: - Файл и строку - Тип проблемы (критично / важно / совет) - Как исправить
Использование:
/review src/auth.py src/api.py
Проектные vs. Личные команды
.claude/commands/ (проектные)
Хранятся в репо. Доступны всей команде. Для задач специфичных для этого проекта: деплой, тесты, миграции.
~/.claude/commands/ (личные)
Глобальные команды для всех проектов. Твои личные рабочие шаблоны: review, debug, explain, refactor.
Полезные встроенные команды
| Команда | Что делает |
|---|---|
/bug |
Создать GitHub issue для описанного бага |
/pr-comments |
Обработать комментарии к PR — ответить и исправить |
/init |
Проиндексировать кодовую базу, создать CLAUDE.md |
/vim |
Включить vim-режим в терминале |
/doctor |
Проверить конфигурацию Claude Code |
Практическое задание
Внедри хотя бы одну продвинутую технику в свой рабочий процесс за эту неделю.
Hook для уведомлений
Создай Stop hook который уведомляет тебя когда агент закончил. Звук, или Telegram-сообщение.
Один день голосом
Установи SuperWhisper или встроенную диктовку. Прожги один рабочий день, диктуя все промпты голосом.
Создай /review команду
Напиши свой шаблон для code review, сохрани в ~/.claude/commands/review.md. Используй на следующем PR.
Context checkup
В следующий раз когда агент начнёт вести себя странно — диагностируй: это context anxiety? Используй /compact с кастомной инструкцией.