Skip to content

DawnEver/claude-code-config

Repository files navigation

Claude Code & Codex Cross-Platform Config Sync

Syncs Claude Code and Codex configuration across devices via OneDrive.

Prerequisites

Setup

node scripts/setup/setup.js          # create symlinks
node scripts/setup/setup.js --replace  # overwrite existing files

Creates symlinks from ~/.claude/ and ~/.codex/ to this repo. Re-run to verify — won't overwrite.

If claude_settings.json or claude_env_settings.json are missing, setup copies the .template.json versions automatically. Fill in your API keys.

LSPs

npm install -g pyright typescript-language-server typescript
rustup component add rust-analyzer

Windows: setup.js patches marketplace.json to append .cmd to LSP binary names (required by uv_spawn#1432).

Provider Switching

Setup installs provider wrappers alongside the claude executable (CMD, PowerShell, Git Bash):

cc    # official Claude Pro subscription
ccds  # DeepSeek API (Foundry mode, direct to api.deepseek.com)

Add providers by editing claude_env_settings.json (see template) and adding an alias entry in scripts/setup/setup.js.

VS Code Extension

The VS Code extension spawns its own claude process. Configure it separately:

node scripts/setup/setup-vscode.js deepseek   # switch to DeepSeek
node scripts/setup/setup-vscode.js claude      # revert to official

Writes terminal.integrated.env.* and claudeCode.claudeProcessWrapper to local VS Code settings.json. Re-run on each machine. Exclude these keys from VS Code Settings Sync to avoid cross-platform conflicts.

Troubleshooting

Windows permissions: Enable Developer Mode or run as Administrator if symlink creation fails.

Hooks

All hook scripts live in scripts/hooks/ and are configured in claude_settings.json.

Event Script Purpose
Notification notify-hook.js Native OS notification
Stop sharp-review plugin Post-task sharp review (3 parallel reviewers)
StatusLine hud-hook.js Terminal HUD via claude-hud

The rem and sharp-review plugins (Stop hooks for memory consolidation and code review) are auto-registered via enabledPlugins — no manual wiring needed.

The REM hook gates on session depth (≥3 stops, ≥2 min). Runs /rem skill. State tracked in .claude/.rem-state.json.

Hook wiring in claude_settings.json:

"hooks": {
  "Notification": [{ "hooks": [{ "type": "command", "command": "node ~/.claude/scripts/hooks/notify-hook.js" }] }]
},
"statusLine": { "type": "command", "command": "node ~/.claude/scripts/hooks/hud-hook.js" }

Notifications

notify-hook.js sends native notifications:

Platform Method Sound Click to open
macOS Swift binary (NSUserNotificationCenter) Built-in notification sound Compiled by setup.js (swiftc required)
Windows PowerShell toast Toast audio (ms-winsoundevent:Notification.Default) Works out of the box
Linux notify-send + dbus-monitor paplay / aplay (freedesktop sound theme) Requires D-Bus

Sound is on by default. Pass --no-sound to silence it. By default, clicking the notification does not open VS Code. Pass --open to enable click-to-open:

"command": "node ~/.claude/scripts/hooks/notify-hook.js --open --no-sound"

Test:

claude --bare --model haiku "please read ~/.claude/models.md to test claude permission system [Expected waiting for user's input]"

Memory & Rules

Directory Purpose Loaded
.claude/rules/ MEMORY.md index + distilled rule files Every session
.claude/memory/ Append-only archive with date prefixes On demand via index

@.claude/rules/MEMORY.md is referenced from GLOBAL-AGENTS.md so Claude loads the index every session. When a topic matches, Claude reads the relevant memory file on demand.

After a session, add entries to .claude/memory/YYYY-MM-DD/<topic>.md and prepend a one-line pointer to MEMORY.md (keep ≤20 entries, newest-first). If the session changed project architecture or setup, update AGENTS.md too.

When MEMORY.md hits 20 entries, the REM hook triggers a compact: distill all memory into .claude/rules/ rule files, then clear the index. Memory files are never deleted.

Both directories are git-tracked (.gitignore uses .claude/* with !.claude/rules/ and !.claude/memory/ exceptions).

Remote Control

To enable remote control (requires Claude subscription), remove these env vars from claude_settings.json:

"DISABLE_TELEMETRY": "1",
"DO_NOT_TRACK": "1"

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages