← All craftbooks

Curated Annotated Reading List

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

Curate an annotated reading list on a topic for a defined reader: a planner sets the reader, their goal, and the selection and ordering criteria, then a researcher curates and annotates each pick with why it matters, what it covers, and a suggested reading order. The ordering matters because a list assembled without a reader and a goal becomes a random link dump, and one without annotations forces the reader to guess what to read first; fixing who it is for and what 'good for this reader' means up front turns it into a guided learning path. Use this for curated reading lists, a syllabus or learning path, 'what should I read to learn X', resource roundups, and annotated bibliographies of recommended materials.

Steps

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

  1. Scope the listplannerentry

    reader, goal, and selection + ordering criteria

    Show working prompt
    1. Pin the reader and their goal in one sentence (e.g. 'a working dev who wants a practical intro to distributed systems') and their current level. 2. Set selection criteria: what makes a resource worth including for THIS reader (authority, level fit, recency, format mix) and how many items (aim 6-12). 3. Decide the ordering principle — a reading ORDER (foundational -> advanced, or a sequenced path), not just an unordered set — and any grouping (e.g. start here / go deeper / reference). 4. Lock the per-item annotation template: title, author, type/length, why it is on the list, what it covers, level, and where it fits in the order. 5. Write an acceptance-criteria checklist (e.g. 'each item has a full annotation', 'items are sequenced into a sensible reading order', 'a mix of levels/formats appropriate to the reader', 'each pick is justified for this reader specifically', 'links/locators are included'). 6. Record decisions. Call write_task_note with the reader, criteria, ordering, template, and checklist; write the same to notes/scope.md.
  2. Curate & annotateresearcher

    selected, ordered, annotated picks for the reader

    Show working prompt
    1. Find resources that meet the selection criteria for the specified reader, preferring authoritative and well-regarded materials at the right level. 2. Write reading-list.md grouped/ordered per the locked ordering principle, with each item fully annotated to the template: title, author, type & rough length, why it earns a spot for THIS reader, what it covers, its level, and a working link or locator. 3. Sequence the items into an explicit reading order (number them or use 'start here / next / deeper / reference' groupings) so the reader knows what to read first. 4. Justify each pick against the reader's goal — drop anything you cannot justify rather than padding the list. 5. Include a deliberate mix of levels and formats as scoped, and verify each link/locator is real. 6. On a loop-back, fix only the named gaps. 7. Call write_task_note with the list path and item count.
  3. Evaluatereviewer

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

    Show working prompt
    Open reading-list.md and check EACH criterion PASS/FAIL: (1) every item has a full annotation following the template from notes/scope.md; (2) items are sequenced into an explicit, sensible reading order (not an unordered dump); (3) each pick is justified for the specified reader and goal, not generic; (4) the mix of levels/formats matches the scope and suits the reader; (5) every item has a working link or locator (spot-check 3); (6) the list is the scoped length with no padding. A random link dump, or items with no annotation or no justification for this reader, 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: "curate" })` 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.
  4. 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