Claude Code у меня появился в марте 2025-го. Точную неделю не помню — в какой-то момент он у меня просто стал инструментом по умолчанию, и я с ним отработал примерно год.
Это не «AI убил программирование» и не «AI = x10 продуктивность». И то и другое — пустое. Реальность скучнее и интереснее одновременно.
Сразу важная оговорка: я использую Claude Code на максимум. Не «иногда», не «когда подходит» — постоянно, на каждой задаче. Если что-то можно сделать через него, я делаю через него. Под него подстроены CLAUDE.md, hooks, skills, slash-команды, два MCP-сервера. Это контекст для всех выводов ниже. Стек: Python, бэкенд, команда маленькая.
═════════════════════════════════════════════════════════════════
Где он реально помог
Массовые рутинные правки. Самое чистое попадание. Когда у тебя задача «во всех 47 эндпоинтах добавь параметр request_id в логи и пробрось его в нижний слой» — это его работа, а не моя. Открываю агента, описываю абзацем, прошу сначала план, смотрю план, говорю «давай» — и через минут десять у меня PR с тестами. По ощущениям часов тридцать-сорок за год сэкономил только на таких задачах.
Совет, который я выработал не сразу: на больших правках сначала только план, без кода. Если план мимо — лучше потерять минуту на новой просьбе, чем час на разгребании неверно сделанного.
Чтение чужого репозитория. Раньше я тратил полдня на «понять, что тут вообще происходит». Сейчас открываю агента и говорю: «прочти структуру, расскажи как устроена аутентификация». Через минуту — приличный пересказ с указанием файлов.
Только проверяю всегда — открываю пару названных файлов и сверяю с пересказом. Примерно в каждом пятом пересказе он что-то слегка приукрашивает — пишет про функцию, которой в коде нет, или приписывает модулю поведение, которого там нет. Даже с этой поправкой быстрее, чем читать с нуля.
Тесты на существующий код. «Прочти parse_invoice, напиши pytest на основные ветки и edge cases». Из десяти полученных тестов восемь нормальные, два — либо избыточные, либо мокают то, что не надо мокать. Правлю и коммичу.
Объяснение чужих PR. Открываю PR на 800 строк, ничего не понимаю. Прошу: «суммаризируй — что меняется, какие риски, что я бы спросил у автора». Сильно сокращает усилие на ревью. Самое тихо-полезное применение — никаких революций, просто меньше устаёшь к концу дня.
═════════════════════════════════════════════════════════════════
Где он подвёл
Архитектурные решения. Когда я задаю общий вопрос — например, «выносить отчёты в отдельный сервис или оставить эндпоинтом в основном приложении» — я получаю аккуратный средний ответ. Долго я списывал это на ограничение модели — пока не понял, что проблема в моей постановке вопроса, а не в инструменте.
Сейчас перед архитектурным вопросом я даю модели:
— характеристики нагрузки (сколько запросов в секунду, объём данных, как часто читают/пишут)
— стек и инструменты, которые уже стоят
— историю проекта — на каких решениях обожглись, что не используем принципиально
— кто будет сопровождать это после меня
С таким контекстом ответ становится осмысленным — модель видит ограничения и предлагает решение в их рамках, а не «лучшее в вакууме». Без контекста она физически не может ответить осмысленно, и это претензия не к ней, а к тому, как я её спрашивал.
Сложные баги в многопоточном коде. Тут я с моделью очень осторожен — это её слепая зона. Когда два процесса одновременно меняют одну запись, или когда нужно правильно повторить запрос после сбоя, или когда данные синхронизируются между системами не мгновенно — модель пишет код, который выглядит правильно, но прячет проблему. Обычные тесты её не ловят: они идут по нормальному сценарию, в один поток, без сетевых сбоев.
Хуже того — после исправления модель часто защищает свой код, даже когда ты тыкаешь её в проблему пальцем.
После пары неприятных случаев я выработал правило: на правки в коде, где есть параллельность, повторы или синхронизация между сервисами — я сначала заставляю модель перечислить словами все сценарии, в которых это может сломаться. Без кода, просто прозой. Если она не может — значит, и фикс будет наугад, и надо разворачиваться. Только когда полный список собран — разрешаю писать код. И обязательно прогоняю результат через /ask-codex (про него ниже). Такие баги — как раз тот случай, где две разные модели реже сходятся в одинаковой ошибке, и расхождение между ними — самый ценный сигнал.
Долгие сессии. Если работаешь больше часа в одной сессии — модель дрейфует. Забывает, что у вас в проекте httpx, а не requests, начинает писать print вместо вашего логгера, тянет в зависимости что-то, что у вас под запретом. Это не моё личное наблюдение — Anthropic в апреле этого года выпустила постмортем, где сама признала регресс качества в длинных сессиях. Лечится CLAUDE.md и привычкой не сидеть в одной сессии целый день.
═════════════════════════════════════════════════════════════════
Несколько вещей, которые до меня дошли не сразу
Новая сессия = новая голова. Если на следующий день вы продолжаете задачу — дайте контекст явно, первым сообщением. Модель не помнит вчерашний разговор; она будет реверс-инжинирить происходящее по коду, и в половине случаев это закончится плохо. Я наступал три раза, прежде чем выработал привычку первое сообщение в новой сессии писать на полтора абзаца с контекстом.
Цифрам доверять нельзя. Модель уверенно скажет «здесь 47 эндпоинтов», и это будет 42. Это касается всего — количества тестов, размеров файлов, строк в проекте. Проверяю отдельной командой в терминале (grep -c, find | wc -l) или прошу её же запустить эту команду и показать вывод. Стоит дёшево, экономит репутацию.
MCP-серверы — самая недооценённая фича. У меня подключены MCP к Telegram (читать чаты) и GitLab (смотреть MR, issues, файлы напрямую). Это меняет workflow: становится возможным «классифицируй эти сообщения за неделю», «суммируй мне обсуждение в этом MR, что в итоге решили». Без MCP то же самое делалось копипастой по полчаса.
═════════════════════════════════════════════════════════════════
Что у меня лежит в .claude/
Это, пожалуй, главное в статье. Сам Claude Code из коробки — нормальный, но не выдающийся инструмент. Превращает его в продуктивный именно то, что лежит в .claude/: правила, хуки, скиллы, slash-команды. Покажу свой набор.
CLAUDE.md — два уровня
Глобальный (~/.claude/CLAUDE.md) — про мои привычки:# Global instructions## Communication- Отвечать на русском- Код, комменты, коммиты — на английском- Без воды и повторения моего вопроса в ответе## Code style- Минимальный читаемый код, следовать стилю проекта- Не добавлять docstrings/типы/комменты без просьбы- Не рефакторить то, о чём не просили- Не over-engineer## Git- Короткие коммиты в imperative lowercase- Не коммитить и не пушить без явной просьбы- Никаких --force и --amend без подтверждения## Safety- Никогда не коммитить .env, секреты, токены- Никогда не хардкодить credentials- Никаких rm -rf, DROP TABLE без подтверждения
Проектный (<repo>/CLAUDE.md) — про проект:# order-payments## What this isСервис приёма оплат. Принимает вебхуки, обновляет статусы заказов,шлёт уведомления в Telegram-боты.## Stack- Python 3.12, FastAPI- httpx (НЕ requests)- structlog (НЕ print)- PostgreSQL + asyncpg, raw SQL (НЕ ORM)## Conventions- Все handlers — async def- DB через pool, не ORM- Доменные ошибки через app/errors.py- Конфиг через pydantic-settings, всё в .env## Avoid- requests, print, ORM, sync DB calls, except Exception без причины
═════════════════════════════════════════════════════════════════
Один hook — самая дёшево-выгодная штука
`.claude/settings.json`:```json{ "hooks": { "PostToolUse": [ { "matcher": "Edit|Write", "hooks": [ { "type": "command", "command": "python .claude/hooks/run_bot_tests.py" } ] } ] }}````.claude/hooks/run_bot_tests.py`:```python#!/usr/bin/env python3"""Auto-run pytest after edits to bot/*.py files."""import jsonimport sysimport subprocessdata = json.load(sys.stdin)tool = data.get("tool_name")if tool not in ("Edit", "Write"): sys.exit(0)file_path = data.get("tool_input", {}).get("file_path", "")if not file_path.endswith(".py") or "bot/" not in file_path: sys.exit(0)result = subprocess.run( ["pytest", "bot/tests/", "-x", "--tb=short", "-q"], capture_output=True, text=True, timeout=30,)if result.returncode != 0: print(f"Tests failed:\n{result.stdout[-1500:]}", file=sys.stderr)sys.exit(0)```
Двадцать строк, двадцать минут на настройку — и тесты прогоняются после каждой правки. Если упало — Claude видит ошибку через stderr и сам пытается починить в следующем сообщении.
═════════════════════════════════════════════════════════════════
Skills — про то, чего я раньше не знал
Skills появились во второй половине 2025-го, и поначалу я к ним не относился серьёзно — думал, это «промпт-пресеты». Через пару месяцев понял, что это не так. Skill — это упакованная экспертиза: набор инструкций + примеры + дополнительные файлы, которые модель подгружает только когда задача попадает в её область. Это сильно лучше, чем держать всё в одном промпте.
У меня сейчас активно используются:
— frontend-design — отдельный разговор, расскажу ниже.
— mcp-builder — каждый раз, когда я пишу новый MCP-сервер, этот skill вытаскивает правильную структуру (Python FastMCP), частые ошибки, паттерны логирования. Сильно сокращает время на новый MCP с пары вечеров до пары часов.
— webapp-testing — когда нужно прогнать Playwright-тест локально, не вспоминая каждый раз API. Открывает браузер, кликает, делает скриншоты.
— document-skills:xlsx/pdf/docx — для скриптов, которые генерят Excel/PDF/Word отчёты. Без этого Claude писал бы код с openpyxl наугад; с skill — пишет рабочий с первого раза.
— systematic-debugging — открывается, когда что-то странно сломалось. Заставляет модель не сразу предлагать фикс, а сначала собрать данные.
Главное, чему я научился: не лениться искать, какой skill есть для задачи. Каждый месяц добавляют новые, я раз в две недели проверяю список.
═════════════════════════════════════════════════════════════════
Frontend — отдельная история
Тут я хочу честно. Если открыть Claude Code и попросить «сделай мне дашборд», то получишь тот самый AI-look: Inter font, фиолетовый градиент, карточки на белом фоне, неотличимо от десятка других сайтов из 2025-го. Это уже стало мемом. И это была моя главная претензия к Claude Code на фронте полгода назад.
Решилось установкой frontend-design skill. Этот skill буквально написан против AI-эстетики — у него в инструкции прямым текстом:
> NEVER use generic AI-generated aesthetics like overused font families (Inter, Roboto, Arial, system fonts), cliched color schemes (particularly purple gradients on white backgrounds), predictable layouts and component patterns, and cookie-cutter design that lacks context-specific character.
И вместо этого требует выбрать сильное эстетическое направление (минимализм, максимализм, ретро-футур, брутализм и т.д.), подобрать характерные шрифты, нестандартные палитры, неожиданные композиции. С ним фронт получается реально такой, что я бы не отличил от работы дизайнера. Без него — да, AI-slop.
Это переломный момент для моего отношения к Claude Code на фронте. Полгода назад я бы написал, что он на фронте слаб. Сейчас я бы написал, что он слаб без skill и хорош со skill. Это разные миры.
═════════════════════════════════════════════════════════════════
Slash-команды в моём рабочем потоке
— /simplify — после написания нового кода всегда прогоняю эту команду. Она проходит по изменениям и предлагает что упростить, где есть дублирование, где избыточная абстракция. Я взял за правило: ни один новый код не идёт в коммит до /simplify.
— /security-review — перед мерджем в проекты, где есть платежи или PII. Это встроенная команда, проходит по diff’у и ищет уязвимости. Ловит не всё, но дёшево.
═════════════════════════════════════════════════════════════════
/ask-codex и cross-check как принцип
Перед рискованными мерджами я прогоняю изменения через другую модель — Codex от OpenAI. Идея простая: два разных AI с разной обучающей выборкой реже сходятся в одинаковых ошибках, чем один. Если оба согласны — мердж безопасен. Если расходятся — это сигнал ещё раз вдумчиво посмотреть.
Исторически я делал это через свой кастомный skill /ask-codex — небольшой bash-скрипт, который собирал контекст (что обсуждаем, что в git diff) и звал codex CLI. Работало, но грубо: ответ выводился сырым, обработки ошибок практически не было, никакого автоматического разбора результата.
В начале 2026-го OpenAI выпустила официальный плагин для Claude Code (codex-plugin-cc) с тремя skills: codex-cli-runtime (правильный вызов CLI), codex-result-handling (как презентовать ответ Codex, в том числе с критическим правилом «после ревью STOP — не применять фиксы без подтверждения пользователя») и gpt-5-4-prompting (как переформулировать запрос под Codex до отправки). Это то же самое, что я собирал на коленке, только корректнее.
Сейчас у меня в pre-commit checklist стоит связка /simplify → cross-check через Codex → /security-review. Звучит как оверкилл — на практике занимает 5–7 минут перед рискованным мерджем. На обычных правках я не зову это всё, только когда трогаю платежи, миграции данных или авторизацию.
═════════════════════════════════════════════════════════════════
/simplify → Codex → /security-review перед рискованным мерджем»Принцип здесь важнее конкретного инструмента: не верить одной модели на критичных участках кода. Сегодня у меня связка Claude+Codex, завтра это могут быть другие модели — суть не в брендах, а в том, что cross-check экономит очень дорогие ошибки.
═════════════════════════════════════════════════════════════════
Стоит ли $200 в месяц
Подписка Max — это две тысячи долларов в год. Сильно. Если бы я не использовал Claude Code — мне было бы за неё обидно. Так — нормально, по часам отбивается.
Но тут важный момент. Я думаю, многие люди разочаровываются в Claude Code не потому что он плохой, а потому что используют его «как обычный автокомплит». В таком режиме он окупает $20/мес, не $200. Большая часть экономии возникает из режима «агент с правилами проекта, hooks, skills, slash-командами, MCP» — то есть когда ты под него подстроил процесс. Без подстройки это просто более умный VSCode, и тогда зачем платить.
Если у вас есть месяц на эксперимент — попробуйте полноценно. Заведите CLAUDE.md (хоть бы и по моему образцу). Настройте один hook. Поставьте frontend-design (если делаете фронт) и systematic-debugging (всем подойдёт). Подключите MCP к чему-нибудь, что вам нужно регулярно. Возьмите за привычку /simplify после каждого нового файла. Через месяц поймёте — ваш это инструмент или нет.
Половина моих знакомых решила «не моё» — и это нормальный исход. Вторая половина перестала открывать редактор без него. Промежуточных позиций я почти не встречал.
═════════════════════════════════════════════════════════════════
А что у вас в .claude/? Особенно интересны:
— Hooks, которые вы написали под свой стек — что они проверяют, как они вас спасли
— Slash-команды под конкретные задачи — у каждой команды свои ритуалы перед мерджем, и я уверен у вас есть что-то, до чего я ещё не додумался
— MCP-серверы, которые реально используются каждый день — особенно не публичные, а написанные под свою инфру
— Skills, которые вы откопали или написали сами и теперь не представляете жизнь без них
Делитесь в комментариях. Уверен, у каждого активного пользователя в .claude/ лежит что-то такое, чего нет ни у кого другого — соберём вместе живой каталог идей.
ссылка на оригинал статьи https://habr.com/ru/articles/1042408/