Claude Code · конфигурация
Эталонная карта: что где лежит, зачем нужен каждый файл, в каком он формате и что коммитить в git, а что держать только локально. Шпаргалка для студентов.
🌱 Новичок? Открыть версию простыми словами →
Это делает харнесс автоматически и в фиксированном порядке — ещё до твоего первого сообщения. Сверху вниз = раньше → позже.
~/.claude/CLAUDE.mdТвои инструкции для всех проектов.CLAUDE.mdСобираются вверх по дереву от текущей папки до корня репозитория, затем сам проектный.CLAUDE.local.mdЕсли есть (лежит в .gitignore).@-импорты внутри CLAUDE.mdПодтягиваются рекурсивно (до 5 уровней) — так подключают rules/.MEMORY.md + recallИндекс фактов и релевантные воспоминания.name + description, НЕ тела.settings.json не «читается в окно» — он применяется как конфиг (hooks, permissions, env) по приоритету из раздела 6, а его текст в контекст не загружается.Здесь порядок не жёсткий: это уже решение модели-агента, а не харнесса. Разумная последовательность — от общего к частному:
CLAUDE.mdУже в контексте — правила и структура проекта. Отправная точка.README.mdНазначение, как запускать, обзор.package.json, requirements.txt, Cargo.toml, go.mod — стек и команды.tsconfig, vite/next.config, .env.example, CI.index / main / app — откуда стартует код.~/.claude/ ▶Применяется ко всем проектам на этой машине. На Windows путь: C:\Users\<user>\.claude\
~/.claude/ ├── settings.json # ГЛАВНЫЙ конфиг: hooks, permissions, env, model ├── settings.local.json # локальные оверрайды (НЕ в git) ├── CLAUDE.md # глобальные инструкции для ВСЕХ проектов ├── keybindings.json # кастомные горячие клавиши │ ├── agents/ # субагенты (.md + YAML-frontmatter) │ └── planner.md ├── skills/ # скиллы (папка = 1 скилл) │ └── <name>/SKILL.md · references/ · scripts/ ├── commands/ # slash-команды (/cmd → cmd.md) ├── rules/ # модульные правила, подключаются из CLAUDE.md ├── hooks/ # скрипты-хуки, вызываются из settings.json │ ├── plugins/ │ ├── config.json │ └── installed_plugins.json # машинно-специфичный — НЕ синкать! ├── mcp.json # MCP-серверы (или внутри settings.json) ├── plans/ # планы (.md) ├── projects/ # история сессий + авто-память по проектам │ └── <slug>/memory/MEMORY.md # индекс памяти + *.md (1 факт = 1 файл) ├── session-data/ # снапшоты save-session / resume-session ├── todos/ # сохранённые TodoWrite-списки └── statsig/ # телеметрия/флаги — НЕ трогать
<project>/.claude/ ▶Живёт внутри репозитория. Дополняет и перебивает глобальные настройки для конкретного проекта.
<project>/ ├── CLAUDE.md # инструкции проекта (в git, для всей команды) ├── CLAUDE.local.md # личные инструкции (НЕ в git) — устаревает │ └── .claude/ ├── settings.json # настройки проекта (в git): hooks, permissions ├── settings.local.json # личные оверрайды (в .gitignore) ├── agents/ # агенты только этого проекта ├── skills/ # скиллы только этого проекта ├── commands/ # slash-команды проекта ├── hooks/ # хук-скрипты проекта └── mcp.json # MCP-серверы проекта
.local в имени — личное и идёт в .gitignore. Всё без .local — общее и коммитится.| Файл | Зачем | Формат / что внутри | |
|---|---|---|---|
settings.json | Сердце харнесса. Единственное место для автоматизмов («каждый раз когда X») | JSON: hooks, permissions, env, model, statusLine | git |
settings.local.json | То же, но машинно-/личное | JSON, та же схема — оверрайдит settings.json | local |
CLAUDE.md | Инструкции на естественном языке: стиль, правила, структура. Всегда в контексте | Markdown. Держать коротким | git |
agents/*.md | Определение субагента: системный промпт + набор инструментов | YAML-frontmatter (name, description, tools, model) + тело | git |
skills/*/SKILL.md | Углублённая инструкция «как сделать X», грузится по требованию | frontmatter (name, description) + тело; тяжёлое → references/ | git |
commands/*.md | Slash-команда. Имя файла = имя команды | Markdown-промпт; $ARGUMENTS для подстановки | git |
hooks/* | Скрипты на события PreToolUse / PostToolUse / Stop / SessionStart | Исполняемый файл; JSON в stdin, exit 2 = блок | git |
mcp.json | Подключение внешних MCP-серверов (инструменты, ресурсы) | JSON: mcpServers → command/args/env или url | git |
keybindings.json | Переопределение горячих клавиш | JSON | git |
memory/MEMORY.md | Индекс долговременной памяти — 1 строка на факт | Markdown-список | local |
Как выглядит хороший тонкий CLAUDE.md — никакого кода, только осмысленные правила на естественном языке:
# Project Guidelines ## Стек Next.js 15 · TypeScript · Tailwind · Supabase. Запуск: pnpm dev · тесты: pnpm test · сборка: pnpm build. ## Правила - Отвечай по-русски; код и идентификаторы — англ. - Не коммить без явной просьбы; ветку от main — да. - Перед деструктивными командами (rm, mass replace) — подтверждение. - Объёмные правила вынесены в rules/ и подключены через @-импорт. # @import @.claude/rules/coding-style.md
CLAUDE.md всегда в контексте — держи его на пару экранов. Всё, что длиннее, → в rules/*.md и подключай через @-импорт (раздел 1, шаг 6).Выигрывает более специфичный уровень. Проектный local перебивает всё, глобальный settings.json — фундамент.
Аналогично работает CLAUDE.md: проектный дополняет глобальный, а прямая инструкция пользователя — выше любого файла.
Hook исполняет харнесс, а не Claude. Скрипт получает JSON в stdin и решает судьбу действия кодом выхода.
.gitignore ▶Команда видит одно и то же.
CLAUDE.md.claude/settings.json.claude/agents/.claude/skills/.claude/commands/.claude/hooks/.claude/mcp.jsonЛичное / машинно-специфичное.
*.local.json (любые)CLAUDE.local.mdinstalled_plugins.jsonsession-data/todos/ · statsig/.env, ключи, токены# Claude Code — личное и машинно-специфичное
*.local.json
CLAUDE.local.md
.claude/settings.local.json
**/installed_plugins.json
.env
.env.*
.local) → в git. Личное (*.local) → в .gitignore.hooks в settings.json, а не текст в CLAUDE.md и не память.rules/ и подключать ссылкой.MEMORY.md. Не складывать содержимое в индекс.Карта файлов выше — статика. Вот ввод, которым студент сразу с ней работает. /команда — слэш-команда (встроенная или своя из commands/), # и @ — спец-префиксы прямо в строке ввода.
| Ввод | Что делает |
|---|---|
/init | Просканировать проект и сгенерировать стартовый CLAUDE.md |
# текст | На лету дописать факт в память (memory/) — без выхода из чата |
@путь/файл | Вручную подтянуть конкретный файл или папку в контекст |
/memory | Открыть и отредактировать файлы памяти |
/agents | Создать / редактировать субагентов |
/mcp | Подключение и статус MCP-серверов |
/config | Настройки сессии: модель, тема, режим |
/clear | Очистить контекст — начать разговор с чистого листа |
/compact | Сжать текущий контекст, сохранив суть (когда окно забилось) |
/resume | Вернуться к одной из прошлых сессий |
commands/deploy.md → вызов /deploy. Внутри — обычный markdown-промпт, $ARGUMENTS подставляет переданный текст. Так из частого ручного промпта делают команду в одно слово.«5 принципов» говорят, как надо. Вот как это чаще всего ломают:
settings.json / CLAUDE.md. Эти файлы в git → токен уезжает в репозиторий. Ключи и пароли — только в .env / *.local, которые в .gitignore.CLAUDE.md. Текст-инструкция исполняется ненадёжно. Повторяемый автоматизм по событию = hooks в settings.json (раздел 7), а не строка в правилах.CLAUDE.md. Он всегда в контексте → каждый лишний килобайт съедает окно. Объёмное → в rules/*.md + @-импорт.settings.local.json / installed_plugins.json. Личное и машинно-специфичное затирает чужие настройки у команды. Всё с .local + installed_plugins.json → в .gitignore.