Архитектура проекта

Каждый новый чат в Claude Code начинается с чистого листа. Он не помнит, что за проект, какой стек, какие правила ты установил в прошлый раз. Первые два дня это терпимо — пишешь «вот мой проект, вот что нужно», и поехали. Потом превращается в потерю времени: объяснять одно и то же снова и снова.

Решение — несколько файлов в папке проекта, которые Claude читает автоматически при каждом запуске. Один раз настроил — и каждый новый чат уже в контексте. Это и есть архитектура проекта.

Но перед файлами — алгоритм. Большинство людей хотят сразу делать: писать код, создавать страницы. Это тупик. Без продуманной основы через три дня начинаются переделки, хаос и «всё снова не то». Поэтому сначала шесть шагов.

Алгоритм старта

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

1. Идея

Сформулируй одним предложением: что, для кого и зачем. «Я создаю ЧТО для КОГО чтобы решить КАКУЮ проблему». Без этого Claude будет угадывать.

Не нужно готового текста — расскажи как другу, без структуры. Голосом или текстом, как удобно. Claude сам оформит.

2. Исследование

Попроси Claude найти 5–10 аналогов в твоей нише. Смотришь что работает, что нет — это основа для твоего решения.

▸ Промпт для исследования
Найди 5-7 похожих проектов или сервисов в нише [твоя ниша].
Для каждого: что делает, для кого, основные функции, что можно взять за основу.
Сохрани результат в файл research.md

3. Критика

Попроси оценить идею честно: что может не сработать, чего не хватает, типичные ошибки в таких проектах. Claude не будет подхалимничать, если прямо попросить.

▸ Промпт для критики
Оцени эту идею честно. Что может не сработать?
Какие типичные ошибки в таких проектах?
Что я мог упустить?
Не подхалимничай — мне нужен честный взгляд со стороны.

4. Бриф

Сводишь идею + результаты исследования + критику в один файл — техническое задание. Это документ из которого потом будет рождаться код.

▸ Промпт для brief.md
На основе research.md и моей идеи — составь brief.md, техзадание проекта.
Включи: что это (2-3 предложения), для кого, какую проблему решает,
основные функции (MVP), функции на будущее, технологии,
чего НЕ будет на старте, первые шаги.

Учти рекомендации из критики — что улучшить, чего избегать.
Посмотри критически: что я мог упустить?

5. План

Разбей на 3–5 этапов. Каждый этап — одна задача для Claude. Большая задача за один промпт = хаос.

▸ Промпт для плана
Разбей проект на 4-6 этапов от первого файла до готового результата.
Каждый этап — конкретный шаг с понятным результатом.
Сохрани в PLAN.md в формате [ ] пункт

6. Реализация

Одна задача — один промпт. Не пишешь всё сразу, идёшь по плану шаг за шагом. Сделал пункт — отметил галочку, взял следующий.

Как сформулировать идею

Самая частая проблема на старте — не знаешь как это всё описать. Кажется, что нужно сразу написать чёткий документ. Не нужно. Просто расскажи идею как другу — Claude сам структурирует.

Вот реальный поток разговора:

▸ Шаг 1 — рассказываешь идею
Хочу сделать телеграм-бота для своей кофейни. Чтобы люди могли смотреть меню и делать предзаказ. Ну типа выбираешь напиток, говоришь когда заберёшь, приходишь — уже готово. Ещё хочу чтобы была программа лояльности, каждый 5-й кофе бесплатно.
▸ Шаг 2 — просишь структурировать
Помоги превратить это в документацию проекта. Сделай структуру: что это, для кого, основные функции.
▸ Шаг 3 — просишь найти что упустил
Какие функции обычно есть в ботах для кофеен? Что я мог упустить?
▸ Шаг 4 — сохраняешь в файл
Создай файл docs/project.md с этой документацией

Не принимай всё что Claude предлагает — это только идеи. Ты выбираешь что подходит, что нет. Цель на этом этапе — зафиксировать основу, а не сделать всё идеально.

Ещё пример

