Синхронизация настроек Claude Code между ПК. Два режима: git-only и git + облако.
~/dotfiles/
├── .gitignore ← защита от коммита секретов
├── README.md ← этот файл
└── claude/
├── CLAUDE.md ← глобальные инструкции (graphify)
├── settings.json ← общие настройки (тема, язык, statusLine, плагины)
├── settings.local.template.json ← шаблон для нового ПК (API-ключи, пути)
├── install.ps1 ← развёртывание на новый ПК
├── sync-config.ps1 ← сбор изменений из ~/.claude/ обратно в репо
└── skills/ ← все кастомные скиллы
├── 3gpp-skill/
├── 5g-nr-mac-scheduling/
├── 5g-nr-rlc/
├── graphify/
└── javacard-stk/
| Файл/папка | Что внутри |
|---|---|
CLAUDE.md |
Глобальные инструкции — срабатывают во всех проектах |
settings.json |
Тема, язык, statusLine, плагины, effortLevel |
skills/ |
Кастомные скиллы (5 штук) |
| Файл | Почему |
|---|---|
settings.local.json |
API-ключ sk-..., DeepSeek URL, пути D:\ |
*.local.json |
Любые машино-зависимые настройки |
.DS_Store, Thumbs.db |
Мусор ОС |
Подходит если у тебя 2 ПК и ты готов вручную делать pull/push при смене устройства.
# 1. Клонировать репозиторий
git clone https://github.com/Say10Code/dotfiles.git ~/dotfiles
# 2. Развернуть настройки
~/dotfiles/claude/install.ps1
# 3. Создать machine-specific конфиг
notepad $env:USERPROFILE\.claude\settings.local.jsonСодержимое settings.local.json (заполни свои ключи):
{
"env": {
"ANTHROPIC_BASE_URL": "https://api.deepseek.com/anthropic",
"ANTHROPIC_API_KEY": "sk-ТВОЙ-КЛЮЧ"
},
"permissions": {
"allow": [
"WebSearch",
"WebFetch(domain:globalplatform.org)",
"WebFetch(domain:www.etsi.org)"
]
}
}Перед уходом с ПК:
# Собрать изменения из ~/.claude/ в репо
~/dotfiles/claude/sync-config.ps1
# Закоммитить и запушить
cd ~/dotfiles
git add -A
git commit -m "sync: config update"
git pushПридя на другой ПК:
cd ~/dotfiles
git pull
./claude/install.ps1Всё то же самое, но репозиторий приватный. Требуется аутентификация при clone/pull/push.
# Один раз залогиниться
gh auth login
# Выбрать: GitHub.com → HTTPS → Login with a web browser
# Дальше git работает прозрачно
git clone https://github.com/Say10Code/dotfiles.git ~/dotfiles- GitHub → Settings → Developer settings → Personal access tokens → Fine-grained tokens
- Создать токен с правом
Contents: Read and writeна репозиторийdotfiles - Использовать:
git clone https://<токен>@github.com/Say10Code/dotfiles.git ~/dotfiles
# Чтобы не вводить каждый раз — закэшировать:
git config --global credential.helper wincred# Один раз настроить ключ
ssh-keygen -t ed25519 -C "KlimenkoNS@gmail.com"
# Добавить ~/.ssh/id_ed25519.pub в GitHub → Settings → SSH keys
git clone git@github.com:Say10Code/dotfiles.git ~/dotfilesРасширенный режим. Папка .claude лежит в облаке (Google Drive, OneDrive, Яндекс.Диск) и автоматически синхронизируется между ПК. Репозиторий остаётся на GitHub как резервная копия и система версионирования.
┌─────────────────────────────────────────────────────────────┐
│ Облачная папка │
│ D:\Cloud\ClaudeConfig\.claude\ │
│ ├── CLAUDE.md ← из репо (install.ps1) │
│ ├── settings.json ← из репо (install.ps1) │
│ ├── skills/ ← из репо (install.ps1) │
│ ├── settings.local.json ← machine-specific (ОБЩИЙ для │
│ │ всех ПК — ключи одни и те же) │
│ ├── credentials/ ← токены (синхронизируются) │
│ └── memory/ ← персистентная память │
└─────────────────────────────────────────────────────────────┘
- Настройки подхватываются мгновенно при переходе между ПК — не нужно делать pull
settings.local.jsonтеперь один на оба ПК (API-ключи одинаковые)memory/иcredentials/тоже синхронизируются- Git-репозиторий остаётся как страховка и история изменений
# Примеры:
# Google Drive: "$env:USERPROFILE\Google Drive\ClaudeConfig"
# OneDrive: "$env:USERPROFILE\OneDrive\ClaudeConfig"
# Яндекс.Диск: "D:\YandexDisk\ClaudeConfig"
$cloudPath = "D:\Cloud\ClaudeConfig" # замени на свой путь
New-Item -ItemType Directory -Force "$cloudPath\.claude"# Указать, что install.ps1 должен целиться в облако, а не в ~/.claude
$env:CLAUDE_INSTALL_TARGET = "$cloudPath"
# Запустить установку из репо
~/dotfiles/claude/install.ps1Или вручную:
robocopy "$env:USERPROFILE\.claude" "$cloudPath\.claude" /E /NJH /NJS /NP /R:0Постоянно, через системный интерфейс (рекомендую):
Win + R→sysdm.cpl→ вкладка Дополнительно → Переменные среды- Добавить пользовательскую переменную:
- Имя:
CLAUDE_CONFIG_DIR - Значение:
D:\Cloud\ClaudeConfig(путь к папке, ВНУТРИ которой лежит.claude)
- Имя:
Или через PowerShell (тот же эффект):
[Environment]::SetEnvironmentVariable(
"CLAUDE_CONFIG_DIR",
"D:\Cloud\ClaudeConfig",
"User"
)Закрой и открой терминал/Claude Code. После перезапуска он будет читать конфигурацию из D:\Cloud\ClaudeConfig\.claude\.
На ноутбуке:
- Установить ту же облачную папку (клиент синхронизации сам её создаст)
- Установить переменную
CLAUDE_CONFIG_DIR(путь к папке может отличаться, напримерC:\Users\lapuser\Cloud\ClaudeConfig— это нормально) - Перезапустить Claude Code
Настройки подтянутся автоматически — install.ps1 на втором ПК не нужен.
Расширение варианта B — сами проекты тоже лежат в облачной папке.
D:\Cloud\
├── ClaudeConfig\.claude\ ← настройки (CLAUDE_CONFIG_DIR)
└── Projects\ ← рабочие проекты
├── Say10_v\
├── Applet\
└── ...
# Переместить проект в облако
Move-Item "C:\Users\test\Desktop\Say10_v" "D:\Cloud\Projects\Say10_v"
# Или клонировать заново
cd "D:\Cloud\Projects"
git clone <repo-url> Say10_v-
Исключить
node_modules,.venv,__pycache__из синхронизации — у каждого облачного клиента свои настройки:- Google Drive: нет встроенного exclude — используй
.driveignoreили не клади проекты в Google Drive - OneDrive: автоматически исключает
node_modulesи.git - Яндекс.Диск: можно настроить исключения в интерфейсе
- Google Drive: нет встроенного exclude — используй
-
.gitлучше не синхронизировать — объекты гита могут конфликтовать при одновременной синхронизации. OneDrive и Яндекс.Диск исключают по умолчанию. -
Не открывать проект одновременно на двух ПК — облако создаст конфликтующие копии файлов.
┌──────────────────────────────┬───────────────────────────────────────────────┐
│ Ситуация │ Действие │
├──────────────────────────────┼───────────────────────────────────────────────┤
│ Поменял настройки в Claude │ sync-config.ps1 → git push │
│ (плагины, статус-лайн, │ (настройки в облаке обновятся сами) │
│ скилл, CLAUDE.md) │ │
├──────────────────────────────┼───────────────────────────────────────────────┤
│ Пересел на другой ПК │ Ничего не делать. Облако уже синхронизировало │
│ │ .claude. Просто открыть Claude Code. │
├──────────────────────────────┼───────────────────────────────────────────────┤
│ Новый ПК (с нуля) │ 1. Установить облачный клиент │
│ │ 2. Настроить CLAUDE_CONFIG_DIR │
│ │ 3. git clone dotfiles (для install/sync) │
│ │ 4. Перезапустить Claude Code │
├──────────────────────────────┼───────────────────────────────────────────────┤
│ Хочу откатить настройки │ git log → git revert │
│ │ → install.ps1 (обновит облачную копию) │
├──────────────────────────────┼───────────────────────────────────────────────┤
│ Установил новый скилл │ Он в ~/.claude/skills/ → sync-config.ps1 │
│ │ → git push. На другом ПК облако подтянет само.│
└──────────────────────────────┴───────────────────────────────────────────────┘
| Критерий | A: Только Git | B: Git + Облако |
|---|---|---|
| Синхронизация настроек | Ручная (push/pull) | Автоматическая |
settings.local.json |
Разный на каждом ПК | Один на всех |
memory/ |
Не синхронизируется | Синхронизируется облаком |
| Нужен GitHub при смене ПК | Да (pull) | Нет |
| История изменений | Git | Git |
| Сложность настройки | ★☆☆ | ★★☆ |
| Риск конфликтов синхронизации | Нет | Есть (если открыть на 2 ПК) |
| Нужен облачный клиент | Нет | Да |
- 2 ПК, нечастая смена (день через день): вариант A
- Частая смена ПК, хочется бесшовности: вариант B
- Хочется и синхронизацию проектов тоже: вариант B+
~/dotfiles/claude/install.ps1Проверь, что изменилось в ~/.claude/ относительно ~/dotfiles/claude/:
~/dotfiles/claude/sync-config.ps1 -DryRunНе открывай Claude Code на двух ПК одновременно. Если конфликт уже случился — удали дубликаты вручную и сделай install.ps1 заново.
# Проверить, что переменная установлена
[Environment]::GetEnvironmentVariable("CLAUDE_CONFIG_DIR", "User")
# Если нет — установить и ПЕРЕЗАПУСТИТЬ терминал