
Thank-You Note Batch
Clear the owed-thanks list with notes that sound like you: read who is owed and for what from the correspondence roster, draft one note per person that names the actual gift or kindness — no template smell — then log every note so nobody who mattered goes unanswered. Locks the household voice and the coverage rules FIRST, then drafts the batch, then records it in the roster with a short run summary. Use for thank-you notes, clearing the owed-thanks list, 'we owe thank yous from the party', and post-holiday gratitude sweeps.
Steps
Entry step: scope. Each step names the specialist role it wants; the full working prompt is expandable.
- Scope the batchletter-writerentry
owed list from the roster, voice guide, coverage rules
Show working prompt
Define the batch before drafting a word. Step 1: read correspondents.json from the workspace — who is owed thanks, for what gift or kindness, and how long each has been owed. Step 2: read the household's voice notes if they exist (notes/voice.md or a voice field on the roster) — the phrases this family actually uses, how they open and sign off, and what they would never say. Step 3: confirm with the owner anyone to add or defer, and how the notes go out (card, email, hand-delivered) since that shapes length. Step 4: write an acceptance-criteria checklist ('every owed person gets a note or an explicit deferral with a reason', 'every note names the actual gift or kindness — a generic thanks is a miss', 'the voice guide is respected and no two notes are interchangeable', 'every drafted note is logged against the roster'). Call write_task_note with the owed count + checklist and write notes/scope.md. - Draft the notescopywriter
one personal note per owed person, in the household voice
Show working prompt
Draft the whole batch against the locked rules. Step 1: write one section per person in letters/thank-you.md — a heading with their name, then the note. Step 2: open each note with the specific gift or kindness from the roster in the first two sentences — the detail IS the thanks; 'thank you for the lovely gift' is a rejection. Step 3: vary the shape — if two notes could swap recipients without anyone noticing, rewrite one of them. Step 4: keep the household's voice throughout — warm, theirs, sized for how each note will be sent. Step 5: call write_task_note with the note count and anyone you had to defer.
- Log the batcharchivist
record each note in the roster, write the run summary
Show working prompt
Close the batch. Step 1: for each drafted note, record it against the person's entry through the project's correspondence capabilities (or note the exact roster update) so the owed-thanks tracking clears. Step 2: write the run summary — who got a note and what it names, who was deferred and why, and what still has to physically happen (addresses to find, stamps to buy). Step 3: keep it short and factual — this is a household ritual, not paperwork. Write report.md and call write_task_note with the drafted and deferred counts.
- Evaluatereviewer
Grade the deliverable against every acceptance criterion. All pass → finish; any fail → loop back and fix the gap.
Show working prompt
Open letters/thank-you.md and report.md and verify every criterion from notes/scope.md: every owed person in correspondents.json has a note or an explicit deferral with a reason, every note names the actual gift or kindness from the roster — spot-check each against the record, a note that thanks someone for the wrong thing is worse than none — no two notes are interchangeable, the voice matches the household's guide, and every drafted note is logged. Write PASS/FAIL per criterion; on any failure, name the person and the gap and loop back to draft. 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: "draft" })` 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. - 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.
- draft the thank you notes
- clear the owed thanks list
- we owe thank yous
- write the thank you cards
- thank you note batch
Source
View this craftbook on GitHub · MIT license