Personal Claude Code toolstack installer. Pulls each component from GitHub, runs its installer, merges ~/.claude/settings.json without clobbering anything.
No auto-update — just run it again when you want to pick up changes. All the component installers overwrite files in ~/.claude/ so reinstalling is safe.
jq, git, and python3 on PATH. install.sh checks for these up front and prints an install hint if any are missing.
- macOS:
brew install jq git python3 - Debian/Ubuntu (incl. WSL):
sudo apt install jq git python3
- macOS — full stack, including the scheduled
launchdjobs. - Linux / WSL — the companion toolstack (buddy, statusline, scratch-pad, memory system) installs and runs. The scheduled
launchdfleet is macOS-only:launchd/install.shdetects a non-macOS host and skips cleanly instead of erroring. The wrapper scripts inlaunchd/bin/are portable bash if you want to wire them into cron or systemd user timers yourself (note most are bound to~/Desktop/personalpaths, so they no-op off Kayla's machine). Seelaunchd/README.md.
git clone https://github.com/snackdriven/claude-setup.git
cd claude-setup
./install.sh # full stack
./install.sh companion # buddy + statusline only
./install.sh --list # see all profiles| Profile | Components |
|---|---|
companion |
better-buddy + claude-statusline |
qa |
companion + scratch-pad |
full |
qa + operator-core-mini |
- better-buddy — persistent companion that lives in the statusline. Tracks affection/hunger, reacts to git events, naps. Interact via
/buddyin Claude Code. - claude-statusline — multi-region statusline renderer. Shows active ticket + workflow step, context window usage, Spotify now playing, project/branch/dirty count, next meeting.
- scratch-pad — operator vault and config sync
- operator-core-mini — three-layer memory system (Backpack / Doctrine / Hoard)
- Clones each component repo at depth 1 into a temp dir
- Runs each component's installer in profile order
- Writes one merged
~/.claude/settings.jsonat the end
Deep-merges a JSON patch into ~/.claude/settings.json. Existing keys that aren't in the patch stay untouched.
python3 lib/merge-settings.py patch.json