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

Как перестать копировать настройки Claude Code между проектами

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

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

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

Решение

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

Да, я привязался к структуре папок в домашней директории. Но эта структура у меня не менялась годами - ~/my/ для проектов, ~/education/ для обучения, ~/family/ для семейного. Риск минимальный.

Структура

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
~/.claude/
  CLAUDE.md           # Общие принципы (подтверждение задач, форматирование)
  HOME_MAP.md         # Карта домашней директории для навигации

  rules/              # Правила (загружаются автоматически)
    architecture.md   # Принципы архитектуры
    coaching-layer.md # Коучинговые вопросы
    text-dna.md       # Стиль текстов
    home-navigation.md # Как определять контекст по ключевым словам
    projects/         # Проектно-специфичные правила
      aitrader.md     # Правила для aitrader

  commands/           # Слэш-команды
    ms-todos.md       # /ms-todos - список задач
    ms-add-note.md    # /ms-add-note - добавить заметку
    ...

  skills/             # Навыки
    blog-writing/     # Написание постов
    go-review/        # Ревью Go кода
    social-content/   # Контент для соцсетей

  agents/             # Кастомные агенты
    go-reviewer.md    # Ревьюер Go кода

  hooks/              # Хуки
    session-logger.py # Логирование сессий

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

Ключевой файл - 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 для версионирования. Улучшение в одном месте - работает везде.

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

Создано при помощи Hugo
Тема Stack, дизайн Jimmy