MVP Scoping skill for Codex
Test the assumption that could kill it, nothing more. Codex scopes a first release around the assumption most likely to sink the product, then cuts to one narrow user and one complete flow inside a fixed time box. Automation, integrations and settings are replaced with manual or default stand-ins where possible, every cut is recorded with a revisit trigger, the codebase is checked for reuse and risk, and continue or stop criteria are agreed before work begins.
curl -fsSL codexskills.dev/install.sh \ | sh -s -- mvp-scoping Installs to ~/.agents/skills/mvp-scoping/ for every project on this machine.
curl -fsSL codexskills.dev/cli.mjs -o codex-skills.mjsnode codex-skills.mjs install mvp-scoping The CLI also searches, updates and removes skills. Run it with no arguments to pick from a list. Needs Node 20.12+.
curl -fsSL codexskills.dev/install.sh \ | sh -s -- --project mvp-scoping Installs to .agents/skills/mvp-scoping/ in the current repository. Commit it and everyone who runs Codex there gets it.
curl -fsSLO codexskills.dev/downloads/mvp-scoping.zipunzip -o mvp-scoping.zip -d ~/.agents/skills/ The archive holds the skill folder with its generated agents/openai.yaml. Unzip into .agents/skills/ to scope it to a repo.
& ([scriptblock]::Create((irm codexskills.dev/install.ps1))) mvp-scoping PowerShell 5.1 or 7. Installs to %USERPROFILE%\.agents\skills\. Add -Project for the current repo.
104-line POSIX script. No sudo, no telemetry. Read install.sh
Use it in Codex
Start a prompt with $mvp-scoping, or pick it from /skills.
You can also just describe the task: Codex reads the description below and loads the playbook when your request matches.
What Codex reads before loading it
Scopes a minimum viable product or first release around the riskiest assumption - one target user, one core job, the smallest end-to-end flow that tests it, explicit cut lists, manual (concierge or Wizard of Oz) substitutes for automation, a fixed time box, and success and kill criteria decided up front - and checks the plan against the existing codebase. Use when asked to scope an MVP, cut a v1 that has grown too big, decide what to build first, estimate whether an idea fits a deadline, or define what would make the team stop or continue.
Use it when
- A new product or major bet needs a first release plan
- The v1 backlog keeps growing and the date does not move
- You need to decide what can be done manually instead of built
- Nobody has agreed what result would mean stopping
Use something else when
- The riskiest question can be answered without code: use product-discovery
- Scope is settled and you need the detailed requirements: use prd-writing
How to check the result
One named user can complete the whole flow, every in-scope item is required for it, every cut has a reason and trigger, and stop criteria are observable at pilot scale.
The mistake it prevents
Building the impressive automated part while faking the step that actually tests whether anyone wants the product.
An MVP is scoped well when it tests the single assumption most likely to kill the product, serves one clearly named user through one complete flow, fits a fixed time box, and comes with written criteria for what result means continue, change direction, or stop. “Minimum” refers to effort; “viable” means a real user can get real value from it.
Name the riskiest assumption
List assumptions in four categories and pick the one that is both most uncertain and most fatal if wrong:
| Category | Question | Example |
|---|---|---|
| Value | Will they want it badly enough to change behaviour? | Ops leads will replace their spreadsheet |
| Usability | Can they figure out how to use it? | Admins can set up rules without help |
| Feasibility | Can we build it with our team, stack and data? | We can parse their scheduling exports reliably |
| Viability | Does it work for the business (cost, legal, channels)? | Inference cost stays under $2 per user per month |
The MVP exists to test that one assumption. If the riskiest assumption is value, a
landing page, concierge service or prototype may test it faster than code. Use
$product-discovery for those cheaper tests.
Scope rules
- One user, one job. Name the segment narrowly (“ops leads at 20-80 person agencies”). Every feature request from other segments goes on the cut list.
- One end-to-end flow. The user must be able to start, finish and get the value once, even if crude. A polished first half of a flow tests nothing.
- Fake what you can. Replace automation with manual work behind the scenes (concierge, Wizard of Oz), integrations with CSV upload, settings with sensible hard-coded defaults, admin UIs with scripts the team runs.
- Fixed time, variable scope. Set the time box first (commonly 4-8 weeks for a small team), then cut scope to fit. Never extend the box to fit scope.
- Quality bar holds for what ships. Fewer features, not broken features. Security, data protection and correctness of what is in scope are not cut.
Cut techniques
| Ask | Typical cut |
|---|---|
| Is it needed for the first user to get value once? | Settings, roles, notifications, theming |
| Can a person do it manually for the first 20 customers? | Billing (invoice by hand), onboarding (call), reports (export) |
| Can a default replace a choice? | Time zone pickers, formatting options, templates |
| Does only a later segment need it? | SSO, audit logs, multi-workspace |
| Can we narrow input variety? | One file format, one integration, one language |
| Is it a “what if” edge case for a rare scenario? | Handle with a clear error and manual follow-up |
Write each cut down with the reason and the trigger that would bring it back (“Add roles when 3+ customers ask for read-only members”).
Check against the codebase
When a repo exists, read AGENTS.md, the data model and the modules the flow touches
before committing to scope:
- Which parts of the flow already exist and can be reused?
- Which new tables, endpoints or integrations does the flow need?
- What is the riskiest technical piece? Schedule it first or spike it in week 1.
Produce a rough size per flow step (small / medium / large) and flag anything large for the team to estimate properly; do not present your sizing as a commitment.
Success and kill criteria
Decide before building, write them in the scope doc, and get the owner to agree:
Measured over: 4 weeks after the 20th user onboards
Continue if: >= 8 of 20 pilot accounts use it in 3 of 4 weeks AND >= 3 agree to pay $X
Change direction if: usage is high but nobody will pay, or one step drives most drop-off
Stop if: < 4 of 20 use it after week 2 despite onboarding calls
Use counts or rates you can actually observe at MVP scale (often 10-50 users), not statistically significant conversion targets that need thousands of visitors.
Workflow
- [ ] 1. List assumptions; pick the riskiest; confirm with the user
- [ ] 2. Decide whether code is the cheapest test of it
- [ ] 3. Name the user, the job and the one end-to-end flow
- [ ] 4. Set the time box
- [ ] 5. List everything wanted; mark in / faked / cut with reasons
- [ ] 6. Check the codebase; size each step; spike the riskiest piece first
- [ ] 7. Write success, change and stop criteria with the owner
- [ ] 8. Produce the scope doc; review cuts with stakeholders
Scope doc template
# MVP: <name>
Riskiest assumption: <one sentence>
User: <narrow segment> | Job: <what they are trying to get done>
Time box: <start> - <end> (<n> weeks, <team>)
## The flow
1. <step> - in (real) | faked (<how>) - size S/M/L
## In scope
## Faked / manual (and who does the manual work)
## Cut (reason, trigger to revisit)
## Success / change / stop criteria
## Technical risks and week-1 spike
## Not cut: quality, security and data obligations that still apply
Gotchas
- Scope creep usually arrives as “small” additions for a second segment. Point to the named user and the cut list.
- A Wizard of Oz MVP needs a person with time to do the manual work; budget that time explicitly or the experiment collapses.
- MVPs that collect personal data still need consent, secure storage and deletion paths; cutting compliance is not a scope option.
- Teams often build the impressive part (AI, automation) and fake the boring part that actually carries the value test. Check the riskiest assumption is the real one.
- “MVP” is not a licence for unmaintainable code in the parts that will survive; mark throwaway code as throwaway in the repo.
Verification
Confirm one named user can complete the flow end to end, each in-scope item is needed for that flow, every cut has a reason and a revisit trigger, the time box was set before scope, and the success and stop criteria use numbers observable with the expected number of users.
What the zip contains
SKILL.md plus the interface file below. Nothing runs on install.
agents/openai.yaml
Gives the Codex app a display name, a one-line description and a starter prompt for this skill.
interface:
display_name: "MVP Scoping"
short_description: "Test the assumption that could kill it, nothing more"
default_prompt: "$mvp-scoping Our v1 plan has grown to 30 features, cut it down to an MVP we can ship in six weeks" About this skill
Written and maintained by the Codex Skills editors to the same editorial standard as every skill here: a selective description, a real workflow, known pitfalls and a way to verify the work. First published , last updated . MIT licensed. Something wrong or out of date? Tell us.