Все статьи
Claude CodeРуководствоMCPskills

Введение в Claude Code: skills, MCP и эффективные практики

Omni Router

Введение в Claude Code

Что такое 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 токенов
ИнтеграцияРасширения IDEMCP-протокол, горизонтальные команды
АвтоматизацияОграниченаПолноценная 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. Следующая задача

Каждая сессия начинается с чистого листа и максимальной точности.


Тесты и их важность

При работе с ИИ-помощниками тестирование — это критически важно. Без тестов ИИ может создать код, который работает при генерации, но ломается при минимальных изменениях или граничных случаях.

Почему тесты обязательны

  1. Галлюцинации — ИИ часто создаёт код, который работает в моменте, но не учитывает граничные случаи
  2. Регрессионная защита — без тестов сложно заметить, когда изменения ломают существующий функционал
  3. Документация поведения — тесты служат живой документацией того, как должен работать код
  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

Лучшие практики тестирования с ИИ

  1. Всегда просите метрики покрытия — ИИ обычно стремится к 80–90%
  2. Проверяйте граничные случаи — явно просите тесты на null, undefined, пустые строки
  3. Включайте асинхронные тесты — вызовы API, таймауты, отклонённые промисы
  4. Мокайте внешние зависимости — базы данных, API, файловая система
  5. Тестируйте пути ошибок — успешные сценарии важны, но ошибочные — критичны

Пример полного тестового набора

> Создай полноценный набор тестов для 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 — это мощный инструмент, который меняет то, как мы пишем код. Ключ к эффективному использованию — не в том, чтобы делегировать всё, а в том, чтобы делегировать правильные задачи правильно.

Начало:

  1. Установите Claude Code
  2. Создайте CLAUDE.md для вашего проекта
  3. Добавьте 2–3 MCP-сервера (context7, git, filesystem)
  4. Начните с небольших задач

Развитие: 5. Создайте skills для повторяющихся сценариев 6. Интегрируйте с CI/CD для автоматического тестирования 7. Освойте управление контекстом для длинных сессий

Продвинутый уровень: 8. Координация нескольких агентов для сложных фич 9. Собственные MCP-серверы для доменных знаний 10. Автономный рефакторинг крупных кодовых баз

Не бойтесь экспериментировать, но всегда валидируйте результаты. Claude Code — это ваша сила, а не замена вашему здравому смыслу.


Начать с Claude Code