The problem
Most Claude Code setup guides are written by engineers, for engineers. I see overbuilt scaffolds, 20-agent swarms, replicas of engineering teams in large companies.
As an operator & exec, I just want it to work. I'm not a coder. I've brutally audited my setup — keeping only what actually makes me faster, dropping excess that doesn't earn its keep.
Plumbing across machines
One desktop, one laptop, one phone = one continuous workspace.
Settings sync across both laptops via Dropbox. All preferences, hooks, custom commands, status line, keybindings. Done by symlinking the whole ~/.claude/ directory to a Dropbox folder.
Every project pulls latest code when opened. Never "wait, why is this branch behind?" again. A hook runs git pull on every session start, plus warns on divergence.
Sessions on one laptop pick up where the other left off. Close a tab on the Mini and a command writes "where we are / open decisions / next step" to a Dropbox file. Open the same project on the Air and a hook surfaces that note before any typing happens. Zero context loss across machines.
The Mac Mini stays on at home; the laptop and phone are just remote controls. A claude remote-control server on the Mini spawns sessions on demand — connect from the Claude app or any browser, no VPN. It runs as a background service that auto-starts and restarts itself after a reboot, so there's nothing to launch or babysit. Give it a task, close the laptop lid, walk away. The work keeps running.
Productivity / working style
Less friction, faster wrap-ups, no terminal-watching.
One command to close out a working session. /pushall runs the build, writes the cross-machine handoff note, commits, pushes, checks the deploy fired, and saves anything worth remembering. End-of-tab in 8 seconds.
One command to close out a project for the day. /checkout is the bigger sweep — closes worktrees, merges open PRs, deletes dead branches, verifies the deploy is live, writes the same handoff note. Both commands end the same way: state captured, nothing lost.
The Mac never sleeps mid-session. A hook fires caffeinate when a Claude session starts. Long agents don't die mid-loop because the screen dimmed.
A sound plays when Claude is done or needs attention. Context-switch to email or another tab and come back when it dings. No staring at the terminal.
A custom dashboard showing the things that actually need watching. Four rows: context %, 5-hour rate limit, weekly limit, accept-edits flag — all color-coded green/yellow/red. Avoids surprise rate-limit hits.

A diagnostic for the whole setup. /configaudit runs through the sync stack — broken symlinks, stale plugin auth, divergent Dropbox state. This finds any rot before it trips anything up.
A skill built for shipping products as a non-engineer. Bob the Builder walks through scoping, building, and auditing. Covered fully in the previous note.
One command to wire up API keys without the fumble. /apikeys finds which keys a project is missing, writes the empty lines, opens the file, and hands me paste-ready steps — which key, what to paste, where to get it. Never reads a secret, never commits one. No more "add this to .env.local" with no idea how.
Permission philosophy
Speed on common work. Hard locks on the catastrophic.
Routine work flows without constant permission prompts. Editing files, running shell commands, reading docs — Claude does all of it without stopping to ask. Permission prompts every 30 seconds destroy flow.
Catastrophic things are hard-blocked no matter what. .env files, browser cookies, SSH keys, crypto wallets, banking APIs. Claude never reads them regardless of what it's working on. These defaults push dangerous stuff out of reach, but allow for speed as the common case.
File edits go through without asking. Default mode is acceptEdits — Claude makes the change, diffs get reviewed after, not before.
CLAUDE.md as policy
A Claude that audits itself, learns from corrections, and ships.
Claude must re-read the original request before declaring done. Stops the silent-scope-shrinkage problem where four items go in and three come out without anyone noticing. Forces a checklist pass before "done" gets said.
If a fix fails three times, Claude has to stop and change approach. Same fix fails 3× → STOP. State what was tried and why each failed. Don't silently cycle through the same broken approach.
Claude proposes new rules when a pattern emerges. When something gets corrected or a recurring gotcha shows up, Claude says "I noticed [pattern]. Want me to add this to CLAUDE.md?" The CLAUDE.md compounds over time.
Claude commits and pushes without asking. Solo-dev workflow — changes can't be evaluated until live. So once the build passes, Claude commits, pushes, and verifies the deploy. No "should I commit?" prompts.
Action items come back as paste-ready blocks, never bare commands. Built for a non-engineer audience: every step is formatted as (1) what app to open, (2) the exact block to paste, (3) one plain-language line on what it does. No bare commands floating in prose.
Try it
Download the full CLAUDE.md and settings stack here: claude-code-settings.md
If you found this useful, write to me at joe@joe.wang. Tell me your favorite settings. I want to know what I'm missing.