discovery-plan
Turn what discovery learned — and did not learn — into the two durable planning
artifacts, compiled together in one pass so they cannot drift:
docs/product/ateam-plan.md — the plan built for the A-Team agents.
Goals (each traced to the jobs it serves) and the deliverables to reach v0,
grouped into initiatives with owners and dates, gated by decision criteria.
This is what the A-Team runs against — and how anyone reading the repo
understands where the work is going. Not a project plan and not the research
plan; the name says whose plan it is.
docs/product/research-plan.md — the research plan. The document that
ships together with the v0 final outputs: open questions (what the v0
was built without knowing), assumptions + confidence (everything agents
and humans assumed, what would disprove each, the cheapest probe), and
technical research (services, stack, and the cost breakdown of every
integration in play).
The split line: what we'll do goes in ateam-plan.md; what we don't know, assumed,
or researched goes in research-plan.md. The same compile step writes both —
a deliverable that closes an unknown appears in ateam-plan.md as work and in
research-plan.md as the question it closes.
A third artifact, at the pr phase only — docs/product/project-plan.md,
the plan for the project after v0: what is left undone, what the epics say
comes next, what the surviving open questions imply for the roadmap. It is the
plan the human team picks up, as distinct from ateam-plan.md (the plan to
reach v0, for the agents) and research-plan.md (the disclosure shipping
with v0). Three plans, three horizons; conflating them under one name is what
made this file necessary. Write it only when invoked by the pr phase's plan
refresh — mid-run there is no v0 yet to plan past, and a project plan written
from intentions is fiction.
This is the bridge from evidence into definition (prd-writer, wireflow,
page-brief) — and the reason stopping discovery loses nothing: every
non-blocking unknown lands in the research plan instead of dying in a chat.
This skill consumes finished jobs and synthesis; it never mints or rewrites
jobs (jobs-to-be-done) and never synthesizes raw evidence
(research-synthesis first).
Where it writes
<target>/docs/product/ateam-plan.md + <target>/docs/product/research-plan.md
(+ <target>/docs/product/project-plan.md, pr phase only) —
repo-first-and-always; a Cowork folder is a valid target, never a blocker.
Durable rules apply to all: update-only (refresh what changed, keep what
holds — a rebuild that drops content is a forbidden overwrite), mandatory
read-back before writing, one commit per run naming what changed
(docs(plan): compliance unknown resolved; 2 new dev-phase assumptions).
All plans stay live. Re-run this skill at any phase — after a brainstorm
adds ledger entries, after a synthesis lands verdicts, after design or dev
surface new assumptions — and it folds the new material into both files.
Keeping them current downstream is the PM's standing duty; this skill is how
it's done.
Inputs
docs/product/context.md — the Know/Don't-Know ledger is the primary feed:
surviving unknowns become open questions; ledger assumptions carry their
confidence in.
docs/product/research/ — synthesis runs; cite them as the evidence spine
(verdicts included), never duplicate their content.
docs/product/jtbd/ — active jobs, ids + verbatim headlines. Suggested new
jobs must pass through jobs-to-be-done before entering either plan; the
plans hold proper job statements or an explicit TBD, nothing in between.
- The current problem statement, constraints, stakeholder goals, timelines.
- Connectors (Notion, Granola, Slack, ops API) if available — pulled material
the plans lean on is staged verbatim into
input/<date>-<source>-pulled/
per the contract. Never block on a connector.
Outputs
ateam-plan.md in the shape of references/plan-template.md: Goals (job-traced) ·
Deliverables to reach v0 · Initiatives (owner, date) · Decision criteria ·
Status.
research-plan.md in the shape of references/research-plan-template.md:
Evidence spine (cited) · Open questions · Assumptions (confidence + disproof
- cheapest probe) · Technical research (services, stack, integration costs) ·
Research activities (owner, date).
project-plan.md in the shape of references/project-plan-template.md —
pr phase only: Where the v0 leaves us · What comes next (each item traced
to an epic or job) · What the open questions imply · Known debt from the v0 ·
Not planned. Omitted entirely on every other invocation.
- The closing handoff: Next likely skill(s) · What to pass forward ·
Suggested next prompts.
Workflow
- Load the ledger and the evidence. Read
context.md (ledger first),
the research/ runs, and the active jobs. If raw evidence is still
unsynthesized, stop and route to research-synthesis — a plan built on
un-digested mess plans the wrong unknowns.
- Evidence spine first (research-plan side). Cite the synthesis runs and
summarize each verdict in a line — which jobs stand solid, which need
discovery work.
- Fix the job framing. Ids + verbatim headlines. Challenged/refinement
verdicts and new-job signals route through
jobs-to-be-done; unresolved
jobs enter as TBD with resolving them listed as a research activity.
- Split the ledger. Surviving unknowns → research-plan open questions
(each tagged with what changes if answered; a still-open blocking unknown
is stated loudly at the top). Ledger and brainstorm assumptions →
research-plan assumptions, each with confidence, disproof, cheapest
probe. Never let an assumption hide inside polished prose.
- Technical research (research-plan side). Services, stack, and every
integration in play: options considered, cost (money, effort, risk),
chosen or open. Unanswerable API questions become research activities.
- Goals and deliverables (PLAN side). Goals traced to jobs; the
deliverables that must exist to reach v0 — including resolution
deliverables that close research-plan questions. Group into initiatives
with owners (human or agent) and dates; define the decision criteria that
gate them.
- Cross-check. Every research activity has a home in an initiative or is
explicitly deferred; every resolution deliverable points at its question.
The files must read as one plan split by audience — and when the project
plan is in play (step 8), its "What comes next" must not contradict
ateam-plan.md's remaining deliverables: anything still listed as work to
reach v0 is either done, carried forward, or explicitly dropped with a
reason.
- The project plan — pr phase only. When invoked by the pr phase's plan
refresh (a v0 exists and is integrated), also compile
project-plan.md per references/project-plan-template.md: where the v0
leaves us, what comes next traced to epics/jobs, what the surviving open
questions imply, the debt taken on purpose, and what is explicitly not
planned. Cite, never restate — this file is the forward view across the
others, and the only one allowed to speculate.
Ground "Where the v0 leaves us" in what actually shipped. On a first v0
run ateam-product-report.md does not exist yet — the plan refresh runs
before it — so ground that section in issues.md statuses and the
integrated feature branch. On a refresh, when the report does exist, cite it
instead; it is the better-grounded source. Skip this step entirely on any
other invocation: mid-run there is no v0 to plan past.
- Read-back, write, commit. Present every draft you produced (or diffs, on
refresh) for correction; write; update
updated:/evidence: frontmatter;
commit.
- Hand off. Unknowns reduced enough to define scope →
wireflow (map
validated journeys) → page-brief (per-screen requirements) →
prd-writer; page-light features go straight to prd-writer. Pass
forward the problem statement, jobs, validated assumptions, and open
questions.
No human present
The read-back gate needs a human. With nobody present, deliver every draft in
your report only, write nothing durable, and state that the run awaits review.
Never commit an unreviewed research plan — it ships with the v0 as the honest
record; an unreviewed one is neither.
Templates
references/plan-template.md — ateam-plan.md
references/research-plan-template.md — research-plan.md
references/project-plan-template.md — project-plan.md (pr phase only)
Examples
- Input:
examples/example-input.md · Output: examples/example-output.md
1---2name: discovery-plan3description: discovery-plan4---56# discovery-plan78Turn what discovery learned — and did not learn — into the two durable planning9artifacts, compiled together in one pass so they cannot drift:1011- **`docs/product/ateam-plan.md` — the plan built for the A-Team agents.**12 Goals (each traced to the jobs it serves) and the deliverables to reach v0,13 grouped into initiatives with owners and dates, gated by decision criteria.14 This is what the A-Team runs against — and how anyone reading the repo15 understands where the work is going. Not a project plan and not the research16 plan; the name says whose plan it is.17- **`docs/product/research-plan.md` — the research plan.** The document that18 ships together with the v0 final outputs: **open questions** (what the v019 was built without knowing), **assumptions + confidence** (everything agents20 and humans assumed, what would disprove each, the cheapest probe), and21 **technical research** (services, stack, and the cost breakdown of every22 integration in play).2324The split line: *what we'll do* goes in ateam-plan.md; *what we don't know, assumed,25or researched* goes in research-plan.md. The same compile step writes both —26a deliverable that closes an unknown appears in ateam-plan.md as work and in27research-plan.md as the question it closes.2829**A third artifact, at the pr phase only** — `docs/product/project-plan.md`,30the plan for the **project after v0**: what is left undone, what the epics say31comes next, what the surviving open questions imply for the roadmap. It is the32plan the *human team* picks up, as distinct from ateam-plan.md (the plan to33*reach* v0, for the agents) and research-plan.md (the disclosure *shipping34with* v0). Three plans, three horizons; conflating them under one name is what35made this file necessary. Write it only when invoked by the pr phase's plan36refresh — mid-run there is no v0 yet to plan past, and a project plan written37from intentions is fiction.3839This is the bridge from evidence into definition (`prd-writer`, `wireflow`,40`page-brief`) — and the reason stopping discovery loses nothing: every41non-blocking unknown lands in the research plan instead of dying in a chat.42This skill **consumes** finished jobs and synthesis; it never mints or rewrites43jobs (`jobs-to-be-done`) and never synthesizes raw evidence44(`research-synthesis` first).4546## Where it writes4748`<target>/docs/product/ateam-plan.md` + `<target>/docs/product/research-plan.md`49(+ `<target>/docs/product/project-plan.md`, pr phase only) —50repo-first-and-always; a Cowork folder is a valid target, never a blocker.51Durable rules apply to all: **update-only** (refresh what changed, keep what52holds — a rebuild that drops content is a forbidden overwrite), mandatory53**read-back** before writing, one commit per run naming what changed54(`docs(plan): compliance unknown resolved; 2 new dev-phase assumptions`).5556**All plans stay live.** Re-run this skill at any phase — after a brainstorm57adds ledger entries, after a synthesis lands verdicts, after design or dev58surface new assumptions — and it folds the new material into both files.59Keeping them current downstream is the PM's standing duty; this skill is how60it's done.6162## Inputs6364- `docs/product/context.md` — the Know/Don't-Know ledger is the primary feed:65 surviving unknowns become open questions; ledger assumptions carry their66 confidence in.67- `docs/product/research/` — synthesis runs; cite them as the evidence spine68 (verdicts included), never duplicate their content.69- `docs/product/jtbd/` — active jobs, ids + verbatim headlines. Suggested new70 jobs must pass through `jobs-to-be-done` before entering either plan; the71 plans hold proper job statements or an explicit `TBD`, nothing in between.72- The current problem statement, constraints, stakeholder goals, timelines.73- Connectors (Notion, Granola, Slack, ops API) if available — pulled material74 the plans lean on is staged verbatim into `input/<date>-<source>-pulled/`75 per the contract. Never block on a connector.7677## Outputs7879- `ateam-plan.md` in the shape of `references/plan-template.md`: Goals (job-traced) ·80 Deliverables to reach v0 · Initiatives (owner, date) · Decision criteria ·81 Status.82- `research-plan.md` in the shape of `references/research-plan-template.md`:83 Evidence spine (cited) · Open questions · Assumptions (confidence + disproof84 + cheapest probe) · Technical research (services, stack, integration costs) ·85 Research activities (owner, date).86- `project-plan.md` in the shape of `references/project-plan-template.md` —87 **pr phase only**: Where the v0 leaves us · What comes next (each item traced88 to an epic or job) · What the open questions imply · Known debt from the v0 ·89 Not planned. Omitted entirely on every other invocation.90- The closing handoff: **Next likely skill(s)** · **What to pass forward** ·91 **Suggested next prompts**.9293## Workflow94951. **Load the ledger and the evidence.** Read `context.md` (ledger first),96 the `research/` runs, and the active jobs. If raw evidence is still97 unsynthesized, stop and route to `research-synthesis` — a plan built on98 un-digested mess plans the wrong unknowns.992. **Evidence spine first** (research-plan side). Cite the synthesis runs and100 summarize each verdict in a line — which jobs stand solid, which need101 discovery work.1023. **Fix the job framing.** Ids + verbatim headlines. Challenged/refinement103 verdicts and new-job signals route through `jobs-to-be-done`; unresolved104 jobs enter as `TBD` with resolving them listed as a research activity.1054. **Split the ledger.** Surviving unknowns → research-plan **open questions**106 (each tagged with what changes if answered; a still-open blocking unknown107 is stated loudly at the top). Ledger and brainstorm assumptions →108 research-plan **assumptions**, each with confidence, disproof, cheapest109 probe. Never let an assumption hide inside polished prose.1105. **Technical research** (research-plan side). Services, stack, and every111 integration in play: options considered, cost (money, effort, risk),112 chosen or open. Unanswerable API questions become research activities.1136. **Goals and deliverables** (PLAN side). Goals traced to jobs; the114 deliverables that must exist to reach v0 — including resolution115 deliverables that close research-plan questions. Group into initiatives116 with owners (human or agent) and dates; define the decision criteria that117 gate them.1187. **Cross-check.** Every research activity has a home in an initiative or is119 explicitly deferred; every resolution deliverable points at its question.120 The files must read as one plan split by audience — and when the project121 plan is in play (step 8), its "What comes next" must not contradict122 `ateam-plan.md`'s remaining deliverables: anything still listed as work to123 reach v0 is either done, carried forward, or explicitly dropped with a124 reason.1258. **The project plan — pr phase only.** When invoked by the pr phase's plan126 refresh (a v0 exists and is integrated), also compile127 `project-plan.md` per `references/project-plan-template.md`: where the v0128 leaves us, what comes next traced to epics/jobs, what the surviving open129 questions imply, the debt taken on purpose, and what is explicitly not130 planned. **Cite, never restate** — this file is the forward view across the131 others, and the only one allowed to speculate.132 **Ground "Where the v0 leaves us" in what actually shipped.** On a first v0133 run `ateam-product-report.md` does not exist yet — the plan refresh runs134 before it — so ground that section in `issues.md` statuses and the135 integrated feature branch. On a refresh, when the report does exist, cite it136 instead; it is the better-grounded source. Skip this step entirely on any137 other invocation: mid-run there is no v0 to plan past.1389. **Read-back, write, commit.** Present every draft you produced (or diffs, on139 refresh) for correction; write; update `updated:`/`evidence:` frontmatter;140 commit.14110. **Hand off.** Unknowns reduced enough to define scope → `wireflow` (map142 validated journeys) → `page-brief` (per-screen requirements) →143 `prd-writer`; page-light features go straight to `prd-writer`. Pass144 forward the problem statement, jobs, validated assumptions, and open145 questions.146147## No human present148149The read-back gate needs a human. With nobody present, deliver every draft in150your report only, write nothing durable, and state that the run awaits review.151Never commit an unreviewed research plan — it ships with the v0 as the honest152record; an unreviewed one is neither.153154## Templates155156- `references/plan-template.md` — `ateam-plan.md`157- `references/research-plan-template.md` — `research-plan.md`158- `references/project-plan-template.md` — `project-plan.md` (pr phase only)159160## Examples161162- Input: `examples/example-input.md` · Output: `examples/example-output.md`