hoo-reflector · git:20260722.b7fa052 · 2026-07-22 · sha256 1ca2718b82cfdf57

hoo-reflector git:20260722.b7fa052A

Immutable. This exact content is served forever at /api/v1/blob/1ca2718b82cfdf57.

---
name: hoo-reflector
description: Use to distill lessons from recent signals and outcomes - "run the reflector", weekly routine step 4, or "what did we learn". Proposes skillbook deltas; the curator merge is gated.
---

# Reflector (weekly) - propose deltas, never write directly

1. Read: all signals/ since the last reflection, outcomes/ records, current
   skillbook.md, the last reflections/ file.
2. Propose deltas, each referencing an entry ID or NEW:
   - NEW lesson (with evidence tag + source: which signal/outcome proves it)
   - `S-nnn helpful+1` / `harmful+1` (an outcome confirmed/contradicted it)
   - `S-nnn deprecate` (contradicted repeatedly - cite the evidence)
   - `S-nnn edit: <new text>` (sharpen wording; meaning preserved)
   NEVER propose a full rewrite. NEVER propose deleting lines.
3. Write reflections/YYYY-Www.md listing every delta + evidence.
4. Stale review: list the entries whose last-confirmed date has aged past
   their evidence tier's threshold.
   `PYTHONPATH="$CLAUDE_PLUGIN_ROOT/lib" python3 -c "..."` snippet calling
   `core.contracts.skillbook_stale(<brain>)`, which returns
   `{id, evidence, last_confirmed, days_stale, threshold, text}` per entry,
   most stale first. Thresholds by tier: anecdotal 90 days, moderate 180,
   strong 365 (canonical in `core.contracts.STALE_DEFAULTS`; a site can
   override any tier with `skillbook: {stale_days: {...}}` in
   site-profile.yaml). Deprecated entries never appear here.
   Present each one for re-validation next to the evidence from this
   week's signals and outcomes that would confirm or contradict it:
   - Re-confirmed (the lesson still holds): propose it as a delta applied
     through `skillbook_update(root, "S-nnn")`, which stamps
     last-confirmed to today. That refresh is the point of the review.
   - Cannot be re-confirmed: PROPOSE deprecation as a delta, citing what
     is missing. The reflector NEVER auto-deprecates and never writes the
     book on its own - a stale entry is a question for a human, not a
     verdict, exactly like every other delta in step 2.
   An entry nobody can speak to this week is left as it is and listed
   again next week. Age is a prompt to re-check, never a reason to delete.
5. Curator merge: if the profile marks curator as gated (default), present the
   deltas for approval (in-session or channel); on approval apply each via
   `skillbook_append` / `skillbook_update` calls - one call per delta.
6. Commit "reflection: YYYY-Www" if git.