The Yes Machine
Ask an agent whether to build your idea and it will say yes
Every time. Not because it is sycophantic, but because of how the question arrives. I got tired of finding this out on day three, so I wrote the disagreement into a file instead of hoping for it in a prompt.
I have more ideas than weekends. The pipeline from a thought to a thing I can actually poke at is the same every time: get the idea out of my head, work out whether it is worth the days, scaffold it, cut it into chunks, build. I had been retyping that as prompts, and getting a slightly different process every time.
The part that kept failing was the second step. I would open a session, paste four paragraphs of enthusiasm, and ask whether it was worth building. I never once got a no. I would get a plan — a good plan, usually, with phases and a stack and a sensible order.
That is not the model being agreeable. It is the question being badly posed. By the time the idea reaches the agent it has already been framed as a thing to build, written by someone who was excited enough to write it down, with no stated cost to weigh it against. There is nothing in the context that could produce a no. Asking harder does not help. "Be critical" gets you a plan with a risks section.
The failure mode this produces is expensive and quiet. You do not lose a day to a bad idea. You lose three days to a fine idea that needed a paid dataset you were never going to buy, and you find that out in milestone four when the free tier runs out.
So the design goal was narrow: make it possible for the process to return "don't build this", and make that verdict come from something other than my mood on the day. Everything else in the skill — the milestones, the roadmap, the context files — is scaffolding around that one requirement. It is called idea-to-mvp, it is a Claude Code skill, it is MIT, and it is about 850 lines of Markdown with no dependencies at all.
Key takeaway
"An agent cannot tell you an idea is bad if nothing in its context says what "bad" costs you. The fix is not a better prompt, it is a file it can measure against."
The File You Fill In
Write down what you actually own, while you are bored
One gitignored file called profile.md. The skill refuses to run without it. It exists so that the verdict is measured against something you wrote when you were not in love with the idea.
Three things about you cannot be guessed, and getting any of them wrong quietly ruins the gate.
Machine. Where your projects live, what OS and shell, which runtimes are actually installed, and whether these projects ever get hosted or just run locally for one person. A scaffold built for the wrong setup burns a milestone before anything interesting happens. Mine says local only, no hosting, Windows and PowerShell with Git Bash available.
Budget. Not a number — two lists. What you already pay for and can therefore use freely, and the hard ceiling for anything new. My budget section says this machine, home internet, Claude Code, a VPN, and then: nothing new by default, a one-off small spend only if it is the single thing standing between the MVP and a real answer, and ask first. It also lists what is explicitly off limits, which for me is paid data and lead databases, paid enrichment APIs, paid hosting, and anything with a recurring per-seat cost.
What counts as value. This is the one people skip and it is the one that matters. The options are direct money, indirect money, reusable capability, open source value, and learning a specific technique. You pick which are real for you and say why. A kind of value you did not list does not count for your projects even if it is genuinely valuable in general. And "interesting" is never on the list, because "interesting" is the word that approves everything.
Optional, and the most useful field in the file: reference projects. Absolute paths to two of your own repos whose layout should be copied. A real repo beats any written recipe, because the agent can go and read how you actually lay things out rather than following a description of it.
The uncomfortable design consequence is that a lazy profile produces a gate that approves everything, which defeats the entire skill silently. There is no way to detect that from inside. So the README says, in the loudest formatting GitHub allows, to read the profile the agent writes for you before trusting a single verdict it produces.
profile.md is gitignored, and that is not the same as safe
It holds machine paths and account details, which is fine because it never leaves the disk — it survives git pull and is never tracked. Secrets are different. API keys belong in each project's own .env, never in the profile, and the setup instructions say so explicitly. I verified against the full commit history that it has never been committed.
Key takeaway
"The profile is written once, when you are indifferent. Every verdict afterwards is measured against that indifference rather than against today's enthusiasm."
Four Ways To Say No
The kill criteria, and the value test behind them
Any one of these firing means the verdict cannot be BUILD. They run after research, not instead of it — the phase explicitly bans validating from priors, and "probably exists" does not count as having checked.
Budget — needs money you have not got
A paid API, paid data, paid hosting or paid compute with no free-tier or local path inside what the profile says you already own. The rule is deliberately strict: quote the relevant budget line in the verdict, assume nothing beyond it, and never quietly design around a paid key that does not exist. If a free tier exists but is too small to actually test the idea, state the number and kill it anyway.
Wall — a technical blocker with no way through inside a day
Login-walled data with no API, aggressive bot detection, captcha, rate limits that make the experiment impossible, data that simply is not public. This is the criterion that killed a Product Hunt scraping idea for me before I wrote any code, and the memory of it shows up later as a line in a different project's validation file noting that those particular walls do not exist there.
No learnable signal — a working build would teach nothing
If you cannot complete the sentence "after the MVP we will know X", there is nothing to validate and the build is decoration. This is the criterion that most often reshapes an idea rather than killing it, because forcing the sentence usually reveals that the real unknown is much smaller than the thing you were about to build.
Already solved — free, good and maintained, by someone else
Search for it properly and name what you found. If it exists but is bad or paid, say exactly which part is bad or paid, because that gap is usually the actual project. On my one real run this section names four existing tools, says what each one does instead, and identifies the specific thing none of them do.
And then the value test, scored against your own list
Passing all four kill criteria is not a verdict. The idea still has to hit one of the value types your profile lists, by name, in writing. If nothing applies, the verdict is DON'T BUILD even though nothing is technically blocking it. This is the step that catches the genuinely buildable idea that is just not worth your weekend.
BUILD-REDUCED is the preferred outcome, not the consolation prize
Three verdicts exist: BUILD, BUILD-REDUCED and DON'T BUILD. BUILD-REDUCED means the idea is big but its unknown is small — build only the two milestones that answer the unknown, then stop and look at what came out. Whenever an idea is large and its risky part is narrow, this is the right answer, and the verdict is written to a file with its evidence rather than asserted in chat.
Key takeaway
"Research first, then four criteria, then a value test scored against your own list. The verdict lands in a file with the evidence that produced it, so it can be argued with later."
State On Disk
The conversation is the worst place to keep a project
Sessions end. Context windows compact. Neither is under your control, and both destroy the thing you most need on day three — knowing exactly where you are. So no phase in this skill returns its answer to the chat. Every phase ends by writing a file, and that file is what the next phase reads.
Six files, each with one job
A fresh session in an empty terminal reads these and knows the state of the project.
- idea.md — your raw thought, moved in verbatim and never rewritten. Your own words stay the primary source; the agent's reading of them goes somewhere else.
- validation.md — the verdict, and the research that produced it. Prior art, cost path with real numbers, each kill criterion marked pass or fail.
- roadmap.md — milestones, subtasks, and an append-only progress log. This is the source of truth for what is done.
- questions.md — things that genuinely need a human, written as OPEN entries with options and a recommendation.
- decisions.md — append-only, so a settled question does not get re-litigated three sessions later by an agent with no memory of settling it.
- side_notes.md — things noticed and deliberately not built. Without this file, good observations either derail the milestone or get lost.
context/
context/
idea.md your raw thoughts, verbatim
validation.md the verdict and the evidence behind it
roadmap.md milestones, subtasks, progress log <- source of truth
questions.md things that need you; answered inline
decisions.md append-only, so nothing gets re-litigated
side_notes.md noticed but deliberately not builtThe skill file is a router, not a manual
Claude Code loads a skill's description by default and the body only when it matches. Everything past that is the skill's own choice.
- SKILL.md is 90 lines: how to work out which phase you are in, and the rules that hold in every phase. Nothing else.
- The phase detail lives in five reference files that are read only when that phase actually runs — validate, plan, build, stack, setup.
- So a build session never loads the validation criteria, and a validation session never loads the stack recipe. The context you are spending is the context that phase needs.
- Phase detection is a four-row table read against the disk: no context/ means validate; a verdict but no roadmap means plan; a roadmap means build the next milestone.
- A DON'T BUILD verdict on disk is itself a routing rule — the skill stops, reports the verdict, and offers a reduced scope rather than quietly starting work.
One command, no arguments, because you will not remember
The phase you are in is a property of the folder, not something you should have to recall.
- /mvp on its own works out where the project is from what is on disk and continues from there.
- Explicit overrides exist for when you disagree: /mvp validate, /mvp plan, /mvp build, /mvp status.
- /mvp status reads the roadmap and questions files and reports milestones done over total, what is next, and which OPEN questions are blocking work. It changes nothing.
- The skill says which phase it picked in one line before doing anything, so a wrong guess is visible immediately rather than after it has written files.
Key takeaway
"Any conversation, on any day, can resume the project by reading six Markdown files. The chat is a place where work happens, not a place where state lives."
Sizing A Milestone
Three to five subtasks, and the risky one goes second
Two rules do almost all the work here. One is about size, and exists because oversized milestones fail invisibly. The other is about order, and exists because the thing most likely to kill your project should not be the last thing you attempt.
A milestone is three to five verifiable subtasks. That is roughly one conversation of real output, which makes it one commit and one roadmap update. If it will not fit in five, it splits, and the rule says explicitly that there is no exception for "but they are all small". Four to seven milestones gets you to MVP. If your plan needs twelve, the MVP is defined wrong, not the milestones.
The load-bearing word is verifiable. Every milestone carries a Verify line that says how you will know it worked — a command that runs, a test that passes, an artefact you look at. If you cannot write that line, the milestone is not defined yet. It is a wish with a checkbox next to it, and an agent will happily tick it.
The unproven part goes into milestone two or three, never last. This is the ordering rule, and it is the one I would keep if I could keep only one. The natural instinct is to build the boring, certain infrastructure first because it feels productive, and to leave the part you are unsure about until the end because it is hard. That ordering guarantees you discover the dead end on day three with three days of scaffolding built on top of it. Inverted, you find out on day one, when the sunk cost is an afternoon.
There is a third rule that only applies to a specific class of project, and it took a real failure to arrive at. For projects whose entire value is the quality of an output — a score, a ranking, an enrichment, a scrape's completeness — the final milestone iterates for real: a named metric, the exact command that measures it, a baseline taken before anything changes, a target, and a hard cap of five iterations.
The cap is there because "keep improving it" has no stop condition, and an agent asked to keep improving something will always find something to say it improved. What you get without a cap is a confident 10/10 on a metric nobody measured. What you get with one is a number, and a file explaining why it is that number.
One milestone per run is the checkpoint
The build phase does exactly one milestone, updates the roadmap, commits, and stops — even when it could obviously keep going. That stop is the entire mechanism: it is where you read what happened before it compounds. If you want them back to back, wrap it in /loop /mvp build, which runs milestones consecutively while each one stays individually reviewable.
Key takeaway
"Size the milestone to a conversation, force the risky part early, and refuse to write one you cannot say Verify about."
Never Stall, Never Guess
Two failure modes, one file between them
When an agent hits something that genuinely needs a human it does one of two bad things: it stops and waits, wasting the session, or it guesses and builds on the guess. Both are avoidable, and the fix is the same file.
When the build phase hits something that actually needs me, it writes an OPEN entry into questions.md with the options laid out and a recommendation attached. Then it parks only the subtasks that entry blocks, and finishes the rest of the milestone.
I answer inline, underneath the question, whenever I next look. The next run picks up the answer and unparks the work. Nothing is ever guessed on an open question, and nothing ever stalls waiting for one. The asymmetry matters: a stalled session costs you the whole session, while a parked subtask costs you one subtask.
The rule sitting next to it is the one I trust the most, because it is the one that makes the roadmap worth reading at all. Never invent progress. A subtask is marked done only when it ran, or its test passed, or its output was inspected. If something was skipped or half-finished, the roadmap says so in those words.
I want to be careful about what that is. It is a standing instruction reread at the start of every build phase, not a guarantee — nothing in a Markdown file can force honesty out of a language model. What it does buy is a record that is allowed to be unflattering, and on my one full run it took the offer. The roadmap contains a milestone annotated "took three attempts" with what failed each time. It contains a correction noting that a milestone had been written against the wrong pixel target and was measured against a number that no longer applied. It contains a note that a threshold in the first draft was set too high and let a near-duplicate through.
None of that is impressive. All of it is more useful than a clean row of ticks, because three weeks later the clean row tells you nothing and the correction tells you exactly why a constant is the value it is.
Key takeaway
"A parked subtask costs a subtask. A stalled session costs a session. A fabricated tick costs you the ability to trust any of the others."
One Real Run
TechBriefReels, from raw thought to a 36.8 second video
This is the project I have taken through every phase of the skill, so it is the only evidence here that is not a design argument. The idea: take one story out of a daily tech brief, render it as a page I control, and film that page as a vertical scroll with voiceover and captions.
Validation returned BUILD-REDUCED, and cut most of the project
Value claimed: reusable capability. The verdict named it, and named what it was cutting.
- The gate found the real unknown and it was much smaller than the idea: can a page made mostly of typography hold 35 seconds of scroll? Checking the data sharpened it — 7 of the 10 stories in that day's edition carry an image, but they are og:image share cards, not screenshots, and one generic advisory graphic appears on two different stories.
- Prior art was searched properly and four tools were named — OpenShorts, YumCut, AI-Content-Studio, and a set of faceless-reel SaaS products. Each was ruled out for a stated reason: three clip long video into shorts, the closest one generates its visuals from a prompt rather than rendering a designed page from verified data.
- Cost path came out at zero new spend, itemised line by line against the profile's budget: story content already on disk, Playwright and Chromium already installed, edge-tts free, ffmpeg on PATH, fonts reusable from a neighbouring project.
- Cut deliberately, and listed as cut: every source adapter except reading a local file, the scheduler, the job queue, the database, dedup, publishing, export bundles, any UI at all, and batch rendering.
- Kept: one story, one page, capture, script, voice, caption, compose, QC, one mp4 on disk. "Stop after the sample video and look at it."
Four milestones to MVP, with the risky one second
The ordering rule applied to a real project, and the unknown got answered on day one.
- M1 — story in, page out. Read the edition JSON, render to a vertical column, open it at the measured viewport, tune height by content volume rather than by scaling.
- M2 — filmed, and the real question answered. Capture as one tall PNG, pan at exactly 107 px/s snapped to whole pixels, write a silent mp4, and record the verdict in decisions.md. This is milestone two because it is the milestone that could have ended the project.
- M3 — voice and captions. Build a script from the story's own fields, generate narration with word boundaries, emit one caption event per word, compose everything in a single ffmpeg graph.
- M4 — does it clear the quality floor. Run the QC checks, check the caption text against four measured rules, and watch it beside a real reference reel while writing down the differences in plain words.
- The roadmap records that M1 was written against a target that later changed, and that M3 took three attempts because narrating the full body per story left two of three stories with no voiceover.
The artefact, and the checks it had to pass
out/sample.mp4 — 36.8 seconds, 1080x1920, three stories from one edition.
- Every automated check passed, and the gate runs inside the build command rather than as a separate step someone has to remember.
- Answer to the actual question: yes, visually. Section shape changes roughly every 600px — headline, standfirst, figure, bordered panel, accent-washed pull quote, list, source line — and at 107 px/s that is a new shape every five or six seconds.
- The comparison that made it worth writing down: this is better raw material than the average GitHub README, which is mostly badges and code fences.
- MVP was reached at M4. Six further milestones were built afterwards, once the unknown had an answer — dedup, publication-grade page design, pinned chrome — which is the order I wanted and not the order I would have chosen unaided.
QC output
pass has an audio stream present
pass duration 36.8s (want 28-48)
pass loudness -15.1 LUFS (target -14, want -17.5..-12)
pass no black frames none
pass no long freeze none
pass captions cover the clip 62% of 36.8s (want >=45%)Key takeaway
"The verdict cut a multi-week project down to four milestones that answered one question, and the answer arrived in milestone two."
The Honest Ceiling
Every check passed, and the file says it is not good enough
This is the part of the run I care about most, and the reason I think the skill is worth publishing. The last thing the build phase writes is ceiling.md — best number reached, what was tried, what going further would take. On this project it is not a victory lap.
The reel passed all six quality checks. The page held the scroll. The question the MVP was built to answer got a yes. By every measure the milestone defined, it worked.
The ceiling file opens by confirming that, and then spends most of its length on what the artefact does not show.
"The content is information, not a product." The reference channel this format was borrowed from films a thing you can go and download, so the reel ends with a want. This reel ends with three vulnerabilities and a pricing change. It is genuinely useful and it is not the same emotional shape, and the file states plainly that no amount of typography fixes that.
The sample rests on one day of input. That day's edition was security-heavy, so two of the three chosen stories were the same CVE from different angles and the reel says the same product name twice in thirty seconds. The file notes that the neighbouring project has subject-overlap dedup for exactly this and that this one had none, which is how that became a later milestone.
The narration reads headlines, it does not sell. That was the right call — the page carries the detail and the voice cannot fit sixty-six words of explanation across three stories — but a headline is a statement, not a hook. Four caption rules borrowed from a different channel are listed, and the file explains why most of them cannot apply here: "avoid developer-category words" is unusable when the subject is a CVE in a database tool.
And the line that justifies the whole mechanism: nothing here has been measured against an audience. Every constant in the project is borrowed from a channel filming a different kind of thing. The neighbouring project at least matched real reference footage frame by frame. This one has no reference at all.
I did not write any of that. It is the output of a milestone whose instructions say that an honest ceiling counts as a successful outcome, stated in exactly those terms and stated up front, because the alternative is a fabricated 10/10. A build phase told to keep improving something will keep reporting improvements. A build phase told that a stated limit is a valid ending will sometimes tell you the thing you needed to hear on day one.
Why the stop condition has to be written before the iteration starts
A metric, the command that measures it, a baseline taken before anything changes, a target, and a hard cap of five iterations — all decided in advance. Decided afterwards, every one of those numbers gets chosen to make the result look good, and the ceiling file becomes a press release.
Key takeaway
"The most valuable output of the run was a file explaining why the thing that passed every test still is not the thing I wanted."
What It Does Not Do
Where I would push back on my own tool
It is one skill, one author, and one project taken end to end. Here is what I would ask about it if someone handed it to me.
One complete run is not a track record.
Solution - TechBriefReels is the only project that has been through every phase with the current files. Older projects on my disk have a context folder but in earlier, hand-rolled shapes that predate the skill. So the evidence here is one detailed run plus a design argument, and I would rather say that than imply a portfolio of validated projects.
The gate has never returned DON'T BUILD in a file I can show you.
Solution - It has returned BUILD-REDUCED, which cut most of a project, and it killed a Product Hunt idea on the Wall criterion before a context folder existed to record it. But there is no DON'T BUILD verdict written to disk in my projects folder, and a gate that has not yet said its hardest word in public is a gate with something still to prove.
A lazily filled profile silently disables the whole thing.
Solution - This is the sharpest edge in the design. Answer the budget question with a shrug and you get a gate that approves everything, and nothing in the skill can detect that from the inside. The only mitigation is documentation — the README says in the loudest formatting available to read the profile the agent writes before trusting a verdict from it.
None of the rules can force honesty out of a language model.
Solution - Never invent progress is a standing instruction, not a mechanism. What the design can actually do is make honesty cheap and structurally available: give the model a file where an unflattering note belongs, a verdict vocabulary that includes no, and a milestone whose stated success condition is an honest limit. It took all three on the one run I have.
It is a Claude Code skill, so /mvp only exists there.
Solution - The routing and the slash command are a Claude Code feature. Everything else is plain Markdown with no dependencies, so SKILL.md and the five reference files work as a playbook in any agent — you point it at the files and name the phase yourself instead of letting the folder decide.
Key takeaway
"The design argument is stronger than the evidence base right now, and the honest version of this write-up says which is which."
Installing It
Clone, link, answer four questions
Windows, macOS and Linux, zero dependencies
The whole skill is Markdown plus two installer scripts. Nothing to build, nothing to npm install, nothing that runs in the background. The installers symlink the clone into ~/.claude/skills/mvp, so git pull updates the skill in place and any edits you make stay versioned in your own checkout.
Clone it and run the installer
Either script links the repo into the Claude Code skills directory. If you would rather not have a symlink, copying the folder to ~/.claude/skills/mvp works identically — you just lose the git pull update path.
macOS / Linux
git clone https://github.com/Sharon-rosario/IDEA-TO-MVP.git
cd IDEA-TO-MVP
./install.shOr hand the whole job to the agent you already use
Any agent can perform the install, even though the skill itself runs in Claude Code. Paste this and it clones, links, and interviews you for the config file. The README carries the full version of this prompt, including the instruction not to put any keys in the profile.
Command
Install the idea-to-mvp Claude Code skill from
https://github.com/Sharon-rosario/IDEA-TO-MVP
Clone it into wherever I keep projects, run install.ps1 (Windows) or
install.sh (macOS/Linux), then read references/setup.md and follow it to
create profile.md — ask me the four questions it lists, write the file,
and show me its full path so I can correct anything.
Don't put any API keys or secrets in profile.md.Read the profile before you trust a verdict
On first run the skill resolves the real absolute path on your machine and offers to write profile.md from four questions. Read what it produces, especially the budget and value sections. Thirty seconds, and it is the difference between a gate that can say no and a gate that cannot. Edit that same file whenever your budget, machine or stack changes — there is no reinstall.
Then run
cp ~/.claude/skills/mvp/profile.example.md ~/.claude/skills/mvp/profile.mdThen run it from the project folder
Drop your raw thoughts into a Markdown file in an empty folder and run /mvp. It will find the file, move it into context/idea.md unchanged, research the idea, and write a verdict. If the verdict is DON'T BUILD, that is the feature.
Commands
/mvp # works out where the project is, continues from there
/mvp validate # research the idea -> BUILD | BUILD-REDUCED | DON'T BUILD
/mvp plan # break the MVP into right-sized milestones
/mvp build # build exactly one milestone, then stop and report
/mvp status # what's done, what's next, what's blockedKey takeaway
"Two files decide whether this works for you: the profile you fill in, and the verdict it produces. Read both."
Quick Answers
Questions people ask about this
Short answers to the things that come up most, about the skill and about writing skills in general.
- What is a Claude Code skill?
- A folder with a SKILL.md file in it, living under ~/.claude/skills/. The frontmatter carries a name and a description, and that description is the only part loaded into context by default — Claude reads it, decides the skill is relevant, and only then pulls in the body. Anything else in the folder is loaded on demand by the instructions themselves. That progressive disclosure is the whole design constraint: a skill is not a prompt you paste, it is a router that decides which of its own files to read.
- Why does an agent always approve your side-project idea?
- Because you wrote the prompt while you were excited about it, and the idea arrives already framed as a thing to build. "Should I build X?" is not a question an agent answers well — there is no cost in the context to weigh it against, so it plans. The fix is not a better prompt. It is a separate file, written when you are not excited, that lists what you actually pay for, what you have on your machine, and which kinds of return count as value for you. The gate measures the idea against that file rather than against your enthusiasm.
- What are the four kill criteria in idea-to-mvp?
- Budget: the idea needs a paid API, dataset, host or GPU with no free-tier or local path inside what your profile says you already own. Wall: a hard technical blocker with no workaround inside a day, like login-walled data or aggressive bot detection. No learnable signal: you cannot write down "after the MVP we will know X", so a working build teaches nothing. Already solved: a free, good, maintained tool does this today. Any one of the four firing means the verdict cannot be BUILD.
- What does the BUILD-REDUCED verdict mean?
- That the idea is big but its unknown is small, so only the part that answers the unknown gets built — two milestones, then stop and look at the artefact. It is the preferred outcome rather than a consolation prize. On the one project I have run end to end, the verdict cut every source adapter, the scheduler, the database, the dedup and the publishing layer, and kept exactly the path from one local JSON file to one mp4 on disk. The MVP was reached in four milestones. The cut features got built afterwards, once the unknown had an answer.
- Why keep project state in files instead of the conversation?
- Because a conversation ends and a context window compacts, and neither event is under your control. If the roadmap only exists in chat history, day three starts by re-explaining day one. idea-to-mvp writes every phase output to context/ — idea.md, validation.md, roadmap.md, questions.md, decisions.md, side_notes.md — and each phase begins by reading them. A fresh session in an empty terminal can run /mvp and know exactly which milestone is next and what is blocking it.
- How big should an agent-built milestone be?
- Three to five verifiable subtasks, which is about one conversation of real output, ending in one commit and one roadmap update. The hard part is the word verifiable: every milestone carries a Verify line, and if you cannot write one, the milestone is not defined yet, it is a wish. Ordering matters as much as size — the risky, unproven part goes in milestone two or three and never last, so a dead end surfaces on day one instead of day three.
- What stops an AI agent from claiming work it did not do?
- An explicit rule that a subtask is only marked done when it ran, or its test passed, or its output was inspected, and that anything skipped or half-finished gets written into the roadmap in those words. It is not a guarantee, it is a standing instruction reread at the start of every build phase. In practice the useful side effect is the record it leaves: the roadmap on my one full run contains lines like "took three attempts" and a correction noting a milestone was written against the wrong pixel target. Neither is flattering, and both are more useful than a clean checklist.
- Is idea-to-mvp open source, and can I use it?
- Yes — MIT, on GitHub, zero dependencies. Clone it, run install.ps1 or install.sh, and it symlinks into ~/.claude/skills/mvp so git pull updates the skill. The one file you fill in is profile.md, which is gitignored and never leaves your machine. It runs as a slash command in Claude Code, but SKILL.md and the references/ files are plain Markdown, so any agent can follow them as a playbook — you just lose the /mvp routing and have to name the phase yourself.
- What is a ceiling file and why write one?
- For projects whose value is the quality of an output — a score, a ranking, a scrape's completeness — the last milestone iterates against a metric with a stated baseline, a target and a hard cap of five iterations. Then it writes ceiling.md: the best number reached, what was tried, and what going further would take. The point is that an honest ceiling counts as a successful outcome. Without that stated up front you get a fabricated 10/10, because "keep improving it" has no stop condition and an agent will always find something to say it improved.
References
The repo and the docs behind it
Everything described here is public. The skill is MIT licensed and the whole thing is readable in about fifteen minutes.
Sharon-rosario/IDEA-TO-MVP
The skill itself — SKILL.md, five phase references, the context templates, and both installers. MIT, zero dependencies, Windows and macOS and Linux.
https://github.com/Sharon-rosario/IDEA-TO-MVP
Claude Code — Agent Skills documentation
How skills are structured, how the description field drives loading, and how progressive disclosure of reference files works.
https://docs.claude.com/en/docs/claude-code/skills
Claude Code — Slash commands
The mechanism behind user-invocable skills and the /mvp entry point described in chapter four.
https://docs.claude.com/en/docs/claude-code/slash-commands
Claude Code overview
The agent this skill runs inside. Useful if you are evaluating whether the playbook is worth adapting to a different tool.
https://claude.com/claude-code
Key takeaway
"Clone it, read SKILL.md first, and if you only steal one idea from it, steal the profile file."