Ты: «Хочу сделать сайт-портфолио для себя как фрилансера. Я делаю дизайн и иллюстрации. Нужно показать работы и чтобы люди могли связаться.» → Клод предлагает структуру → Ты: «Добавь раздел с ценами. И убери блог — не буду вести.» → Клод обновляет → Ты: «Какие разделы обычно есть на портфолио дизайнеров? Что я мог забыть?» → Клод предлагает: отзывы, процесс работы, FAQ → Ты: «Отзывы хорошая идея. Добавь. Остальное не надо.» → Готово.

Четыре файла проекта

На выходе из этих пяти шагов у тебя должны появиться четыре файла. Они создаются один раз и работают на весь проект.

Файл Что внутри Когда создаётся
research.md Результаты исследования: конкуренты, тренды, что работает в нише После шага «Исследование»
brief.md Техзадание: цель, аудитория, структура, стиль. Собирается из research.md После шага «Критика»
CLAUDE.md Правила для Claude. Читает автоматически при каждом запуске В начале проекта, дополняется по ходу
PLAN.md Чеклист задач. Обновляется по ходу работы После шага «План»
Принцип

Называй файлы одинаково в каждом проекте. research.md — всегда исследование, brief.md — всегда техзадание. Единая структура — порядок в голове.

Можно создать все четыре файла одной командой:

▸ Создать все файлы сразу
Посмотри все файлы в проекте. Создай четыре файла:
- research.md — исследование ниши (конкуренты, что работает, тренды)
- brief.md — техзадание на основе исследования (цель, аудитория, структура, стиль)
- CLAUDE.md — правила работы с этим проектом
- PLAN.md — план-чеклист задач в формате [ ] пункт

Если у тебя есть вопросы — задавай.

А вот шаблон для brief.md — он же подходит для docs/project.md:

▸ Шаблон brief.md / project.md
# Название проекта

## Что это
Краткое описание в 1-2 предложения.

## Для кого
Кто будет пользоваться? Целевая аудитория.

## Проблема
Какую проблему решает? Зачем это нужно?

## Основные функции
- Функция 1
- Функция 2
- Функция 3

## Страницы / экраны
Что увидит пользователь? Перечень страниц или экранов.

## Чего НЕ будет (пока)
Что сознательно не делаем. Важно для фокуса.

## Технические заметки
Если есть специфика: платформа, ограничения, интеграции.

Цикл улучшения документации

Бриф редко получается идеальным с первого раза. И это нормально — не нужно сидеть час и доводить до совершенства. Лучше запустить цикл улучшения: четыре прохода, каждый занимает минуту, на выходе документ который не стыдно показать.

1. Перечитай как первый раз

Открой brief.md и читай так, как будто видишь его впервые. Где спотыкаешься, что непонятно, чего не хватает — выписывай.

2. Спроси «ты уверен?»

Claude часто говорит уверенно вещи которые неточны — особенно про технологии, цены, конкретные сервисы. Простой приём проверки:

▸ Промпт «ты уверен?»
Посмотри ещё раз на brief.md. Особенно на технические детали
и конкретные цифры — ты уверен что это так? Есть ли альтернативы?
Что может оказаться неточным или устаревшим?

3. Критический взгляд эксперта

Попроси Claude примерить роль и посмотреть со стороны:

▸ Промпт критического взгляда
Представь что ты опытный продакт-менеджер с 10-летним опытом.
Какие вопросы у тебя возникнут к этому brief.md?
Что слабо проработано, что можно усилить, что вообще не учтено?

4. Пересмотр

На основе замечаний из шагов 1-3 — обнови документ. Добавь конкретику где была размытость, исправь неточности, закрой дыры.

Когда остановиться

Двух-трёх проходов обычно хватает. Признаки что пора закругляться: новые правки становятся косметическими, нет явных дыр в логике, документ можно показать постороннему и он поймёт без вопросов.

CLAUDE.md — подробно

