← All craftbooks

Pest & Problem Diagnosis

Home and everyday lifeevalv1.0.0released 2026-06-05workflow: build-loop

Turn 'something is wrong with the tomatoes' into a ranked differential: the likely culprits with the evidence for each, the gentlest treatment first, what to watch to confirm the diagnosis, and when to call in a professional — a garden clinic visit without the guesswork. Locks the diagnostic criteria FIRST, then builds the differential from the symptom notes and the plantings, then writes the treatment and monitoring plan. Use for garden pest problems, plant disease diagnosis, 'what is eating my plants', and sick-plant triage.

Steps

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

  1. Scope the diagnosisgardenerentry

    symptoms and plantings gathered, diagnostic criteria locked

    Show working prompt
    Define the diagnosis before naming a culprit. Step 1: read the symptom photo notes in photos/ and identify the affected plantings in garden.json — what is planted there, since when, and what the season makes likely. Step 2: lock the diagnostic criteria — at least two candidate explanations per problem, ranked; the specific evidence for and against each; the gentlest effective treatment considered first; and the escalation threshold — what result, by when, means calling in a professional. Step 3: write an acceptance-criteria checklist ('every symptom from the notes addressed', 'candidates ranked with evidence, not asserted', 'organic or lowest-impact option first', 'monitoring plan with dates', 'escalation named'). Call write_task_note with the symptoms + criteria + checklist and write notes/scope.md.
  2. Build the differentialresearcher

    ranked candidates with evidence for and against each

    Show working prompt
    Build the differential against the locked criteria. Step 1: for each symptom, list the candidate culprits the evidence actually supports — the photo notes, the plant, the season, the pattern of damage. Step 2: rank the candidates and write the evidence for and against each, including what does not fit. Step 3: note what a second look would settle — the underside of a leaf, the time of day the damage happens — the cheap observations worth making before any treatment. Step 4: write the differential to notes/diagnosis.md and call write_task_note with the top candidate per symptom.
  3. Write the treatment plancopywriter

    treatment ladder, monitoring plan, escalation line

    Show working prompt
    Write the treatment and monitoring plan from the differential. Step 1: per problem, the likely culprit in plain words with its evidence, and what else it could be. Step 2: the treatment ladder — the gentlest effective option first, with exactly how and when to apply it, then the next rung if it fails. Step 3: the monitoring plan — what to watch, how often, and what change confirms or overturns the diagnosis. Step 4: the escalation line — the specific sign that means stop guessing and call a professional or the local extension service. Keep the confidence honest — a diagnosis from photo notes is a strong hunch, not a lab result. Write report.md and call write_task_note with the top culprits and the first treatment.
  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/diagnosis.md and verify every criterion from notes/scope.md: every symptom from the photo notes is addressed, each problem carries at least two ranked candidates with evidence, the first treatment offered is the gentlest effective one, the monitoring plan says what to watch and when, the escalation threshold is named, and nowhere does the report claim certainty the evidence cannot support. 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