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 |
Выигрывает более специфичный уровень. Проектный 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. Не складывать содержимое в индекс.