
Что такое Claude Code?
Claude Code — это терминал-первый ИИ-помощник для разработки от Anthropic. В отличие от IDE-инструментов вроде Cursor или VS Code Copilot, Claude Code живёт в командной строке и работает как агентная система: он не просто предлагает код, а выполняет команды, модифицирует файлы, запускает тесты и управляет git-процессами.
Ключевые отличия от IDE-инструментов
| Аспект | IDE (Cursor, VS Code Copilot) | Claude Code |
|---|---|---|
| Интерфейс | GUI с визуальными диффами | CLI в терминале |
| Workflow | Вы смотрите и одобряете каждое изменение | Вы делегируете сложные задачи |
| Контекст | 200K токенов | До 1M токенов |
| Интеграция | Расширения IDE | MCP-протокол, горизонтальные команды |
| Автоматизация | Ограничена | Полноценная CI/CD-интеграция |
| Скриптуемость | Нет | Да — можно интегрировать в пайплайны |
Философия терминал-первый
Разработчики много времени проводят в терминале: запуск серверов, управление базами данных, выполнение команд сборки, git-операции. Claude Code интегрируется прямо в этот поток — вам не нужно переключаться между окнами.
# Вместо:
# 1. Открыть IDE
# 2. Найти файл
# 3. Выделить код
# 4. Открыть чат
# 5. Объяснить задачу
# 6. Проверить diff
# 7. Применить изменения
# Просто:
claude "Исправь все падающие тесты в модуле auth"
Базовое использование
# Установка
npm install -g @anthropic-ai/claude-code
# или
pip install claude-code
# Настройка (один раз)
claude configure
# Одноразовый запрос
claude -p "Добавь OAuth авторизацию"
# Интерактивный режим
claude -m
# С файлом
claude -f src/auth.ts -p "почему этот код не работает?"
# С контекстом
claude --context README.md -p "создай логотип"
Skills: повторяемые сценарии
Skills — это повторяемые сценарии в Claude Code. Вместо того чтобы каждый раз объяснять одну и ту же задачу, вы создаёте skill один раз и вызываете его по имени.
Что такое Skills?
Skills — это YAML-файлы в директории .claude/skills/, которые определяют повторяемые операции. Каждый skill состоит из:
- Описание: что делает skill
- Переменные: параметры для кастомизации
- Шаги: последовательность действий
- Примеры: варианты использования
Пример Skill
# .claude/skills/create-test.yaml
name: create-test
description: Создаёт тесты с полным покрытием для модуля
variables:
- name: module_path
description: Путь к модулю для тестирования
required: true
steps:
- name: Разбор модуля
tools: [read, workspace_symbol]
instruction: |
Прочитай файл {{module_path}} и найди:
- Все экспортируемые функции
- Stateful vs stateless функции
- Сложные граничные случаи
- name: Генерация unit-тестов
instruction: |
Для каждой функции создай Jest-тесты:
- Happy path: типичные сценарии
- Edge cases: пустые значения, нули, null/undefined
- Error cases: ошибки валидации, сетевые ошибки
- name: Интеграционные тесты
instruction: |
Создай тесты, которые проверяют:
- Взаимодействие функций
- Потоки данных
- Состояние при ошибках
- name: E2E-тесты (если применимо)
tools: [read]
depends_on: [create-route]
instruction: |
Найди соответствующие API-эндпоинты и создай сценарные тесты
examples:
- skill: create-test module_path=src/auth/logout.ts
- skill: create-test module_path=services/payment.ts
Использование Skills
# В сессии Claude Code
> /skill create-test module_path=src/auth/logout.ts
# Из CLI
claude -s create-test --module-path=src/auth/logout.ts
Типы Skills
1. Тестирование
name: test-all
description: Запускает все тесты и анализирует результаты
steps:
- name: Запуск unit-тестов
command: npm run test:unit
- name: Запуск e2e-тестов
command: npm run test:e2e
- name: Анализ падающих тестов
instruction: Проанализируй результаты и предложи исправления
2. Рефакторинг
name: refactor-to-typescript
description: Конвертирует JS-файл в TypeScript
steps:
- name: Анализ типов
instruction: |
Проанализируй файл и определи:
- Какие типы нужны
- Какие интерфейсы создать
- Для каких функций нужны определения типов
- name: Конверсия
instruction: |
Конвертируй JS в TS:
- Добавьте определения типов для всех функций
- Создайте интерфейсы для объектов
- Используйте union types где уместно
- Сохраните существующую логику
- name: Проверка типов
command: npx tsc --noEmit
on_failure: Fix type errors
3. Деплой
name: deploy-staging
description: Деплой на staging-окружение
steps:
- name: Запуск тестов
command: npm test
- name: Сборка
command: npm run build
- name: Деплой
command: |
VITE_ENV=staging npm run deploy
- name: Валидация
instruction: |
Проверь, что приложение доступно на staging
Запусти smoke-тесты
Создание своих Skills
Начните с простых сценариев:
name: lint-fix
description: Исправляет все проблемы линтера
steps:
- name: Запуск ESLint
command: npx eslint . --max-warnings=0
- name: Анализ ошибок
instruction: Проанализируй все ошибки и предложи исправления
- name: Auto-fix
command: npx eslint . --fix
- name: Проверка результата
command: npx eslint . --max-warnings=0
Сохраните в .claude/skills/lint-fix.yaml и вызывайте /skill lint-fix.
MCP: подключение к внешним сервисам
MCP (Model Context Protocol) — стандарт, позволяющий Claude Code подключаться к внешним сервисам, базам данных, файловым системам и другим инструментам.
Что такое MCP?
MCP-сервер — это компонент, который предоставляет дополнительные возможности Claude Code через стандартизированный интерфейс:
- Resources: структурированные данные (документация, файлы, схемы базы данных)
- Tools: действия (запросы к API, выполнение команд)
- Prompts: готовые шаблоны запросов
Популярные MCP-серверы
@context7 — Документация библиотек
/mcp enable context7
Доступ к документации 50 000+ библиотек прямо в чате:
> Как использовать useEffect для очистки подписок?
[context7 автоматически подтянет официальную документацию React]
@git — Операции с git
/mcp enable git
Расширенные git-операции:
> Покажи все коммиты, которые затрагивали auth-flow за последнюю неделю
> Создай ветку от коммита X и примени патч к файлу Y
@filesystem — Управление файлами
/mcp enable filesystem
Мощная работа с файловой системой:
> Найди все TS-файлы, которые используют useEffect без cleanup
> Переименуй все компоненты из snake_case в PascalCase
@database — Работа с базами данных
/mcp enable postgres@latest
Запросы к базе данных:
> Покажи всех пользователей без email в таблице users
> Создай миграцию для добавления индекса на users.email
Добавление MCP-сервера
# Через Claude Code
/mcp install context7
# Или в конфиге
# .claude/config.json
{
"mcpServers": {
"filesystem": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem", "/path/to/project"]
}
}
}
Выбор MCP-серверов
Не подключайте все доступные серверы — это перегрузит контекст. Рекомендуется:
| Задача | Рекомендуемые MCP-серверы |
|---|---|
| Документация | @context7 |
| Git-операции | @git |
| Работа с файлами | @filesystem |
| GitLab/GitHub | @gitlab, @github |
| PostgreSQL | @postgres |
| Тестирование в браузере | @puppeteer |
Лимит: 3–5 активных MCP-серверов оптимально.
Проверка активных MCP
# Команда Claude Code
/context
# Показывает:
# - Загруженные MCP-серверы
# - Потребление токенов каждым
# - Активные подключения
Управление контекстом
Контекст — это всё, что ИИ «знает» о вашей сессии: файлы, диалог, команды, инструменты. Контекстное окно ограничено (200K–1M токенов), поэтому важно управлять им эффективно.
CLAUDE.md — ваши инструкции
CLAUDE.md в корне проекта загружается автоматически в начале каждой сессии. Это ваш способ дать Claude постоянный контекст о проекте.
# CLAUDE.md
## Tech Stack
- React 18 + TypeScript + Tailwind
- State: Zustand
- API: React Query + Axios
- Tests: Jest + Testing Library
## Code Style
- Named exports для компонентов
- Default exports для утилит
- PascalCase для компонентов
- camelCase для функций/переменных
## Common Patterns
### API Calls
API-вызовы только при mount или действии пользователя. Используйте React Query.
### Hook Usage
Используйте custom hooks для логики (useAuth, useToast).
## Commands
- Build: `npm run build`
- Test: `npm test`
- Dev: `npm run dev`
Команды управления контекстом
# Полный сброс истории
/clear
# Сжать диалог — сократить ~50%
/compact
# Показать текущий контекст
/context
Когда использовать /clear vs /compact
| Команда | Когда использовать |
|---|---|
/clear | Задача завершена, начинаете новую, контекст «отравлен» |
/compact | В середине задачи, близки к лимиту контекста, нужна непрерывность |
Цикл Commit-Clear-Repeat
Самый эффективный workflow:
1. Реализуй feature
2. Git commit
3. /clear
4. Следующая задача
Каждая сессия начинается с чистого листа и максимальной точности.
Тесты и их важность
При работе с ИИ-помощниками тестирование — это критически важно. Без тестов ИИ может создать код, который работает при генерации, но ломается при минимальных изменениях или граничных случаях.
Почему тесты обязательны
- Галлюцинации — ИИ часто создаёт код, который работает в моменте, но не учитывает граничные случаи
- Регрессионная защита — без тестов сложно заметить, когда изменения ломают существующий функционал
- Документация поведения — тесты служат живой документацией того, как должен работать код
- CI/CD-валидация — автоматические тесты предотвращают деплой сломанного кода
Паттерны генерации тестов
Тестирование по покрытию
> Создай тесты с полным покрытием для src/services/payment.ts
Claude Code сгенерирует:
- Unit-тесты для отдельных функций
- Интеграционные тесты для рабочих процессов
- Тесты граничных случаев
- Тесты симуляции ошибок
Property-based тестирование
> Используй property-based тестирование для utils/format.ts
Сгенерируются тесты, которые проверяют свойства:
- "форматируя уже отформатированную дату, получаем тот же результат"
- "форматирование null не выбросит ошибку"
Snapshot-тестирование
> Добавь snapshot-тесты для всех UI-компонентов
Claude Code создаст __snapshots__ и обновит их при изменениях.
Интеграция с CI/CD
# .github/workflows/ai-generated-tests.yml
name: Run AI-Generated Tests
on: [push, pull_request]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
- run: npm ci
- run: npm test
- name: Gen AI tests from Claude
env:
ANTHROPIC_API_KEY: ${{ secrets.CLAUDE_KEY }}
run: |
claude -s generate-tests --path=src/services/payment
npm run test:generated
Лучшие практики тестирования с ИИ
- Всегда просите метрики покрытия — ИИ обычно стремится к 80–90%
- Проверяйте граничные случаи — явно просите тесты на null, undefined, пустые строки
- Включайте асинхронные тесты — вызовы API, таймауты, отклонённые промисы
- Мокайте внешние зависимости — базы данных, API, файловая система
- Тестируйте пути ошибок — успешные сценарии важны, но ошибочные — критичны
Пример полного тестового набора
> Создай полноценный набор тестов для auth-context.ts
Claude Code создаст:
```typescript
// auth-context.test.ts
describe('AuthContext', () => {
describe('login', () => {
it('should login with valid credentials', async () => {...})
it('should reject invalid email format', async () => {...})
it('should reject wrong password', async () => {...})
it('should handle network errors', async () => {...})
it('should set timeout', async () => {...})
})
describe('logout', () => {
it('should clear tokens', () => {...})
it('should notify listeners', () => {...})
})
describe('token refresh', () => {
it('should refresh before expiry', async () => {...})
it('should retry on network error', async () => {...})
it('should redirect to login on 401', async () => {...})
})
})
Лучшие практики
Начните с малого
Не надо:
- Просить ИИ переписать весь монорепо одной командой
- Делегировать сложные архитектурные решения без понимания контекста
Надо:
- Начните с одного файла или одной функции
- Постепенно делегируйте задачи, убедившись в качестве на малых
- Сохраняйте понимание проекта, даже делегируя работу
Будьте конкретны
Плохо:
Исправь код
Сделай быстрее
Улучши тесты
Хорошо:
Исправь ReferenceError в src/utils/auth.ts:15 — неопределённая переменная 'user'
Добавь кэширование для api.get('/users') с истечением через 5 минут
Добавь тест для login() с невалидными учётными данными, возвращающими ошибку
Используйте Git-чекпоинты
# Перед крупными изменениями
git commit -m "checkpoint: before AI refactor"
# После ИИ-работы
git diff # Проверьте изменения
git commit -m "refactor: modularize auth service"
Валидируйте ИИ-код
Никогда не принимайте сгенерированный код без ревью:
- Проверьте логику
- Убедитесь в отсутствии уязвимостей безопасности
- Проверьте соответствие архитектурным паттернам проекта
- Запустите тесты перед коммитом
Используйте /context активно
# Проверьте, что Claude понимает структуру перед задачей
> /context
[Покажет:
- Структуру проекта
- Загруженные MCP-серверы
- Текущие файлы в контексте
- Использование токенов]
Логирование ошибок ИИ
Когда ИИ не справляется:
- Изучите, почему это произошло
- Скорректируйте свои инструкции
- Запишите работающие паттерны в CLAUDE.md
- Создайте skill для аналогичных задач
Распространённые ошибки
1. Принятие всего сгенерированного кода
Проблема: ИИ может создать аккуратный, но неправильный код.
Решение: Всегда проверяйте код, особенно:
- Уязвимости безопасности
- Граничные случаи
- Вопросы производительности
2. Перегрузка контекста
Проблема: Попытка загрузить весь проект за раз.
Решение:
- Загружайте только нужные файлы
- Применяйте
/compactвместо/clear - Разбивайте задачи на фокусированные сессии
3. Отсутствие тестов
Проблема: Деплой проходит, но в продакшене всё ломается.
Решение: Всегда просите тесты для новых функций.
4. Туманные инструкции
Проблема: ИИ делает разные вещи при одинаковых промптах.
Решение: Уточните задачу в промпте, напишите примеры
# Плохо
"Ускорь API-вызовы"
# Хорошо
"Добавь кэширование для api.get('/users') с истечением через 5 минут через Redis.
Ключ кэша должен включать параметры запроса и ID пользователя."
5. Не используете Skills и MCP
Проблема: Тратите время, объясняя использование стандартных библиотек.
Решение: Подключите нужные MCP-серверы для доступа к документации.
Заключение
Claude Code — это мощный инструмент, который меняет то, как мы пишем код. Ключ к эффективному использованию — не в том, чтобы делегировать всё, а в том, чтобы делегировать правильные задачи правильно.
Начало:
- Установите Claude Code
- Создайте CLAUDE.md для вашего проекта
- Добавьте 2–3 MCP-сервера (context7, git, filesystem)
- Начните с небольших задач
Развитие: 5. Создайте skills для повторяющихся сценариев 6. Интегрируйте с CI/CD для автоматического тестирования 7. Освойте управление контекстом для длинных сессий
Продвинутый уровень: 8. Координация нескольких агентов для сложных фич 9. Собственные MCP-серверы для доменных знаний 10. Автономный рефакторинг крупных кодовых баз
Не бойтесь экспериментировать, но всегда валидируйте результаты. Claude Code — это ваша сила, а не замена вашему здравому смыслу.