← All craftbooks

Source Quality Audit

Review and QAevalv1.0.0released 2026-06-05workflow: build-loop

Once a month, make the reading list earn its place: score each source on what it actually delivered — accuracy, originality, noise — and keep, demote, or drop with evidence, so the brief stays sharp as the feeds drift. Locks the audit criteria FIRST, then builds the per-source scorecard from the month's briefs, then writes the verdict table with the changes to make. Use for source audits, pruning the feed list, 'the brief feels noisy', monthly reading-list reviews, and deciding which feeds to drop.

Steps

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

  1. Scope the auditreviewerentry

    roster read, evidence base gathered, verdict rules locked

    Show working prompt
    Define the audit before scoring anything. Step 1: read sources.json from the workspace — every source on the roster — and gather the month's briefs from briefs/ as the evidence base. Step 2: lock the audit criteria — every source on the roster gets a verdict; verdicts come from a fixed set (keep, demote, drop); and every verdict must cite concrete evidence from the briefs: items it delivered, corrections it caused, or the silence of never being used. Step 3: agree what each verdict means in practice — keep means earning its place, demote means probation with a named reason, drop means off the list now. Step 4: write an acceptance-criteria checklist ('every source in sources.json appears in the verdict table', 'every verdict is keep, demote, or drop', 'every verdict cites at least one concrete example or explicitly notes the source went unused', 'the report ends with the changes to make'). Call write_task_note with the source count + criteria + checklist and write notes/scope.md.
  2. Build the scorecardreviewer

    per-source evidence: delivered, corrected, or silent

    Show working prompt
    Build the per-source scorecard from the month's evidence. Step 1: for each source in the roster, sweep the month's briefs and collect what it actually delivered — items attributed to it, stories it broke versus merely echoed, corrections or walk-backs it caused, and whether it appeared at all. Step 2: score each source in plain terms — accuracy (was it right), originality (was it first or just loud), and noise (how much of it was worth the owner's morning). Step 3: draft a verdict per source from the fixed set with the evidence beside it. Step 4: write the per-source scorecard with cited examples to notes/audit.md and call write_task_note with the draft verdict counts.
  3. Write the audit reportcopywriter

    verdict table plus the changes to make

    Show working prompt
    Write the audit report the owner acts on. Step 1: open with the month in one honest paragraph — what the reading list did well and where the noise came from. Step 2: the verdict table — a Markdown table with columns Source, Verdict, and Why, one row per source, every verdict backed by its best evidence in a phrase. Step 3: the changes to make — which sources to drop or demote now, and what that leaves covered or exposed. Step 4: note anything worth adding to the roster to fill a gap the audit exposed. Keep it fair and specific — sources earn their place with evidence, not vibes. Write report.md and call write_task_note with the keep/demote/drop counts.
  4. Evaluatereviewer

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

    Show working prompt
    Open report.md, notes/audit.md, and the month's briefs and verify every criterion from notes/scope.md: every source in sources.json has a row in the verdict table, every verdict is keep, demote, or drop, every verdict cites at least one concrete example from the briefs (spot-check two against the brief files) or explicitly notes the source went unused, and the closing changes list matches the verdicts. Write PASS/FAIL per criterion; on any failure, name the gap and loop back to report.
    
    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