capture-learningslisted
Install: claude install-skill taipt1504/claudehut
# Capture Learnings (Learn phase)
## Iron Law
```
NO TASK ENDS WITHOUT A LEARN PASS
```
If you learned a project pattern, a pitfall, or a reuse point, record it before stopping. The `Stop` gate
blocks "done" until this runs. Runs **inline on the main thread** — the learner agent does the recording in
isolation; this skill owns the state write (the learner has no Bash).
## Flow
```mermaid
flowchart TB
start(["Learn phase entered — Stop gate blocks done until receipt fresh"]) --> harvest["1 HARVEST inline (no agent): harvest-candidates.sh<br/>→ learn-candidates.jsonl + harvested count"]
harvest --> nov{"2 NOVELTY — refute 'is this NEW vs the store?'<br/>genuine new convention/pitfall/reuse/decision<br/>OR supersedes an existing L-####?"}
nov -- "no — only confirmed existing patterns (default SKIP)" --> merge
nov -- "yes (or harvest surfaced ≥2 candidates)" --> dispatch["dispatch claudehut-learner (sonnet)<br/>appends candidates + updates reuse-index + MEMORY.md"]
dispatch --> merge["3 MERGE always: merge-learnings.sh<br/>dedup/quality-gate/promote/prune + write learn-receipt + .applied"]
merge --> rcpt{"receipt written fresh THIS session<br/>AND recurred == 0?"}
rcpt -- "recurred ≥ 1 (promoted rule re-violated)" --> surf(["escalate: SURFACE recurrence — it re-injects next session"])
rcpt -. "no receipt / hand-appended learnings.jsonl" .-> blocked(["BLOCKED: Stop gate denies done — re-run merge"])
rcpt -- "yes" --> close["4-6 show scorebo