I started by running /init
so Claude reads the repo and rewrites CLAUDE.md
with real project affordances: how to run one test with xcodebuild
, where Vice models live, what Swift 6.1 concurrency rules we enforce, and the bundle/CloudKit facts. I cut redundancy, kept only the sharp bits, and verified with CI. This establishes a trustworthy "ops manual" Claude sees first, not tribal memory.
Why: if the source of truth is precise, agents stop hallucinating paths/flags.
Next pass: I mapped the whole Claude Code surface (settings, slash commands, MCP hooks, status line, nested CLAUDE.md
s). Then I added:
.claude/settings.json
— status line, model prefs, environment, and hook wiring.- Custom commands as the primary UX: small, composable, documented.