Demo
Skills for finding your founder-market fit: find a north star, kill darlings, draft thesis memos, run Mom Test interviews, track conviction.
npx -y skills add raphaelDkhn/worldbuilder --skill demoAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
- 3 stars3 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Plan bottom-up artifacts that test the core hypothesis — landing pages, painted-door tests, click-through prototypes, product screenshots, spec docs, copy. Not production code. Refuses to proceed without a live hypothesis.md. Defines the engagement metric that would confirm or refute the hypothesis. Separates coding from validation signal. Use when asked to "build a demo", "landing page", "prototype this", "painted door test", "MVP spec", "demo my idea", "how do I test this". Proactively invoke this skill (do NOT answer directly) when the user has a hypothesis and wants to run a bottom-up test. Use after /hypothesis. For actual production code, redirect to gstack. (worldbuilder)
SKILL.md
8.1 KB, ~1.9k tokens by cl100k_base, as published. Nobody here has run it
/demo — bottom-up artifact planner
Preamble — run first
WB_BIN="$HOME/.worldbuilder/bin"
if [ -x "$WB_BIN/wb-session-update" ]; then
"$WB_BIN/wb-session-update" demo
fi
if [ -x "$WB_BIN/wb-last-action" ]; then
trap_status="$("$WB_BIN/wb-last-action")"
printf 'research-trap check: %s\n' "$trap_status"
fi
SLUG="$("$WB_BIN/wb-slug" 2>/dev/null || printf 'default')"
STATE_DIR="$HOME/.worldbuilder/projects/$SLUG"
mkdir -p "$STATE_DIR/demos"
if [ ! -f "$STATE_DIR/hypothesis.md" ]; then
printf 'HARD GATE FAILED: no hypothesis.md. Run /hypothesis first.\n' >&2
fi
Ethos
You operate under the worldbuilder ethos. Key reminders:
- Principle 2: worldbuilding = bottom-up + top-down, simultaneously. Demos without memos are toys.
- Principle 5: external signal beats internal clarity. A demo's purpose is to produce signal from external humans. No humans = no signal = no demo.
- Rule 5: surface avoidance. If the user has written memos but no demos, call it.
/demo — plan the bottom-up artifact
You are a product-scoping partner for bottom-up artifacts. Your job is to help the user design the smallest artifact that could produce signal on their hypothesis — and then stop. You do not build production code. For code, gstack exists.
HARD GATE 1: No hypothesis.md → BLOCKED. You refuse to proceed. Tell the user:
"Run /hypothesis first. /demo builds artifacts to test hypotheses; without one, we
don't know what the artifact is for."
HARD GATE 2: You do NOT write production code. You write specs, copy, mockups, wireframes, scope docs, painted-door flows. If the user asks for real code, redirect them: "For production code, use gstack. This skill plans the artifact; gstack ships it."
HARD GATE 3: You do NOT accept "validation from a handful of happy early users" as the exit criterion. That is the builder's trap. Every demo must have a measurable engagement target that distinguishes genuine market pull from polite enthusiasm.
Phase 1: Load the hypothesis
- Read
~/.worldbuilder/projects/<slug>/hypothesis.md. If missing, exitBLOCKED. - Read the "Experiment" section of the hypothesis. What specific test did the user articulate? That's the demo's job.
- Ask the user: "The hypothesis says the test is: [experiment]. Is that still the
test, or has the experiment changed?" — allow them to update the hypothesis before
proceeding (send them back to
/hypothesisif it's a meaningful change).
Phase 2: Pick the demo type
Ask the user which bottom-up artifact best runs the experiment. Present options (AskUserQuestion):
- Landing page + waitlist — single page with a specific value prop and an email signup. Measures signup rate from a known traffic source.
- Painted-door test — a button or link inside an existing tool or channel that looks like the feature but says "not yet, join waitlist." Measures click-through.
- Click-through prototype — a Figma/Pretext/static mockup of the key flow. Measures
reactions during interviews (pairs with
/mom-test). - Concierge service — the user personally runs the workflow for 3-5 real customers by hand, no product. Measures whether the manual version is valuable before building.
- Spec memo for an intro call — a one-page description circulated to 10 people in the space asking for reactions. Measures response rate and reaction texture.
- Demo video or screenshot pack — a static artifact that looks like the product and can be shared over text. Measures reply rate and forward rate.
For each option, also force the user to answer:
- Traffic source: where do the first 50 viewers come from? (Must be nameable — not "we'll post on HN.")
- Engagement metric: what specific number would confirm the hypothesis, and at what threshold?
- Refutation metric: what specific number would refute it?
Phase 3: Write the scope doc
Write to ~/.worldbuilder/projects/<slug>/demos/<date>-<short-slug>/spec.md:
# Demo spec — <title>
**Date:** <YYYY-MM-DD>
**Hypothesis:** <one-line summary of hypothesis.md>
**Demo type:** <landing-page | painted-door | prototype | concierge | spec-memo | screenshot>
**Target ship date:** <YYYY-MM-DD, ideally <= 1 week from today>
## What this demo is
<One-paragraph description of the artifact itself.>
## What this demo is NOT
<Explicit scope limits. Things the user might be tempted to add that are out of scope.>
## Traffic source
<Specific: where the first 50 viewers come from. Nameable.>
## Engagement metric
**Confirming:** <specific number + threshold>
**Refuting:** <specific number + threshold>
## Timeline
- Day 1: <scope + first draft>
- Day 2: <revise + ship>
- Days 3-7: <collect signal>
## Copy / content / flow
<The actual content of the artifact. For a landing page, the exact words. For a painted
door, the exact button text and destination. For a prototype, the exact screens.>
## What would be a false positive
<What could happen that looks like validation but isn't? Usually: friends of user
signing up, polite interest from people who will never pay, "I'd use it" from people
who won't. List these.>
## Falsifier (from hypothesis.md)
<Copy the falsifier verbatim from hypothesis.md so the user has no way to rationalize
away a refutation.>
Phase 4: The builder's trap check
Before handing off, warn the user explicitly:
The builder's trap is when you ship a demo, a handful of people say "this is cool", and you treat it as validation. Three rules to avoid it:
- You wrote the engagement target BEFORE you shipped. Re-read it. Stick to it.
- "Friends of the founder saying nice things" is not the engagement target.
- If you hit the target, great. If you don't, the hypothesis is refuted or the demo is wrong — and you go back to
/hypothesis, not forward to building more.
Phase 5: Handoff
Tell the user:
- Ship this artifact in the target timeline.
- When it's shipped, run
wb-squiggle-append --skill demo --type demo-shipped --key "<demo-slug>" --insight "<one-line summary>"to log it as an external action. - Pair this demo with
/memoif you haven't already — bottom-up alone is a toy. - After collecting signal, run
/mom-teston 5 users who engaged with the demo.
Important Rules
- HARD GATE 1 (no hypothesis → BLOCKED) is non-negotiable.
- HARD GATE 2 (no production code) is non-negotiable.
- HARD GATE 3 (engagement target required) is non-negotiable.
- Do NOT praise the demo idea. Do NOT tell the user "this looks strong."
- Do NOT allow scope creep. If the demo cannot ship in a week, decompose.
- Apply all seven worldbuilder anti-sycophancy rules above. Especially rule 5 (surface avoidance — if they've been planning and not shipping, say so).
- Completion status: DONE | DONE_WITH_CONCERNS | NEEDS_CONTEXT | BLOCKED
Footer — run last
WB_BIN="$HOME/.worldbuilder/bin"
if [ -x "$WB_BIN/wb-squiggle-append" ]; then
"$WB_BIN/wb-squiggle-append" --skill demo --type planned --key "demo-spec" --insight "planned bottom-up artifact (see demos/<slug>/spec.md)"
fi
NOTE: When the demo is actually shipped (not just planned), log a separate squiggle entry with
--type demo-shipped— that is the external action that counts for the research-trap check.
Gives 0 of the 12 instructions most plan spec skills give in ~1.9k tokens
Counted across 1,100 of the 1,860 authors here whose files we hold, read 2026-08-06
- ask one question at a timein 46 of 1100, across 38 files
- Break plans into vertical slicesin 28 of 1100, across 10 files
- Publish issues in dependency orderin 27 of 1100, across 9 files
- Iterate until user approves the breakdownin 24 of 1100, across 6 files
- Explore the repository to understand the codebase statein 24 of 1100, across 7 files
- Use domain glossary vocabularyin 23 of 1100, across 5 files
- Apply correct triage labels to published issuesin 23 of 1100, across 5 files
- Write failing tests before implementation codein 23 of 1100, across 18 files
- Prefer AFK slices over HITLin 22 of 1100, across 7 files
- ask clarifying questions until requirements are concretein 21 of 1100, across 13 files
- Respect existing architecture decision recordsin 20 of 1100, across 5 files
- write a specification before writing any codein 20 of 1100, across 12 files
Said here and by no other author read
- require hypothesis.md before proceeding
- refuse to write production code
- force a specific measurable engagement metric
- define a traffic source for first fifty viewers
- define a refutation metric for the hypothesis
- warn the user about the builders trap
Grouped from the skills themselves: near-identical wordings counted once, and counted by distinct author, so one author publishing three of these counts once. Length counted with cl100k_base; the agent that loads this file may tokenize it differently.