Claude Code в production: 6 месяцев, 9 проектов, лессоны

Веб Штурм
  • Claude Code
  • AI
  • DevOps
  • MCP
  • subagents

Claude Code за полгода прошёл путь от удобного CLI-помощника до основной среды разработки на 9 наших проектах. Не «кодогенератор» и не «pair-programmer», а оркестратор знаний и операций — со своей системой расширений, памятью и долгоживущими рабочими процессами.

Контекст

С ноября 2024 по октябрь 2025 Anthropic выпустил пять точек расширения подряд: MCP (ноябрь 2024), Subagents (июль 2025), Hooks (сентябрь 2025), Plugins и Skills (октябрь 2025). Каждый релиз раз в два месяца. К весне 2026 в открытом маркетплейсе уже 425 plugins, 2 810 skills и 200 agents [ccpi/tonsofskills.com].

В нашем боевом контуре — Круизный флот (бронирование речных круизов), Прогулочный флот (прогулки на теплоходах), ozsm.ru (B2B вибропогружатели), webshturm.ru (этот сайт), Hermes Stack (9 docker-сервисов на 185.179.188.145), Paperclip (knowledge-management), Gemma Oracle (локальный fine-tune). Среднее число коммитов в день — 15-30, среднее число subagent-dispatch’ей за сессию — 5-15.

MCP-серверы как источник правды

Главная проблема обычного LLM — у него только то, что помещается в окно. MCP это исправляет: Claude получает прямой доступ к внешним системам, без копирования данных в промпт.

У нас подключено три MCP:

  • LightRAGknowledge-graph + векторный поиск по нашим документам (~150 markdown/docx, ~1 500 entities, ~3 000 relationships). Через lightrag_query(mode='mix') Claude находит реквизиты ООО, спецификации, прошлые решения за один вызов.
  • Graphify — AST-граф workspace K:/webshturm/ (~5 200 узлов): кто импортирует Button.svelte, кратчайший путь от +page.svelte до calc_legacy_plan_price, какие функции вызываются из которых страниц.
  • river-mcp — MCP над legacy PHP/MariaDB оператора круизов с 60+ бизнес-операциями (заявки, туры, контрагенты, расчёт цен). Дисциплина запросов: сначала semantic app.<operation>, потом CALL stored_procedure(...), raw SQL — последний фоллбек. Не запросы в чат, а реальные данные с anonymization-layer. См. кейс river-mcp.

Принципы:

  • Всегда lightrag_query до начала задачи — экономит 30-50% контекста на повторное «открытие» прошлых решений.
  • get_neighbors в Graphify вместо Grep по большому каталогу — точечно, без шума.
  • Read-only по умолчанию — Claude видит prod, но не пишет туда без явного подтверждения.

Subagent-driven development

Один контекст плохо справляется с большим планом — копит ошибки, теряет фокус, поедает токены. Решение — каждый task получает свой fresh subagent с минимально необходимым контекстом.

Паттерн на webshturm.ru (этот сайт): план на 55 tasks разбит на семь фаз, каждая фаза — один subagent. Контроллер видит только итоги (DONE/CONCERNS, commit SHA, file count), а внутренние tool-calls остаются у subagent’а. Контекст контроллера экономится в 5-10 раз.

# Главный сеанс остаётся «дирижёром», работа делается в форках
Task("Phase 5a: Forms + API + hybrid mode") # → 5 commits, 9 vitest pass
Task("Phase 5b: Calculators + Pagefind + Я.Метрика") # → 4 commits, 16 vitest pass
Task("Phase 6a: Deploy artifacts (Caddyfile + workflow + DEPLOY.md)")

Цена паттерна — больше invocation’ов; зато провал одного task’а не загрязняет остальные.

Hooks для безопасности и автоматики

Hooks — это скрипты, привязанные к lifecycle-событиям Claude Code. Используем их в трёх ролях:

  1. Auto-lint после правки кода: PostToolUse hook на Edit запускает pnpm vitest run и блокирует следующий шаг, если тесты упали.
  2. Блокировка опасных команд: PreToolUse hook отлавливает docker system prune, git reset --hard origin/master, rm -rf /opt/webshturm-site/dist и требует явного подтверждения.
  3. Уведомления о завершении: Stop hook отправляет в Telegram бота @hermesdm64bot короткое уведомление со ссылкой на коммит и pipeline status.

Hooks не вмешиваются в код — они охраняют процесс.

Skills и Plugins как библиотека макросов

Skills — markdown-файлы, обучающие Claude повторяемому workflow. Один SKILL.md = одна slash-команда /штурм, /сохранись, /разбитьплан. Пишешь раз — используешь годами.

В нашем глобальном ~/.claude/skills/ лежат:

  • /сохранись — гарантированно записывает знания в LightRAG + memory-файл + MEMORY.md, не пропуская ни одного шага.
  • /штурм — брейншторм с гейтом «не писать код до approval design spec» (этот skill родил проектный план для webshturm.ru).
  • /разбитьплан — превращает spec в пошаговый task-list с TDD-чеклистами.

Plugins — следующий уровень: упакованные комплекты skills, hooks, MCP-конфигов. У нас стоит официальный superpowers: plugin (TDD, code-review, executing-plans), cybersecurity-skills (754 готовых рецепта по DFIR, malware analysis, pentesting) и собственный commit-commands:.

Что мы из этого вынесли

  1. Расширения важнее самой модели. Apples-to-apples сравнение «какая модель умнее» имеет смысл; но MCP+Skills+Hooks дают мультипликатор, который сильнее любой межмодельной разницы.
  2. Fresh context побеждает. Большой план в одном контексте — путь к деградации. Subagent-driven-development стоит дороже по токенам, но дешевле по итоговому браку.
  3. Автоматика возможна только через Hooks. Память и preferences не запускают команды — это делает только runtime-хук, привязанный к lifecycle-событию.

Ссылки

Часто задаваемые вопросы

Чем Claude Code отличается от Cursor и GitHub Copilot?
Cursor и Copilot — IDE-плагины, фокус на автодополнение и chat-window. Claude Code — CLI-агент с долгоживущей памятью (CLAUDE.md, skills, hooks), нативной поддержкой MCP-серверов и параллельным запуском subagent'ов. Подходит для долгих задач: миграции, рефакторинги, интеграции.
Сколько стоит Claude Code на проект в месяц?
При prompt-caching и аккуратных промптах — $20-80/мес на активного разработчика. Тяжёлые задачи (большие миграции, генерация документации) могут добавлять $50-150 разово. Альтернативы: API через OpenRouter, локальные модели (Gemma 4, Qwen 3.6) для read-only задач.
Можно ли использовать Claude Code в проектах с 152-ФЗ?
Зависит от данных. Код и схемы БД — обычно можно (Anthropic не использует API-данные для обучения по умолчанию). ПДн (имена, контакты пользователей) в код передавать нельзя — нужно мокать или использовать on-premise LLM. Для регулируемых сред — Gemma 4 / Qwen 3.6 локально.
Когда Claude Code не подходит?
Если команда не готова к контекст-инжинирингу (CLAUDE.md, skills, hooks) — окажется дорогим автодополнением. Не подходит для UI-heavy задач без точных спецификаций. Регулируемые домены требуют on-premise LLM. Не заменяет senior-инженера на архитектурных решениях — только ускоряет реализацию.