April 13

Гайд по использованию Claude Code с нуля для новичка

За прошлый год я потестил достаточно большое количество ИИ-инструментов для разработки (Cursor, Claude Code, Codex, Cline, Aider, RooCode, Kilo, Augment). Какие-то отбросил почти сразу, какие-то прям поюзал и даже посравнивал на одних и тех же задачах. В итоге сейчас я отменил все подписки кроме Claude Code. Почему Claude Code?

Канал с гайдами и контентом по claude code, выкладываем новости (когда режут лимиты в 10 раз) и какие инструменты через claude реализуем для проектов, канал: https://t.me/claudedevolper

  • Главная причина - на моих субъективных ненаучных сравнениях качество намного лучше, чем у конкурентов
  • Богатая эко-система плагинов и в целом это популярный развивающийся инструмент
  • Адекватная цена - за 100/200 долларов я получаю практически безлимитные запросы и не парюсь о тратах

Спорный момент - ухудшают ли использование ИИ-агентов понимание кода и контроль над кодовой базой? Наверное, да, особенно если работать в YOLO-режиме и не ревьюить решения агента и код. В любом случае мне сейчас не очень нужно глубокое понимание самого кода, достаточно архитектурного понимания, как всё работает, так как почти все мои задачи делятся на три типа:

  • Одноразовые задачи - проанализировать файлы, сделать рисёч, побрейнстормить
  • Создание внутреннего инструментария для автоматизации рутинных задач (как моих, так и всей компании)
  • ML-эксперименты с новыми архитектурами - 90% не сработает, 10% можно вникнуть в детали кода пост-фактум

В этом году мы решили централизованно внедрять ИИ-инструменты для разработки в техническом отделе, до этого только точечно компенсировали стоимость подписки энтузиастам. Для начала я решил взять пять мест в командном плане Claude Code - как раз потому что это мой любимый инструмент, по которому я могу дать какие-то субъективные советы. Написал для коллег гайд и решил поделиться с вами его слегка переработанной версией.

Если вы никогда не использовали CC или подобные инструменты, то рекомендую забить на гайды в стиле “запускаем 5-10 агентов параллельно” и поработать сначала в максимально простом режиме - без плагинов, с одной открытой вкладкой, можно через плагин для VS Code или в Zed. Так вы лучше поймёте сильные и слабые стороны, как лучше формулировать свои запросы и не пропустите момент, когда его нужно останавливать.

Best practices

Если вы в России

Я использую такую схему - VPN настроен через Shadowsocks, сверху поднят Privoxy, так как CC не заработал у меня с SOCKS5-прокси.

Схема простая, ставим Privoxy (sudo apt-get install privoxy), в конфиг /etc/privoxy/config добавляем строчку

forward-socks5t / 127.0.0.1:1080 .

И перезапускаем: sudo systemctl restart privoxy.

Для удобства у меня в ~/.bash_aliases есть такие команды:

alias setproxy='export http_proxy=http://127.0.0.1:8118; export https_proxy=http://127.0.0.1:8118; export no_proxy=localhost,127.0.0.1; export HTTP_PROXY=$http_proxy; export HTTPS_PROXY=$https_proxy; export NO_PROXY=$no_proxy'

alias unsetproxy='unset HTTP_PROXY; unset HTTPS_PROXY; unset NO_PROXY; unset http_proxy; unset https_proxy; unset no_proxy'

В no_proxy можно добавить любые адреса, к которым CC должен обращаться не через VPN.

Теперь в терминале достаточно набрать setproxy и потом уже claude.

CLAUDE.md и правила

Не забывайте добавлять важные штуки в CLAUDE.md в корне проекта (ещё есть общий на все проекты - ~/.claude/CLAUDE.md). Например:

  • Используй только uv для установки питон-пакетов
  • Используй энв ~/.virtualenvs/breastcancer для запуска питон-команд
  • Все новые ветки называй либо features/, либо experiments/

Без этого CC будет постоянно совершать одни и те же бесячие ошибки. Время от времени можно его компрессить с помощью самого CC.

Ещё можно просить CC самого обновлять этот файл прям по ходу работы. Например, когда вы исправили его ошибку, добавьте - “Обнови CLAUDE.md, чтобы больше не повторять эту же ошибку”.