Из четырёх файлов CLAUDE.md — самый важный. Это инструкция на холодильнике для нового сотрудника: «У нас принято так-то. Вот чего нельзя. Вот на что обращать внимание». Любой новый чат — и Claude сразу в контексте.

Ключевое отличие от остальных файлов: Claude читает его автоматически. Не нужно каждый раз говорить «напоминаю, у нас такие-то правила». Просто написал — и оно работает всегда.

Как создать

Три способа — от быстрого к ручному.

Способ первый — одна команда в чате:

▸ В чате Claude Code
/init

Claude пройдётся по всем файлам в папке, поймёт что за проект и создаст CLAUDE.md с базовой структурой. Потом дополняешь под себя.

Способ второй — попросить с конкретикой:

▸ Создать CLAUDE.md с нуля
Создай CLAUDE.md для этого проекта. Опиши что это за проект, структуру папок, как запускать, и добавь секцию для ошибок.

Способ третий — создай файл вручную. Файл называется ровно CLAUDE.md и лежит в корне проекта.

Если файл уже есть, но слабый — не переписывай с нуля, попроси разобрать и улучшить:

▸ Улучшить существующий CLAUDE.md
Посмотри CLAUDE.md и сделай его глубокий разбор. Давай обсудим какие детали могут мешать работе, а какие ещё необходимо добавить.

Лайфхак: клавиша # прямо в чате — быстро добавить правило без открытия файла. Написал # не трогай файл config.json → Claude добавил в CLAUDE.md.

Что писать

Хороший CLAUDE.md отвечает на четыре вопроса: что за проект, для кого, какой стек, какие правила работы. Вот рабочий шаблон:

▸ CLAUDE.md — шаблон
# Название проекта

## Что это
Одно-два предложения: суть проекта и для кого.

## Аудитория
Кто будет пользоваться. Уровень подготовки. Язык общения с ними.

## Стек
- Язык / фреймворк
- Хостинг
- Особые ограничения (без внешних библиотек, только ES6 и т.д.)

## Стиль
- Цвета, шрифты, акценты
- Тон текста (разговорный / официальный)

## Правила работы
- Перед созданием нового файла — скажи что планируешь
- Не удаляй файлы без явного подтверждения
- Перед фиксом бага ищи корневую причину, не заплатку
- Если задача неочевидная — задавай уточняющие вопросы

## НЕ ДЕЛАТЬ
- Не выдумывай детали которых я не давал
- Не строй предположения — спрашивай
- Не рефакторь код который я не просил трогать
Размер

Идеально — 60–100 строк. До 300 — нормально. Больше 300 — уже тяжеловато. Файл читается при каждом запуске: чем длиннее, тем меньше места для реальной работы в контексте.

Есть приём который делает правила жёстче. Claude лучше воспринимает инструкции с ключевыми словами-маркерами, особенно на английском:

Слово Значение
NEVER Строгий запрет — никогда и ни при каких условиях
ALWAYS Обязательное действие — всегда, без исключений
MUST Требование — должен выполнить
IMPORTANT Важное замечание — обратить особое внимание

Правила пиши на английском, пояснения можно на русском. Вот пример рабочего CLAUDE.md с маркерами:

▸ Реальный пример CLAUDE.md
# Project Rules

## 1. NEVER restore previous versions without confirmation
ALWAYS ask before restoring any backup or previous version

## 2. Security — NEVER commit credentials
- config.json contains API key — NEVER commit
- .env files — NEVER commit
- ALWAYS check git status before commits

## 3. Git workflow
- Main branch: main
- ALWAYS create descriptive commit messages

## 4. Before deleting
ALWAYS ask before deleting any file

## 5. Project structure
- src/ — main code
- docs/ — documentation
- See: docs/architecture.md for details

Что НЕ класть в CLAUDE.md

Так же важно знать чего туда не нужно. CLAUDE.md — это инструкция, а не архив. Вот что там лишнее:

Что Куда вместо этого
Вся документация проекта brief.md или docs/
История изменений git-история или отдельный changelog
Списки задач PLAN.md
API-ключи и пароли .env (и в .gitignore)
Тонны непонятных строк без структуры Разбей на отдельные файлы через @

