All experiments
Experiment
How we ship real features with our AI dev pipeline
We take a real Balance feature from idea to deployed with our 9-step AI dev pipeline, and show the parts that make AI coding repeatable.
This is the companion to the episode. It walks through how we take a real feature from idea to a live deploy using our nine-step dev pipeline, with a Balance feature as the working example.
The feature we built
- What we build in this episode: bigger skill icons. They were too small to read at a glance, so we bump them 2.5× across the app and ship it as v0.6.0.
- Balance is a walking game where real steps are the only fuel, so anything we add has to fit that rule.
- The goal for the episode: get it running on a device and deployed to staging, start to finish.
What dev-suite is
- A nine-step pipeline that carries a feature from Insights to Post-deploy.
- A small engine (
flow.mjs) tracks the current step and what comes next, so the work never drifts. - Each project keeps a
product-brain.mdwith its config and its history of shipped features. - Gates pause the flow at each hand-off, so a human signs off before the next step runs.

dev-suite's read-only view of Balance's pipeline: each step and the substeps that run inside it.
Framing the work (steps 1 to 3)
- Insights and Opportunity: we lay out a few ways to build the feature and choose one.
- Design: we stress-test that choice before any code exists, with a back-and-forth that pokes holes in the plan.
- The output is a design we trust before writing a line of code.
Slicing and building (steps 4 to 6)
- PRD: the design becomes a short, concrete spec.
- Specs: the spec is cut into small issues and triaged in order.
- Dev: an automated loop drives Claude Code through the issues, with tests passing before each one closes.
Proving and shipping (steps 7 to 8)
- QA: an emulator smoke test on a Pixel 7 confirms the feature works on a real screen.
- Deploy: the change goes out to staging through our Kubernetes and EAS setup.
- Closing a release is automated: the version bump and the changelog are generated, and a note posts to Discord on its own.
The result (step 9)
- The feature runs live on the phone and on staging.
- Post-deploy records the changelog and the release, then syncs the backlog so the next feature starts clean.
- The time from idea to deploy is a fraction of the old way.
Takeaways
- A pipeline like this makes AI-assisted development repeatable and easy to review.
- The engine and the gates are what keep speed from turning into chaos.
- It suits solo developers and small teams who ship with AI every day.
Where to go next
- The links below point to the tools and the community behind this work.
- This is the first Experiments episode, so subscribe if you want the rest.
Our product brain, as it stands
This is the dev-suite product brain that runs Balance, as it looks today. Credentials and internal infra are masked. Everything else is the real file, copy it below.
# Product Brain — Balance
## Mission
An RPG for gamers who'd rather their hobby got them off the couch. Real-world steps are the only fuel: you spend them on gather, combat, and craft actions, level skills, and push across a world map — progress is gated by walking, so there's no grinding it sedentary. The name is the pitch: keep playing the game you'd play anyway, but only as far as your feet have carried you.
## Config
- artifact-routing: .claude/dev-suite/
- test: manual diff; server vitest (cd packages/server && npx vitest run)
- version: 0.4.1
- ci-watch-command: glab ci status --live --branch=dev
- staging-host: <redacted>
- eas-service-account-key-path: <redacted>
- eas-gitlab-ci-vars-url: <redacted>
- k8s-provider: <redacted>
- discord-webhook-url: <redacted>
- discord-username: Balance Releases
## Pipeline
1-insights:
2-opportunity: propose
3-design: challenge-design
4-prd: compose-prd
5-specs: slice triage
6-dev: sp-loop dev-handoffs
7-qa: emulator-smoke
8-deploy: k8s-deploy-dev eas-to-internal-track
9-post-deploy: changelog discord-release backlog sync-brain
## Features
| slug | step | done | note |
|---|---|---|---|
## Document Index
- **OTP login comms-fix** (0.4.1, shipped to dev): PRD in .claude/dev-suite/prds. Hotfix: replaced the Resend email transport with an in-house comm-service HTTP client, scrapped the internal email packages, render OTP with @react-email/components; the email env contract was swapped to the comm-service variables. Root cause: an earlier comms-swap changed the email env contract and deployed secrets never migrated. Issues 0044 + 0045 done (server vitest 923 green); on-device QA signed in end-to-end. dev merge 936db71; staging pipeline green (server now boots with the comm-service secret; CI secrets config updated + CI var provisioned). Prod NOT promoted.
- **Tier-1 item & skill redesign** (0.5.0, in-flight): Step 6 (dev) complete, issues 0035–0043 done; on feat/tier-1-redesign, not pushed. Replaces placeholder items/skills additively.
- Catalogue → game art sync (tool-0.3.0): shipped to dev (cd46b77). On-device render + EAS ship deferred.
- Handoffs live under .claude/dev-suite/handoffs, one wrap per shipped feature.
## Shipped
- 2026-06-03 — architecture-deepening v0.3.1 — internal architecture pass (14 issues): ActionOutcomeService deep module across the drop-table services, Zod schemas as the source of truth for request DTOs, mobile pure-function extractions. Behavior-preserving (server + shared tests green, on-device QA passed). Prod NOT promoted.
- 2026-06-04 — health-center v0.4.0 — repurpose Step history into a Health center plus a game-isolated monthly journal. 6 issues via subagent-driven dev. Server vitest 781 green; on-device QA accept-with-known-issue. EAS Android preview to Play Internal. Prod NOT promoted.
- 2026-06-05..07 — asset-catalogue-tool (tool-0.1.0 → 0.3.0) — a local art-asset catalogue web tool, then editable EN/FR names with preview-gated sync, then bundling catalogued images as real in-game art across icon / illustration / background / portrait. Tooling track, app stays 0.4.0.
- 2026-06-27 — otp-login-comms-fix v0.4.1 — hotfix: login OTP routed through the in-house comm-service instead of Resend; internal email packages removed; env contract swapped to the comm-service variables with a prod boot guard. Server vitest 923 green; on-device QA signed in end-to-end. Prod NOT promoted.
Resources
- obra/superpowersThe superpowers skills that power our dev loop (the sp-loop in step 6).
- mattpocock/skillsMatt Pocock's skills, another source we draw dev-step building blocks from.
- merc.camp DiscordWhere we trade workflows every day. Come build with us.
- Live dev on TwitchWatch the work happen in real time.