Методичка #5 14 мин чтения hooks · headless · voice · Obsidian

Продвинутые техники Claude Code: hooks, headless, голос, Obsidian

Когда базовые навыки освоены, наступает время инструментов уровня мастера. Ray Amjad называет их «скрытыми рычагами»: большинство разработчиков ими не пользуются, хотя именно они кратно ускоряют работу.

Источник: Ray Amjad — «Claude Code Hooks», «How I Use Claude Code (After 1,600 Hours)», «Claude Code Tips and Tricks», документация Anthropic.

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

.claude/settings.json
{
  "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)»

Инструменты

HyperWhisper (macOS) Ray Amjad's own product

Инструмент созданный самим Ray Amjad. Нажал хоткей → говоришь → текст появляется в поле ввода. Настройка accuracy: highest. Используется для всех промптов в рабочем процессе Ray.

Wispr Flow альтернатива

Аналог с поддержкой контекста приложения. Автоматически форматирует под тип контента (код, текст, список).

Встроенная диктовка (Windows/macOS) бесплатно

Win+H (Windows) или fn+fn (macOS). Хуже по точности, но работает без дополнительного ПО. Подойдёт для старта.

Как диктовать эффективно

Говори полными предложениями — добавляй контекст, который обычно ленишься печатать

Диктуй «богатые промпты»: описывай что видишь, что хочешь, почему, какие ограничения

Используй видео-спецификации + голос: сначала запись экрана, потом голосовой комментарий к ней

Не диктуй код — только описания и инструкции. Код вставляй из буфера обмена

4. Obsidian как база знаний агента

Ray Amjad использует Obsidian как «второй мозг» для своих AI-проектов. Claude Code читает файлы из Obsidian через файловую систему — это бесплатный, всегда доступный персональный RAG.

Паттерн: Knowledge → Claude

1

Создай папку проекта в Obsidian

Например: ~/Obsidian/Projects/my-app/ со всеми решениями, архитектурой, деблокерами

2

Укажи путь в CLAUDE.md

В CLAUDE.md напиши: «Read context from ~/Obsidian/Projects/my-app/ARCHITECTURE.md before making architectural decisions»

3

Обновляй базу после каждого решения

Попроси Claude: «После завершения задачи — обнови DECISIONS.md в Obsidian с тем, что было сделано и почему»

Obsidian MCP плагин

Существует MCP-сервер для Obsidian — даёт Claude Code полный доступ к vault: создание, редактирование, поиск по заметкам. Настраивается через CLAUDE.md или settings.json.

Установка Obsidian MCP
# Через 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 называет их «мышечной памятью агента».

Создание кастомной команды

.claude/commands/review.md
---
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

Практическое задание

Внедри хотя бы одну продвинутую технику в свой рабочий процесс за эту неделю.

1.

Hook для уведомлений

Создай Stop hook который уведомляет тебя когда агент закончил. Звук, или Telegram-сообщение.

2.

Один день голосом

Установи SuperWhisper или встроенную диктовку. Прожги один рабочий день, диктуя все промпты голосом.

3.

Создай /review команду

Напиши свой шаблон для code review, сохрани в ~/.claude/commands/review.md. Используй на следующем PR.

4.

Context checkup

В следующий раз когда агент начнёт вести себя странно — диагностируй: это context anxiety? Используй /compact с кастомной инструкцией.

Экстракт Знаний в Telegram

Транскрипты, экстракты и дистилляты — структурированные знания из лучших YouTube-каналов.

Подписаться