Во многих командах этот файл коммитят прям в репу и работают над ним коллаборативно.

Если не хочется пихать всё в один файл, то можно использовать правила, их нужно класть в отдельные маркдауны в папку .claude/rules (на уровне проекта) или ~/.claude/rules (на уровне пользователя).

Работаем с сессиями

Сессия - основной юнит работы в CC. Каждый раз, когда мы хотим решить какую-то новую задачку, мы создаём новую сессию, в контекст которой загружаются:

  • Системный промпт и инструменты
  • CLAUDE.md и правила (“memory files”)
  • Описания скиллов
  • Описания включенных инструментов MCP
  • Описание кастомных субагентов
  • Если сессия не новая, то предыдущие сообщения

Важные команды для работы с сессиями:

  • /rewind - откатиться на какой-то шаг разговора
  • /resume - продолжить одну из прошлых сессий
  • /fork - форкнуть сессию (создаётся копия текущей с новым айдишником)
  • /rename - дать удобное название сессии вместо автоматического
  • /compact - можно вручную триггернуть сжатие контекста и инструкцией

Авто-сжатие, кстати, теряет кучу важных деталей (например, какой скрипт с какими параметрами мы сейчас используем для дебаггинга), так что рекомендую такие штуки добавлять в md-файл со спецификацией задачи и сразу его прокидывать в контекст после сжатия.

Ну и вообще наберите / и поизучайте, какие команды есть.

Для продолжения сессий можно также запускать такие команды в терминале:

  • claude --continue # последняя
  • claude --resume # список для выбора
  • claude --continue --fork-session # последняя сессия клонируется

Важно - по умолчанию сессии хранятся 30 дней после последнего изменения. Это можно изменить в конфиге (настройка cleanupPeriodDays).

Удобная тулза для поиска сессий во всех проектах сразу:
https://github.com/affaan-m/everything-claude-code

Чтоб посмотреть, что занимает контекст - наберите /context. Лучше всего отключать неиспользуемые MCP и плагины. Скиллы подгружаются лениво (по умолчанию только название и краткое описание), но, например, тулзы в MCP грузятся целиком.

Полезные хоткеи:

  • CTRL + U - стереть всю строчку
  • Shift + Enter - новая строчка (сначала нужно запустить /terminal-setup). Если не работает, то печатаем бэкслэш \ и нажимаем Enter

Режимы работы

У CC есть три режима работы, которые переключаются по Shift+Tab:

  • Дефолтный - спрашивает пользователя перед каждым действием в рамках текущих настроенных разрешений.
    • /permissions - команда для установки разрешенных действий.
    • Ещё можно покопаться в файле настроек или команде /config.
  • Авто-аксепт всех изменений - YOLO-режим, уходим пить кофе и надеемся на чудо.
  • Режим планирования - обсуждаем задачу и создаём маркдаун с описанием, пока не делаем никаких изменений.

Иногда CC решает войти в режим планирования самостоятельно.

Ещё можно поменять стиль ответов через команду /output-style:

  • Дефолтный
  • Объясняющий - более детально обосновывает свои решения
  • Обучающий - не просто пишет код, а ещё и просит самому писать часть кода для улучшения понимания

Работа над фичей

Есть разные варианты, как стартовать работу над фичей:

  • Просто описать в промпте, что вам надо - “поправь баг по этому трейсбеку”. Подходит для несложных задач.
  • Создать md-файл (или несколько) с детальным описанием задачи - самому или в режиме планирования.
    • Можно использовать скилл “Plan with files” (команда для добавления маркетплейса - claude plugin marketplace add OthmanAdi/planning-with-files), тогда результатом планирования всегда будут три файла - декомпозированный план задачи, находки по ходу работы (очень полезно при переполнении контекста, чтоб не потерялись всякие детали) и текущий прогресс.
  • Подключить Слак или MCP к инструменту, где у вас описаны задачи. В твиттере регулярно вижу истории, как люди чуть ли не из баг-трекера вызывают CC пофиксить проблему, но мы пока так не делаем, конечно.

Если нужно что-то показать агенту (например, как должен выглядеть будущий интерфейс), можно прям в терминал вставить картинку из буфера обмена.