Правила в CLAUDE.md должны быть конкретными. «Будь внимательнее» и «не ошибайся» — не работают. «NEVER commit .env files» — работает.

Файл растёт из опыта

CLAUDE.md — живой документ. Он не пишется один раз и забывается. Лучшие правила появляются из реальных факапов.

Claude случайно закоммитил что-то лишнее — добавил правило. Удалил файл без предупреждения — добавил правило. Начал переписывать код который не просили — добавил правило. Так постепенно файл превращается в точную инструкцию именно под твои задачи.

Когда увидел что проблема повторяется, напиши в чате прямо:

▸ Зафиксировать ошибку
Добавь в CLAUDE.md правило: NEVER делай X без подтверждения
▸ Или через # прямо в чате
# никогда не удаляй файлы без подтверждения

Раз в неделю — чистка. Правила устаревают: проект меняется, некоторые ограничения уже не нужны. Попроси Claude навести порядок:

▸ Почистить CLAUDE.md
Посмотри CLAUDE.md — объедини похожие правила и убери устаревшие.

@ ссылки на файлы

Когда правил становится много — не нужно всё держать в одном файле. В CLAUDE.md можно ссылаться на другие файлы через символ @:

▸ Ссылка на внешний файл
Стиль кода описан в @docs/code-style.md
Правила git-коммитов — @docs/git-workflow.md

Символ @ говорит Claude: прочитай этот файл. Вместо 20 правил в основном файле — одна строка. Основной CLAUDE.md остаётся коротким, детали — в отдельных файлах.

Четыре правила, которые реально работают

Из практики — четыре инструкции, которые меняют качество работы сильнее всего. Добавь в свой CLAUDE.md:

▸ Добавить в CLAUDE.md
## Правила поведения

1. Оспаривай мои решения. Если мой подход неоптимальный — скажи прямо.
   Не соглашайся просто потому что я так сказал.

2. После значимого действия структурируй ответ:
   - Что сделано
   - Что нужно от меня (если нужно)
   - Следующий шаг

   Значимое действие = создал/изменил файлы, сделал коммит, фикс бага,
   рефакторинг, реализация фичи. На простые вопросы и обсуждения —
   обычный ответ, без структуры.

3. Если по ходу работы заметил что-то что стоит улучшить (но я не просил) —
   скажи отдельной строкой в конце. Только если есть что-то конкретное.

4. Всё что можешь сделать сам — делай сам.
   Твоя задача — освободить моё время.

Первое правило даёт партнёра, а не исполнителя — Claude перестанет соглашаться со всем подряд. Второе убирает хаос из ответов после крупных задач (на каждый «как дела» структуру не лепит — это съедало бы токены зря). Третье постепенно улучшает проект без отдельных задач «проверь всё». Четвёртое снимает необходимость микроменеджмента.

Лайфхак про токены

Если убрать триггер «после значимого действия» из второго правила — Claude будет лепить «что сделано / следующий шаг» к каждому ответу, даже на короткие вопросы. На активном проекте это сжирает 1500-8000 токенов в день впустую. С триггером структура появляется только там где она реально нужна.

Глобальный CLAUDE.md

Помимо проектного CLAUDE.md есть глобальный — он лежит в ~/.claude/CLAUDE.md и применяется ко всем твоим проектам автоматически.

Скрытая папка

Папка .claude скрытая — в обычном проводнике её не видно. Чтобы найти её:

Mac: Открой Finder, перейди в домашнюю папку, нажми Cmd + Shift + . — скрытые папки появятся.

Windows: Открой Проводник → Вид → Показать → Скрытые элементы.

Или проще: попроси Claude открыть и отредактировать файл напрямую — Открой ~/.claude/CLAUDE.md и добавь правило...

Туда стоит вынести то, что не меняется от проекта к проекту: язык общения, тон ответов, общие запреты, личные предпочтения, правила поведения. Вот реальный пример моего глобального CLAUDE.md — можешь взять как образец, адаптируй под себя:

