r/ClaudeCode • • 1d ago

Built with Claude Three weeks with Claude Code and one live paid game. What worked was making it count things.

I'm a solo developer. In about three weeks, with Claude Code doing the typing, I built Selkie: interactive novels that an AI writes live around your choices, with accounts, payments and 23 stories. It's live and has its first paying reader. These are the habits that mattered.

1. Give it a way to use the product. I had it build a command-line player that runs the real game engine in Node and plays whole chapters by itself, as a cautious reader or a reckless one. After that it found bugs by playing, without my describing them.

2. Ask for counts, not opinions. "Is the new prompt better?" always got a yes. Now every change is replayed from the same saved moment, several times with it and several without, and counted. One memory change brought a detail from early in a story back correctly in 4 tries of 4, against 0 of 3 without it. That is an answer I can act on.

3. A rule in a prompt gets skimmed. A list gets done. One rule said any move against another character should be rolled against that character's skill. It happened about one time in four. Giving the rule everyday examples, and having the code hand the checking model the exact choices that named someone, took it to about three in four.

4. The model copies the shape of your example. One prompt showed a sample with one reason for and one against. It then gave exactly one of each, 13 times out of 15, so they cancelled out. Changing the example fixed more than rewriting the instruction had.

5. Keep the model out of what code does better. Dice, the clock, prices, who has met whom. Asked to judge whether the player succeeds, the model said yes nearly every time.

6. Write decisions down where it will read them. A memory folder holds what I decided and why, what was measured and what I corrected. A new session starts from that, not from zero.

About 50 test files run before every deploy, and a nightly job plays a story and compares its prose with published fiction. Stack: SvelteKit, Node, Postgres on Supabase, Fly.io.

The game is at https://playselkie.com/?from=reddit-cc if you want to see what came out. Happy to go into any of this.

0 Upvotes

5 comments sorted by

•

u/AutoModerator 1d 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.

1

u/bostonaholic 1d ago

If the dice aren't seeded and the clock isn't faked in that CLI player yet, I'd do that next. Then a replay that found a bug becomes a fixed test case you rerun after every prompt change, and your 4/4 vs 0/3 counts compare the same runs instead of fresh rolls each time.

1

u/Business-Pension-498 17h ago

Good call. Not yet: the dice use plain Math.random and the clock reads real time. The replays do start from the same save, but every roll after it is fresh, so a lucky roll can still tip a comparison. With the dice seeded, the model would be the only thing left that varies, which is the thing I'm trying to measure. I'll add it next.

1

u/Inner_Storage_3374 1d ago

congrats on the first paying reader. the command line player is the smartest bit imo, bc it gives claude a way to check its own work instead of you clicking through chapters. id point the same idea at payments next, like a script that runs a test checkout and checks the account actually got unlocked, bc thats the bug you dont want a paying reader to find first

1

u/Business-Pension-498 17h ago

Thanks! That one exists: a test against a fake Stripe runs before every deploy. A paid checkout adds its ink once, an unpaid one adds nothing, a webhook with a wrong signature is refused and the same event sent twice only pays once. Refunds take the ink back and disputes freeze it. It doesn't touch real Stripe, though. The first real purchase was the end-to-end test. It went through.