Одна из важнейших вещей - обязательно написать тесты на планируемую фичу и сразу рассказать Клоду, как эти тесты запускать. Либо должен быть какой-то иной способ провалидировать результаты работы - как самому агенту по ходу работы, так и вам. Можно работать в стиле TDD (сначала тесты, потом код), для этого даже есть специальные скиллы, либо можно писать тесты пост-фактум. Всё зависит от ситуации и предпочтений, главное, чтоб была возможность автоматически проверить результаты работы системы на корректность и на соответствие поставленной задаче (Definition-of-Done).

Для сложных задач ещё полезно сначала попросить CC изучить релевантные части кодовой базы, можно натравить его прям на нужные файлы через @. После этого уже приступаем к планированию и имплементации.

Не забывайте следить за ходом работы и останавливать агента, когда он творит фигню или ушёл в петлю сумасшествия. Можно представить, что это парное программирование. Хотя, если задача не очень важная, то можно и забить и просто проверить финальный результат. Но я предпочитаю всё равно послеживать за работой, чтоб токены не горели просто так. А ещё CC очень любит после нескольких неудачных попыток написать что-то типа “ну ладно, не выходит, тогда пока упростим архитектуру сетки, чтоб побыстрее приступить к первому прогону”. Даже строгие запреты в CLAUDE.md не всегда помогают.

В конце работы над фичей обязательно сделайте финальное ревью изменений, способы можно комбинировать:

  • Традиционное ревью глазами через IDE или git diff
  • Попросить его же перепроверить результаты своей работы, для этого есть даже специальные скиллы типа /code-review
  • Открыть новую сессию и попросить сделать ревью. На вход можно кинуть описание задачи

Часто полезно сделать ревью несколько раз - за один прогон все проблемы не находятся. Ещё важный момент - иногда баги, которые он находит - это вообще не баги, поэтому лучше не доверять слепо, а въехать самому, что же и почему он предлагает исправить.

Ну и, конечно, не забываем соблюдать стандартные правила разработки, принятые в вашей команде.

Безопасность ключей и паролей

Обратите внимание, что CC может спокойно прочитать все ваши секретики из .env. Трагедия ли это, если он прочтёт? Наверное, в большинстве случаев нет, вряд ли сотрудники Антропика пойдут воровать ваши данные, но постоянно происходят всякие утечки, что-то в трейн-сет утечёт и так далее. Так что лучше обезопасить себя - например, защитить свой энв-файл от прочтения или вообще отказаться от плейн-текстовых энв-файлов. Выбирайте, какой путь вам больше нравится.

Как сделать, чтоб CC мог сам запускать реальные команды, которые требуют секретов?

Вариант 1 (небезопасный)

set -a && source .env && set +a && claude

И в CLAUDE.md пишем, чтобы агент ссылался на все секреты исключительно по имени переменной и не читал их значения. Стопроцентная ли это защита? Конечно, нет. CC может специально или случайно забить на наши инструкции и, например, сделать echo, или же значение попадёт в verbose-аутпут какой-нибудь bash-команды. Но как базовая защита - подойдёт.

Вариант 2

Использовать одноразовые ключи. Создали ключи, повайбкодили, удалили ключи и создали новые под прод.

Вариант 3

Либо сами запускаем любые команды, которые требуют секретов.

Скиллы

Скиллы - это что-то типа CLAUDE.md, но которые не забивают всегда контекст и подгружаются по необходимости. В скиллах описаны разные правила, как нужно решать ту или иную задачу.

Агент может сам выбрать использовать скилл (по названию и описанию) или можно ему прямо сказать “используй скилл дебаггинга” или вообще запустить скилл как команду “/debug”. Один из популярных скиллов - разные вариации на “/refactor-clean”, “/clean-slop” для рефакторинга и удаления лишнего кода и файлов после длинной сессии вайб-кодинга.

Всякие полезные скиллы в основном содержатся в плагинах, но можно создавать и свои скиллы - руками, через CC или с помощью скиллов из плагинов (например, continuous-learning из Everything Claude Code анализирует беседу и предлагает новые скиллы).

Субагенты

