Продвинутый Claude Code

Продвинутые приёмы: CLAUDE.md для контекста проекта, хуки для автопроверок, multi-file рефакторинг.

📊 Продвинутый⏱ 15 мин

# 1. CLAUDE.md — КОНТЕКСТ ПРОЕКТА

CLAUDE.md — это файл в корне проекта, который Claude Code читает при запуске. Здесь описывается структура проекта, команды сборки, код-стайл, правила и соглашения команды. Claude использует этот контекст во всех ответах.

# CLAUDE.md — файл контекста проекта
# Claude Code читает этот файл при запуске в директории проекта

## СТРУКТУРА ПРОЕКТА
src/          — исходный код (FastAPI + SQLAlchemy)
tests/        — pytest тесты (фикстуры в conftest.py)
migrations/   — Alembic миграции
docs/         — документация (MkDocs)
scripts/      — утилиты (seed_db.py, export.py)

## КОМАНДЫ
make test       — pytest -x --cov=src
make lint       — ruff check . && mypy src
make dev        — uvicorn src.main:app --reload
docker compose up — продакшен-окружение

## КОД-СТАЙЛ
- Python 3.12, строгая типизация (mypy strict)
- Ruff для форматирования (line length 100)
- Все публичные функции с docstring (Google style)
- Исключения через кастомные классы в src/exceptions.py

## ПРАВИЛА
- ВСЕГДА писать тесты для нового кода
- НЕ ИСПОЛЬЗОВАТЬ print() — использовать logging
- НЕ коммитить .env, секреты в переменных окружения

# 2. ХУКИ ДЛЯ АВТОПРОВЕРОК

Хуки в .claude/hooks/ позволяют запускать проверки до и после каждого вызова инструментов. Например, pre-tool-use может проверить код линтером перед записью файла, а post-tool-use — запустить тесты.

# .claude/hooks/pre-tool-use.sh
# Запускается перед вызовом любого инструмента
#!/bin/bash

# Если Claude пишет Python-файл — проверяем линтером
if [[ "$CLAUDE_TOOL" == "write" && "$CLAUDE_PATH" == *.py ]]; then
    echo "🔍 Pre-check: linting $CLAUDE_PATH..."
    ruff check "$CLAUDE_PATH" 2>/dev/null && echo "✅ OK"
fi

# .claude/hooks/post-tool-use.sh
# Запускается после вызова инструмента
#!/bin/bash
if [[ "$CLAUDE_TOOL" == "write" && "$CLAUDE_PATH" == *.py ]]; then
    # Автоформатирование после записи
    ruff format "$CLAUDE_PATH"
    echo "✨ Auto-formatted $CLAUDE_PATH"
fi

# 3. MULTI-FILE РЕФАКТОРИНГ

Claude Code может рефакторить десятки файлов за один запрос. Используйте CLAUDE.md для контекста и просите Claude проверить тесты после изменений.

# Пример multi-file рефакторинга — запрос к Claude Code:
"""
Переименуй класс UserModel в User во всех файлах проекта.
После этого:
1. Обнови все импорты (from models.user import UserModel → User)
2. Поправь type hints (UserModel → User)
3. Обнови фикстуры в conftest.py
4. Запусти make test и убедись что все тесты проходят
5. Если есть падения — исправь их
"""

# Claude Code выполнит:
# 1. search_files(pattern="UserModel") — найдёт все вхождения
# 2. patch() в каждом файле — заменит UserModel → User
# 3. terminal("make test") — запустит тесты
# 4. При падении — проанализирует ошибки и исправит

# Стратегия для больших рефакторингов:
# 1. Начать с одного файла → проверить
# 2. Расширить на модуль → запустить тесты модуля
# 3. Закончить весь проект → полный прогон тестов

# 4. КАСТОМНЫЕ SLASH-КОМАНДЫ

Создайте свои slash-команды в .claude/commands/. Каждая команда — это Markdown-файл с инструкцией. Claude Code будет выполнять её при вводе /command.

# .claude/commands/review.md
Проведи код-ревью staged изменений:
1. Выполни git diff --cached
2. Проверь: безопасность, стиль, производительность, логика
3. Для каждой проблемы предложи конкретное исправление
4. Выведи результат в формате: файл:строка → проблема → fix

# .claude/commands/deploy.md
Выполни деплой проекта:
1. Запусти make test — убедись что все тесты проходят
2. Запусти make lint — проверь код-стайл
3. Выполни docker compose build && docker compose up -d
4. Проверь healthcheck: curl http://localhost:8000/health
5. Выведи статус: ✅ деплой успешен или ❌ ошибка + логи

# .claude/commands/fix.md
Проанализируй последнюю ошибку и исправь её:
1. Найди последнюю ошибку в логах или выводе тестов
2. Определи первопричину
3. Предложи и примени исправление
4. Запусти тесты для проверки

# 5. CLAUDE CODE В CI/CD

Интегрируйте Claude Code в GitHub Actions. Автоматическое исправление багов, генерация документации и проверка PR в CI-пайплайне.

# .github/workflows/claude-ci.yml
name: Claude Code CI
on:
  pull_request:
    types: [opened, synchronize]

jobs:
  claude-fix:
    runs-on: ubuntu-latest
    env:
      ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
    steps:
      - uses: actions/checkout@v4
      - name: Install Claude Code
        run: npm install -g @anthropic-ai/claude-code
      - name: Auto-fix bugs
        run: |
          claude "Проанализируй изменения в PR и исправь все найденные баги. Запусти тесты для проверки."

# Важно: Claude Code в CI требует ANTHROPIC_API_KEY
# и запускается в неинтерактивном режиме с флагом -p (print)

# 6. ПРОДВИНУТЫЕ ПРОМПТЫ

Используйте продвинутые техники промпт-инжиниринга: chain-of-thought, tree-of-thought и self-consistency. Они повышают качество ответов Claude для сложных задач.

# 1. Chain-of-Thought (пошаговое рассуждение)
"""Рефакторинг модуля аутентификации.
Думай по шагам:
1. Проанализируй текущую архитектуру
2. Выдели проблемные места
3. Предложи план рефакторинга
4. Реализуй изменения по одному файлу
5. После каждого файла — проверяй тесты"""

# 2. Tree-of-Thought (исследование альтернатив)
"""Нам нужна система кэширования. Рассмотри 3 варианта:
A. Redis — плюсы/минусы для нашего случая
B. Memcached — плюсы/минусы
C. In-memory LRU cache — плюсы/минусы
Выбери оптимальный и реализуй."""

# 3. Self-Consistency (несколько проходов)
"""Напиши SQL-запрос для отчёта по продажам.
Проверь его 3 раза с разных точек зрения:
1. Корректность JOIN-ов
2. Производительность (индексы, EXPLAIN)
3. Граничные случаи (пустые данные, NULL)
Выдай финальную версию."""

# 4. Role-based prompting
"""Действуй как senior backend разработчик с 15-летним опытом.
Твоя задача — спроектировать API для микросервиса платежей.
Учти: идемпотентность, retry logic, транзакционность, мониторинг."""

🔗 Полезные ссылки

📖 Claude Code Docs📋 CLAUDE.md Guide🏠 Anthropic Docs💻 Claude Code GitHub