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.md with 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.

Balance's nine-step pipeline in dev-suite, from Insights to Post-deploy

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