Use when the user gives a short, rough, or one-line idea for an app, tool, script, or feature and wants it built end-to-end without being asked clarifying questions. Triggers - "build me...", "create an app that...", "I want a tool for...", "quick app for...", minimal specs, seed ideas.
68
83%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Passed
No known issues
Turn a minimal seed idea into a working, tested, runnable application in one autonomous run. Never ask the user anything (single exception in 4.4). Decode the intent, amplify it, plan, decompose into stories, then drive every story to Done inside a verification loop. The deliverables are files on disk plus a short chat summary.
Seed idea: the skill argument; if empty, the user's message.
blocked (never silently proceed on those).README.md and any --help/about text, not only in 01-intent.md's assumptions table. A claim that is optimistic in user-facing text and hedged only internally is a defect, caught in the 4.3 quality bar.If the request is not to build/create software (a question, an explanation, debugging an existing repo), say so in one line and answer normally without this pipeline.
Everything lives in builds/<slug>/ under the current directory, as one git repo rooted at builds/<slug>/ (not just app/ — see 4.0):
builds/<slug>/
00-seed.txt # the seed idea, verbatim, written first
01-intent.md # Step 1
02-plan.md # Step 2
03-stories.md # Step 3
04-ledger.md # Step 4 — live status board
evidence/ # Builder oracle runs, per story — COMMITTED (proof-of-work)
adversary/ # Adversary oracle re-runs + scratch — gitignored, never app/
app/ # the productSlug = kebab-case from the seed. If builds/<slug>/ exists: same seed in 00-seed.txt → resume from the ledger; different seed → append -2, -3, …
01-intent.mdAmplify the seed through the Council into a decisive brief (≤ 1 page, no options, no TBD, no "could"):
| # | Assumption | Material? | (material = hard to undo).02-plan.mdapp/ layout.| ID | Task | Files | Definition of Done | — every DoD is testable, no "etc."03-stories.md| ID | Title | Implements | Deps | Increment | Status |. Increment 1 = walking skeleton. Every plan task appears in some story's Implements (100% coverage, no orphans).### US-<n> — <title><role>, I want <capability>, so that <benefit>.Scenario: blocks — happy path plus at least one negative/edge case. No story may skip the negative case; if truly none applies, write Scenario: N/A — <one-line reason> explicitly rather than omitting it.- [ ] items derived 1:1 from the Gherkin. Oracle naming: name the oracle by behavior, not by a literal test function name that doesn't exist yet — e.g. "a test proving grade 1 on interval=10/EF=2.5 yields EF≈1.96", not test_ef_grade1. The exact test name is filled in — and cross-checked against the real file — only when the story closes (see 4.1 step 3).- [ ] list. Files: paths touched.Standards: INVEST, vertical slices, zero TBDs, each story completable in one focused session (split anything larger). Nice-to-haves go to an "Out-of-MVP backlog" section that the loop never picks up.
Embody the senior engineer for the chosen stack. Two minds run this loop:
04-ledger.md from this exact template:# Ledger — <slug>
seed: <verbatim seed>
stack: <stack> | toolchain: <available|unavailable> | started: <timestamp>
SCOREBOARD: done=0 self=0 unverified=0 blocked=0 todo=<N>
| ID | Title | Deps | Status | Attempts | Evidence | Last result |
|----|-------|------|--------|----------|----------|-------------|
## Journal
## ImpedimentsStatus values: todo / doing / done / done-self / done-unverified / blocked. Evidence column: the path to that story's evidence dir, filled in as soon as the first oracle runs — this is what the 4.2 commit-sweep and evidence-sweep check against.
2. Toolchain probe: run the stack's version + test-runner commands; record toolchain: available|unavailable in the header.
3. git init at builds/<slug>/ (the whole tree — docs, evidence/, and app/ — is one history, so the proof-of-work is never orphaned from the code it proves). Write a stack-appropriate .gitignore that excludes app/'s deps/build output (node_modules/, dist/, .venv/, etc.), .env*, and adversary/ (QA scratch and re-run logs are regenerable and not part of the shipped deliverable — evidence/ is the committed proof; adversary/ stays out of history so it never bleeds into a story commit). Set a repo-local commit identity if none exists.
todo story whose deps are done/done-self/done-unverified. Skip finished stories (idempotent resume).app/ → author the tests the Gherkin implies, using real test names (this is where a behavior-named checklist item gets its concrete name).pytest --collect-only -k <name> returns exactly one match) — re-run it, don't trust memory. Prove: run the oracles — test runner, compiler/type-check, lint, plus a real smoke run of the app when the story is user-facing. Save every run to evidence/US-<n>/<seq>-<oracle>.txt. Evidence format contract (mandatory): each Builder evidence file's first line is COMMAND: <exact command run> and its last line is EXIT_CODE: <int> — a file missing either, or with a blank exit code, does not count as evidence and the tick referencing it is invalid. Tick each checklist item only by citing its evidence file path.US-<n>: <title> commit in the repo root (builds/<slug>/), touching only app/ (plus that story's evidence/US-<n>/); verify git status is clean of stray adversary/ files before committing. The Adversary re-runs oracles against files on disk, so it must verify a stable committed state, never a half-written working tree — committing first is what makes that possible. Do any history-reconstruction/rebasing only when NO Adversary is running — otherwise an Adversary can read a mid-rebase tree and report a false failure against code that never ships.app/ path, instructed: "Verify the committed state at HEAD, not any later uncommitted edits — if unsure, git stash -u first or check out the story's commit in a scratch worktree. Re-run the oracles yourself from adversary/US-<n>/ as your scratch dir — never write into app/. Save each re-run with the COMMAND:/EXIT_CODE: contract to adversary/US-<n>/ (both fields must be present; for your own QA files EXIT_CODE need not be the literal last line — a trailing note is fine). Try to find a failing criterion; report pass/fail per item." Fail-closed: any Adversary fail reopens the story (consumes an attempt); the fix lands as a follow-up commit.study. Re-verify that specific path is now fixed, then independently re-run the full checklist as usual."done-self — never silently treat a dead Adversary as a pass.done-self.| Result | Status | Next |
|---|---|---|
| All items evidence-proven + Adversary-confirmed in a fresh context (first attempt or after one respawn) | done | update ledger, next story |
| Proven, but Adversary ran same-thread (no subagent, or died twice) or a criterion is judgment-only (pure UX) | done-self | update ledger, next story |
| Toolchain genuinely unavailable (re-probe once before degrading) | done-unverified | code+tests authored & committed, next |
| Any item fails (Builder OR Adversary) | attempt++ | diagnose, fix, re-prove, follow-up commit |
| 3 attempts exhausted, or needs a real secret/paid resource/destructive action | blocked | log impediment, next story |
Attempt accounting (explicit): the initial build-and-prove pass (steps 2–5a) is attempt 1. Each subsequent fail→fix→re-prove cycle increments the counter. A story is blocked once attempt 3 also fails — i.e. at most 2 retries after the initial attempt, 3 genuine tries total. Security-tagged stories (auth, secrets) never reach done on mocked credentials — cap at done-self with a journal note.
7. Update the ledger — the story's row (including the Evidence column), the SCOREBOARD line, and a journal entry (≤ 8 lines: what changed, oracle results, key ruling). The code is already committed (step 4); this is bookkeeping only.
evidence/. Any story whose oracle no longer passes → reopen (todo) and back through 4.1.done/done-self story, git log --grep "^US-<n>:" must return at least one commit AND git show --stat on that commit must touch at least one file the story declared in its Files list. A commit that exists but contains none of the story's code (its code was bundled into a neighbor's commit) fails the check and the story is reopened. Existence alone is not integrity — a bare grep proves a commit exists, not that it holds the story's code; this closes that gap.01-intent.md and confirm it is literally present and working in the shipped app/ — invoke it, don't just find its function. Any feature that was silently dropped or quietly narrowed (a promised add command that never shipped, a "directory of decks" that became a single --deck file) is either implemented as a new story or explicitly moved to "Out of scope" in 01-intent.md with a journal entry saying why. A promise in the intent brief that the app doesn't keep is a defect, not a detail.blocked story gets up to 3 fresh-approach retries (different strategy each time; max 6 total attempts per story, per the v3 attempt accounting above).README.md in app/ with exact setup/run/test commands that actually work on this machine's real toolchain — verified by running them verbatim from a fresh clone. If the box is uv-only, the README says uv, not pip; a command that fails as written (even if it would work elsewhere) is a docs honesty gap, not a portability nicety. Also, per rule 3, state any narrowed superlative claim honestly, not just achieved-sounding.01-intent.md's "Top 3 usage scenarios" step by step as a real user would, not just "the exit code was 0" — this is what catches a feature that technically passes its unit tests but doesn't deliver the promised experience (e.g. a flashcard app that shows the answer next to the question has no real reveal step, even if all tests pass). Capture this replay as evidence too. Portable-path rule: if you generate a standalone smoke script, it MUST resolve paths relative to its own location (or take them as arguments) — never hardcode an absolute path back to the build dir. A smoke script with a baked-in cwd= silently tests the original copy no matter where it's run, so it passes even against sabotaged code — a safety net that can't catch regressions is worse than none. Verify by running it from a fresh clone in a different directory.done → declare "All stories machine-verified."done-unverified → do not claim success; report "authored but unverifiable — no toolchain."blocked → list each ID + precise blocker, then ask the user exactly once: "N stories need your input — take them up now?" If yes, ask minimal targeted questions scoped to the blockers, then run those stories back through 4.1.Slug + stack + one-line product statement; artifact paths; SCOREBOARD counts; how to run the app; material assumptions (including any narrowed superlative and its honest README wording); the 4.4 blocked question if any. Nothing else — the files are the deliverable.
6d8d33a
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.