← All craftbooks

Annual Document Review

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

Walk a life binder's document roster once a year: inventory what is present and missing, confirm each present document is still current (right beneficiaries, right address, not expired), record the review so staleness tracking resets, and produce a prioritized to-do for the gaps. Locks the currency criteria per document kind FIRST, then verifies each record, then reports — so the binder's completeness claim is re-earned annually instead of rotting silently. Use for annual life-binder reviews, estate document checkups, 'is our paperwork still right', and insurance/beneficiary reviews.

Steps

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

  1. Scope the reviewreviewerentry

    inventory the roster, currency criteria per document kind

    Show working prompt
    Define the review before checking anything. Step 1: read documents.json from the workspace and inventory the roster — which documents are present, which are missing, and when each present one was last reviewed. Step 2: define the currency criteria per document kind — e.g. a will is current if it reflects today's family situation and executor; insurance is current if coverage amounts and beneficiaries are right; contact lists and password locations are current if verified within the year; anything expired or superseded is not current. Step 3: define what counts as done for a missing document — a concrete next step (who to call, what to draft), not just 'get one'. Step 4: write an acceptance-criteria checklist ('every roster record verified with the owner or explicitly deferred', 'every verified document gets its review recorded so staleness resets', 'every missing document has a named next step', 'the report ranks gaps by consequence, not alphabetically'). Call write_task_note with the inventory counts + criteria + checklist and write notes/scope.md.
  2. Verify each documentreviewer

    walk the roster with the owner, record reviews, list gaps

    Show working prompt
    Verify the roster against the locked criteria. Step 1: walk each present document with the owner — ask the kind-specific currency questions from the scope and record the answer. Step 2: for each document confirmed current, record the review through the project's binder capabilities (or note the update for documents.json) so the reviewedAt tracking resets. Step 3: for each document that fails its criteria, record what specifically is out of date. Step 4: for each missing document, confirm the next step with the owner and capture it. Step 5: write the structured results — verified, out-of-date (with why), missing (with next step) — to notes/verify.md, and call write_task_note with the counts per bucket.
  3. Write the binder reportcopywriter

    binder health report with a ranked to-do

    Show working prompt
    Write the binder health report from the verification. Step 1: open with the headline — how many documents are in place and current, out of the full roster. Step 2: list what was verified current this review, one line each. Step 3: give the ranked to-do — out-of-date and missing documents ordered by consequence (what happens to the family if this one is needed and wrong), each with its concrete next step and who acts. Step 4: note the next review date one year out. Step 5: keep the tone calm and practical — the binder exists to make a hard day easier, and the report should read that way. Write report.md and call write_task_note with the report path and the to-do count.
  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 and notes/verify.md and verify every criterion from notes/scope.md: every roster record was verified or explicitly deferred, every verified document had its review recorded (spot-check two against the roster), every missing or out-of-date document carries a concrete named next step, and the to-do is ranked by consequence with a stated rationale. 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