Иногда CC решает запустить субагента или несколько субагентов в параллель через инструмент Task. По дефолту доступно несколько видов агентов - General-Purpose, Explore, Plan и другие. Это нужно, чтоб не загрязнять контекст: субагент получает свежий нужный контекст от основного агента, а затем возвращает результаты работы основному агенту. Можно прямо просить CC запустить субагентов для следующей задачи.

Специализированные виды субагентов можно создавать вручную командой /agents. В том числе можно описать, что должен делать субагент просто словами. Например, я создал субагента для чтения ML-статей и опционально кода. На выходе генерируется маркдаун с описанием всех деталей, нужных для имплементации статьи или серии статей.

Каждому субагенту можно дать доступ к конкретному подмножеству скиллов, MCP, разрешений.

Хуки

Можно не полагаться на LLM, а настроить автоматические действия по триггеру. Например, каждый раз, когда CC коммитит файл, происходит автоматический пуш в ремоут. Или после каждого редактирования файла прогоняется линтер. Типы хуков:

  • PreToolUse - перед запуском инструмента
  • PostToolUse - после использования инструмента
  • UserPromptSubmit - после отправки пользователем сообщения
  • Stop - после окончания написания ответа пользователю
  • PreCompact - перед автоматическим или ручным сжатием контекста
  • Notification - перед запросом разрешения на действия

Есть плагин Hookify, который позволяет автоматически на основе анализа беседы или вручную создавать хуки, которые помогают предотвратить всякое нежелательное поведение агента.

MCP

MCP позволяют дать доступ CC ко всяким внешним тулзам. Очень важно - обязательно убедитесь, что даёте рид-доступ. К сожалению, отключение конкретных инструментов почему-то пока не реализовано. Иначе можете случайно остаться без БД или прод-кластера.

Полезные MCP, которые я часто использую:

  • Postgres к различным БД с read-доступом
  • Kubernetes - для чтения продовых логов
  • ClearML - для чтения логов и конфигов экспов

Альтернативно можно настроить cli до нужных инструментов и в CLAUDE.md описать, как ими пользоваться. Но тоже стоит быть осторожными с разрешениями.

Плагины

Плагины - это такие курируемые сборки скиллов, хуков, субагентов и MCP. Умные люди (или не очень) собрали их за вас, чтоб СС и вы могли их использовать.

Некоторые полезные плагины:

  • Context7 - чтоб не настраивать самому MCP, доступ к документации библиотек
  • https://github.com/obra/superpowers - сборник полезных скиллов для воркфлоу разработки (брейнсторм, планирование, имплементация, TDD, код-ревью и многое другое)
  • https://github.com/affaan-m/everything-claude-code - большой сборник разных полезностей, требует настройки под себя и отключения лишнего
  • Playground - свежий плагин от Anthropic, который позволяет CC генерировать интерактивные HTML под разные задачи

Работа над несколькими фичами в параллель

Вообще я пока с опасением пускаюсь в такие авантюры, особенно на сложных прод-проектах: уж лучше несколько несвязанных задач из разных проектов решать. Но многие параллельщики используют воркфлоу с git worktree. Есть даже всякие специальные инструменты для облегчения жизни:

  • GUI для управления несколькими агентами - Conductor (только мак), opcode, Crystal, air.dev (только мак)
  • Тулзы для удобной работы с worktree

Я попробовал Crystal - мне больше в терминале нравится работать, колхозно как-то.

Но есть у меня и частый параллельный кейс - работаешь над фичей в ветке, и внезапно нужно срочно пофиксить баг в релизной ветке. Вместо stash/checkout можно использовать worktree:

# 1. Создать worktree для багфикса (из основного проекта)
cd /path/to/project
git worktree add ../out-of-memory releases/v0.22.1b

# 2. Перейти и запустить Claude
cd ../out-of-memory
claude

После завершения фикса:

# Вернуться в основной проект
cd /path/to/project

# Удалить worktree
git worktree remove ../out-of-memory

Работа с CC в IDE

Есть плагины для популярных IDE(VSCode, PyCharm). Они позволяют удобно изучать изменения которые сделал агент прямо в IDE. Взаимодействие с CC идет стандартно через встроенный в плагин терминал.

Канал с гайдами и контентом по claude code, выкладываем новости (когда режут лимиты в 10 раз) и какие инструменты через claude реализуем для проектов, канал: https://t.me/claudedevolper