▸ ~/.claude/CLAUDE.md — реальный пример
# Global Instructions

## Язык и тон
- Всегда на русском
- На «ты», по-дружески, как с коллегой — без официоза
- Кратко и по делу, без воды и лишних «как видишь, я успешно сделал...»
- Без эмодзи в тексте (если только сам не попросил)

## Стиль работы
- Перед тем как создавать или удалять файлы — скажи коротко,
  что собираешься делать, потом делай
- Не дублируй существующую функциональность — сначала проверь,
  нет ли уже такого скилла/файла/решения
- При работе с библиотеками/API/фреймворками — проверяй актуальную
  доку через context7 MCP, не полагайся на свои знания (устаревают)
- Перед фиксом бага — найди корневую причину, не лепи заплатку на симптом
- После фикса нетривиального бага — предложи записать урок в
  knowledge-base/outputs/YYYY-MM-DD-bug-тема.md
- Если задача неочевидная — задавай уточняющие вопросы, не угадывай

## Правила поведения

1. Оспаривай мои решения. Если мой подход неоптимальный — скажи прямо.
   Не соглашайся просто потому что я так сказал.

2. После значимого действия структурируй ответ:
   - Что сделано
   - Что нужно от меня (если нужно)
   - Следующий шаг

   Значимое действие = создал/изменил файлы, коммит, фикс, фича.
   На простые вопросы и обсуждения — обычный ответ, без структуры.

3. Если по ходу работы заметил что-то что стоит улучшить (но я не просил) —
   скажи отдельной строкой в конце. Только если есть что-то конкретное.

4. Всё что можешь сделать сам — делай сам.
   Твоя задача — освободить моё время.

## Контекст обо мне
- Я предприниматель, не разработчик — технические штуки
  объясняй на пальцах, без жаргона по умолчанию
- macOS, zsh, VS Code + Claude Code

Проектный CLAUDE.md дополняет глобальный — не заменяет. Правила суммируются. То что специфично для конкретного проекта (стек, аудитория, особый стиль текста) — в проектный. То что одинаково везде (язык, тон, поведенческие правила) — в глобальный.

Когда правил много

Если CLAUDE.md разрастается — выноси отдельные блоки в папку .claude/rules/:

▸ Структура
.claude/
  rules/
    code-style.md      ← правила форматирования кода
    git-workflow.md    ← как коммитить, как пушить
    dont-do.md         ← список запретов

Основной CLAUDE.md остаётся коротким. .claude/rules/ — это встроенный механизм Claude Code: он читает все .md файлы из этой папки при каждом запуске автоматически, так же как и сам CLAUDE.md. Связывать или ссылаться не нужно — просто создал файл в папке, и он работает.

CLAUDE.md vs MEMORY.md

В Claude Code есть два разных механизма памяти — и важно не путать их. CLAUDE.md пишешь ты: правила, инструкции, ограничения. MEMORY.md пишет Claude сам: технические заметки о проекте — какие ошибки встретились и как решили, какие команды используются, особенности архитектуры. Это как рабочие заметки инженера, которые он ведёт сам.

Главное правило: не смешивай. Твои правила — в CLAUDE.md. Технические наблюдения агента — в MEMORY.md. Если Claude начнёт перезаписывать твои правила своими заметками — будет бардак.

CLAUDE.md MEMORY.md
Кто пишет Ты Claude автоматически
Где лежит В корне проекта, видно в git ~/.claude/projects/<проект>/memory/ — локально, не в git
Что внутри Твои правила и инструкции Технические заметки: ошибки, команды, архитектура
Надёжность 100% — всегда загружается Пишет сам, может записать неточно
Лимит 60–100 строк идеально Первые 200 строк (или 25KB) — остальное не грузится в контекст
Структура Один файл Индекс + отдельные файлы по темам (debugging.md, patterns.md…)

На CLAUDE.md можно положиться всегда — ты его контролируешь. MEMORY.md помогает, но требует присмотра: через несколько месяцев там накапливается устаревшая информация, которая начинает мешать.

