UI-MVP development
For most new apps: a real, usable first version with a designed UI, as early as possible. It combines the other two: UI first, but only for the MVP's screens, and working end to end by the second release. This is the default for npx madcompany init.
Plan with: a product brief, the MVP scope, and a UX spec for just the MVP screens.
Releases
Only the screens the MVP needs, clickable on mock data, signed off in a UI sprint.
Those screens wired to a real backend: the smallest product a real user could use.
One release per batch of features or feedback.
Steps
- Terminal
npx madcompany init --mode ui-mvpSet up, then keep
npx madcompany hqrunning - Claude Code
/bmad-product-briefWhat the product is and who it is for
- Claude Code
/bmad-specThe MVP scope: the smallest set of features worth using
- Claude Code
/bmad-uxThe UX for the MVP screens only
- Claude Code
/mc-staffPick the team, then restart Claude Code once
- Claude Code
/mc-plan-releaseR1: the MVP screens, clickable on mock data
- Claude Code
/mc-ui-sprintIterate on the screens with the team until you sign off
- Claude Code
/mc-startThe team builds R1; approve it in HQ → Releases, then
npx madcompany ship R1 - Claude Code
/mc-plan-releaseR2: the working MVP, the same screens on a real backend
- Claude Code
/mc-startBuild, approve, ship; then R3… from your feedback
You and the team
You
- Decide the MVP scope: the smallest set of features worth using (
/bmad-spec) - UX for those screens only (
/bmad-ux) - Sign off the MVP screens in a UI sprint (R1)
- Approve R1, then R2: the first version a real user could use
- Do the Human help items the working MVP needs (database, auth provider, hosting)
The team
- R1: only the MVP screens, clickable on mock data
- At sign-off: writes the API contract those screens need
- R2: builds the backend to that contract and wires the same screens to it, integrations still mocked where your keys aren't in yet
- Then grows the product one release at a time from your feedback
Tips
- Be strict about the MVP. Anything you can live without for the first real user goes to R3 or later.
- R2's goal should be something a real person could do: "sign up and keep a task list that's still there tomorrow".
- File deploy steps in
team.yaml(deploy:) early; aftership, they come back to you as a checklist.