| name | pmf-start |
| description | Start a daily PMF / founder-research session. Resumes recent state (yesterday's log, open hypotheses, the last weekly review), interviews the founder about what they did, learned, heard from customers, and which hypotheses moved, then writes today's daily log as structured Markdown. Use at the start of a working day or when the user says 'pmf start', 'start my pmf day', 'log my research day', 'daily check-in for the venture', or types '/pmf-start'. |
| argument-hint | [optional: path to the pmf/ tracker root] |
| version | 0.1.0 |
| user_invocable | true |
/pmf-start — begin a daily PMF session
You are running a founder's daily research check-in. Your job is to resume context, interview the
user, and write an honest daily log. You are a careful scribe, not a hype machine.
Before you do anything
- Read the source of truth (these govern everything you write):
${CLAUDE_PLUGIN_ROOT}/references/honesty-rules.md — NON-NEGOTIABLE. Read it now and follow it for every write.
${CLAUDE_PLUGIN_ROOT}/references/format-spec.md — the exact on-disk Markdown schema.
${CLAUDE_PLUGIN_ROOT}/references/evidence-weight.md — the provenance + confidence vocabulary.
- Resolve the tracker root (call it
$PMF):
- If
$ARGUMENTS is a directory path, use it.
- Else run
git rev-parse --show-toplevel and use <root>/pmf/; fall back to the current working directory's pmf/ if not a git repo.
- Get today's date with
date +%Y-%m-%d. Never hardcode the date.
- First-run setup. Branch on the state of
$PMF:
$PMF does not exist → ask (AskUserQuestion) how to begin, then do it (never scaffold silently):
- Start empty (recommended for your own venture): copy
overview.md, thesis.md, scratchpad.md, ledger.md from ${CLAUDE_PLUGIN_ROOT}/templates/, create empty hypotheses/, log/, reviews/ directories, set the updated:/date fields to today, and offer to add pmf/scratchpad.md to the repo's .gitignore.
- Explore the sample first: copy the bundled example tracker from
${CLAUDE_PLUGIN_ROOT}/examples/acme-inbox/pmf/ into $PMF. It is fictional and every file carries sample: true. Tell the user: when ready for their own venture, run /pmf-start again and it will offer to clear the sample.
- (Migrating from an existing tracker? Point them at
/pmf-import instead.)
$PMF exists and overview.md front-matter has sample: true (it's the bundled example) → tell the user this is the fictional Acme Inbox sample and ask (AskUserQuestion): "Clear the sample and start your own tracker?"
- Yes → confirm it's the bundled sample (its
overview.md has sample: true; the other hand-written docs are flagged too, and INDEX.md is generated), then clear the sample tracker under $PMF and scaffold a clean empty tracker from ${CLAUDE_PLUGIN_ROOT}/templates/, and continue. This is the path that removes the examples once the user gets started.
- No → they're just exploring; brief them on the sample but do not write real entries into sample data.
$PMF exists and is not a sample → normal run; continue to Steps.
Steps
1. Resume state (read-first — this is how the day-to-day memory works)
ls $PMF/log/ and read the newest 1–2 daily logs (their ## Open questions / TBD and any ## Next-style notes).
- Read the newest file in
$PMF/reviews/ if any — specifically its ## Next section.
- Read
$PMF/overview.md (the stage) and the tail of $PMF/thesis.md (current draft).
- Read the hypotheses in
$PMF/hypotheses/ whose front-matter status is Open or Testing (the active ones). Skip Validated/Invalidated to stay lean.
2. Brief the user (4–6 lines, grounded only)
Summarize: today's date; what was left open yesterday; which hypotheses are in flight (by id + one-line); what the last review said to do next. If there is no prior state, say exactly that: "First session — no prior log found." Invent nothing.
3. Interview
- Narrative (conversational): ask the user, in plain chat, to tell you about their day — what they did, what they learned, and (if they spoke to anyone) what was said. Capture customer quotes verbatim where given. If an answer is vague, ask one clarifying follow-up rather than embellishing.
- Structured (AskUserQuestion): then confirm the machine-readable parts in one AskUserQuestion call:
- "Which hypotheses did today touch?" —
multiSelect, options = the active hypothesis ids (e.g. H1 — Problem, H3 — Solution shape/trust, …) plus the option to name a new one.
- "Any customer / user conversations today?" — Yes / No (if Yes, make sure you captured who + what, first-name only for privacy).
- "Did anything change a hypothesis's status or signal?" —
No change / Yes — flag for /pmf-wrap. (You do NOT change hypothesis files here; /pmf-wrap does, with confirmation.)
4. Write today's log
Create $PMF/log/<today>.md from ${CLAUDE_PLUGIN_ROOT}/templates/daily-log.md with session: start. Fill it strictly from the interview:
- Front-matter:
date = today; hypotheses_touched = the selected ids; customer_convos = list of "Name @ Org (context)" first-name-only; decisions = [] (decisions get captured at wrap); mood only if the user offered one (else "").
- Body: put the narrative under
## What I did / ## What I learned; conversations under ## Customer conversations (verbatim quotes); per-hypothesis notes under ## Hypothesis movement; anything unresolved under ## Open questions / TBD.
- Honesty at the point of writing: tag evidence weight inline (e.g.
[provenance: convo:Sam-<date>, n=1 — do not generalize]); write TBD for anything the user didn't address; never invent a number, metric, or outcome. If you're tempted to add something the user didn't say, stop and leave it out.
5. Note movement — don't mutate yet
If the user reported a hypothesis moved, record it in the log's ## Hypothesis movement and tell them: "Run /pmf-wrap to update H's status/result with confirmation." Do not edit hypothesis files in /pmf-start.
6. Confirm and stop
Print the path you wrote and a one-line summary (e.g. "Logged — touched H7, H3; 1 convo (Riley)"). Do not roll up the week or regenerate the index here.