AutoMemory

AutoMemory — встроенный механизм: Claude сам ведёт заметки о проекте параллельно с работой. Не нужно ничего настраивать — просто работает. Пишет не каждую сессию, а когда замечает повторяющийся паттерн или ты его поправляешь несколько раз.

Что именно туда попадает: какие ошибки встретились и как их решили, какие команды используются для сборки, особенности архитектуры проекта. Первые 200 строк MEMORY.md загружаются в каждую новую сессию автоматически — Claude видит свои прошлые заметки в начале разговора и опирается на них.

Посмотреть что сохранилось, включить или выключить:

▸ В чате Claude Code
/memory

Если хочешь зафиксировать что-то конкретное — лучше попросить явно, это надёжнее чем ждать пока он сам запишет:

▸ Запомнить правило явно
Запомни что мы всегда используем bun, а не npm в этом проекте
▸ Попросить Claude написать заметку о проекте
Запиши в память: в этом проекте используется чистый HTML без фреймворков,
стили в styles.css, деплой через Vercel по git push

Раз в месяц стоит заходить в /memory и чистить устаревшее. Без этого заметки превращаются в хлам — старые решения, которые уже не актуальны, начинают влиять на новые ответы.

Лимит 200 строк

При старте сессии Claude загружает только первые 200 строк MEMORY.md (или первые 25KB — что меньше). Файл остаётся целым, но всё что ниже этой отметки — в контекст не попадает. Без предупреждения. Поэтому регулярная чистка — не гигиена, а необходимость.

settings.json и settings.local.json

CLAUDE.md отвечает на вопрос "что Claude должен делать" — правила, стиль, инструкции. settings.json отвечает на вопрос "что Claude вообще может делать" — какие команды разрешены, к каким файлам есть доступ, какую модель использовать. Первое про поведение, второе про доступы и настройки.

На самом деле таких файлов три, и у каждого своё место:

Файл Где лежит Для кого В git?
~/.claude/settings.json Домашняя папка Глобально — все твои проекты Нет
.claude/settings.json Папка проекта Команда — общие правила проекта Да
.claude/settings.local.json Папка проекта Только ты — личные переопределения Нет — в .gitignore

Приоритет работает сверху вниз: личный local > проектный > глобальный. Важный нюанс — разрешения из разных файлов не заменяют, а дополняют друг друга. Что разрешено в глобальном — остаётся разрешённым в проекте. Что добавил в проектном — работает поверх.

Создавать эти файлы вручную не обязательно — можно просто попросить Claude: "создай мне settings.json с базовыми настройками безопасности" — и он сделает. Либо файл появляется сам: когда Claude предлагает выполнить команду и ты нажимаешь "Yes, don't ask again" — он автоматически записывает это разрешение в settings.local.json.

Что такое коммит и пуш — разбираем в статье GitHub →

Permissions — главная настройка

Самое важное что живёт в settings.json — это permissions, разрешения. Они определяют что Claude Code может делать без вопросов, что должен спрашивать, а что запрещено вообще.

Три типа правил: allow — разрешить без вопросов, deny — запретить всегда, ask — спрашивать каждый раз. При конфликте deny всегда побеждает — никакое другое правило его не перекроет.

▸ Структура permissions
{
  "permissions": {
    "allow": ["Bash(git status)", "Bash(npm run *)"],
    "deny":  ["Bash(curl *)", "Read(./.env)"],
    "ask":   ["Bash(git push *)"]
  }
}

Синтаксис правил: имя инструмента и в скобках — спецификатор. Звёздочка * работает как «подстановочный знак» — то есть «что угодно вместо звёздочки». Bash(npm run *) разрешает любую команду начинающуюся с npm run — например npm run build, npm run test, npm run dev. Пробел перед звёздочкой важен: Bash(ls *) разрешит ls -la (потому что есть пробел после ls), но не lsof (это другое слово, без пробела).

