← All craftbooks

Fact-Check a Set of Claims

Knowledge and researchevalv1.0.0released 2026-06-05workflow: build-loop

Verify a set of claims one by one and produce a verdict report: a planner extracts and itemizes every checkable claim and locks the rating scale, a researcher independently verifies each claim against primary sources and logs the evidence, and a reviewer compiles a per-claim verdict report with ratings and corrections. The ordering matters because verifying before itemizing lets claims slip through unchecked, and a report without a fixed rating scale gives inconsistent verdicts; isolating each atomic claim and locking the scale first makes the check exhaustive and auditable. Use this for fact-checking articles or statements, verifying claims, debunking, accuracy passes, and 'is this true' / 'check these facts' requests.

Steps

Entry step: claim-scope. Each step names the specialist role it wants; the full working prompt is expandable.

  1. Claim scopeplannerentry

    itemize every checkable claim + lock the rating scale

    Show working prompt
    1. Read the source material and extract EVERY discrete, checkable factual claim into notes/claim-scope.md, each as one atomic statement with an id (C1, C2, ...) — split compound sentences into separate claims and quote the original wording. 2. Mark each claim's type (statistic, attribution, event, causal, definitional) since that drives how it is verified. 3. Lock the rating scale exactly (e.g. True / Mostly True / Mixed / Mostly False / False / Unverifiable) and define each rating. 4. Write an acceptance-criteria checklist (e.g. 'every claim from the source is itemized with an id', 'each claim gets exactly one rating from the locked scale', 'each rating cites at least one independent source', 'false/mixed claims include a correction'). 5. Record decisions. Call write_task_note with the claim list + scale + checklist; write the same to notes/claim-scope.md.
  2. Verify each claimresearcher

    independently check each claim against primary sources

    Show working prompt
    1. For each claim id, independently verify it against authoritative, primary sources — do NOT trust the source being checked. 2. Log to notes/evidence.md per claim: the id, the source(s) [n] you checked, the exact figure/quote/fact found, whether it confirms, contradicts, or partially supports the claim, and a proposed rating from the locked scale. 3. For numeric or attribution claims, find the original record (the dataset, the filing, the transcript), not a secondary report. 4. If a claim cannot be verified after a genuine search, rate it Unverifiable and say what evidence would settle it. 5. Where a claim is false or mixed, capture the correct fact so the report can state the correction. Good looks like an evidence log where each claim's rating is already justified. Do not write the final report yet.
  3. Compile the verdict reportreviewer

    per-claim ratings, evidence, and corrections

    Show working prompt
    1. Write factcheck.md with a short summary (counts per rating) then one entry per claim id, in order: the quoted claim, its rating from the locked scale, a one-to-three-sentence justification, the supporting source(s) [n], and — for any False/Mixed claim — the correct statement. 2. Use ONLY ratings from the locked scale and base each strictly on notes/evidence.md; do not introduce new claims or change wordings. 3. Add a References list so every [n] resolves to a real, independent source. 4. Keep verdicts dispassionate and evidence-first. 5. On a loop-back, fix only the named gaps. 6. Call write_task_note with the report path and which criteria now pass.
  4. Evaluatereviewer

    Grade the deliverable against every acceptance criterion. All pass → finish; any fail → loop back and fix the gap.

    Show working prompt
    Open factcheck.md and check EACH criterion PASS/FAIL: (1) every claim id from notes/claim-scope.md has an entry — none dropped; (2) each entry has exactly one rating drawn from the locked scale; (3) each rating cites at least one independent source that is NOT the material being checked; (4) every False/Mixed claim includes a correction; (5) spot-check 3 verdicts against notes/evidence.md to confirm the rating matches the logged evidence; (6) the summary counts match the entries. A report that rates a claim against the source it came from, or skips a claim, FAILS.
    
    Then route — this is the whole point of the loop:
    
    - **Every criterion PASSES →** call `advance_task_step({ ref, stepId: "evaluate", next: "finish" })`.
    - **Any criterion FAILS →** write the specific gaps to notes, then call `advance_task_step({ ref, stepId: "evaluate", next: "report" })` to loop back. The builder fixes exactly those gaps.
    
    Never route to `finish` while any criterion is unmet. The build phase's completion gate already blocked a grossly-incomplete deliverable; your job is the judgment an automated check cannot make (does it actually work, read well, look right). After ~3 unproductive loops, stop and report DONE_WITH_CONCERNS so the user can step in.
  5. Finishdeveloper

    All acceptance criteria met. Stamp a short summary and report DONE.

    Show working prompt
    Every acceptance criterion passed. Write a one-paragraph DONE summary to task notes via `write_task_note`: what was built, the deliverable path(s), and a one-line confirmation that each criterion is met. Then report DONE.

Triggers

Phrases that suggest this craftbook to a crew.

Source

View this craftbook on GitHub · MIT license