4 4
5# Лучшие практики для Claude Code5# Лучшие практики для Claude Code
6 6
7> Советы и паттерны для максимального использования Claude Code, от настройки окружения до масштабирования на параллельные сеансы.7> Получайте больше от Claude Code: сообщайте Claude то, чего он не видит, давайте ему проверку для запуска и обеспечивайте соблюдение правил, не допускающих исключений.
8 8
9Claude Code — это агентивная среда кодирования. В отличие от чатбота, который отвечает на вопросы и ждёт, Claude Code может читать ваши файлы, выполнять команды, вносить изменения и автономно работать над проблемами, пока вы наблюдаете, перенаправляете или полностью отходите в сторону.9Claude Code устроен так, что в большинстве случаев ваш первый простой промпт в новой сессии уже делает то, что нужно, без какой-либо настройки с вашей стороны.
10 10
11Это меняет способ вашей работы. Вместо того чтобы писать код самостоятельно и просить Claude его проверить, вы описываете, что хотите, и Claude понимает, как это построить. Claude исследует, планирует и реализует.11Например:
12 12
13Но эта автономность всё ещё требует кривой обучения. Claude работает в определённых ограничениях, которые вам нужно понимать.13* Чтобы команды выполнялись безопасно без вашего подтверждения каждой из них, новые сессии в терминале и VS Code запускаются в [авторежиме](https://code.claude.com/docs/ru/permission-modes.md#eliminate-prompts-with-auto-mode), где классификатор проверяет всё рискованное перед выполнением.
14* Чтобы ваш основной диалог оставался сфокусированным, пока независимая работа идёт параллельно, Claude делегирует задачи субагентам и обращается к вам только при необходимости.
15* Чтобы длинная сессия продолжалась без вашего управления, диалог автоматически сжимается до того, как заполнится контекстное окно.
14 16
15Это руководство охватывает паттерны, которые доказали свою эффективность во внутренних командах Anthropic и для инженеров, использующих Claude Code в различных кодовых базах, языках и окружениях. Чтобы узнать, как агентивный цикл работает под капотом, см. [How Claude Code works](https://code.claude.com/docs/ru/how-claude-code-works.md).17На этой странице описано, что делать, когда значений по умолчанию недостаточно. Обычно это происходит, когда у вашего проекта есть знания, правила или ограничения, которые Claude не может увидеть из одного только кода:
16 18
17***19* Процесс деплоя, который существует только в чьей-то голове
20* Файл, который никогда нельзя читать
21* Проверка, которая должна пройти, прежде чем что-либо будет считаться выполненным
22* Бюджет, который нельзя превышать
18 23
19Большинство лучших практик основаны на одном ограничении: контекстное окно Claude заполняется быстро, и производительность деградирует по мере его заполнения.24Никакое значение по умолчанию не может знать этого о вашем проекте, поэтому именно здесь небольшая настройка с вашей стороны окупается.
20 25
21Контекстное окно Claude содержит весь ваш разговор, включая каждое сообщение, каждый файл, который читает Claude, и каждый вывод команды. Однако это может заполниться быстро. Один сеанс отладки или исследование кодовой базы может сгенерировать и потребить десятки тысяч токенов.26Когда сессия идёт не так, как вы ожидали, почти всегда причина в одном из следующего:
22 27
23Это важно, потому что производительность LLM деградирует по мере заполнения контекста. Когда контекстное окно почти полное, Claude может начать «забывать» более ранние инструкции или делать больше ошибок. Контекстное окно — это самый важный ресурс для управления. Чтобы увидеть, как сеанс заполняется на практике, [посмотрите интерактивное пошаговое руководство](https://code.claude.com/docs/ru/context-window.md) того, что загружается при запуске и какие затраты на каждое чтение файла. Отслеживайте использование контекста непрерывно с помощью [пользовательской строки состояния](https://code.claude.com/docs/ru/statusline.md), и см. [Reduce token usage](https://code.claude.com/docs/ru/costs.md#reduce-token-usage) для стратегий по снижению использования токенов.28* Claude сделал не то, что вы имели в виду, или ему приходится заново выяснять один и тот же факт в начале каждой сессии. Ему не хватает информации, которую нельзя получить из чтения репозитория. См. [Сообщите Claude то, чего он не видит](#tell-claude-what-it-cant-see).
29* Claude сказал, что закончил, но это было не совсем так, обычно потому, что у него не было способа проверить свою работу. См. [Дайте Claude проверку для запуска](#give-claude-a-check-to-run).
30* Claude сделал то, чего никогда не должно происходить в этом репозитории, или пропустил шаг, который должен выполняться всегда. Один лишь промпт не может гарантировать ни того, ни другого. См. [Обеспечьте соблюдение правил без исключений](#enforce-the-rules-that-cant-have-exceptions).
31* Claude всё сделал правильно, но это потребовало больше времени, токенов или запросов разрешений, чем стоила задача. См. [Измените настройку по умолчанию](#change-a-default).
24 32
25***33Раздел [Позвольте Claude работать без вас](#let-claude-run-without-you) применяет те же четыре пункта к запускам без присмотра, а в разделе [Что можно перестать делать](#what-you-can-stop-doing) перечислены советы, которые стали ненужными благодаря современным моделям.
26 34
27## Дайте Claude способ проверить свою работу35> [!NOTE]
28
29> [!TIP]
30>36>
31> Дайте Claude проверку, которую он может запустить: тесты, сборку, скриншот для сравнения. Это разница между сеансом, который вы наблюдаете, и тем, от которого вы можете отойти.37> Настройка для всей команды описана на отдельной странице: [Настройка Claude Code для вашей организации](https://code.claude.com/docs/ru/admin-setup.md).
32 38
33Claude останавливается, когда работа выглядит завершённой. Без проверки, которую он может запустить, "выглядит завершённой" — это единственный доступный сигнал, и вы становитесь циклом проверки: каждая ошибка ждёт, пока вы её заметите. Дайте Claude что-то, что выдаёт сигнал успеха или неудачи, и цикл закроется самостоятельно. Claude выполняет работу, запускает проверку, читает результат и повторяет итерации до тех пор, пока проверка не пройдёт.39## Детерминированные и недетерминированные инструкции
34 40
35Проверка — это всё, что возвращает сигнал, который Claude может прочитать в разговоре: набор тестов, код выхода сборки, линтер, скрипт, который сравнивает выходные данные с фиксчуром, или [скриншот браузера](https://code.claude.com/docs/ru/chrome.md), сравниваемый с дизайном. Запустите [`/verify`](https://code.claude.com/docs/ru/skills#run-and-verify-your-app) самостоятельно после того, как проверка Claude пройдёт, чтобы подтвердить изменение в работающем приложении.41Каждая инструкция, которую вы даёте Claude Code, относится к одному из двух видов:
36 42
37| Стратегия | До | После |431. Недетерминированные: вы пишете инструкцию, а Claude (модель) её читает. Это может быть ваш промпт, `CLAUDE.md` или скилл. Затем модель решает, что делать с этой информацией. Обычно она следует вашим командам, и современные модели хорошо понимают ваше намерение без большого контекста, но нет *гарантии*, что она выполнит ваши инструкции. Она всё равно может решить чего-то не делать или сделать что-то другое.
38| - | - | - |442. Детерминированные: вы настраиваете инструкцию, и Claude Code (среда выполнения) *обязан* её выполнить. Это может быть хук, правило deny или управляемая настройка. Claude Code применяет это каждый раз, независимо от того, что решила модель.
39| **Предоставьте критерии проверки** | *"реализовать функцию, которая проверяет адреса электронной почты"* | *"написать функцию validateEmail. примеры тестовых случаев: [user@example.com](mailto:user@example.com) это true, invalid это false, [user@.com](mailto:user@.com) это false. запустить тесты после реализации"* |
40| **Проверьте изменения UI визуально** | *"сделать панель управления лучше"* | *"\[вставить скриншот] реализовать этот дизайн. сделать скриншот результата и сравнить его с оригиналом. перечислить различия и исправить их"* |
41| **Решайте коренные причины, а не симптомы** | *"сборка не работает"* | *"сборка не работает с этой ошибкой: \[вставить ошибку]. исправить и проверить, что сборка успешна. решить коренную причину, не подавлять ошибку"* |
42 45
43После того как проверка существует, решите, насколько жёстко она должна блокировать остановку:46Большинство возможностей Claude Code существуют в обеих формах:
44 47
45* **В одном запросе**: попросите Claude запустить проверку и повторить итерации в одном сообщении, как в таблице выше.48| | Недетерминированные (решает Claude) | Детерминированные (обеспечивает Claude Code) |
46* **На протяжении сеанса**: установите проверку как условие [`/goal`](https://code.claude.com/docs/ru/goal). Отдельный оценщик повторно проверяет её после каждого хода, и Claude продолжает работать, пока она не будет выполнена. Если Claude застопорится, Claude Code в конечном итоге остановит запуск с установленной целью — см. [как работает оценка /goal](https://code.claude.com/docs/ru/goal.md#how-evaluation-works).49| :- | :- | :- |
47* **Как детерминированный шлюз**: [Stop hook](https://code.claude.com/docs/ru/hooks.md#stop) запускает вашу проверку как скрипт и блокирует завершение хода до тех пор, пока она не пройдёт. [Stop input](https://code.claude.com/docs/ru/hooks.md#stop-input) охватывает ограничение на последовательные блокировки.50| Что делать | Ваш промпт, `CLAUDE.md`, скиллы, которые Claude подключает сам | Хуки, а также скиллы, которые можете запустить только вы |
48* **По второму мнению**: [verification subagent](https://code.claude.com/docs/ru/sub-agents.md) или [dynamic workflow](https://code.claude.com/docs/ru/workflows.md), который проверяет собственные выводы, имеет свежую модель, которая пытается опровергнуть результат, поэтому агент, выполняющий работу, не является тем, кто её оценивает.51| К чему есть доступ | Классификатор авторежима | Правила deny, песочница в [строгом режиме](https://code.claude.com/docs/ru/sandboxing.md#turn-off-the-retry-with-strict-sandbox-mode), управляемые настройки |
52| Когда работа завершена | Запрос доказательств, `/goal`, `/code-review` | Тесты, проверка типов, хук `Stop`, CI |
53| Сколько тратится | Уровень effort, собственный темп Claude | `--max-turns` или [`--max-budget-usd`](https://code.claude.com/docs/ru/cli-reference) с `-p`, установленный вами [лимит расходов](https://code.claude.com/docs/ru/costs.md) |
54| За кем последнее слово | Сводка Claude о том, что он сделал | Защита веток, человек, который одобряет слияние |
49 55
50Каждый шаг обменивает настройку на внимание. Версия с запросом работает на любой задаче сегодня. Версии `/goal` и Stop hook — это то, что позволяет неконтролируемому запуску завершиться правильно без вас.56В большинстве случаев вы хотите, чтобы решал Claude. Почти у каждого правила есть исключения, а современные модели хорошо читают код перед собой и оценивают, подходит ли правило к ситуации. Имея перед собой реальный код, Claude обычно способен принять такое решение лучше, чем правило, написанное вами заранее.
51 57
52Попросите Claude показать доказательства, а не утверждать успех: выходные данные теста, команду, которую он запустил, и то, что она вернула, или скриншот результата. Проверка доказательств происходит быстрее, чем повторный запуск проверки самостоятельно, и это работает для сеансов, которые вы не наблюдали.58Детерминированный вид нужен, когда вы хотите быть уверены, что определённые вещи *всегда* происходят (или никогда не происходят), что бы ни решила модель. Это не обязательно что-то драматичное. Авторежим уже [блокирует драматичные вещи](https://code.claude.com/docs/ru/permission-modes.md#what-the-classifier-blocks-by-default), вроде деплоя в продакшен или force push поверх чужой работы. Обычно это что-то специфичное для *вашего* проекта, и оно может быть сколь угодно узким:
53 59
54***60* Никогда не редактировать сгенерированный клиент в `src/gen/`
61* Всегда запускать скрипт заголовков лицензии после создания файла
55 62
56## Сначала исследуйте, потом планируйте, потом кодируйте63Любое из этих правил можно было бы записать строкой в `CLAUDE.md` или в промпте, и Claude следовал бы ему почти каждый раз. Но как бы настойчиво вы это ни формулировали, выполнит ли Claude эту строку на конкретном ходе, всё равно решает Claude.
57 64
58> [!TIP]65> [!TIP]
59>66>
60> Отделите исследование и планирование от реализации, чтобы избежать решения неправильной проблемы.67> Если вы продолжаете добавлять акценты в строку `CLAUDE.md`, а Claude всё равно её пропускает, это признак того, что этой строке место в хуке. Верно и обратное: если у вас есть хуки для того, что является лишь предпочтениями, удалите их и позвольте Claude решать.
61 68
62Позволение Claude сразу перейти к кодированию может привести к коду, который решает неправильную проблему. Используйте [Plan Mode](https://code.claude.com/docs/ru/permission-modes.md#analyze-before-you-edit-with-plan-mode) для отделения исследования от выполнения.69## Сообщите Claude то, чего он не видит
63 70
64Рекомендуемый рабочий процесс имеет четыре фазы:71> [!TIP]
72>
73> Записывайте только то, что Claude не может найти, читая репозиторий, или то, на повторное выяснение чего он иначе тратил бы время в каждой сессии.
65 74
66**1. Исследуйте**75Claude начинает каждую задачу с чтения вашего кода, и современные модели делают это *очень* хорошо. Они найдут структуру файлов, ваши соглашения, тестовый фреймворк и то, как устроены существующие компоненты, обычно быстрее, чем вы смогли бы это объяснить. Это значит, что Claude уже знает большую часть того, что вам, возможно, хотелось бы для него записать.
67 76
68Войдите в Plan Mode, нажав `Shift+Tab` до тех пор, пока в строке состояния не появится `⏸ plan mode on`, или запустите сеанс с помощью `claude --permission-mode plan`. Claude читает файлы и отвечает на вопросы без внесения изменений.77Чего он не может найти, так это информации, которой никогда не было в репозитории:
69 78
70```txt title="claude (plan mode)" wrap theme={null}79* Решение, которое ваша команда приняла на встрече
71read /src/auth and understand how we handle sessions and login.80* Процесс деплоя, который существует только в голове одного человека
72also look at how we manage environment variables for secrets.81* Переменная окружения, нужная вашим интеграционным тестам
73```
74 82
75**2. Планируйте**83Есть также информация, которая *есть* в репозитории, но на её поиск уходит несколько минут, и Claude приходится повторять эти поиски в начале каждой сессии.
76 84
77Попросите Claude создать подробный план реализации.85Хорошая проверка, прежде чем что-то записывать для Claude:
78 86
79```txt title="claude (plan mode)" wrap theme={null}871. Может ли он найти это, читая код?
80I want to add Google OAuth. What files need to change?882. Станет ли он действительно это искать?
81What's the session flow? Create a plan.
82```
83 89
84Нажмите `Ctrl+G`, чтобы открыть план в вашем текстовом редакторе для прямого редактирования перед тем, как Claude продолжит.90Если на оба вопроса ответ «да», не записывайте это.
85 91
86**3. Реализуйте**92### Пишите конкретный промпт
87 93
88Переключитесь из Plan Mode, одобрив план или нажав `Shift+Tab`, затем позвольте Claude кодировать, проверяя против его плана.94Конкретный промпт помогает по той же причине: он даёт Claude информацию, которой у него ещё нет. Если вы сразу назовёте файл, опишете симптом и скажете, как выглядит «исправлено», вы обычно избавите себя от лишнего круга исправлений позже.
89 95
90```txt title="claude" wrap theme={null}96То же касается предпочтения между двумя разумными подходами: Claude не может вычитать его из кода, поэтому если вам важно, какой из них он выберет, скажите об этом сразу.
91implement the OAuth flow from your plan. write tests for the
92callback handler, run the test suite and fix any failures.
93```
94 97
95**4. Зафиксируйте**98| Вместо | Попробуйте |
99| :- | :- |
100| *«исправить баг входа»* | *«пользователи сообщают, что вход не работает после истечения сессии. посмотреть обновление токена в src/auth/, написать падающий тест, который это воспроизводит, затем исправить»* |
101| *«добавить виджет календаря»* | *«следовать паттерну из HotDogWidget.php и сделать виджет календаря, который позволяет выбрать месяц и листать годы. без новых библиотек»* |
96 102
97Попросите Claude зафиксировать с описательным сообщением и создать PR.103Если у вас уже есть то, что нужно Claude, передайте это напрямую, а не описывайте:
98 104
99```txt title="claude" wrap theme={null}105* Файл: введите `@` и путь, чтобы [включить содержимое файла](https://code.claude.com/docs/ru/common-workflows.md#reference-files-and-directories) в сообщение.
100commit with a descriptive message and open a PR106* Изображение: вставьте скриншот макета или ошибки в промпт.
101```107* Вывод команды: передайте его из оболочки через `cat error.log | claude -p "what's going on here"`.
102 108
103Plan Mode полезен, но также добавляет накладные расходы.109Фразы вроде `think step by step` или `be thorough` — это обычный текст промпта, а не ключевые слова. Основной способ управлять тем, насколько усердно думает Claude, — [уровень effort](https://code.claude.com/docs/ru/model-config.md#adjust-effort-level), о котором рассказывается в разделе [Измените модель и effort](#change-the-model-and-effort). Такие формулировки всё ещё могут слегка подтолкнуть Claude в пределах его настройки effort, но не поднимут его выше неё.
104 110
105Для задач, где область видимости ясна и исправление небольшое (например, исправление опечатки, добавление строки логирования или переименование переменной), попросите Claude сделать это напрямую.111Одна фраза, которая по-прежнему помогает, — `be ambitious`. Claude склонен понимать запрос консервативно и делать минимум, который его удовлетворяет, поскольку не видит, на какой объём вы рассчитывали. Когда вам нужна более полная версия, с обработанными граничными случаями и естественным продолжением, скажите об этом:
106 112
107Планирование наиболее полезно, когда вы не уверены в подходе, когда изменение модифицирует несколько файлов или когда вы не знакомы с кодом, который модифицируется. Если вы можете описать diff в одном предложении, пропустите план.113```text theme={null}
114build the settings page from the mockup. be ambitious: empty and error states, the save flow wired up, keyboard navigation, not just the layout
115```
108 116
109***117Так вы сообщаете Claude об объёме работы, который знаете только вы, а не о том, насколько усердно думать.
110 118
111## Предоставьте конкретный контекст в ваших подсказках119А когда вы исследуете, а не исправляете что-то конкретное, расплывчатый промпт вроде `what would you improve in this file?` вполне подходит. По ходу дела вам придётся чуть больше поправлять, и это разумный компромисс.
112 120
113> [!TIP]121### Сначала проведите мозговой штурм с Claude
114>
115> Чем точнее ваши инструкции, тем меньше исправлений вам потребуется.
116 122
117Claude может вывести намерение, но не может читать ваши мысли. Ссылайтесь на конкретные файлы, упоминайте ограничения и указывайте на примеры паттернов.123Когда вы ещё точно не знаете, чего хотите, не обязательно продумывать всё до промпта. Вместо этого попросите Claude взять у вас интервью:
118 124
119| Стратегия | До | После |125```text theme={null}
120| - | - | - |126I want to add rate limiting to the public API but haven't thought it through yet. Interview me until you could write the spec, then write it to SPEC.md.
121| **Определите область задачи.** Укажите, какой файл, какой сценарий и предпочтения тестирования. | *"добавить тесты для foo.py"* | *"написать тест для foo.py, охватывающий граничный случай, когда пользователь вышел из системы. избегать мокирования."* |127```
122| **Укажите источники.** Направьте Claude к источнику, который может ответить на вопрос. | *"почему ExecutionFactory имеет такой странный api?"* | *"посмотреть через историю git ExecutionFactory и суммировать, как его api пришёл к этому"* |
123| **Ссылайтесь на существующие паттерны.** Укажите Claude на паттерны в вашей кодовой базе. | *"добавить виджет календаря"* | *"посмотреть, как существующие виджеты реализованы на домашней странице, чтобы понять паттерны. HotDogWidget.php — хороший пример. следовать паттерну для реализации нового виджета календаря, который позволяет пользователю выбрать месяц и переходить вперёд/назад для выбора года. строить с нуля без библиотек, кроме уже используемых в кодовой базе."* |
124| **Опишите симптом.** Предоставьте симптом, вероятное местоположение и то, как выглядит «исправленное». | *"исправить ошибку входа"* | *"пользователи сообщают, что вход не работает после истечения сеанса. проверить поток аутентификации в src/auth/, особенно обновление токена. написать тест, который не проходит и воспроизводит проблему, затем исправить её"* |
125 128
126Расплывчатые подсказки могут быть полезны, когда вы исследуете и можете позволить себе изменить курс. Подсказка вроде `"что бы вы улучшили в этом файле?"` может выявить вещи, о которых вы не подумали бы спросить.129Claude вернётся с вопросами с вариантами ответа о том, что вы ещё не определили: лимиты на пользователя или на ключ, что происходит с запросами сверх лимита, что выходит за рамки задачи. Он продолжает спрашивать, пока ответы не сложатся в спецификацию.
127 130
128### Предоставьте богатый контент131Когда `SPEC.md` готов, начните новую сессию, чтобы вести реализацию по нему, — так она начнётся с чистого контекста и письменного определения готовности. Это также файл, на который вы позже направите рецензента в разделе [Дайте Claude проверку для запуска](#give-claude-a-check-to-run).
129 132
130> [!TIP]133### Держите CLAUDE.md коротким
131>
132> Используйте `@` для ссылки на файлы, вставляйте скриншоты/изображения или передавайте данные напрямую.
133 134
134Вы можете предоставить богатые данные Claude несколькими способами:135Claude Code загружает [`CLAUDE.md`](https://code.claude.com/docs/ru/memory) в каждую сессию, а значит, каждая строка в нём забирает немного внимания Claude в *каждой* задаче, независимо от того, актуальна она или нет. Поэтому файл работает лучше всего, когда в нём только то, что Claude не смог бы вывести из самого кода:
135 136
136* **Ссылайтесь на файлы с `@`** вместо описания того, где находится код. Claude читает файл перед ответом.137* Как проверить работу в этом репозитории: точные команды тестов, проверки типов и линтера, а также как запустить один тестовый файл
137* **Вставляйте изображения напрямую**. Скопируйте/вставьте или перетащите изображения в подсказку.138* Места, где код вводит в заблуждение: старый паттерн, который встречается повсюду, но который новый код не должен копировать, или каталог, который выглядит неиспользуемым, но на самом деле используется
138* **Дайте URL-адреса** для документации и справочников API. Используйте `/permissions`, чтобы добавить часто используемые домены в список разрешённых.139* Решения, которых нет в репозитории: на каком хелпере ошибок остановилась команда, как устроены деплои, что требует ревью миграций
139* **Передавайте данные** путём запуска `cat error.log | claude -p "explain this error"` для отправки содержимого файла напрямую.140* Всё, что вам уже дважды пришлось исправлять
140* **Позвольте Claude получить то, что ему нужно**. Скажите Claude вытащить контекст самостоятельно, используя команды Bash, MCP tools или читая файлы.
141 141
142***142`CLAUDE.md`, прошедший эту проверку, остаётся коротким:
143 143
144## Настройте ваше окружение144```markdown CLAUDE.md theme={null}
145# Commands
146- Install: pnpm install
147- Run one test file: pnpm vitest run path/to/file.test.ts
148- Typecheck: pnpm tsc --noEmit
145 149
146Несколько шагов настройки делают Claude Code значительно более эффективным во всех ваших сеансах. Для полного обзора функций расширения и когда использовать каждую, см. [Extend Claude Code](https://code.claude.com/docs/ru/features-overview.md).150# Conventions
151- Use the error helpers in src/lib/errors.ts, never throw raw strings
152- src/legacy/ is still live but don't copy its patterns into new code
147 153
148### Напишите эффективный CLAUDE.md154# Gotchas
155- Integration tests need DATABASE_URL set, see .env.example
156```
149 157
150> [!TIP]158В сессии запустите `/context`, чтобы убедиться, что Claude загрузил файл.
151>
152> Запустите `/init` для генерации стартового файла CLAUDE.md на основе текущей структуры вашего проекта, затем уточняйте со временем.
153 159
154CLAUDE.md — это специальный файл, который Claude читает в начале каждого разговора. Включите команды Bash, стиль кода и правила рабочего процесса. Это даёт Claude постоянный контекст, который он не может вывести только из кода.160Обратите внимание, что строка проверки типов — это только команда. Claude нужно знать команду, чтобы проверять свою работу по ходу дела. Если вы также хотите, чтобы Claude Code *обеспечивал* успешную проверку типов до того, как Claude закончит, это задача для [хука `Stop`](#enforce-the-check-with-a-stop-hook). Строка вроде `Always typecheck before you finish` в этом файле срабатывает в большинстве случаев, но не каждый раз.
155 161
156Нет требуемого формата для файлов CLAUDE.md, но держите его коротким и удобочитаемым. Например:162Писать файл с нуля не обязательно:
157 163
158```markdown CLAUDE.md theme={null}164* `/init` генерирует начальную версию на основе вашей кодовой базы. Дальше работа в основном сводится к удалению строк. [Руководство по памяти](https://code.claude.com/docs/ru/memory.md#write-effective-instructions) рекомендует не превышать 200.
159# Code style165* `/doctor` предлагает сокращения для всего, что Claude [может и так вывести из кода](https://code.claude.com/docs/ru/memory.md#my-claude-md-is-too-large).
160- Use ES modules (import/export) syntax, not CommonJS (require)166* `/doctor prompt-audit` помечает инструкции, которые были написаны для старых моделей, ссылаются на несуществующие файлы или [противоречат друг другу](https://code.claude.com/docs/ru/memory.md#audit-your-instruction-files).
161- Destructure imports when possible (eg. import { foo } from 'bar')
162 167
163# Workflow168Ваши личные предпочтения помещаются в `CLAUDE.local.md`, а не в `CLAUDE.md`, и этот файл добавляется в `.gitignore`, чтобы он не попал в репозиторий.
164- Be sure to typecheck when you're done making a series of code changes
165- Prefer running single tests, and not the whole test suite, for performance
166```
167 169
168Запустите `/context` для подтверждения того, что Claude загрузил файл. CLAUDE.md загружается каждый сеанс, поэтому включайте только то, что применяется широко. Для знаний о домене или рабочих процессов, которые актуальны только иногда, используйте [skills](https://code.claude.com/docs/ru/skills.md) вместо этого. Claude загружает их по требованию без раздувания каждого разговора.170> [!NOTE]
171>
172> Если Claude продолжает игнорировать строку, которая *есть* в `CLAUDE.md`, добавление IMPORTANT, скорее всего, не поможет. Либо файл стал настолько длинным, что строка теряется, либо эта строка — правило, не допускающее исключений, и тогда ей место в [хуке](#enforce-the-rules-that-cant-have-exceptions).
169 173
170Держите это кратко. Для каждой строки спросите себя: *"Привело ли бы удаление этого к ошибкам Claude?"* Если нет, удалите. Раздутые файлы CLAUDE.md заставляют Claude игнорировать ваши фактические инструкции!174### Ограничьте правила одной частью кодовой базы
171 175
172| ✅ Включите | ❌ Исключите |176Если правило важно только в одной части кодовой базы, поместите его в [`.claude/rules/`](https://code.claude.com/docs/ru/memory#path-specific-rules) с фильтром `paths:`, чтобы оно загружалось только тогда, когда Claude действительно работает там. Например, этот `.claude/rules/api.md` загружается для файлов TypeScript в `src/api/`:
173| - | - |
174| Команды Bash, которые Claude не может угадать | Всё, что Claude может понять, прочитав код |
175| Правила стиля кода, которые отличаются от стандартов | Стандартные соглашения языка, которые Claude уже знает |
176| Инструкции по тестированию и предпочитаемые тестовые бегуны | Подробная документация API (вместо этого ссылайтесь на документы) |
177| Этикет репозитория (именование ветвей, соглашения PR) | Информация, которая часто меняется |
178| Архитектурные решения, специфичные для вашего проекта | Длинные объяснения или учебники |
179| Особенности окружения разработчика (требуемые переменные окружения) | Описания файл-за-файлом кодовой базы |
180| Общие подводные камни или неочевидные поведения | Самоочевидные практики вроде "писать чистый код" |
181 177
182Если Claude продолжает делать что-то, что вы не хотите, несмотря на наличие правила против этого, файл, вероятно, слишком длинный и правило теряется. Если Claude задаёт вам вопросы, которые ответены в CLAUDE.md, формулировка может быть неоднозначной. Относитесь к CLAUDE.md как к коду: проверяйте его, когда что-то идёт не так, регулярно обрезайте его и тестируйте изменения, наблюдая, действительно ли поведение Claude меняется. Для зафиксированного в git CLAUDE.md запустите [`/doctor`](https://code.claude.com/docs/ru/commands#all-commands) и Claude предложит сокращения для контента, который он может вывести из кодовой базы.178```markdown .claude/rules/api.md theme={null}
179---
180paths:
181 - "src/api/**/*.ts"
182---
183- Validate request bodies with the zod schemas in src/api/schemas/, don't hand-roll checks
184- Every new endpoint needs an entry in openapi.yaml, CI fails without it
185```
183 186
184Если Claude продолжает пропускать одну инструкцию, добавьте акцент, такой как "IMPORTANT", только к этой строке. Если вы подчёркиваете много строк, ни одна из них не выделяется. Зафиксируйте CLAUDE.md в git, чтобы ваша команда могла внести свой вклад. Файл накапливает ценность со временем.187### Помещайте командные процедуры в скиллы
185 188
186Файлы CLAUDE.md могут импортировать дополнительные файлы, используя синтаксис `@path/to/import`. Для правил импорта и мест, где могут находиться файлы CLAUDE.md, см. [CLAUDE.md files](https://code.claude.com/docs/ru/memory.md#claude-md-files).189Более способная модель больше знает об инженерии, но не то, как *ваша* команда делает релиз, что написано в вашем ранбуке инцидентов или как вы хотите писать документацию API. Такие знания помещаются в [скилл](https://code.claude.com/docs/ru/skills.md): процедуру или фрагмент командных знаний, сохранённые в `.claude/skills/<name>/SKILL.md`.
187 190
188### Настройте разрешения191Для таких вещей скиллы к тому же меньше нагружают контекст, чем `CLAUDE.md`. Для скилла, который Claude может запустить сам, в каждой сессии он видит название и описание, но [читает полный файл](https://code.claude.com/docs/ru/skills.md#skill-content-lifecycle), только когда этого требует задача. Длинная процедура релиза в скилле не отягощает ваше несвязанное исправление бага так, как это было бы в `CLAUDE.md`.
189 192
190> [!TIP]193> [!NOTE]
191>194>
192> Чтобы получить меньше подсказок без потери контроля, предварительно одобрите инструменты, которым вы доверяете, с помощью `/permissions` и позвольте изолированным командам работать без запроса с помощью `/sandbox`. Переключитесь в режим Manual, когда вы хотите одобрить правки и команды самостоятельно.195> Правило `CLAUDE.md` относится и к скиллам: записывайте только то, что Claude не может найти сам.
193 196
194С Claude Code v2.1.283 или позже, auto mode — это [встроенный начальный режим разрешений](https://code.claude.com/docs/ru/permission-modes.md#eliminate-prompts-with-auto-mode) для интерактивных сеансов терминала и VS Code: отдельная модель-классификатор проверяет большинство действий вместо вас и блокирует только то, что выглядит рискованно, например расширение области, неизвестная инфраструктура или действия, вызванные враждебным контентом. На более ранних версиях, auto mode — это встроенный начальный режим разрешений только на планах Pro, Max и Team.197Для рабочего процесса с побочными эффектами, например реального выпуска этого релиза, добавьте `disable-model-invocation: true`. Тогда Claude [не сможет запустить скилл сам](https://code.claude.com/docs/ru/skills.md#control-who-invokes-a-skill), и он будет выполняться, только когда вы сами введёте `/release`. Сохранённый как `.claude/skills/release/SKILL.md`, он может выглядеть так:
195 198
196В режиме Manual, Claude Code запрашивает разрешение перед действиями, которые могут модифицировать вашу систему: записи файлов, команды Bash, MCP tools. Это безопасно, но утомительно. После десятого одобрения вы кликаете, не совсем проверяя. Два инструмента сокращают эти прерывания в режиме Manual и применяются также в режиме auto:199```markdown .claude/skills/release/SKILL.md theme={null}
200---
201name: release
202description: Cut a new release. Bumps the version, writes the changelog entry, tags it and pushes the tag so CI can publish.
203disable-model-invocation: true
204---
2051. Make sure you're on main with a clean tree. If not, stop and ask.
2062. Run `pnpm changeset version` and commit the result.
2073. Summarize the PRs merged since the last tag into CHANGELOG.md, one line each, user-facing changes only.
2084. Tag `v<new version>` and push the tag. CI publishes from there, never publish from your machine.
209```
197 210
198* **Белые списки разрешений**: разрешить конкретные инструменты, которые вы знаете, что безопасны, например `npm run lint` или `git commit`211### Подключите инструменты, которые нужны Claude
199* **Sandboxing**: включить изоляцию на уровне ОС, которая ограничивает доступ к файловой системе и сети, позволяя Claude работать более свободно в определённых границах
200 212
201Прочитайте больше о [permission modes](https://code.claude.com/docs/ru/permission-modes.md), [permission rules](https://code.claude.com/docs/ru/permissions.md) и [sandboxing](https://code.claude.com/docs/ru/sandboxing.md).213Часть того, чего не видит Claude, находится совсем в другой системе, например в трекере задач или панели ошибок. Если у этой системы есть CLI, это обычно самый простой путь. Например, если `gh` установлен и вы в нём авторизованы, Claude будет открывать pull request и читать комментарии ревью без каких-либо объяснений с вашей стороны. Для CLI, который он раньше не видел, достаточно указать ему на `--help`.
202 214
203### Используйте CLI tools215Для систем без CLI есть [MCP](https://code.claude.com/docs/ru/mcp.md). Сервер добавляется из оболочки:
204 216
205> [!TIP]217```bash theme={null}
206>218claude mcp add --transport http notion https://mcp.notion.com/mcp
207> Скажите Claude Code использовать CLI tools, такие как `gh`, `aws`, `gcloud` и `sentry-cli`, при взаимодействии с внешними сервисами.219```
220
221Затем сервер появляется в `/mcp` внутри сессии. Подключённые серверы добавляют названия своих инструментов и инструкции в контекст, даже когда вы их не используете, поэтому стоит там же [отключить ненужные](https://code.claude.com/docs/ru/mcp.md#disable-a-server-without-removing-it).
222
223А если вы работаете с типизированным языком, [плагин code intelligence](https://code.claude.com/docs/ru/plugins/code-intelligence.md) позволяет Claude сразу переходить к определению, вместо того чтобы читать множество файлов в его поисках.
208 224
209CLI tools — это наиболее контекстно-эффективный способ взаимодействия с внешними сервисами. Если вы используете GitHub, установите CLI `gh`. Claude знает, как его использовать для создания issues, открытия pull requests и чтения комментариев. Без `gh`, Claude всё ещё может использовать GitHub API, но неаутентифицированные запросы часто попадают на ограничения по частоте.225## Дайте Claude проверку для запуска
210 226
211Claude также эффективен в изучении CLI tools, которые он не знает. Попробуйте подсказки вроде `Use 'foo-cli-tool --help' to learn about foo tool, then use it to solve A, B, C.`227Claude останавливается, когда работа выглядит завершённой. Если у него нет ничего, что можно запустить и узнать, *завершена* ли работа на самом деле, ему остаётся ориентироваться только на «выглядит завершённой». На практике это делает набором тестов вас, и каждая ошибка ждёт, пока вы случайно её не заметите.
212 228
213### Подключите MCP servers229Если дать ему что-то, что возвращает «пройдено» или «не пройдено», Claude может замкнуть этот цикл сам. Он вносит изменение, запускает проверку и, если что-то сломалось, читает вывод и исправляет, прежде чем снова запустить проверку.
214 230
215> [!TIP]231> [!TIP]
216>232>
217> Запустите `claude mcp add` с именем сервера и URL или командой для подключения внешних инструментов, таких как Notion, Figma или ваша база данных. Например: `claude mcp add --transport http notion https://mcp.notion.com/mcp`.233> Дайте Claude что-то, что он может запустить и что возвращает «пройдено» или «не пройдено». Когда это у него есть, он может продолжать сам, и вам не нужно наблюдать.
218 234
219С [MCP servers](https://code.claude.com/docs/ru/mcp.md), вы можете попросить Claude реализовать функции из трекеров issues, запросить базы данных, анализировать данные мониторинга, интегрировать дизайны из Figma и автоматизировать рабочие процессы.235Проверкой может быть почти что угодно, лишь бы Claude мог прочитать результат:
220 236
221### Установите hooks237* Тестовый файл
238* Код выхода сборки
239* Линтер
240* Скрипт, сравнивающий вывод с фикстурой
241* [Скриншот браузера](https://code.claude.com/docs/ru/chrome.md) рядом с макетом
222 242
223> [!TIP]243Если в вашем репозитории уже есть что-то из этого, самая полезная строка в `CLAUDE.md` — команда, которая это запускает.
224>
225> Используйте hooks для действий, которые должны происходить каждый раз без исключений.
226 244
227[Hooks](https://code.claude.com/docs/ru/hooks-guide.md) запускают скрипты автоматически в определённых точках рабочего процесса Claude. В отличие от инструкций CLAUDE.md, которые являются рекомендательными, hooks являются детерминированными и гарантируют, что действие происходит.245Насколько строгой сделать проверку, решать вам. Варианты простираются от решения самого Claude до обеспечения со стороны Claude Code:
228 246
229Claude может писать hooks для вас. Попробуйте подсказки вроде *"Write a hook that runs eslint after every file edit"* или *"Write a hook that blocks writes to the migrations folder."* Отредактируйте `.claude/settings.json` напрямую для конфигурации hooks вручную, и запустите `/hooks` для просмотра того, что настроено.247* В промпте: `run the auth tests after, and keep going until they pass`. Claude сам решает, когда результат его устраивает. Это работает для любой задачи уже сегодня и без настройки.
248* Как цель: [`/goal all tests in tests/auth pass and lint is clean`](https://code.claude.com/docs/ru/goal) задаёт условие, которое отдельная модель проверяет по диалогу после каждого хода, и Claude продолжает, пока оно не выполнено. Вам самим в сессии это нужно редко. Это важно для длинных фоновых запусков, где Claude иногда завершает ход сводкой о прогрессе, хотя пункты ещё не закрыты, и цель отправляет его обратно к работе.
249* Как хук Stop: [хук `Stop`](https://code.claude.com/docs/ru/hooks#stop) запускает ваш скрипт каждый раз, когда Claude пытается завершить ход, и возвращает Claude к работе, если скрипт завершается с кодом выхода 2. Это обеспечивается Claude Code (средой выполнения), поэтому ход не закончится, пока проверка типов не пройдёт или не будет достигнут [лимит блокировок](https://code.claude.com/docs/ru/hooks.md#stop-input). [Пример приведён ниже](#enforce-the-check-with-a-stop-hook).
250* Тем, кто не писал код: в терминале [`/code-review`](https://code.claude.com/docs/ru/code-review-local) проверяет diff в новом субагенте, который никогда не видел ваш диалог. На него не влияют рассуждения, которые привели к этому коду.
230 251
231### Создайте skills252Какой бы вариант вы ни выбрали, просите у Claude *доказательства*: команду, которую он запустил, и её вывод, или скриншот. «Все тесты проходят» само по себе мало что говорит, а прочитать вывод быстрее, чем перезапускать проверку самостоятельно. Для сессии, за которой вы не наблюдали, это ещё и единственное доказательство, которое у вас есть.
232 253
233> [!TIP]254> [!TIP]
234>255>
235> Создайте файлы `SKILL.md` в `.claude/skills/` для предоставления Claude знаний о домене и переиспользуемых рабочих процессов.256> Когда Claude говорит, что закончил, вы также можете запустить в сессии [`/verify`](https://code.claude.com/docs/ru/skills#run-and-verify-your-app): Claude соберёт и запустит приложение и посмотрит на результат. Это выявляет проблемы, которые пропускают тесты и проверки типов.
236 257
237[Skills](https://code.claude.com/docs/ru/skills.md) расширяют знания Claude информацией, специфичной для вашего проекта, команды или домена. Claude применяет их автоматически, когда они актуальны, или вы можете вызвать их напрямую с помощью `/skill-name`.258### Ревью на соответствие спецификации
238 259
239Создайте skill, добавив директорию с `SKILL.md` в `.claude/skills/`:260Если вы хотите, чтобы ревью проверяло работу на соответствие вашему плану, а не искало ошибки в целом, напишите промпт для ревью сами:
240 261
241```markdown .claude/skills/api-conventions/SKILL.md theme={null}262```text theme={null}
242name: api-conventions263use a subagent to review the rate limiter diff against SPEC.md, check every requirement is implemented and the listed edge cases have tests, report gaps that affect correctness and skip style
243description: REST API design conventions for our services
244# API Conventions
245- Use kebab-case for URL paths
246- Use camelCase for JSON properties
247- Always include pagination for list endpoints
248- Version APIs in the URL path (/v1/, /v2/)
249```264```
250 265
251Skills также могут определять переиспользуемые рабочие процессы, которые вы вызываете напрямую:266> [!NOTE]
252 267>
253```markdown .claude/skills/fix-issue/SKILL.md theme={null}268> Не убирайте из этого промпта часть `skip style`. Рецензент, которого попросили найти проблемы, всегда найдёт *что-нибудь*. Если исправлять каждое замечание, в итоге получатся лишние слои абстракции и тесты для невозможных случаев.
254name: fix-issue269
255description: Fix a GitHub issue270### Обеспечьте проверку с помощью хука Stop
256disable-model-invocation: true271
257Analyze and fix the GitHub issue: $ARGUMENTS.272Версия правила проверки типов в виде хука `Stop` — это несколько строк в `.claude/settings.json`. Остановку блокирует код выхода 2. Всё, что команда выводит в stderr, возвращается Claude как причина, по которой он пока не может закончить, поэтому вывод компилятора перенаправляется туда:
258 273
2591. Use `gh issue view` to get the issue details274```json .claude/settings.json theme={null}
2602. Understand the problem described in the issue275{
2613. Search the codebase for relevant files276 "hooks": {
2624. Implement the necessary changes to fix the issue277 "Stop": [
2635. Write and run tests to verify the fix278 {
2646. Ensure code passes linting and type checking279 "hooks": [
2657. Create a descriptive commit message280 { "type": "command", "command": "pnpm tsc --noEmit 1>&2 || exit 2" }
2668. Push and create a PR281 ]
282 }
283 ]
284 }
285}
267```286```
268 287
269Запустите `/fix-issue 1234` для вызова. Используйте `disable-model-invocation: true` для рабочих процессов с побочными эффектами, которые вы хотите запустить вручную.288Чтобы увидеть это в действии, попросите Claude внести изменение, которое ломает тип: вместо завершения он получит ошибки компилятора и продолжит работу, пока `tsc` не пройдёт. Если хук блокирует [восемь остановок подряд](https://code.claude.com/docs/ru/hooks.md#stop-input) без вызова инструмента между ними, Claude Code переопределяет следующую блокировку и завершает ход. Чтобы поднять этот предел, задайте [`CLAUDE_CODE_STOP_HOOK_BLOCK_CAP`](https://code.claude.com/docs/ru/env-vars).
270 289
271### Создайте пользовательские subagents290## Обеспечьте соблюдение правил без исключений
272 291
273> [!TIP]292> [!TIP]
274>293>
275> Определите специализированных помощников в `.claude/agents/`, которых Claude может делегировать для изолированных задач.294> Если что-то должно происходить каждый раз, сделайте это хуком, правилом deny или управляемой настройкой. `CLAUDE.md` предназначен для рекомендаций, и Claude вправе решить, что рекомендация неприменима.
276 295
277[Subagents](https://code.claude.com/docs/ru/sub-agents.md) запускаются в своём собственном контексте с собственным набором разрешённых инструментов. Они полезны для задач, которые читают много файлов или нуждаются в специализированном внимании без загромождения вашего основного разговора.296Возьмите три правила, которые у вас, возможно, сейчас есть в `CLAUDE.md`: `Never read .env`, `Always run the formatter after editing`, `Don't touch the migrations folder`. Claude будет соблюдать их почти каждый раз. Те немногие, для которых «почти» недостаточно, перенесите из `CLAUDE.md` в конфигурацию, которую Claude Code (среда выполнения) применяет сам. С этого момента результат не зависит от того, что модель помнит или решает.
278 297
279```markdown .claude/agents/security-reviewer.md theme={null}298### Обеспечьте выполнение шагов с помощью хуков
280name: security-reviewer299
281description: Reviews code for security vulnerabilities300[Хуки](https://code.claude.com/docs/ru/hooks-guide.md) запускают что-то ваше в фиксированных точках цикла Claude: до или после вызова инструмента, когда Claude пытается остановиться, при запуске сессии и так далее. Этим может быть:
282tools: Read, Grep, Glob, Bash301
283model: opus302* Shell-команда (обычный случай)
284You are a senior security engineer. Review code for:303* POST-запрос к HTTP-эндпоинту
285- Injection vulnerabilities (SQL, XSS, command injection)304* Вызов инструмента на одном из ваших MCP-серверов
286- Authentication and authorization flaws305* [Хук `prompt` или `agent`](https://code.claude.com/docs/ru/hooks#hook-handler-fields), который позволяет решать модели
287- Secrets or credentials in code306
288- Insecure data handling307Хук `prompt` или `agent` просит решить *другую модель*, поэтому он тоже не детерминирован. Для настоящего обеспечения используйте хук `command` или `http` и добавьте [`onFailure: "block"`](https://code.claude.com/docs/ru/hooks#block-the-action-when-a-hook-fails), если действие должно быть остановлено и тогда, когда сам хук падает или превышает тайм-аут. Например, для хука, который сканирует коммиты на наличие секретов, лучше заблокировать коммит, чем пропустить его непросканированным, пока сканер не работает.
308
309Вот правило форматирования в виде хука `PostToolUse`. Он запускается после каждого `Edit` или `Write`, и то, помнит ли Claude это правило, больше не важно, потому что запускает его не Claude:
289 310
290Provide specific line references and suggested fixes.311```json .claude/settings.json theme={null}
312{
313 "hooks": {
314 "PostToolUse": [
315 {
316 "matcher": "Edit|Write",
317 "hooks": [
318 { "type": "command", "command": "npx prettier --write --ignore-unknown \"$(jq -r '.tool_input.file_path')\"" }
319 ]
320 }
321 ]
322 }
323}
291```324```
292 325
293Скажите Claude использовать subagents явно: *"Use a subagent to review this code for security issues."*326Чтобы проверить хук, попросите Claude добавить строку с неправильным отступом в файл, который форматирует Prettier. Сохранённый файл вернётся с исправленным отступом.
294 327
295### Установите plugins328Правило миграций становится [хуком `PreToolUse`](https://code.claude.com/docs/ru/hooks-guide#block-edits-to-protected-files), который завершается с кодом выхода 2 для любого пути в `migrations/`. Писать его самостоятельно не нужно: `write a hook that blocks edits to the migrations folder` работает как промпт, а `/hooks` показывает результат. Но не перестарайтесь: хук предназначен для правила с *нулём* исключений, а у `Prefer named exports` их множество, поэтому оно остаётся в `CLAUDE.md`.
296 329
297> [!TIP]330### Ограничьте доступ с помощью правил разрешений и песочницы
298>
299> Запустите `/plugin` для просмотра маркетплейса. Plugins добавляют skills, tools и интеграции без конфигурации.
300 331
301[Plugins](https://code.claude.com/docs/ru/plugins/overview.md) объединяют skills, hooks, subagents и MCP servers в единый устанавливаемый модуль из сообщества и Anthropic. Если вы работаете с типизированным языком, установите [code intelligence plugin](https://code.claude.com/docs/ru/plugins/code-intelligence.md) для предоставления Claude точной навигации по символам и автоматического обнаружения ошибок после редактирования.332[Правила разрешений](https://code.claude.com/docs/ru/permissions.md) определяют, что Claude разрешено запускать, читать и загружать. Правила `deny` действуют в любом режиме разрешений, включая auto и `bypassPermissions`, и именно поэтому правилу для `.env` место там:
302 333
303Для руководства по выбору между skills, subagents, hooks и MCP, см. [Extend Claude Code](https://code.claude.com/docs/ru/features-overview.md#match-features-to-your-goal).334```json .claude/settings.json theme={null}
335{
336 "permissions": {
337 "allow": ["Bash(pnpm tsc --noEmit)"],
338 "ask": ["Bash(git push *)"],
339 "deny": ["Read(./.env)", "Read(./.env.local)", "Read(./secrets/**)"]
340 }
341}
342```
304 343
305***344С сохранённой конфигурацией просьба к Claude показать содержимое `.env` завершится неудачей — как через инструмент `Read`, так и через `cat .env`.
306 345
307## Общайтесь эффективно346Правила сопоставляются с вызовами инструментов, а не с намерениями, поэтому стоит знать, где проходят границы:
308 347
309Задавайте Claude вопросы, которые вы задали бы другому инженеру, и для более крупных функций позвольте Claude взять интервью у вас и написать спецификацию перед тем, как вы начнёте реализацию.348* Правило `Read` *действительно* перехватывает `cat .env`, потому что Claude Code распознаёт [распространённые команды чтения файлов](https://code.claude.com/docs/ru/permissions.md#read-and-edit).
349* Оно не перехватит скрипт, который открывает файл.
350* Правило deny для `WebFetch` на домен ничего не делает с `curl` к тому же домену, если не включена песочница.
310 351
311### Задавайте вопросы о кодовой базе352Для ограничения доступа к файловой системе или сети на уровне ОС включите [песочницу](https://code.claude.com/docs/ru/sandboxing.md) командой `/sandbox` в сессии. Она ограничивает shell-команды Claude в macOS, Linux и WSL2 и также [учитывает ваши правила deny для `Read` и правила `WebFetch(domain:...)`](https://code.claude.com/docs/ru/sandboxing#permission-rules), поэтому для всего, что связано с безопасностью, нужно и то, и другое.
312 353
313> [!TIP]354По умолчанию Claude всё ещё может попросить повторить заблокированную команду вне песочницы, и этот запрос проходит обычный процесс разрешений. [Строгий режим песочницы](https://code.claude.com/docs/ru/sandboxing.md#turn-off-the-retry-with-strict-sandbox-mode) на вкладке **Overrides** в `/sandbox` отключает такую повторную попытку.
355
356> [!WARNING]
314>357>
315> Задавайте Claude вопросы, которые вы задали бы старшему инженеру.358> Авторежим — это модель-классификатор, оценивающая каждое действие, а не жёсткое правило. Она хорошо с этим справляется, но, как любое суждение, может ошибаться. Кроме того, вы можете настраивать, что она считает рискованным, а ваша организация может полностью отключить авторежим, поэтому вашим правилам «никогда» место в правилах deny или хуках.
359
360### Выберите, к кому применяется правило
316 361
317При адаптации к новой кодовой базе используйте Claude Code для обучения и исследования. Вы можете задавать Claude те же вопросы, которые задали бы другому инженеру:362То, где находится правило, определяет, к кому оно применяется:
318 363
319* Как работает логирование?364* `.claude/settings.local.json` и `~/.claude/settings.json` принадлежат только вам. Когда вы выбираете **Yes, and don't ask again** для команды, Claude Code сохраняет это правило в локальный файл.
320* Как мне создать новую конечную точку API?365* `.claude/settings.json` и хуки в нём принадлежат репозиторию. После коммита они применяются ко всем, кто работает в репозитории. Его правила deny действуют сразу. Его правила `allow` ждут, пока каждый человек не примет [диалоговое окно доверия](https://code.claude.com/docs/ru/permissions.md#what-runs-before-you-trust-a-folder) для этой папки, а [доверие к рабочему пространству](https://code.claude.com/docs/ru/hooks.md#workspace-trust) также определяет, когда его хуки начнут выполняться на их машине.
321* Что делает `async move { ... }` на строке 134 файла `foo.rs`?366* [Управляемые настройки](https://code.claude.com/docs/ru/managed-settings.md) принадлежат организации. Они поступают из консоли администратора, MDM или файла `managed-settings.json`, и никакой личный файл настроек не может их переопределить, что делает их единственным местом для политики команды безопасности. Если именно вы их задаёте, см. [Настройка Claude Code для вашей организации](https://code.claude.com/docs/ru/admin-setup.md).
322* Какие граничные случаи обрабатывает `CustomerOnboardingFlowImpl`?
323* Почему этот код вызывает `foo()` вместо `bar()` на строке 333?
324 367
325Использование Claude Code таким образом — это эффективный рабочий процесс адаптации, улучшающий время рамп-апа и снижающий нагрузку на других инженеров. Специальное формирование подсказок не требуется: задавайте вопросы напрямую.368Какой бы ни была область действия, держите набор принудительных правил небольшим. Каждый хук и каждое правило deny иногда срабатывает, когда не должно, и кому-то приходится поддерживать каждое из них. Если у вас их накопилось сорок, большинство из них, вероятно, предпочтения, которые Claude мог бы взвесить сам.
326 369
327### Позвольте Claude взять интервью у вас370## Измените настройку по умолчанию
328 371
329> [!TIP]372> [!TIP]
330>373>
331> Для более крупных функций позвольте Claude взять интервью у вас в первую очередь. Начните с минимальной подсказки и попросите Claude взять интервью у вас, используя инструмент `AskUserQuestion`.374> Значения по умолчанию достаточно хороши, чтобы их не трогать, пока задача не начнёт стоить больше времени, токенов или прерываний, чем следует. Когда это происходит, запустите `/usage` в сессии, чтобы увидеть, куда всё ушло.
332 375
333Claude задаёт вопросы о вещах, которые вы, возможно, не рассмотрели, включая техническую реализацию, UI/UX, граничные случаи и компромиссы. Замените `[brief description]` описанием вашей функции перед отправкой подсказки.376Новая сессия уже принимает за вас несколько решений:
334 377
335```text wrap theme={null}378* Интерактивные сессии в терминале и VS Code запускаются в авторежиме.
336I want to build [brief description]. Interview me in detail using the AskUserQuestion tool.379* На большинстве тарифов и у большинства провайдеров используется [Claude Opus 5.5 с effort medium](https://code.claude.com/docs/ru/model-config.md#default-model-setting).
380* Работа делегируется субагентам, когда для этого есть причина.
381* Диалог сжимается по мере роста.
337 382
338Ask about technical implementation, UI/UX, edge cases, concerns, and tradeoffs. Don't ask obvious questions, dig into the hard parts I might not have considered.383Чаще всего вы об этом даже не задумываетесь. Когда задача всё же обходится дороже, чем следует, причина обычно в одном из этих четырёх пунктов.
339 384
340Keep interviewing until we've covered everything, then write a complete spec to SPEC.md.385### Измените режим разрешений
341```
342 386
343Как только спецификация завершена, начните свежий сеанс для её выполнения. Новый сеанс имеет чистый контекст, сосредоточенный полностью на реализации, и у вас есть письменная спецификация для справки.387У обоих концов диапазона разрешений есть своя цена:
344 388
345Наиболее полезные спецификации являются самодостаточными: они называют задействованные файлы и интерфейсы, указывают, что находится вне области действия, и заканчиваются этапом сквозной проверки, который доказывает, что функция работает. Время, потраченное на уточнение спецификации, окупается больше, чем время, потраченное на наблюдение за реализацией.389* **Режим Manual**: вы сами подтверждаете каждую правку и каждую команду, которая выходит за рамки чтения. Безопасно, но после десятого запроса вы начинаете подтверждать не читая, и ничего не движется, пока вас нет за клавиатурой.
390* **`bypassPermissions`**: подтверждает всё, что не покрыто вашими правилами deny и ask, что имеет смысл только в одноразовом контейнере.
346 391
347***392[Авторежим](https://code.claude.com/docs/ru/permission-modes.md#eliminate-prompts-with-auto-mode) находится между ними, и именно в нём [запускаются](https://code.claude.com/docs/ru/permission-modes.md#which-mode-a-session-starts-in) интерактивные сессии в терминале и VS Code. Claude работает, не останавливаясь ради рутинных подтверждений, а отдельная модель-классификатор проверяет действия в [фиксированном порядке](https://code.claude.com/docs/ru/permission-modes.md#how-the-classifier-evaluates-actions) перед их выполнением. Он сосредоточен на [том, что вы хотели бы, чтобы остановил человек](https://code.claude.com/docs/ru/permission-modes.md#what-the-classifier-blocks-by-default):
348 393
349## Управляйте вашим сеансом394* `curl | bash`
395* Деплои и миграции в продакшене
396* Force push поверх чужой работы
397* Отправка конфиденциальных данных на внешние эндпоинты
398* Действия, которые выглядят так, будто ими управляет контент, прочитанный Claude, а не вы
350 399
351Разговоры являются постоянными и обратимыми. Используйте это в своих интересах!400Когда он всё же что-то блокирует, вы получаете уведомление, а действие появляется в разделе **Recently denied** в `/permissions`, где его можно повторить с ручным подтверждением. После [трёх блокировок подряд](https://code.claude.com/docs/ru/permission-modes.md#when-auto-mode-falls-back) (или двадцати в сумме) авторежим приостанавливается и снова начинает спрашивать вас.
352 401
353### Исправляйте курс рано и часто402Ничто из этого не заменяет ваши детерминированные механизмы, потому что классификатор работает *после* них. Правила deny и ask, а также хуки `PreToolUse` применяются до того, как классификатор что-либо увидит, поэтому правило deny блокирует в авторежиме точно так же, как и везде. Песочница по-прежнему ограничивает [shell-команды, которые она оборачивает](https://code.claude.com/docs/ru/sandboxing.md#what-runs-outside-the-sandbox).
354 403
355> [!TIP]404> [!NOTE]
356>405>
357> Исправьте Claude, как только заметите, что он идёт не в том направлении.406> Вы также можете сказать в диалоге `don't push until I've reviewed`, и классификатор [воспримет это как сигнал блокировки](https://code.claude.com/docs/ru/permission-modes.md#boundaries-you-state-in-conversation). Но это всё ещё модель, читающая транскрипт, и фраза может потеряться при сжатии диалога, поэтому всему важному место в правиле deny.
407
408Обратная проблема — классификатор, который раз за разом останавливает то, что в вашей среде является рутиной. Вместо того чтобы каждый раз подтверждать вручную, добавьте это в `autoMode.allow` или опишите вашу доверенную инфраструктуру в [конфигурации авторежима](https://code.claude.com/docs/ru/auto-mode-config.md). Это обычный английский текст, а не шаблоны, и [`/auto-mode-setup`](https://code.claude.com/docs/ru/auto-mode-config#generate-environment-entries) может подготовить для вас раздел `environment` на основе вашего проекта и недавних сессий:
409
410```json ~/.claude/settings.json theme={null}
411{
412 "autoMode": {
413 "environment": [
414 "$defaults",
415 "Source control: github.com/example-org and every repo under it",
416 "Trusted internal domains: *.internal.example.com"
417 ],
418 "allow": [
419 "$defaults",
420 "Deploying to the staging namespace is fine, it's isolated from production and resets nightly"
421 ]
422 }
423}
424```
358 425
359Лучшие результаты получаются из плотных циклов обратной связи. Хотя Claude иногда решает проблемы идеально с первой попытки, быстрое исправление обычно даёт лучшие решения быстрее.426> [!WARNING]
427>
428> Сохраняйте `"$defaults"` в каждом заданном вами списке, потому что без него ваши записи *заменяют* встроенные правила этого списка, а не дополняют их. Для `environment` и `allow` вы потеряете встроенный контекст и исключения, а список `soft_deny` без него лишается встроенных блокировок force push и деплоев в продакшен.
429>
430> Блок `autoMode` также должен находиться в `~/.claude/settings.json`, а не в проекте, потому что классификатор игнорирует `autoMode` в настройках проекта.
360 431
361* **`Esc`**: остановите Claude в середине действия клавишей `Esc`. Контекст сохраняется, поэтому вы можете перенаправить.432Если вы предпочитаете видеть каждую правку и команду до их выполнения, `Shift+Tab` в сессии переключает режимы разрешений, включая Manual, или можно запустить `claude --permission-mode manual` из оболочки. А если Manual затем спрашивает слишком часто, `/fewer-permission-prompts` просматривает ваши недавние транскрипты на предмет частых вызовов Bash и MCP только для чтения и добавляет их в список разрешённых в `.claude/settings.json`.
362* **`Esc + Esc` или `/rewind`**: нажмите `Esc` дважды или запустите `/rewind` для открытия меню перемотки и восстановления предыдущего разговора и состояния кода, или суммируйте из выбранного сообщения.
363* **`"Undo that"`**: попросите Claude отменить его изменения.
364* **`/clear`**: сбросить контекст между несвязанными задачами. Длинные сеансы с нерелевантным контекстом могут снизить производительность.
365 433
366Если вы исправили Claude более двух раз на одну и ту же проблему в одном сеансе, контекст загромождён неудачными подходами. Запустите `/clear` и начните заново с более конкретной подсказкой, которая включает то, что вы узнали. Чистый сеанс с лучшей подсказкой почти всегда превосходит длинный сеанс с накопленными исправлениями.434### Измените модель и effort
367 435
368### Управляйте контекстом агрессивно436[Effort](https://code.claude.com/docs/ru/model-config.md#adjust-effort-level) — основной способ управлять тем, как долго думает Claude, и он заменяет большую часть того, что раньше делали формулировками промпта. Claude Opus 5.5, Sonnet 5.5 и Haiku 5.5 по умолчанию используют `medium`, чего вполне достаточно для повседневной работы над функциями с понятным объёмом. Случаи, когда стоит его менять с помощью `/effort` в сессии:
369 437
370> [!TIP]438* Повысьте его через `/effort high` или `/effort xhigh`, когда правильный результат зависит от случаев, которые легко упустить. Например, баг в коде, который писали не вы, нестабильный тест или изменение схемы, при котором Claude должен найти всех, кто читает старую структуру. Тогда Claude проверяет больше граничных случаев и тщательнее перепроверяет свою работу перед ответом — на это и уходят дополнительное время и токены.
371>439* Понизьте его через `/effort low`, когда вы быстро обмениваетесь репликами и всё равно просматриваете каждый результат: мозговой штурм, первый набросок, переименование в нескольких файлах. Claude быстрее даст вам отправную точку, а поскольку вы направляете каждый шаг, дополнительные размышления почти ничего бы не изменили, кроме времени ожидания.
372> Запустите `/clear` между несвязанными задачами для сброса контекста.440* Оставьте `max` для сложной задачи, которую Claude должен проработать без вас, например поиска уязвимости. На обычных задачах он склонен размышлять избыточно, так что вы платите больше за ответ, который может оказаться не лучше, чем дал бы `high`.
441* Когда это нужно только для следующего сообщения, например для одного хитрого вопроса посреди в остальном рутинной работы, добавьте в этот промпт [`ultrathink`](https://code.claude.com/docs/ru/model-config#use-ultrathink-for-one-off-deep-reasoning), вместо того чтобы менять настройку.
373 442
374Claude Code автоматически компактирует историю разговора, когда вы приближаетесь к ограничениям контекста, что сохраняет важный код и решения, освобождая место.443Что касается самой модели, Opus 5.5 по умолчанию хорошо справляется с большинством задач программирования, а Sonnet стоит дешевле на рутинной работе. [Claude Fable 5.1](https://code.claude.com/docs/ru/model-config.md#work-with-fable) доступна, когда вы явно выбираете её через `/model fable`, а Haiku хорошо подходит для субагентов, выполняющих простые задания. Полный список по тарифам и провайдерам — в разделе [Конфигурация модели](https://code.claude.com/docs/ru/model-config.md).
375 444
376Во время длинных сеансов контекстное окно Claude может заполниться нерелевантным разговором, содержимым файлов и командами. Это может снизить производительность и иногда отвлечь Claude.445### Знайте, во что обходятся субагенты
377 446
378* Используйте `/clear` часто между задачами для полного сброса контекстного окна447Claude сам делегирует работу [субагентам](https://code.claude.com/docs/ru/sub-agents.md):
379* Когда автоматическое компактирование срабатывает, Claude суммирует то, что имеет значение, включая паттерны кода, состояния файлов и ключевые решения
380* Для большего контроля запустите `/compact <instructions>`, например `/compact Focus on the API changes`
381* Для компактирования только части разговора используйте `Esc + Esc` или `/rewind`, выберите контрольную точку сообщения и выберите **Summarize from here** или **Summarize up to here**. Первый вариант сжимает сообщения с этой точки вперёд, сохраняя более ранний контекст нетронутым; второй сжимает более ранние сообщения, сохраняя недавние в полном объёме. См. [меню перемотки с опциями суммирования](https://code.claude.com/docs/ru/checkpointing.md#rewind-and-summarize).
382* Настройте поведение компактирования в CLAUDE.md с инструкциями вроде `"When compacting, always preserve the full list of modified files and any test commands"` для обеспечения того, что критический контекст выживает при суммировании
383* Для вопросов, которые не нужно оставлять в контексте, используйте [`/btw`](https://code.claude.com/docs/ru/interactive-mode#side-questions-with-%2Fbtw). Ответ никогда не входит в историю разговора, поэтому вы можете проверить деталь без увеличения контекста.
384 448
385### Используйте subagents для исследования449* Широкий поиск по кодовой базе передаётся встроенному агенту Explore.
450* Побочные задачи [ответвляются](https://code.claude.com/docs/ru/sub-agents.md#fork-the-current-conversation), пока включён режим fork (по умолчанию).
451* Запускаемые им субагенты по умолчанию работают в фоне, поэтому ваш основной диалог продолжается.
386 452
387> [!TIP]453Просить об этом вам придётся редко, но полезно знать, что вы получаете и сколько это стоит.
388>
389> Делегируйте исследование с помощью `"use subagents to investigate X"`. Они исследуют в отдельном контексте, сохраняя ваш основной разговор чистым для реализации.
390 454
391Поскольку контекст — это ваше фундаментальное ограничение, используйте subagents для того, чтобы держать исследование вне его. Когда Claude исследует кодовую базу, он читает много файлов, все из которых потребляют ваш контекст. Subagents запускаются в отдельных контекстных окнах и сообщают обратно суммарные данные:455Субагенты окупаются в следующих ситуациях:
392 456
393```text wrap theme={null}457* Одновременное выполнение независимых частей работы, чтобы вся задача завершилась быстрее
394Use subagents to investigate how our authentication system handles token458* Вынос длинного вывода, например полного прогона тестов или широкого поиска, из основного диалога, где иначе он оставался бы до конца сессии
395refresh, and whether we have any existing OAuth utilities I should reuse.459* Получение рецензента, который не видел, как писался код
396```460* Предоставление задаче меньшего набора инструментов, чем у основной сессии, например рецензент, который может читать, но не редактировать
397 461
398Вы также можете использовать subagents для проверки после того, как Claude что-то реализует. См. [Добавьте шаг состязательного рецензирования](#add-an-adversarial-review-step).462Обходятся они вам в основном в токены, поскольку каждый субагент отправляет собственные запросы, и они учитываются в том же объёме использования, что и основной диалог. Иногда это ещё и время: новому субагенту сначала нужно собрать контекст, который в вашем диалоге уже был, поэтому он может оказаться *медленнее*, чем выполнение задачи на месте.
399 463
400### Перемотайте с контрольными точками464И по умолчанию это та же модель (или меньшая) на той же задаче. Вы получаете параллелизм или свежий взгляд, но не более умный ответ.
401 465
402> [!TIP]466Чтобы тратить на них меньше:
403>
404> Каждое действие, которое вы отправляете, создаёт контрольную точку. Вы можете восстановить разговор, код или оба в любую предыдущую контрольную точку.
405 467
406Claude автоматически создаёт снимки файлов перед каждым изменением, поэтому контрольная точка может восстановить их. Дважды нажмите `Escape` или запустите `/rewind` для открытия меню перемотки. Вы можете восстановить только разговор, восстановить только код, восстановить оба или суммировать из выбранного сообщения. См. [Checkpointing](https://code.claude.com/docs/ru/checkpointing.md) для деталей.468* Задайте [`model: haiku`](https://code.claude.com/docs/ru/sub-agents#choose-a-model) в определении субагента, если его работа проста, например собрать файлы, импортирующие модуль, или проверить ссылки в документации. Такой работе не нужна большая модель, а Haiku стоит намного дешевле за запрос.
469* Просите возвращать короткие сводки, чтобы двадцать результатов всё равно не заполнили ваш контекст.
470* Смотрите `/usage`, чтобы увидеть, какую долю использования занимает каждый тип субагентов, и понять, какие из них оправдывают свою стоимость.
471* Дайте пользовательскому субагенту в `.claude/agents/` только `tools: Read, Grep, Glob`. Теперь это рецензент, который ничего не может редактировать, и это ограничение обеспечивается Claude Code, а не запрашивается в промпте.
407 472
408Вместо тщательного планирования каждого хода, вы можете сказать Claude попробовать что-то рискованное. Если это не сработает, перемотайте и попробуйте другой подход. Контрольные точки сохраняются между сеансами, поэтому вы можете закрыть ваш терминал и всё ещё перемотать позже.473Такой рецензент — это один короткий файл, `.claude/agents/reviewer.md`:
409 474
410> [!WARNING]475```markdown .claude/agents/reviewer.md theme={null}
411>476---
412> Контрольные точки отслеживают только изменения, сделанные через инструменты редактирования файлов Claude. Изменения, сделанные через команды Bash или внешние процессы, не захватываются. Это не замена git.477name: reviewer
478description: Reviews changed files against the spec they were built from. Use after implementing a feature, before opening the PR.
479tools: Read, Grep, Glob
480---
481You're reviewing code you didn't write. Compare the changed files against the spec you're given,
482check that every requirement is implemented and the listed edge cases have tests,
483and report only the gaps that affect correctness. Skip style.
484```
413 485
414### Возобновите разговоры486Попросите Claude `have the reviewer compare the rate limiter against SPEC.md`, и пробелы вернутся в вашу сессию, где Claude сможет их исправить.
415 487
416> [!TIP]488### Сокращайте расходы и контекст
417>
418> Назовите сеансы с помощью `/rename` и относитесь к ним как к ветвям: каждый рабочий поток получает свой собственный постоянный контекст.
419 489
420Claude Code сохраняет разговоры локально, поэтому когда задача охватывает несколько сеансов, вам не нужно переобъяснять контекст. Запустите [`claude --continue`](https://code.claude.com/docs/ru/sessions#resume-a-session) для продолжения с самого последнего сеанса или `claude --resume` для выбора из списка. Дайте сеансам описательные имена, такие как `oauth-migration`, чтобы вы могли найти их позже. См. [Manage sessions](https://code.claude.com/docs/ru/sessions.md) для полного набора управления возобновлением, ветвлением и именованием.490При окне в 1M токенов у большинства современных моделей и сжатии вблизи его верхней границы контекст у вас будет заканчиваться редко. Но вы всё равно можете *платить* за контекст, который вам не нужен. Каждый запрос отправляет весь диалог, поэтому сессия, в которой накопились три несвязанные задачи, перечитывает все три на каждом ходу четвёртой. Это [стоит дешевле, пока кэш тёплый](https://code.claude.com/docs/ru/costs.md#why-usage-climbs-in-a-long-session), и по полной цене после его истечения.
421 491
422***492[`/usage`](https://code.claude.com/docs/ru/costs) — первое место, куда стоит заглянуть. На Pro, Max, Team и Enterprise он разбивает ваше использование по скиллам, субагентам, плагинам и MCP-серверам. Он также помечает такие паттерны, как длинный контекст или частые промахи кэша, когда один из них превышает 10% вашего использования. Дальше — обычные способы исправления:
423 493
424## Автоматизируйте и масштабируйте494* `/clear` между несвязанными задачами. Это ничего не стоит и означает, что следующая задача не продолжает платить за историю предыдущей. `/clear oauth-migration` даёт имя сессии, которую вы покидаете, чтобы позже к ней можно было вернуться.
495* `/compact` с фокусом, например `/compact keep the API changes and the test commands`. В длинной сессии `/compact` сам по себе является большим запросом, поскольку читает весь диалог, чтобы его обобщить, и тем более после истечения кэша.
496* Следите за фоновой работой: `/loop`, проверка цели после каждого хода и собственные субагенты Claude продолжают отправлять запросы, пока вы ничего не вводите.
425 497
426Как только вы научитесь эффективно работать с одним Claude, умножьте свою производительность с помощью параллельных сессий, неинтерактивного режима и паттернов fan-out.498> [!NOTE]
499>
500> [Кэш промптов](https://code.claude.com/docs/ru/prompt-caching.md) живёт около часа при подписке и пять минут при использовании API-ключа, облачного провайдера или кредитов использования. Субагенты получают пять минут, если вы это не измените.
501>
502> При часовом кэше простаивающая сессия объёмом более примерно 200K токенов сжимается незадолго до истечения кэша, поэтому после обеда вы продолжите со сводки. Если история вам вообще не нужна, новая сессия всё равно обойдётся дешевле.
427 503
428### Запустите неинтерактивный режим504## Управляйте сессией
429 505
430> [!TIP]506> [!TIP]
431>507>
432> Используйте `claude -p "prompt"` в CI, pre-commit хуках или скриптах. Добавьте `--output-format stream-json --verbose` для потокового вывода JSON.508> Следите за первой минутой, нажимайте `Esc`, как только Claude отклоняется от курса, а после двух неудачных исправлений запустите `/clear` и напишите промпт получше вместо третьего исправления.
433 509
434С `claude -p "your prompt"` вы можете запустить Claude неинтерактивно, без интерактивного промпта. Запуск по-прежнему создаёт возобновляемую сессию, если вы не передадите `--no-session-persistence`. [Неинтерактивный режим](https://code.claude.com/docs/ru/headless.md) — это способ интегрировать Claude в CI-конвейеры, pre-commit хуки или любой автоматизированный рабочий процесс. Форматы вывода позволяют анализировать результаты программно: простой текст, JSON или потоковый JSON.510Никакая конфигурация не заменит наблюдения за первой минутой и вмешательства, когда Claude направляется не туда, куда вы хотели. Для этого есть всего несколько средств управления, и их стоит знать наизусть:
435 511
436```bash theme={null}512* `Esc` останавливает Claude посреди действия и сохраняет всё сделанное до этого момента, поэтому его можно перенаправить без потери работы.
437# One-off queries513* `/rewind` или двойное нажатие `Esc` при пустом промпте открывает [меню перемотки](https://code.claude.com/docs/ru/checkpointing.md#rewind-and-summarize), где можно откатить код, диалог или и то, и другое к более раннему промпту. Благодаря этому можно с небольшим риском сначала попробовать более смелый подход и откатиться, если он не сработает. То же меню может обобщить часть диалога, если она устарела.
438claude -p "Explain what this project does"514* `/clear` начинает заново. Если вы дважды исправили одно и то же, а всё по-прежнему неправильно, третье исправление в основном лишь добавится к диалогу, который уже содержит две неудачные попытки, которые Claude продолжит перечитывать. `/clear` плюс один новый промпт, учитывающий то, что вы узнали, почти всегда работает лучше.
439
440# Structured output for scripts
441claude -p "List all API endpoints" --output-format json
442 515
443# Streaming for real-time processing516> [!WARNING]
444claude -p "Analyze this log file" --output-format stream-json --verbose517>
445```518> Чекпоинты охватывают файлы, которые Claude редактировал собственными инструментами работы с файлами в основном диалоге, поэтому файл, который затронула только команда Bash, [не восстанавливается](https://code.claude.com/docs/ru/checkpointing.md#bash-command-changes-not-tracked). Они работают вместе с git, а не заменяют его.
446 519
447Первая команда выводит простой текст. Формат `json` возвращает один объект JSON с полем `result`. Формат `stream-json` выводит один объект JSON на строку, начиная с события инициализации.520Ещё два средства поменьше: [`/btw`](https://code.claude.com/docs/ru/interactive-mode#side-questions-with-%2Fbtw) отвечает на быстрый вопрос, ничего не добавляя в историю. А для работы, растянутой на несколько дней, `/rename oauth-migration` в сессии даёт ей имя, чтобы позже [`claude --resume oauth-migration`](https://code.claude.com/docs/ru/sessions#resume-by-session-id-or-name) из оболочки подхватил её снова, вместе с чекпоинтами. `claude --continue` возобновляет самую последнюю сессию.
448 521
449### Запустите несколько сессий Claude522## Позвольте Claude работать без вас
450 523
451> [!TIP]524> [!TIP]
452>525>
453> Запускайте несколько сессий Claude параллельно, чтобы ускорить разработку, проводить изолированные эксперименты или запускать сложные рабочие процессы.526> Прежде чем оставить запуск без присмотра, убедитесь, что он знает, как выглядит готовый результат, может проверить свою работу и имеет доступ только к тому, к чему должен. Задайте ему предел по ходам или расходам и сделайте так, чтобы в конце результат одобрил человек.
454
455Выберите подход к параллелизации, который соответствует тому, сколько координации вы хотите выполнять самостоятельно, и добавьте обмен сообщениями, когда сессиям нужно передавать результаты друг другу:
456 527
457* [Worktrees](https://code.claude.com/docs/ru/worktrees.md): запускайте отдельные сессии CLI в изолированных git checkouts, чтобы правки не конфликтовали528Всё на этой странице становится немного важнее, когда вас нет рядом, чтобы заметить ошибки. Пока вы наблюдаете, отсутствие у Claude какой-то части контекста не страшно: вы заметите это за одно-два сообщения и скажете ему. В запуске, который вы начали перед сном, никто ему ничего не скажет, и утром вы узнаете, что он всю ночь строил работу на неверном предположении.
458* [Cross-session messaging](https://code.claude.com/docs/ru/cross-session-messaging.md): позвольте сессиям, которые вы запускаете самостоятельно, передавать результаты друг другу
459* [Desktop app](https://code.claude.com/docs/ru/desktop.md#work-in-parallel-with-sessions): управляйте несколькими локальными сессиями визуально, при желании каждой в своём worktree
460* [Use Claude Code in the cloud](https://code.claude.com/docs/ru/claude-code-on-the-web.md): по умолчанию запускайте сессии на инфраструктуре, управляемой Anthropic
461* [Agent view](https://code.claude.com/docs/ru/agent-view.md): research preview. Запустите `claude agents`, чтобы отправлять сессии, которые продолжают работать в фоне, и наблюдать за ними с одного экрана
462* [Agent teams](https://code.claude.com/docs/ru/agent-teams.md): экспериментальная функция, отключена по умолчанию. Автоматизированная координация нескольких сессий с общими задачами, обменом сообщениями и лидером команды
463 529
464Помимо параллелизации работы, несколько сессий позволяют выстраивать рабочие процессы, ориентированные на качество. Свежий контекст улучшает код-ревью, поскольку Claude не будет предвзят к коду, который он только что написал.530Прежде чем оставить задачу выполняться самостоятельно, стоит пройтись по этим пяти вопросам применительно к конкретной задаче:
465 531
466Например, используйте паттерн Writer/Reviewer:5321. Знает ли он, как выглядит готовый результат? Условие цели, файл спецификации или падающий тест, который он должен сделать зелёным.
5332. Может ли он проверить свою работу? Набор тестов, хук `Stop`, какой-либо этап ревью.
5343. К чему ему разрешено прикасаться? Правила разрешений, `dontAsk`, песочница, worktree, единственная ветка, в которую он может делать push.
5354. Что его остановит? `--max-turns`, `--max-budget-usd`, лимит расходов.
5365. Куда идёт результат и кто его утверждает? PR, комментарий или сводка, а затем человек, одобряющий слияние, деплой или что-либо ещё необратимое.
467 537
468| Session A (Writer) | Session B (Reviewer) |538После запуска Claude сам доведёт длинную задачу до конца. За вами остаётся запустить её, решить, что «готово» означает на этот раз, и одобрить слияние в конце.
469| - | - |
470| `Implement a rate limiter for our API endpoints` | |
471| | `Review the rate limiter implementation in @src/middleware/rateLimiter.ts. Look for edge cases, race conditions, and consistency with our existing middleware patterns.` |
472| `Here's the review feedback: [Session B output]. Address these issues.` | |
473 539
474Вы можете сделать нечто подобное с тестами: пусть один Claude напишет тесты, а другой — код, который их пройдёт.540### Запускайте Claude из скрипта
475 541
476### Fan out через файлы542[`claude -p "prompt"`](https://code.claude.com/docs/ru/headless) выполняется один раз и завершается — именно так Claude Code оказывается в задачах CI, git-хуках и циклах оболочки.
477
478> [!TIP]
479>
480> Перебирайте задачи в цикле, вызывая `claude -p` для каждой. Используйте `--allowedTools`, чтобы заранее разрешить инструменты для пакетных операций.
481 543
482Для больших миграций или анализов вы можете распределить работу между множеством параллельных вызовов Claude. Запустите [`/batch <instruction>`](https://code.claude.com/docs/ru/commands#all-commands), чтобы Claude разделил изменение между 5–30 субагентами. Каждый субагент работает в своём worktree. Чтобы вместо этого управлять fan-out из собственного скрипта, перебирайте `claude -p` в цикле:544В скрипте вам почти всегда понадобятся ещё несколько флагов:
483 545
484**1. Сгенерируйте список задач**546* [`--bare`](https://code.claude.com/docs/ru/headless#start-faster-with-bare-mode) пропускает хуки, скиллы, плагины, MCP-серверы и файлы `CLAUDE.md` — как из репозитория, так и с машины, — поэтому запуск ведёт себя одинаково, где бы он ни выполнялся. Он также никогда не использует ваш вход в claude.ai: аутентификация берётся из `ANTHROPIC_API_KEY`, `apiKeyHelper` в файле, переданном через `--settings`, или из учётных данных вашего облачного провайдера.
547* `--append-system-prompt`, `--mcp-config` и `--settings` явно передают всё, что запуску *действительно* нужно.
548* `--allowedTools` заранее разрешает его инструменты, а [`--permission-mode dontAsk`](https://code.claude.com/docs/ru/permission-modes#allow-only-pre-approved-tools-with-dontask-mode) отклоняет всё остальное, что потребовало бы подтверждения.
549* `--output-format json` даёт единый объект результата для разбора, а `stream-json` с `--verbose` передаёт события по мере их возникновения.
485 550
486Попросите Claude записать список файлов, которые нужно мигрировать, в файл, чтобы цикл на следующем шаге мог его прочитать, с помощью промпта вроде `list all 2,000 Python files that need migrating and save the list to files.txt`551Вместе это выглядит так:
487
488**2. Напишите скрипт для перебора списка**
489 552
490```bash theme={null}553```bash theme={null}
491for file in $(cat files.txt); do554for file in $(cat files.txt); do
492 claude -p "Migrate $file from Python 2 to Python 3. Return OK or FAIL." \555 claude --bare -p "Migrate $file to the new logger API and commit. Reply OK or FAIL." \
493 --allowedTools "Edit,Bash(git commit *)" \556 --allowedTools "Read,Edit,Bash(git add *),Bash(git commit *)" \
494 --permission-mode dontAsk557 --permission-mode dontAsk \
558 --max-turns 20
495done559done
496```560```
497 561
498**3. Протестируйте на нескольких файлах, затем запустите на всех**562Когда запуск завершается, Claude отвечает `OK` или `FAIL`, а запуск, достигший лимита ходов, вместо этого завершается с ошибкой. Сначала попробуйте на трёх файлах, посмотрите, что пошло не так, исправьте промпт, а затем запустите остальные.
499
500Уточните свой промпт с учётом того, что пошло не так с первыми 2–3 файлами, затем запустите на полном наборе. Флаг `--allowedTools` заранее разрешает инструменты, необходимые для миграции. [`--permission-mode dontAsk`](https://code.claude.com/docs/ru/permission-modes#allow-only-pre-approved-tools-with-dontask-mode) отклоняет всё остальное, что потребовало бы подтверждения, — это важно, когда вы запускаете работу без присмотра, хотя установленный вами [мод](https://code.claude.com/docs/ru/plugins/mods/overview.md) всё же может подтвердить некоторые из этих вызовов.
501 563
502Вы также можете интегрировать Claude в существующие конвейеры данных/обработки:564Авторежим работает и с `-p`, если передать `--permission-mode auto`. В неинтерактивном запуске блокировка классификатором запрещает только это одно действие, и Claude продолжает работу, а повторные блокировки не приостанавливают запуск, как это происходит в терминале. Прочитайте, [как там применяются пороговые значения](https://code.claude.com/docs/ru/permission-modes.md#repeated-block-thresholds), прежде чем полагаться на это.
503 565
504```bash theme={null}566### Запускайте по расписанию или по событию
505claude -p "<your prompt>" --output-format json | your_command
506```
507 567
508### Запустите автономно с авторежимом568Когда запуск идёт, Claude может справиться с остальным сам. Единственное, чего он не может, — решить *начать*, поэтому это должно сделать что-то другое: вы, таймер или событие вроде упавшей проверки CI или нового PR.
509 569
510Для непрерывного выполнения с фоновыми проверками безопасности используйте [авторежим](https://code.claude.com/docs/ru/permission-modes.md#eliminate-prompts-with-auto-mode). Модель-классификатор проверяет команды перед их запуском, блокируя выход за пределы задачи, неизвестную инфраструктуру и действия, вызванные враждебным контентом, и при этом позволяя рутинной работе продолжаться без запросов.570Внутри открытой сессии это [`/loop`](https://code.claude.com/docs/ru/scheduled-tasks#run-a-prompt-repeatedly-with-%2Floop), который повторяет промпт с заданным интервалом:
511 571
512```bash theme={null}572```text theme={null}
513claude --permission-mode auto -p "fix all lint errors"573/loop 15m check CI on this branch, and if it's red pull the failing job's log, fix it and push
514```574```
515 575
516Когда классификатор повторно блокирует действия в неинтерактивном запуске с флагом `-p`, Claude Code не останавливает запуск. О том, что происходит вместо этого, и о пороговых значениях см. в разделе [когда авторежим переключается на резервный вариант](https://code.claude.com/docs/ru/permission-modes.md#when-auto-mode-falls-back).576Каждый запуск — это ещё один ход в той же сессии, поэтому не оставляйте его работать в длинном диалоге. Для всего, что должно происходить, пока ваш ноутбук закрыт, [`/schedule`](https://code.claude.com/docs/ru/routines#create-from-the-cli) настраивает [облачную запланированную задачу](https://code.claude.com/docs/ru/routines.md), которая запускается по таймеру. Для неё нужен вход в claude.ai, а не API-ключ. Триггер по событию GitHub можно добавить, попросив об этом Claude, а API-триггер — на [claude.ai/code/routines](https://claude.ai/code/routines).
517
518### Добавьте шаг состязательного ревью
519 577
520> [!TIP]578> [!WARNING]
521>579>
522> Прежде чем считать задачу выполненной, попросите субагента проверить diff в свежем контексте и сообщить о пробелах.580> Прежде чем оставить облачную запланированную задачу работать, защитите `main` с помощью [правила ветки GitHub, которое задача не может обойти](https://code.claude.com/docs/ru/routines.md#repositories-and-branch-permissions). И понаблюдайте за первыми несколькими запусками чего-либо нового, прежде чем доверять ему работу без присмотра.
523
524Чем дольше Claude работает без присмотра, тем важнее независимая проверка, прежде чем вы сочтёте работу выполненной. Рецензент, работающий в свежем контексте [субагента](https://code.claude.com/docs/ru/sub-agents.md), видит только diff и критерии, которые вы ему даёте, но не рассуждения, приведшие к изменению, поэтому он оценивает результат сам по себе.
525 581
526Для проверки корректности запустите встроенный [скилл `/code-review`](https://code.claude.com/docs/ru/commands), который проверяет текущий diff на наличие ошибок в свежем субагенте и возвращает результаты в сессию. Чтобы вместо этого проверить diff на соответствие вашему плану, напишите промпт для ревью самостоятельно. Укажите, какую работу проверить, по какому плану её проверять и что считается замечанием:582### Запускайте сессии параллельно
527 583
528```text wrap theme={null}584Когда у вас одновременно идут отдельные части работы, дайте каждой собственную рабочую копию, чтобы правки не конфликтовали. [`claude -w feature-auth`](https://code.claude.com/docs/ru/worktrees#start-claude-in-a-worktree) запускает сессию в новом worktree, [десктопное приложение](https://code.claude.com/docs/ru/desktop.md#work-in-parallel-with-sessions) запускает несколько таких сессий рядом, а [облачные сессии](https://code.claude.com/docs/ru/claude-code-on-the-web.md) выполняют их в облаке, а не на вашей машине.
529Use a subagent to review the rate limiter diff against PLAN.md. Check that
530every requirement is implemented, the listed edge cases have tests, and
531nothing outside the task's scope changed. Report gaps, not style preferences.
532```
533 585
534Поскольку рецензент работает как субагент, реализующая сессия получает пробелы напрямую и может исправить их и провести повторное ревью без того, чтобы вы копировали результаты между окнами.586Worktree — это свежая рабочая копия, а значит, файлов из gitignore, таких как `.env`, там нет, и зависимости не установлены. Для первого перечислите нужные файлы из gitignore в [`.worktreeinclude`](https://code.claude.com/docs/ru/worktrees#copy-gitignored-files-into-worktrees) в корне репозитория (синтаксис как у `.gitignore`), и Claude Code скопирует их в каждый создаваемый worktree:
535 587
536Рецензент, которого попросили найти пробелы, обычно сообщит хотя бы о некоторых, даже если работа выполнена качественно, потому что именно это его попросили сделать. Попытки устранить каждое замечание приводят к чрезмерному усложнению: лишним слоям абстракции, защитному коду и тестам для случаев, которые не могут произойти. Попросите рецензента помечать только пробелы, влияющие на корректность или заявленные требования, а остальное считайте необязательным.588```text .worktreeinclude theme={null}
589.env
590.env.local
591config/dev-credentials.json
592```
537 593
538***594Ограничьтесь небольшими файлами: они копируются, а не связываются ссылками, поэтому `node_modules` там означал бы полную копию на каждый worktree. Для больших каталогов есть настройка [`worktree.symlinkDirectories`](https://code.claude.com/docs/ru/settings-reference#worktree-symlinkdirectories); также можно держать команду установки в `CLAUDE.md`, чтобы Claude запускал её каждый раз, когда начинает работу в новой копии.
539 595
540## Избегайте общих паттернов отказа596Убирать за всем этим самостоятельно вам придётся редко:
541 597
542Это общие ошибки. Их раннее распознавание экономит время:598* Когда вы выходите из безымянной сессии в worktree, Claude Code [удаляет worktree](https://code.claude.com/docs/ru/worktrees.md#clean-up-worktrees), если в нём ничего нет. Для именованной сессии или сессии с изменениями он спрашивает, что делать.
599* Worktree субагентов исчезают, когда субагент завершает работу без изменений.
600* Оставшиеся worktree субагентов и фоновых сессий удаляются, когда они старше `cleanupPeriodDays` и не содержат работы.
543 601
544* **Сеанс кухонной раковины.** Вы начинаете с одной задачи, затем спрашиваете Claude что-то несвязанное, затем возвращаетесь к первой задаче. Контекст полон нерелевантной информации.602> [!NOTE]
545 > **Исправление**: `/clear` между несвязанными задачами.603>
546* **Исправление снова и снова.** Claude делает что-то неправильно, вы исправляете, это всё ещё неправильно, вы исправляете снова. Контекст загромождён неудачными подходами.604> За запуском `claude -p --worktree` придётся убирать самостоятельно, поскольку он завершается без вопросов. Удаляйте такие worktree с помощью `git worktree remove <path>`, а если git отказывает, потому что worktree заблокирован, сначала выполните `git worktree unlock <path>`.
547 > **Исправление**: После двух неудачных исправлений, `/clear` и напишите лучшую начальную подсказку, включающую то, что вы узнали.
548* **Переопределённый CLAUDE.md.** Если ваш CLAUDE.md слишком длинный, Claude игнорирует половину его, потому что важные правила теряются в шуме.
549 > **Исправление**: Безжалостно обрезайте. Если Claude уже делает что-то правильно без инструкции, удалите это или преобразуйте в hook.
550* **Разрыв доверия-затем-проверки.** Claude создаёт правдоподобно выглядящую реализацию, которая не обрабатывает граничные случаи.
551 > **Исправление**: Всегда предоставляйте проверку (тесты, скрипты, скриншоты). Если вы не можете это проверить, не отправляйте это.
552* **Бесконечное исследование.** Вы просите Claude "исследовать" что-то без определения области. Claude читает сотни файлов, заполняя контекст.
553 > **Исправление**: Определите исследования узко или используйте subagents, чтобы исследование не потребляло ваш основной контекст.
554 605
555***606Для одного большого механического изменения во многих файлах [`/batch migrate every handler to the v2 response helpers`](https://code.claude.com/docs/ru/commands) разбивает работу на 5–30 частей и показывает вам план. Затем он выполняет каждую часть в собственном worktree и открывает для неё PR. Из оболочки [`claude agents`](https://code.claude.com/docs/ru/agent-view) (пока research preview) даёт вам один экран для всего, что работает в фоне на вашей машине.
556 607
557## Развивайте вашу интуицию608Вторая сессия — это также самый простой независимый рецензент, которого можно получить. Одна сессия пишет ограничитель частоты запросов, другая проверяет `@src/middleware/rateLimiter.ts`, не наблюдая за его написанием, а вы вставляете замечания обратно в первую. Та же идея, что и у `/code-review`, только сообщения переносите вы.
558 609
559Паттерны в этом руководстве не высечены в камне. Они являются отправными точками, которые хорошо работают в целом, но могут быть не оптимальны для каждой ситуации.610## Что можно перестать делать
560 611
561Иногда вы *должны* позволить контексту накапливаться, потому что вы глубоко в одной сложной проблеме и история ценна. Иногда вы должны пропустить планирование и позволить Claude понять это, потому что задача исследовательская. Иногда расплывчатая подсказка — это именно то, что нужно, потому что вы хотите увидеть, как Claude интерпретирует проблему перед её ограничением.612Каждый из этих советов был хорошим, когда его написали. Большинство были обходными путями для того, что модель тогда ещё не умела делать надёжно, и с тех пор модели это наверстали. Если некоторые из них всё ещё остаются у вас привычками, вот почему от них можно безопасно отказаться.
562 613
563Обратите внимание на то, что работает. Когда Claude создаёт отличный выход, заметьте, что вы сделали: структуру подсказки, контекст, который вы предоставили, режим, в котором вы были. Когда Claude борется, спросите почему. Был ли контекст слишком шумным? Подсказка слишком расплывчатой? Задача слишком большой для одного прохода?614| Старый совет | Почему он устарел |
615| :- | :- |
616| Контекстное окно — ваше главное ограничение, управляйте им агрессивно | У большинства современных моделей окно в 1M токенов, а сжатие происходит само, поэтому контекст заканчивается редко. `/clear` между задачами по-прежнему стоит делать, потому что сфокусированный контекст даёт лучшие ответы и стоит дешевле. |
617| Добавляйте IMPORTANT или ВЕРХНИЙ РЕГИСТР к инструкциям, которые Claude продолжает пропускать | Старым моделям иногда требовались акценты. Современные следуют просто сформулированной строке, а нагромождение акцентов в основном заставляет Claude применять правило чрезмерно. Если это правило, которое не может гнуться, превратите его в хук или правило deny. Если строка теряется в длинном файле, файл нужно сократить. |
618| Используйте субагентов, чтобы защитить контекстное окно | Нехватка контекста теперь редко бывает проблемой. Субагенты по-прежнему отлично подходят для параллельной работы, выноса шумного вывода и независимого ревью, но каждое из этого стоит дополнительных токенов. |
619| Делегируйте субагенту, чтобы получить лучший ответ | Передача той же задачи субагенту не делает ответ лучше. Свежий рецензент действительно помогает, потому что не видел ваших рассуждений, но это не то же самое, что делегирование. |
620| `think hard`, `think harder`, `be thorough` в промпте | Для этого есть effort. Эти фразы — обычный текст промпта, который слегка подталкивает Claude в пределах его настройки effort, а не ключевые слова, которые её повышают. `ultrathink` по-прежнему работает: он запрашивает более глубокие рассуждения на этом одном ходе, не меняя вашу настройку effort. |
621| Говорите Claude продолжать, повторять до готовности, не лениться | Современные модели обычно доводят согласованную задачу до конца без напоминаний, а такие строки скорее вызовут лишнюю работу, чем устранят остановку. Дать Claude проверку, которую нужно пройти, — это другое, и это по-прежнему стоит делать. Если запуск всё же останавливается раньше времени, скажите `continue`, а для запусков без присмотра это обеспечат `/goal` или хук `Stop`. |
622| Описывайте архитектуру и структуру файлов в `CLAUDE.md` | Claude сам читает репозиторий. Записывайте только то, чего там нет. |
564 623
565Со временем вы разовьёте интуицию, которую никакое руководство не может захватить. Вы будете знать, когда быть конкретным и когда быть открытым, когда планировать и когда исследовать, когда очищать контекст и когда позволить ему накапливаться.624Если какой-либо другой совет на этой странице когда-нибудь начнёт казаться пустой тратой сил, это, вероятно, признак того, что ему тоже место в этой таблице.
566 625
567## Связанные ресурсы626## Связанные ресурсы
568 627
569* [How Claude Code works](https://code.claude.com/docs/ru/how-claude-code-works.md): агентивный цикл, инструменты и управление контекстом628* [Как работает Claude Code](https://code.claude.com/docs/ru/how-claude-code-works.md): цикл, инструменты и то, что загружается при запуске
570* [Extend Claude Code](https://code.claude.com/docs/ru/features-overview.md): skills, hooks, MCP, subagents и plugins629* [Изучите контекстное окно](https://code.claude.com/docs/ru/context-window.md): что занимает место в сессии и когда оно загружается
571* [Common workflows](https://code.claude.com/docs/ru/common-workflows.md): пошаговые рецепты для отладки, тестирования, PRs и многого другого630* [Расширьте Claude Code](https://code.claude.com/docs/ru/features-overview.md): выбор между скиллами, хуками, MCP, субагентами и плагинами
572* [CLAUDE.md](https://code.claude.com/docs/ru/memory.md): сохранять соглашения проекта и постоянный контекст631* [Выберите режим разрешений](https://code.claude.com/docs/ru/permission-modes.md) и [Настройте разрешения](https://code.claude.com/docs/ru/permissions.md)
632* [Эффективно управляйте расходами](https://code.claude.com/docs/ru/costs.md)
633* [Запускайте Claude Code программно](https://code.claude.com/docs/ru/headless.md) и [Автоматизируйте работу с облачными запланированными задачами](https://code.claude.com/docs/ru/routines.md)
634* Для руководителей команд и администраторов: [Настройка Claude Code для вашей организации](https://code.claude.com/docs/ru/admin-setup.md)