From loop-builder
Turns a recently performed multi-step workflow into a pre-filled loop blueprint by reading the session transcript, scoring evidence against a rubric, and handing off to loop-builder.
How this skill is triggered — by the user, by Claude, or both
Slash command
/loop-builder:loop-distillerThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Turn real session history into a **pre-filled loop-builder blueprint**. This skill
references/distillation.mdscripts/distiller/digest_store.pyscripts/distiller/ledger.pyscripts/distiller/signature.pyscripts/distiller/transcript_reader.pyscripts/distiller/verify_scan.pyscripts/tests/fixtures/session.jsonlscripts/tests/fixtures/session_b.jsonlscripts/tests/test_digest_store.pyscripts/tests/test_ledger.pyscripts/tests/test_loop_distiller.shscripts/tests/test_signature.pyscripts/tests/test_transcript_reader.pyscripts/tests/test_verify_scan.pyTurn real session history into a pre-filled loop-builder blueprint. This skill
is the evidence front-end; loop-builder is the interview and the single
scaffolding authority. Output is always a loop — never a standalone skill.
The backbone knowledge is references/distillation.md (rubric + blueprint +
handoff). Load it when you run the flow.
On demand only (Trigger A). The user asks to distill what they just did. There is no background watching in this phase — a cross-session scanning loop (Trigger C) is designed in the spec but not built yet.
Read the transcript. Prefer the current session already in your context.
For precision or after a /clear/compaction, re-read it deterministically:
python3 -c "import sys; sys.path.insert(0, '${CLAUDE_PLUGIN_ROOT}/skills/loop-distiller/scripts/distiller'); \
import transcript_reader as tr, json; p = tr.locate(); \
print(json.dumps(tr.condense(tr.parse(p)), indent=2) if p else 'NO_TRANSCRIPT')"
The script's transcript-path scheme is an observed Claude Code convention —
verify against current docs; if it returns NO_TRANSCRIPT, fall back to
the in-context history.
Apply the rubric from references/distillation.md. Count how many of the
seven blocks have evidence. Lenient gate: 4+ blocks → proceed. Fewer → tell the
user this session doesn't look like a reusable workflow yet, and stop. (Saying
no is the point — most sessions are one-offs.)
Draft the blueprint. Emit loop-builder's fill-in template with each line
drawn from evidence, an ⟵ ev: cite, and a confidence marker. Any block
without evidence is UNKNOWN → ASK. Never fabricate a value or a /goal
/loop /schedule flag — flag uncertainty instead.
Hand off to loop-builder. Present the draft for correction, then invoke the
loop-builder skill with the corrected answers as its interview starting
point — the corrected answers are passed by inlining them in the conversation,
not via a file or argument contract. Do not scaffold loop files here.
SKILL.md, a STATE.md, or any scaffold file — that is
loop-builder's job.UNKNOWN → ASK beats a confident guess.On an error or when clearly blocked, capture locally (never auto-filed):
python3 "${CLAUDE_PLUGIN_ROOT}/skills/feedback-to-issue/scripts/feedback/cli.py" \
append --category bug --text "<what broke + context>"
To review and file, invoke the loop-builder:feedback-to-issue skill.
npx claudepluginhub aaronlps/loop-builder --plugin loop-builderDiscovers, finds, audits, crafts, runs, and publishes repeatable AI-agent loops. Use to analyze code for recurring work, interview users to design loops, or prepare loops for publication.
Converts Entire-tracked sessions, checkpoints, or repeated workflows into a reusable SKILL.md file. Use when you want to capture a repeatable agent workflow from past sessions.
Capture this session's repeatable process into a reusable skill. Call at end of a process you want to automate.