111ad645ee346b2e665245215a7c696c528b3ba6
install.sh and sync.sh derived PROJECT_KEY from the POSIX $HOME, which Git Bash reports as /c/Users/x -> "-c-Users-timev". Claude Code on Windows sees the native path and encodes it as "C--Users-timev", so memory files were copied to a directory Claude never reads. Convert $HOME with cygpath when available. Uses sed rather than bash substitution because a lone backslash in a glob pattern escapes the next character instead of matching a literal backslash. macOS and Linux keep the existing $HOME-based derivation. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
claude-config
Private repo syncing Claude Code config across machines.
What's tracked
| File | Source | Destination |
|---|---|---|
CLAUDE.md |
~/.claude/CLAUDE.md |
Global Claude Code instructions |
settings.json |
~/.claude/settings.json |
Permissions, model, env vars |
memory/*.md |
~/.claude/projects/-Users-<username>/memory/ |
Persistent memory files |
Not tracked: settings.local.json — accumulates one-off permissions per session, machine-specific.
CLI dependencies: install.sh also installs the Codex CLI (npm install -g @openai/codex) when missing,
since the codex@openai-codex plugin shells out to it. Requires npm on the target machine.
Install on a new machine
git clone https://github.com/slaguru666/claude-config.git ~/Git/claude-config
cd ~/Git/claude-config
chmod +x install.sh sync.sh
./install.sh
Sync after changes
Pull the latest live state into the repo and push:
cd ~/Git/claude-config
./sync.sh # syncs, commits, pushes with default message
./sync.sh "my commit msg" # custom message
On another machine, pull and reinstall:
cd ~/Git/claude-config
git pull
./install.sh
Memory path
Memory files live under ~/.claude/projects/<project-key>/memory/, where <project-key> is
the home directory with / replaced by -. The scripts derive this from $HOME automatically,
so it resolves correctly on macOS (-Users-<username>) and Linux (-home-<username>).
Languages
Shell
100%