/review-evidence
The PM's weekly sweep. The other skills produce evidence — interviews, insights, survey analyses, research — but evidence that never updates a belief is filing, not learning. This workflow closes the loop: it reads the new artifacts, contrasts them against the unverified beliefs in product/overview.md, and proposes updates.
Input: $ARGUMENTS
Workflow
Establish the window and gather the evidence. Read product/overview.md (the beliefs) and product/corrections.md if it exists — its most recent entry marks the last review; the arguments may override the window; if neither exists, this is the first review: cover everything and say so. Then list every artifact under product/ created or modified in the window: prefer git log when the repo is under git; without git, fall back to the {YYYY-MM-DD-HHMM}- filename prefixes (and note that in-place revisions — a spec edited after a critique — are invisible to filenames alone).
Contrast the new evidence against each belief. For every belief — whatever its scope tag, [product], [opportunity: {slug}], or [feature: {slug}]; the three are annotated the same way — ask of the new artifacts: does any confirm it, contradict it, or leave it untouched? Cite the evidence file for every verdict — no verdict without a file behind it. Respect the provenance hierarchy, source: real > survey > secondary > synthetic:
- Real interviews and survey results can confirm or contradict a belief (surveys within the limits their analysis states — small or self-selected samples weaken rather than confirm).
- Secondary research raises or lowers a belief's priority, but market evidence cannot verify beliefs about your users (see the
secondary-research skill).
- Synthetic evidence never confirms a belief on its own. Supporting synthetic evidence makes the belief promising — say so in the report, propose no annotation. Contradicting synthetic evidence can at most propose
weakened.
Propose updates to the overview. For each affected belief, propose an annotation appended on the belief's own line:
- {The belief as written} — confirmed by [product/insights/2026-08-20-1430-onboarding.md] (2026-08-20)
The three status keywords — confirmed, contradicted, weakened — are fixed English tokens (like source: values) so they stay consistent and searchable; the surrounding text follows the file's language. No status = still unverified. Annotations accumulate: when new evidence conflicts with an existing annotation, surface the conflict for the user to resolve — never silently overwrite. Show every proposed edit and get the user's approval before writing. Never delete a belief; only annotate it.
Report what's drifting. The pendings the loop tends to lose:
- Beliefs with no evidence yet, from any source.
- Opportunity briefs in
product/opportunities/ whose research agenda has no artifact against it yet — a framed problem nobody started researching — and, once an opportunity's beliefs are contradicted, idea briefs that still hang from it.
source: synthetic insights never verified against real users.
- Specs in
product/specs/ with no matching critique ({YYYY-MM-DD-HHMM}-critique-{spec-slug}.md in product/insights/).
- If
product/hypotheses/ exists: hypothesis files whose Outcome section is still empty — an experiment exposed but never scored.
Ask the correction question: "What did you correct this week of what the AI proposed, and why?" Append each correction to product/corrections.md — a single living file, no timestamp prefix, dated entries appended at the end (create the file on first use):
## {YYYY-MM-DD}
- **Artifact:** {file the correction applies to}
**AI proposed:** {what}
**Human decided:** {what instead}
**Why:** {the reasoning — the valuable part}
If there were no corrections, don't invent any — record the review anyway (a dated entry noting no corrections), so the next /review-evidence knows where the last one ended.
Close with a one-screen summary: belief status at a glance (confirmed / contradicted / weakened / promising / untouched), the drift report prioritized by what most blocks learning, and the suggested next step in one line — name the workflow to run on the top pending item: /design-interview or /design-survey to take a belief or a synthetic insight to real users, /critique-spec for a spec that skipped its panel, /analyze-survey for unanalyzed results. (Name these explicitly — user-invoked workflows never auto-load, so their names are not otherwise in context.)
Language
Conversation, annotations, and corrections.md entries (field labels included) in the language of the conversation. The only exception is the three status keywords, which stay in English as fixed tokens.
1---2name: review-evidence3description: Weekly evidence review — sweep the product/ artifacts created since the last review against the unverified beliefs in product/overview.md, propose belief-status annotations, report what's drifting, and log human corrections to AI proposals4---56# /review-evidence78The PM's weekly sweep. The other skills produce evidence — interviews, insights, survey analyses, research — but evidence that never updates a belief is filing, not learning. This workflow closes the loop: it reads the new artifacts, contrasts them against the unverified beliefs in `product/overview.md`, and proposes updates.910Input: $ARGUMENTS1112## Workflow13141. **Establish the window and gather the evidence.** Read `product/overview.md` (the beliefs) and `product/corrections.md` if it exists — its most recent entry marks the last review; the arguments may override the window; if neither exists, this is the first review: cover everything and say so. Then list every artifact under `product/` created or modified in the window: prefer `git log` when the repo is under git; without git, fall back to the `{YYYY-MM-DD-HHMM}-` filename prefixes (and note that in-place revisions — a spec edited after a critique — are invisible to filenames alone).15162. **Contrast the new evidence against each belief.** For every belief — whatever its scope tag, `[product]`, `[opportunity: {slug}]`, or `[feature: {slug}]`; the three are annotated the same way — ask of the new artifacts: does any confirm it, contradict it, or leave it untouched? Cite the evidence file for every verdict — no verdict without a file behind it. Respect the provenance hierarchy, `source: real` > `survey` > `secondary` > `synthetic`:17 - Real interviews and survey results can confirm or contradict a belief (surveys within the limits their analysis states — small or self-selected samples weaken rather than confirm).18 - Secondary research raises or lowers a belief's priority, but market evidence cannot verify beliefs about your users (see the `secondary-research` skill).19 - Synthetic evidence never confirms a belief on its own. Supporting synthetic evidence makes the belief *promising* — say so in the report, propose no annotation. Contradicting synthetic evidence can at most propose `weakened`.20213. **Propose updates to the overview.** For each affected belief, propose an annotation appended on the belief's own line:2223 ```24 - {The belief as written} — confirmed by [product/insights/2026-08-20-1430-onboarding.md] (2026-08-20)25 ```2627 The three status keywords — `confirmed`, `contradicted`, `weakened` — are fixed English tokens (like `source:` values) so they stay consistent and searchable; the surrounding text follows the file's language. No status = still unverified. Annotations accumulate: when new evidence conflicts with an existing annotation, surface the conflict for the user to resolve — never silently overwrite. Show every proposed edit and get the user's approval before writing. Never delete a belief; only annotate it.28294. **Report what's drifting.** The pendings the loop tends to lose:30 - Beliefs with no evidence yet, from any source.31 - Opportunity briefs in `product/opportunities/` whose research agenda has no artifact against it yet — a framed problem nobody started researching — and, once an opportunity's beliefs are contradicted, idea briefs that still hang from it.32 - `source: synthetic` insights never verified against real users.33 - Specs in `product/specs/` with no matching critique (`{YYYY-MM-DD-HHMM}-critique-{spec-slug}.md` in `product/insights/`).34 - If `product/hypotheses/` exists: hypothesis files whose Outcome section is still empty — an experiment exposed but never scored.35365. **Ask the correction question:** "What did you correct this week of what the AI proposed, and why?" Append each correction to `product/corrections.md` — a single living file, no timestamp prefix, dated entries appended at the end (create the file on first use):3738 ```markdown39 ## {YYYY-MM-DD}4041 - **Artifact:** {file the correction applies to}42 **AI proposed:** {what}43 **Human decided:** {what instead}44 **Why:** {the reasoning — the valuable part}45 ```4647 If there were no corrections, don't invent any — record the review anyway (a dated entry noting no corrections), so the next `/review-evidence` knows where the last one ended.48496. **Close with a one-screen summary:** belief status at a glance (confirmed / contradicted / weakened / promising / untouched), the drift report prioritized by what most blocks learning, and the suggested next step in one line — name the workflow to run on the top pending item: `/design-interview` or `/design-survey` to take a belief or a synthetic insight to real users, `/critique-spec` for a spec that skipped its panel, `/analyze-survey` for unanalyzed results. (Name these explicitly — user-invoked workflows never auto-load, so their names are not otherwise in context.)5051## Language5253Conversation, annotations, and `corrections.md` entries (field labels included) in the language of the conversation. The only exception is the three status keywords, which stay in English as fixed tokens.