▸ Примеры правил
// Bash — команды терминала
"Bash(npm run build)"       — точная команда
"Bash(git * main)"          — любой git-команде с main
"Bash(* --version)"         — любая команда с флагом --version

// Файлы
"Read(~/.zshrc)"            — конкретный файл из домашней папки
"Read(./.env)"              — .env в текущем проекте
"Edit(/src/**/*.ts)"        — любой .ts файл внутри src/

// Веб
"WebFetch(domain:example.com)"   — все запросы к домену
Составные команды

Разрешение на Bash(safe-cmd *) не даёт разрешение на safe-cmd && другая-команда. Символы &&, ||, ;, | разбивают команду на части — каждая часть проверяется отдельно.

Готовый deny-список — скопируй себе

Вот рабочий набор запретов для глобального ~/.claude/settings.json. Закрывает три категории угроз: чтение секретных файлов, деструктивные команды и опасные сетевые операции. Это реальный конфиг, а не придуманный пример.

▸ ~/.claude/settings.json — deny-список
{
  "permissions": {
    "deny": [

      // Секретные файлы — не читать и не выводить в терминал
      "Read(.env)",
      "Read(.env.*)",
      "Read(*credentials*)",
      "Read(*secret*)",
      "Read(**/*.token*)",
      "Read(**/*key*.pem)",
      "Read(**/*key*.json)",
      "Bash(cat */.env*)",
      "Bash(cat *.pem)",
      "Bash(cat *credentials*)",
      "Bash(cat *secret*)",

      // Деструктивные команды — без права на ошибку
      "Bash(rm -rf *)",
      "Bash(rm -r *)",
      "Bash(git push --force*)",
      "Bash(git reset --hard*)",
      "Bash(git clean -f*)",
      "Bash(git checkout -- .)",
      "Bash(git branch -D *)",
      "Bash(chmod 777 *)",

      // Опасные сетевые операции
      "Bash(curl * | bash)",
      "Bash(curl * | sh)",
      "Bash(wget * | bash)",
      "Bash(eval *)",

      // Запрет экспортировать секреты в переменные окружения
      "Bash(export *TOKEN*)",
      "Bash(export *SECRET*)",
      "Bash(export *KEY*)",
      "Bash(export *PASSWORD*)"
    ]
  }
}

Что тут происходит по группам: первая закрывает случайное чтение файлов с паролями и ключами. Вторая блокирует команды которые нельзя отменить — удаление папок, жёсткий сброс гита, удаление веток. Третья запрещает скачивать и сразу запускать код из интернета — классический вектор атаки. Четвёртая не даёт Claude выставить твои токены как переменные окружения.

Что ещё можно настроить

Помимо разрешений в settings.json живут другие настройки. Вот практически полезные:

Параметр Что делает Значения
model Какую модель использовать по умолчанию "claude-sonnet-4-6"
editorMode Режим ввода в терминале "normal" или "vim"
autoMemoryEnabled Включить / выключить AutoMemory true / false
env Переменные окружения для всех сессий { "KEY": "value" }
additionalDirectories Открыть доступ к папкам вне проекта ["/path/to/folder"]

Реальный пример: settings.json для командного проекта — разрешить стандартные команды, заблокировать опасные, и настройки проверить через /status прямо в чате.

▸ .claude/settings.json — пример для проекта
{
  "permissions": {
    "allow": [
      "Bash(npm run lint)",
      "Bash(npm run test *)",
      "Bash(git status)",
      "Bash(git log *)",
      "Bash(git diff *)"
    ],
    "deny": [
      "Bash(curl *)",
      "Bash(wget *)",
      "Read(./.env)",
      "Read(./secrets/**)"
    ]
  }
}
▸ ~/.claude/settings.json — глобальный (все проекты)
{
  "autoMemoryEnabled": true,
  "permissions": {
    "deny": ["Bash(rm -rf *)"]
  }
}
Итого

Четыре файла проекта + CLAUDE.md с правилами — это фундамент, который превращает каждый новый чат в продолжение, а не начало с нуля. Потрать час на настройку один раз — сэкономишь часы объяснений потом.