Skip to content

Latest commit

 

History

3 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 

Repository files navigation

Dotfiles — Claude Code Config

Синхронизация настроек 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 штук)

Что НЕ синхронизируется (в .gitignore)

Файл Почему
settings.local.json API-ключ sk-..., DeepSeek URL, пути D:\
*.local.json Любые машино-зависимые настройки
.DS_Store, Thumbs.db Мусор ОС

Вариант A: Только Git

Подходит если у тебя 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

Вариант A-приватный: Закрытый репозиторий

Всё то же самое, но репозиторий приватный. Требуется аутентификация при clone/pull/push.

Способ 1: gh CLI (рекомендую)

# Один раз залогиниться
gh auth login
# Выбрать: GitHub.com → HTTPS → Login with a web browser

# Дальше git работает прозрачно
git clone https://github.com/Say10Code/dotfiles.git ~/dotfiles

Способ 2: Personal Access Token

  1. GitHub → Settings → Developer settings → Personal access tokens → Fine-grained tokens
  2. Создать токен с правом Contents: Read and write на репозиторий dotfiles
  3. Использовать:
git clone https://<токен>@github.com/Say10Code/dotfiles.git ~/dotfiles

# Чтобы не вводить каждый раз — закэшировать:
git config --global credential.helper wincred

Способ 3: SSH

# Один раз настроить ключ
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

Вариант B: Git + Облако (CLAUDE_CONFIG_DIR)

Расширенный режим. Папка .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-репозиторий остаётся как страховка и история изменений

Настройка

Шаг 1: Выбрать облачную папку

# Примеры:
# 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"

Шаг 2: Развернуть общие настройки в облачную папку

# Указать, что install.ps1 должен целиться в облако, а не в ~/.claude
$env:CLAUDE_INSTALL_TARGET = "$cloudPath"

# Запустить установку из репо
~/dotfiles/claude/install.ps1

Или вручную:

robocopy "$env:USERPROFILE\.claude" "$cloudPath\.claude" /E /NJH /NJS /NP /R:0

Шаг 3: Установить переменную окружения

Постоянно, через системный интерфейс (рекомендую):

  1. Win + Rsysdm.cpl → вкладка Дополнительно → Переменные среды
  2. Добавить пользовательскую переменную:
    • Имя: CLAUDE_CONFIG_DIR
    • Значение: D:\Cloud\ClaudeConfig (путь к папке, ВНУТРИ которой лежит .claude)

Или через PowerShell (тот же эффект):

[Environment]::SetEnvironmentVariable(
    "CLAUDE_CONFIG_DIR",
    "D:\Cloud\ClaudeConfig",
    "User"
)

Шаг 4: Перезапустить Claude Code

Закрой и открой терминал/Claude Code. После перезапуска он будет читать конфигурацию из D:\Cloud\ClaudeConfig\.claude\.

Шаг 5: Повторить на втором ПК

На ноутбуке:

  1. Установить ту же облачную папку (клиент синхронизации сам её создаст)
  2. Установить переменную CLAUDE_CONFIG_DIR (путь к папке может отличаться, например C:\Users\lapuser\Cloud\ClaudeConfig — это нормально)
  3. Перезапустить Claude Code

Настройки подтянутся автоматически — install.ps1 на втором ПК не нужен.


Вариант B+: Облачные проекты

Расширение варианта 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

Важные нюансы

  1. Исключить node_modules, .venv, __pycache__ из синхронизации — у каждого облачного клиента свои настройки:

    • Google Drive: нет встроенного exclude — используй .driveignore или не клади проекты в Google Drive
    • OneDrive: автоматически исключает node_modules и .git
    • Яндекс.Диск: можно настроить исключения в интерфейсе
  2. .git лучше не синхронизировать — объекты гита могут конфликтовать при одновременной синхронизации. OneDrive и Яндекс.Диск исключают по умолчанию.

  3. Не открывать проект одновременно на двух ПК — облако создаст конфликтующие копии файлов.


Полный workflow (вариант B = git + облако)

┌──────────────────────────────┬───────────────────────────────────────────────┐
│          Ситуация            │                   Действие                    │
├──────────────────────────────┼───────────────────────────────────────────────┤
│ Поменял настройки в 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+

Устранение неполадок

После pull мои настройки не применились

~/dotfiles/claude/install.ps1

sync-config.ps1 не видит изменений

Проверь, что изменилось в ~/.claude/ относительно ~/dotfiles/claude/:

~/dotfiles/claude/sync-config.ps1 -DryRun

Облачный клиент создал конфликтующие копии

Не открывай Claude Code на двух ПК одновременно. Если конфликт уже случился — удали дубликаты вручную и сделай install.ps1 заново.

Claude Code не видит новый CLAUDE_CONFIG_DIR

# Проверить, что переменная установлена
[Environment]::GetEnvironmentVariable("CLAUDE_CONFIG_DIR", "User")

# Если нет — установить и ПЕРЕЗАПУСТИТЬ терминал

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages