My Claude Code stack
Everything I run inside the Claude Code CLI: plugins, skills, hooks and the tools Claude calls while it works. Every section has install commands and a prompt you can paste into Claude Code so it installs things for you.
Linux commands use apt (Ubuntu / Debian / Mint / Pop!_OS). On Fedora use dnf, on Arch use pacman; package names are mostly the same. If unsure, paste the one-shot prompt and Claude will figure out your distro.
Windows commands run in PowerShell (Windows 10/11). Apps come from winget, which is built in. Small command-line tools come from Scoop. Claude Code runs natively on Windows. Tools that are Unix-only (like tmux) need WSL.
This is the platform I actually run (Apple Silicon). Versions below are what's on my machine.
01Quick start
Do these in order. Tick each one off; the page remembers your progress in this browser.
Update packages & install the basics
Set up winget and Scoop
Install Homebrew
Refresh apt and get the build tools most other installs need.
winget ships with Windows 10/11 (update “App Installer” in the Microsoft Store if winget isn't found). Scoop handles the small Unix-style CLI tools. scoop.sh
The macOS package manager. Most of the tools below install through it. brew.sh
sudo apt update sudo apt install -y git curl wget build-essential unzip
# PowerShell (not as admin)
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
irm get.scoop.sh | iex/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
Terminal, browser, editor and CLI basics
iTerm2 is my terminal. It can show Claude Code's status (working, waiting for you, done) on each tab. iterm2.com
Any terminal works (GNOME Terminal, Konsole, Kitty, WezTerm). This adds the CLI tools Claude uses constantly, plus Chrome and VS Code.
Windows Terminal is the closest match to iTerm2. Git for Windows is required: Claude Code uses its Git Bash to run commands.
brew install --cask iterm2 google-chrome visual-studio-code brew install ripgrep jq tmux uv bash
sudo apt install -y ripgrep jq tmux curl -LsSf https://astral.sh/uv/install.sh | sh sudo snap install code --classic wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb sudo apt install -y ./google-chrome-stable_current_amd64.deb
winget install -e --id Microsoft.WindowsTerminal winget install -e --id Git.Git winget install -e --id Google.Chrome winget install -e --id Microsoft.VisualStudioCode scoop install ripgrep jq uv
Install Node with a version manager
nvm lets you switch Node versions per project. I keep Node 24 as the default and Node 12 for older projects. nvm on GitHub
nvm itself is Unix-only. nvm-windows is the Windows equivalent and uses almost the same commands. nvm-windows on GitHub
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.3/install.sh | bash
# open a new terminal tab, then:
nvm install 24 && nvm alias default 24winget install -e --id CoreyButler.NVMforWindows
# open a NEW PowerShell window, then:
nvm install 24
nvm use 24Install Claude Code and sign in
Use the native installer, then run claude and log in with your Claude account (a Pro or Max plan). Claude Code docs
curl -fsSL https://claude.ai/install.sh | bash claude
# PowerShell
irm https://claude.ai/install.ps1 | iex
claudeIf Claude Code can't find Git Bash, point it there: $env:CLAUDE_CODE_GIT_BASH_PATH="C:\Program Files\Git\bin\bash.exe"
Add the plugin marketplaces and plugins
Type these inside Claude Code, one at a time. They're the same on every OS. The plugins section explains what each one does.
/plugin marketplace add anthropics/claude-plugins-official /plugin marketplace add testdouble/han /plugin marketplace add rehan-remade/universal-modder /plugin install han@han /plugin install clangd-lsp@claude-plugins-official /plugin install swift-lsp@claude-plugins-official /plugin install universal-modder@universal-modder
Skip swift-lsp unless you install the Swift toolchain (see Toolchain).
Copy my settings
Merge the settings template into ~/.claude/settings.json%USERPROFILE%\.claude\settings.json, or paste the prompt below into Claude Code and let it do the merge.
Open my Claude Code user settings.json and merge in these settings without removing anything I already have: theme "dark", effort "high" for Opus and "xhigh" for Sonnet, and enabledPlugins + extraKnownMarketplaces for han (testdouble/han), universal-modder (rehan-remade/universal-modder) and clangd-lsp (claude-plugins-official). Show me the diff before saving.
02Core setup
The CLI, the models and the terminal integration.
Claude Code 2.1.296
Anthropic's agentic coding CLI. Runs on macOS, Linux and Windows. I run it from my home folder and point it at project folders as needed. I usually work in auto mode, where Claude acts without asking at every step.
Models Opus 5.5
- Opus 5.5: my default, effort
high - Sonnet 5: effort
xhighwhen I switch to it /modelswitches models;/fastturns on fast mode
Terminal status & notifications
Every Claude Code hook event runs iTerm2's cc-status helper, so each tab shows whether Claude is working or waiting for me.
On my Mac, hooks feed iTerm2 so each tab shows whether Claude is working or waiting. iTerm2 is Mac-only. The equivalent here is a hook that pops a desktop notification when Claude finishes or needs you.
I use iTerm2. Check whether ~/.config/iterm2/cc-status exists. If it does, add a hook to ~/.claude/settings.json that runs it on every event (SessionStart, SessionEnd, UserPromptSubmit, PreToolUse, PostToolUse, PermissionRequest, Notification, Stop, StopFailure, SubagentStop), and set preferredNotifChannel to "iterm2".
Add hooks to ~/.claude/settings.json so I get a desktop notification (notify-send, install libnotify-bin if missing) when you need my input (Notification and PermissionRequest events) and when you finish a task (Stop event). Test that a notification appears.
Add hooks to my Claude Code settings.json so I get a Windows toast notification when you need my input (Notification and PermissionRequest events) and when you finish a task (Stop event). Use PowerShell with the BurntToast module (install it for my user if missing). Test that a toast appears.
Persistent memory
Claude Code saves what it learns about my projects and preferences to small notes in its .claude/projects/…/memory/ folder, with a MEMORY.md index that loads at the start of every session. It's built in on every OS. Tell Claude to “remember” things and it will.
From now on, when you learn something non-obvious about how one of my projects builds, deploys or tests, save it to memory with the date. Keep one fact per memory file.
03Plugins & marketplaces
Plugins add skills, agents, hooks and MCP servers. Add a marketplace once, then install plugins from it with /plugin. These commands are identical on every OS.
Han han 5.5.0testdouble/han
Test Double's software-engineering plugin suite. Installing han@han pulls in all eight sub-plugins. It gives Claude specialist agents (security analyst, on-call engineer, data engineer, UX designer and more) and skills that turn vague requests into structured work.
| Sub-plugin | Skills I use |
|---|---|
| han-coding | code-review, investigate, refactor, tdd, architectural-analysis, code-overview, code-walkthrough, design-an-api, test planning |
| han-planning | plan-a-feature, plan-a-change, plan-implementation, plan-a-phased-build, plan-work-items, iterative-plan-review |
| han-research | research, gap-analysis, issue-triage |
| han-documentation | project-documentation, architectural-decision-record, runbook |
| han-communication | edit-for-readability and the shared writing standard |
| han-core | pairing, project-discovery and the specialist agents |
| han-github | post reviews to PRs, update PR descriptions, turn work items into issues |
| han-reporting | html-summary, stakeholder-summary |
/plugin marketplace add testdouble/han /plugin install han@han
Universal Modder rehan-remade
Skills and a um CLI for modding PC games, plus a sprite/asset pipeline (um sprite fit, um sprite sheet, um comfy run). I mostly use it for the asset tools with my local ComfyUI. Its fal MCP server needs your own fal.ai key (pay-as-you-go). Skip that part if you don't want it. It needs uv and ImageMagick (see Toolchain).
/plugin marketplace add rehan-remade/universal-modder /plugin install universal-modder@universal-modder
Language servers official
From Anthropic's official marketplace. They give Claude real go-to-definition and diagnostics in code.
- clangd-lsp: C/C++, needs
clangd - swift-lsp: Swift, needs
sourcekit-lspfrom a Swift toolchain
xcode-select --install
sudo apt install -y clangd
# Swift (optional): see swift.org/install/linuxwinget install -e --id LLVM.LLVM
# Swift (optional):
winget install -e --id Swift.Toolchain/plugin install clangd-lsp@claude-plugins-official /plugin install swift-lsp@claude-plugins-official
04Skills & connectors from my Claude account
These sync into Claude Code from claude.ai when you sign in, on any OS, so there's nothing to install from the terminal. Turn them on under claude.ai → Settings → Capabilities / Connectors.
Document skills
docx,pptx,xlsx,pdf: read and write Office files and PDFsdocs: Claude Docs, shareable docs people can comment ongoogle-workspace: edit Google Docs, Sheets and Slides
Research & prompting
deep-research: multi-source research reportsprompt-master: writes prompts for other AI toolsskill-creator: build and test your own skillsimport-memory: bring memories over from ChatGPT etc.
Browser & computer control
chrome-browser: drives your real Chrome through the Claude in Chrome extension (works on all three OSes)computer-use/built-in-browser: need the Claude desktop app (macOS and Windows only, so not available on Linux)
Artifacts
Claude Code can publish HTML pages, dashboards and decks to a private claude.ai link that you can choose to share. A page like this one could be published that way.
05Built-in commands I lean on
These ship with Claude Code on every OS. Type them at the prompt.
| Command | What it does |
|---|---|
/code-review | Reviews your current diff for bugs, at an effort level from low to max. --fix applies the fixes. |
/simplify | Cleans up changed code (reuse, simplification, efficiency) and applies the changes. |
/security-review | Security pass over pending changes. |
/loop | Re-runs a prompt on an interval, e.g. /loop 5m check the build. |
/schedule | Cloud agents that run on a cron schedule. |
/fewer-permission-prompts | Scans your history and allowlists the read-only commands you always approve. |
/init | Writes a CLAUDE.md for a project so Claude knows how it builds. |
/plugin | Browse, install and manage plugins and marketplaces. |
06Toolchain Claude drives
The command-line tools Claude runs while working on my projects. Install only the groups you need.
Everyday CLI
- git, ripgrep, jq
- uv: fast Python package and venv manager
- tmux: terminal multiplexer (WSL only on Windows)
brew install ripgrep jq tmux uv bash mawk
sudo apt install -y git ripgrep jq tmux curl -LsSf https://astral.sh/uv/install.sh | sh
scoop install git ripgrep jq uv
# tmux: install WSL, then `sudo apt install tmux` inside it
wsl --installWeb / Drupal sites
- Node 24 and Node 12 via nvmnvm-windows (old gulp builds need 12)
- PHP 8 + Composer
- Gulp + Sass theme builds; legacy Sass 3.2 / CoffeeScript 1.7 for Drupal 7 themes
- Headless Chrome for screenshots and before/after checks
- Database GUI: TablePlusTablePlusDBeaver (TablePlus's Linux build is limited)
- SFTP: TransmitWinSCP (Transmit is Mac-only)FileZilla (Transmit is Mac-only)
nvm install 12 && nvm install 24 brew install php composer brew install --cask tableplus transmit
nvm install 12 && nvm install 24 sudo apt install -y php-cli php-xml php-mbstring php-gd php-curl php-zip composer sudo snap install dbeaver-ce sudo apt install -y filezilla
nvm install 12
nvm install 24
scoop install php composer
winget install -e --id WinSCP.WinSCP
# TablePlus: download from tableplus.comApple / iOS
- Xcode, Swift 6.4,
xcodebuild,codesign - libimobiledevice (
idevice_id,afcclient) to talk to an iPhone over USB
Building iOS/macOS apps needs Xcode, which only runs on a Mac. The Swift language itself runs here (see Language servers above). libimobiledevice works on Linux too. libimobiledevice has no good native Windows build, so skip it.
xcode-select --install brew install libimobiledevice
sudo apt install -y libimobiledevice-utils usbmuxd
Game dev
- Godot 4.7, with a
godotcommand on the PATH so Claude can run headless tests - devkitPro (devkitARM, libctru, citro2d) for Nintendo 3DS homebrew
- Azahar 3DS emulator for testing
brew install --cask godot mkdir -p ~/.local/bin ln -s /Applications/Godot.app/Contents/MacOS/Godot ~/.local/bin/godot
# Godot: download the Linux .zip from godotengine.org, then: mkdir -p ~/.local/bin ~/apps unzip Godot_v4*_linux.x86_64.zip -d ~/apps ln -s ~/apps/Godot_v4*_linux.x86_64 ~/.local/bin/godot # devkitPro (Debian/Ubuntu): wget https://apt.devkitpro.org/install-devkitpro-pacman chmod +x ./install-devkitpro-pacman sudo ./install-devkitpro-pacman sudo dkp-pacman -S 3ds-dev
winget install -e --id GodotEngine.GodotEngine
# devkitPro: run the graphical installer from
# github.com/devkitPro/installer/releases and tick "3DS Development"For the headless godot command, put the Godot_*_console.exe from the godotengine.org .zip on your PATH as godot.exe.
Images & assets
- ImageMagick: resize, crop, alpha checks
- oxipng + pngquant: PNG compression
- webp: WebP conversion
- PhotoshopGIMP or Krita (Photoshop doesn't run on Linux) for manual touch-ups
brew install imagemagick oxipng pngquant webp
sudo apt install -y imagemagick pngquant webp
sudo apt install -y oxipng # Ubuntu 24.04+ / Debian 12+; else see GitHub releases
sudo apt install -y gimp kritascoop install imagemagick oxipng pngquant libwebp
Ubuntu's apt ImageMagick is often version 6, which uses convert instead of magick. Claude handles either.
Prompt: install a group for me
Check which of these are already installed on my Mac and install only what's missing with Homebrew: ripgrep, jq, tmux, uv, imagemagick, oxipng, pngquant, webp, php, composer, libimobiledevice. Then show me a table of what was installed and the versions.
Detect my Linux distro and package manager. Check which of these are already installed and install only what's missing: ripgrep, jq, tmux, uv, imagemagick, oxipng, pngquant, webp, php (cli + xml/mbstring/gd/curl/zip), composer. If a package isn't in my distro's repos, use the project's official install method. Show me each command before running anything with sudo, then give me a table of what was installed and the versions.
I'm on Windows. Check which of these are already installed and install only what's missing, using winget for apps and Scoop for CLI tools (install Scoop first if needed): ripgrep, jq, uv, imagemagick, oxipng, pngquant, libwebp, php, composer. Then show me a table of what was installed and the versions.
07Local AI on a second machine
I run heavier AI models on a Mac Studio (M4 Max, 36 GB) on my home network. My laptop wakes it and connects over an SSH tunnel. It's optional, but it makes free local image generation possible.
On Linux/Windows the equivalent is a PC with an NVIDIA GPU (12 GB+ VRAM is comfortable). It's actually easier than on a Mac: CUDA runs fp8 models directly, so you don't need the GGUF workaround I use.
ComfyUI image gen
A node-based image generation server. It runs as a background service bound to localhost. Claude submits saved workflow JSON to it, so it can generate game sprites and site art without a paid API.
- Z-Image Turbo: fast text-to-image (Apache 2.0)
- Qwen-Image-Edit 2511: same character in new poses, views and recolours
- BiRefNet: background removal for transparent sprites
- ComfyUI-GGUF node: runs GGUF models on Apple Silicon (fp8 doesn't work on MPS)
Easiest route on Windows: the ComfyUI Desktop installer, or the portable NVIDIA .7z from the GitHub releases.
Ollama local LLM
Runs open-weight language models locally. Planned: qwen3.6:27b (Q4, about 17 GB) with context around 64K. Size the model to your RAM/VRAM. Claude Code can point at a compatible local endpoint through ANTHROPIC_BASE_URL.
brew install ollama ollama pull qwen3.6:27b
curl -fsSL https://ollama.com/install.sh | sh ollama pull qwen3.6:27b
winget install -e --id Ollama.Ollama ollama pull qwen3.6:27b
Prompt: set up ComfyUI like mine
Set up ComfyUI on this Apple Silicon Mac: clone it to ~/ComfyUI, make a uv venv with Python 3.12 and PyTorch with MPS, and download Z-Image Turbo (bf16, with its qwen_3_4b text encoder and ae VAE) plus a BiRefNet background-removal node. Run it as a launchd agent bound to 127.0.0.1:8188 that starts at login and restarts if it crashes. Then export two API-format workflows to ~/ComfyWorkflows: plain text-to-image, and text-to-image followed by background removal that saves an RGBA PNG. Test both and show me the outputs.
Set up ComfyUI on this Linux PC with an NVIDIA GPU. First check nvidia-smi works and tell me my VRAM. Clone ComfyUI to ~/ComfyUI, make a uv venv with Python 3.12 and the CUDA build of PyTorch, and download Z-Image Turbo (with its qwen_3_4b text encoder and ae VAE) plus a BiRefNet background-removal node. Run it as a systemd user service bound to 127.0.0.1:8188 that starts at login and restarts on failure. Then export two API-format workflows to ~/ComfyWorkflows: plain text-to-image, and text-to-image followed by background removal that saves an RGBA PNG. Test both and show me the outputs.
Set up ComfyUI on this Windows PC with an NVIDIA GPU. First check nvidia-smi works and tell me my VRAM. Install ComfyUI (the portable NVIDIA build into %USERPROFILE%\ComfyUI, or ComfyUI Desktop if you think it's simpler), and download Z-Image Turbo (with its qwen_3_4b text encoder and ae VAE) plus a BiRefNet background-removal node. Make it start at login with Task Scheduler, listening on 127.0.0.1:8188. Then export two API-format workflows to %USERPROFILE%\ComfyWorkflows: plain text-to-image, and text-to-image followed by background removal that saves an RGBA PNG. Test both and show me the outputs.
08Custom tools Claude built for me
Small scripts Claude wrote that aren't published anywhere. Use the prompts to have Claude build your own version.
Live-site preview proxy
preview-proxy.mjs proxies a live website to localhost and swaps in my locally built CSS/JS, so I can see a change on the real site before deploying. It shuts down after 30 idle minutes. It's plain Node, so it runs on any OS. Only the “open Chrome” helper differs.
Write ~/site-tools/preview-proxy.mjs (plain Node, no dependencies): usage `node preview-proxy.mjs https://site.com 8080 name=/local/file.css ...`. Proxy every request to the live site, serve the local file for any URL containing one of the names, rewrite links back to localhost, strip CSP and HSTS headers, and exit after 30 minutes with no requests. Also write a helper script for my OS that opens URLs in a separate Chrome profile at a width and height I pass in.
Remote ComfyUI helpers
A script that sends a Wake-on-LAN packet to the AI machine and opens an SSH tunnel to its ComfyUI, plus one that uploads a reference image and runs the pose/recolour edit workflow.
I have ComfyUI on another machine at <IP> (user <name>). Write ~/ComfyWorkflows/studio-comfy.sh: send Wake-on-LAN to its MAC address (install wakeonlan if needed), wait for SSH, and open a background tunnel from local port 8188 to its 127.0.0.1:8188. `studio-comfy.sh stop` closes the tunnel. Set up key-based SSH first if it isn't already.
I have ComfyUI on another machine at <IP> (user <name>). Write a PowerShell script %USERPROFILE%\ComfyWorkflows\studio-comfy.ps1: send a Wake-on-LAN magic packet to its MAC address, wait until SSH answers, and open a background tunnel (Windows' built-in OpenSSH) from local port 8188 to its 127.0.0.1:8188. `studio-comfy.ps1 stop` closes the tunnel. Set up key-based SSH first if it isn't already.
09Settings template
A cleaned-up copy of my settings. It lives at ~/.claude/settings.json%USERPROFILE%\.claude\settings.json. Merge it into yours; don't overwrite an existing file blindly.
{
"theme": "dark",
"autoContinueAtUsageLimit": false,
"modelSettings": {
"claude-opus-5-5": { "effortLevel": "high" },
"claude-sonnet-5": { "effortLevel": "xhigh" }
},
"enabledPlugins": {
"han@han": true,
"han-core@han": true,
"han-coding@han": true,
"han-planning@han": true,
"han-research@han": true,
"han-documentation@han": true,
"han-communication@han": true,
"han-github@han": true,
"han-reporting@han": true,
"clangd-lsp@claude-plugins-official": true,
"universal-modder@universal-modder": true
},
"extraKnownMarketplaces": {
"han": { "source": { "source": "github", "repo": "testdouble/han" } },
"universal-modder": { "source": { "source": "github", "repo": "rehan-remade/universal-modder" } }
}
}Optional notification hooks. Add this "hooks" key inside the same object:
"preferredNotifChannel": "iterm2",
"hooks": {
"Notification": [{ "hooks": [{ "type": "command", "command": "~/.config/iterm2/cc-status" }] }],
"Stop": [{ "hooks": [{ "type": "command", "command": "~/.config/iterm2/cc-status" }] }],
"PreToolUse": [{ "hooks": [{ "type": "command", "command": "~/.config/iterm2/cc-status" }] }],
"PostToolUse": [{ "hooks": [{ "type": "command", "command": "~/.config/iterm2/cc-status" }] }]
}"hooks": {
"Notification": [{ "hooks": [{ "type": "command", "command": "notify-send 'Claude Code' 'Needs your input'" }] }],
"Stop": [{ "hooks": [{ "type": "command", "command": "notify-send 'Claude Code' 'Finished'" }] }]
}"hooks": {
"Notification": [{ "hooks": [{ "type": "command", "command": "powershell -NoProfile -Command \"New-BurntToastNotification -Text 'Claude Code','Needs your input'\"" }] }],
"Stop": [{ "hooks": [{ "type": "command", "command": "powershell -NoProfile -Command \"New-BurntToastNotification -Text 'Claude Code','Finished'\"" }] }]
}10One-shot setup prompt
After quick-start steps 1–4 (package manager, basics, Node, Claude Code), start claude in your home folder and paste this. Claude detects your OS, checks what you already have, and asks before anything that costs money or needs a key.
Help me set up my computer to match a friend's Claude Code stack (they're on a Mac; I'm on Linux or Windows, so detect which, and on Linux detect the distro). Use the right package manager: apt/dnf/pacman on Linux; winget for apps and Scoop for CLI tools on Windows. Work step by step, check what's already installed first, and ask me before installing anything big (Godot, devkitPro, GPU drivers) or anything that needs an API key or payment. Show me any sudo/admin command before running it. 1. CLI tools: git, ripgrep, jq, uv, imagemagick, oxipng, pngquant, webp (libwebp on Windows), plus tmux on Linux. Ask whether I also want: php + composer (web dev), clangd (C/C++), Chrome, VS Code, a database GUI and an SFTP client. 2. Node: make sure a Node version manager is installed (nvm on Linux, nvm-windows on Windows) with Node 24 as the default. Ask whether I need Node 12 for old projects. 3. Plugin marketplaces: tell me the exact /plugin commands to add anthropics/claude-plugins-official, testdouble/han and rehan-remade/universal-modder, and to install han@han, clangd-lsp and universal-modder. I'll type them myself, since slash commands can't be run from a prompt. 4. Settings: merge into my Claude Code user settings.json (show me the diff first) theme "dark", effortLevel "high" for claude-opus-5-5 and "xhigh" for claude-sonnet-5, and the extraKnownMarketplaces entries for han and universal-modder. Offer to add desktop-notification hooks for Notification and Stop events that suit my OS. 5. Memory: confirm auto-memory is on and explain how I can ask you to remember things. 6. Finish with a table of everything installed and its version, plus anything you skipped and why.