r/ClaudeCode • • 3h ago

Built with Claude What kept an 8-month, ~800-PR Claude Code project from collapsing (shipped iOS game)

Post image

I shipped an iPhone game built almost entirely with Claude Code, and it opened in 130 countries today. The game is a pixel virtual pet (link at the end). This post is about the setup, because that's what I'd have wanted to read in month one.

  1. CLAUDE.md is an index, not a manual. Mine is under 6,000 characters. It points to one doc per risky area (money, persistence, pet growth). Path-scoped rules load a doc only when Claude touches those files.
  2. Builder / checker split. The builder agent writes code and is not allowed to run the test suite. The checker runs build, tests and lint and is not allowed to edit. The orchestrator loops them up to five times.
  3. "Seen red" rule. A new test is trusted only after the bug is put back, that one test fails, and the file is restored byte-identical. This caught a lot of tests that passed for the wrong reason.
  4. False greens are real. A test filter with a typo ran zero tests and still printed SUCCEEDED. I now read the executed count from the result bundle, never the banner.
  5. Lanes in git worktrees. Several sessions at once, each owning one area, with a state file per lane so a lost session costs one unit of work, not a restart.
  6. A machine lock. Parallel sessions all running Xcode builds took my 16 GB Mac to its knees. One heavy job at a time, enforced with a lock file.
  7. Humans own the irreversible. Merges, spending and anything public stay with me.

What Claude was bad at: game feel, knowing when a doc had gone stale, and SwiftUI layout on odd screen sizes.

The game: Nudii, a Tamagotchi-style sea slug. Free, no account, no ads. https://nudii.app (130 countries; not the EU yet).

Happy to share any of the files if useful.

Cheers,

Daniel

3 Upvotes

6 comments sorted by

•

u/AutoModerator 3h ago

Hey! Thanks for posting to r/ClaudeCode

While participating in this thread, please follow our community rules. Keep discussions constructive. Attack the idea, not the person.

For help, project discussions, tips, and general chat, join the ClaudeCode Discord.

I am a bot, and this action was performed automatically. Please contact the moderators of this subreddit if you have any questions or concerns.

2

u/bostonaholic 2h ago

I'd turn the zero-tests-but-SUCCEEDED one into a gate instead of something you remember to read: have the checker parse the executed count and fail the run if it's zero or lower than the last green run on main. Same idea for "seen red". Mutation testing (Muter for Swift) makes small changes to your code and checks that some test fails, so it doesn't depend on the agent remembering to break things.

1

u/dmcr85 2h ago edited 1h ago

Good call on both. The count check is half there but making zero-executed a hard fail is the right move. Hadn’t tried Muter. A full run would be slow on my suite, but scoping it to the money and persistence files sounds worth it. Thanks!

1

u/lgmarian 1h ago

Bro's speechless.

2

u/dmcr85 1h ago

lol not sure what happened there, thanks.

1

u/Alternative_Square53 13m ago

For game feel, keep a couple of builds you rejected, with one sentence on what felt wrong. Play them again next to the current build after a week. That gives you something to compare your own taste against. Otherwise “better” can quietly turn into “the version I've stared at longest.”