$HOME в git: единый конфиг для Claude Code

Как перестать копировать настройки между проектами и превратить домашнюю директорию в единую точку управления AI.

$HOME в git: единый конфиг для Claude Code

Проблема

Много проектов. В каждом свой CLAUDE.md, свои правила. Начинаешь что-то улучшать в одном месте - хочется перенести в другое. Переносишь. Потом улучшаешь там. Переносишь обратно.

В какой-то момент образовалась каша из разных версий одних и тех же правил, разбросанных по десятку проектов.

Копипаста настроек бесила, но руки не доходили. На новогодних праздниках решил разобраться.

Решение

Всё перенёс в домашнюю директорию `~/.claude/`. Один конфиг на все проекты.

Да, теперь есть привязка к структуре папок в домашней директории. Но эта структура не менялась годами:

- `~/my/` для проектов - `~/education/` для обучения - `~/family/` для семейного

Риск минимальный.

Структура

Что живёт в `~/.claude/`:

Основные файлы

- `CLAUDE.md` - общие принципы (подтверждение задач, форматирование) - `HOME_MAP.md` - карта домашней директории для навигации

Директории

- `rules/` - правила (загружаются автоматически) - `rules/projects/` - проектно-специфичные правила - `commands/` - слэш-команды - `skills/` - переиспользуемые навыки - `agents/` - кастомные агенты - `hooks/` - хуки сессий

Как работает навигация

Ключевой файл - `HOME_MAP.md`. Это карта всей домашней директории с правилами определения контекста.

Claude видит ключевые слова в запросе и понимает, в какой директории работать:

- `aitrader`, `archlint`, `блог` -> `~/my/` - `курс`, `книга`, `обучение` -> `~/education/` - `память`, `запомни`, `миссия` -> `~/my/org-roam/`

Если контекст неоднозначный - спрашивает.

Проектные правила

Если нужны специфичные правила для проекта - добавляются в `rules/projects/`.

Например, `aitrader.md` содержит:

- Как запускать collector (без proxy для Tinkoff API) - Команды тестирования - Особенности проекта

Эти правила загружаются глобально, но применяются только когда работа идёт в контексте aitrader.

Git

Всё под git. Один репозиторий, одна история изменений.

`.gitignore` получился большой - там практически всё что не нужно версионировать: креды, кеши, Downloads, Documents, Library, .ssh.

Зато всё остальное - конфиги, `.claude/`, dotfiles - под контролем.

В планах добавить приватные репозитории как сабмодули, чтобы одним `git clone` восстанавливать всю домашнюю директорию.

Больше никакого копирования между проектами. Улучшил правило - оно сразу работает везде.

Итог

Было: десяток проектов с разрозненными CLAUDE.md, постоянное копирование настроек, разные версии одного и того же.

Стало: один `~/.claude/`, структурированные правила, git для версионирования. Улучшение в одном месте - работает везде.

Минус: жёсткая привязка к структуре домашней директории. Для меня не проблема - структура стабильна.

Telegram: https://t.me/MikeShogin

Начать дискуссию