Что это решает
Claude Code CLI запускается в каталоге проекта и работает с кодом там, где код лежит: читает файлы, правит их, запускает команды, разбирает вывод и правит дальше. Это снимает копипасту между редактором и браузерным чатом — не нужно вручную собирать контекст из десятка файлов, вставлять его в окно и переносить ответ обратно руками. Не нужно и объяснять устройство репозитория при каждом запросе: поиск по дереву агент делает сам, а постоянные правила проекта лежат в CLAUDE.md рядом с кодом и подхватываются при старте. Остаётся то, ради чего терминал и открывают: прогнать тесты, разобрать упавшую сборку, повторить миграцию по образцу соседней, привести файл к стилю, принятому в репозитории.
Как устроено
Одна сессия — один процесс в конкретном каталоге. Каталог запуска задаёт рабочую область: файлы за её пределами не читаются и не правятся, пока их не добавили явно — флагом --add-dir при старте или командой /add-dir внутри сессии.
Контекст. Прочитанные файлы, вывод команд и переписка лежат в одном окне контекста. Оно конечное. Когда место заканчивается, старая часть истории сворачивается в сжатый пересказ, и детали из неё теряются — агент начинает «забывать» договорённости десятиминутной давности. Отсюда два ежедневных инструмента: /clear перед новой задачей и /compact с явным указанием, что сохранить, если задача длинная и бросать её рано. Сколько места занято и чем — показывает /context.
Инструменты. Чтение файла, точечная правка, поиск по содержимому и по именам, запуск команд оболочки, загрузка страниц. Каждый вызов проходит через слой разрешений, поэтому «агент внезапно снёс ветку» возможно только там, где это разрешили заранее.
Разрешения. Правила «спросить / разрешить / запретить» описываются по инструменту и по шаблону команды. Живут в трёх местах: .claude/settings.json в репозитории (общее для команды, коммитится), .claude/settings.local.json (личное, в .gitignore), файл настроек в домашнем каталоге (глобальное). Режим текущей сессии переключается на лету — Shift+Tab по кругу: обычный режим с вопросами, автоприём правок, режим планирования, в котором агент читает и предлагает план, но ничего не меняет.
Память проекта. CLAUDE.md в корне — правила, действующие всегда: чем запускать тесты, каким пакетным менеджером пользоваться, какие каталоги трогать нельзя, как называть ветки. Такой же файл в домашнем каталоге задаёт личные привычки поверх любого проекта. Дописать строку в память можно прямо из диалога, начав ввод с #.
История. Сессии сохраняются на диск, поэтому вчерашняя работа поднимается целиком, вместе с прочитанными файлами и принятыми решениями. Откат состояния файлов к точке до неудачной серии правок — /rewind или двойной Esc.
Расширения. Своя слэш-команда — это markdown-файл в .claude/commands/: положили smoke.md с текстом инструкции, получили /smoke в этом проекте. Внешние источники (трекер, база, репозиторий) подключаются как MCP-серверы: список и состояние — /mcp, добавление из оболочки — claude mcp add.
Подкоманды, которые нужны каждый день:
| Запуск | Что делает |
|---|---|
claude | интерактивная сессия в текущем каталоге |
claude "задача" | то же, но сразу с первым сообщением |
claude -p "задача" | одноразовый прогон: ответ в stdout, процесс завершается |
claude -c | продолжить последнюю сессию этого каталога |
claude -r | выбрать сессию из списка сохранённых |
claude mcp | подключение и просмотр MCP-серверов |
claude update | обновить установленную сборку |
claude doctor | диагностика установки и окружения |
Слэш-команды, которые набираются чаще прочих:
| Команда | Зачем |
|---|---|
/clear | сбросить контекст перед новой задачей |
/compact | свернуть историю, сохранив указанное |
/context | посмотреть, чем занято окно |
/model | сменить модель под задачу |
/permissions | посмотреть и поправить правила доступа |
/init | сгенерировать стартовый CLAUDE.md по репозиторию |
/memory | открыть файлы памяти на редактирование |
/mcp | состояние подключённых серверов |
/status | версия, модель, аккаунт, рабочий каталог |
/export | выгрузить переписку сессии в файл |
Ввод в строке: @путь/к/файлу подставляет конкретный файл вместо поиска, !команда выполняет команду оболочки и кладёт её вывод в контекст, # пишет строку в память, Esc прерывает текущее действие, не убивая сессию.
Правило одной строкой: новая задача — новая сессия; /clear дешевле, чем разбирать ответ, отравленный чужим контекстом.
Как подключить
Шаг 1. Поставить пакет. Нужен установленный Node.js актуальной LTS-версии (требуемый минимум указан на странице установки и в package.json пакета). Дальше:
npm install -g @anthropic-ai/claude-code
claude --version
Альтернатива npm — нативная сборка, которая ставится установочным скриптом с сайта Anthropic и обновляется командой claude update. Проверить, какой вариант стоит и всё ли с ним в порядке, можно через claude doctor.
Шаг 2. Первый запуск в проекте.
cd ~/projects/my-app
claude
Внутри — /login для входа (подписка или ключ API), затем /status, чтобы увидеть аккаунт, модель и рабочий каталог. Запуск из домашнего каталога или из корня диска — типичная ошибка: агент получает рабочую область размером с весь компьютер.
Шаг 3. Завести память проекта. Команда /init пройдёт по репозиторию и соберёт черновик CLAUDE.md. Черновик нужно сократить руками до правил, которые действительно повторяются: команда тестов, команда линтера, запреты, соглашение об именах веток. Файл коммитится — он работает на всю команду.
Шаг 4. Настроить разрешения. Минимальный .claude/settings.json, который убирает половину вопросов и при этом закрывает секреты:
{
"permissions": {
"allow": [
"Bash(npm run test:*)",
"Bash(npm run lint)",
"Bash(git status)",
"Bash(git diff:*)"
],
"deny": [
"Read(./.env)",
"Read(./.env.*)",
"Read(./secrets/**)"
]
}
}
Шаг 5. Выучить флаги для скриптов. В интерактиве почти всё делается слэш-командами; флаги нужны, когда CLI вызывается из скрипта, хука или пайплайна.
| Флаг | Когда пригодится |
|---|---|
--model | зафиксировать модель для конкретного прогона |
--add-dir | подключить соседний репозиторий или каталог с логами |
--permission-mode plan | стартовать в режиме планирования, без правок |
--allowed-tools / --disallowed-tools | сузить набор инструментов для автоматического прогона |
--output-format json | машиночитаемый ответ вместо текста |
--max-turns | ограничить число шагов в неинтерактивном режиме |
--append-system-prompt | добавить постоянную инструкцию поверх системной |
--settings / --mcp-config | подсунуть отдельный профиль настроек или набор MCP |
--verbose | видеть полные вызовы инструментов при разборе полётов |
--dangerously-skip-permissions | снять вопросы целиком; уместно только в одноразовом контейнере |
Шаг 6. Проверить неинтерактивный режим. Он же headless: вход через пайп, выход в stdout.
git diff --staged | claude -p "Проверь диф на утечку секретов и обратную несовместимость. Ответь списком находок или словом OK." --output-format json
Шаг 7. Сделать первую свою команду. Файл .claude/commands/smoke.md с текстом «Подними приложение, дёрни health-эндпоинт, покажи первые ошибки из лога» превращается в /smoke для всех, кто клонировал репозиторий.
Полезные сценарии
- Упавший тест:
!npm testкладёт вывод в контекст, дальше просьба локализовать причину и починить только её. - Незнакомый репозиторий:
/init, затем вопрос про точку входа и путь запроса от роутера до базы. - Дежурная проверка изменений:
claude -pс дифом на входе в хукеpre-pushили в CI-джобе. - Однотипная правка в десятках файлов: образец «как надо» одним файлом, остальное — по шаблону, результат смотрится в
git diff. - Разбор инцидента: логи через пайп, вопрос о совпадении по времени с последним деплоем.
- Черновик миграции или конфига по образцу соседнего модуля, с явным запретом трогать прод-настройки.
- Повторяющийся ритуал команды (релизные заметки, чек-лист перед мержем) — оформить в
.claude/commands/.
Ограничения
- Окно контекста конечно. На большом монорепозитории агент читает много лишнего, история сворачивается быстрее, качество падает — помогает работа из подкаталога и точечные ссылки
@файл. - Расход считается по токенам всей сессии, а не по числу сообщений: длинные файлы в контексте дороже десятка коротких вопросов. Текущее потребление смотрится в
/contextи/usage. - Результат недетерминирован. Два прогона одной задачи дают разные диффы; сравнивать надо не тексты ответов, а прошедшие тесты.
- Разрешения на оболочку — главная зона риска. Широкое
allowнаBashотдаёт агенту всё, что умеет пользователь: удаление веток, публикацию, отправку писем. - Секреты в контексте остаются в контексте.
.envи приватные ключи закрываются правиломdenyдо первой сессии, а не после. - Офлайна нет: без сети CLI не работает, локальную модель под собой не запускает.
- Ревью не отменяется. Агент уверенно пишет правдоподобный код с неверными предположениями о данных; диф читает человек.
Как проверить результат
claude doctor— установка, версия, права на каталоги, доступность оболочки./statusвнутри сессии — тот ли аккаунт, та ли модель, тот ли рабочий каталог./context— окно не забито мусором, служебная часть не съела всё место.git statusиgit diffпосле каждой серии правок — трогались ли только те файлы, о которых шла речь; лишние изменения переводов строк и форматирования видны сразу.- Тесты и линтер своими руками, не со слов агента:
npm test,npm run lint. /permissions— в списке разрешённого нет ничего, что не хочется отдавать без вопроса.- Для скриптового режима —
claude -p ... --output-format jsonи разбор ответа черезjq: если поле с результатом пустое или ответ не парсится, пайплайн настроен неверно. - При странном поведении — перезапуск с
--verbose: видно, какие инструменты вызывались и с какими аргументами.
