From resolve-open-loops
Use when the stabilisation-guard blocks the session because of active open_loop or assistant_goal memories, or when the user explicitly asks to review and close out pending items in Lore.
How this skill is triggered — by the user, by Claude, or both
Slash command
/resolve-open-loops:resolve-open-loopsThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Use this skill to work through active `open_loop` and `assistant_goal` memories in Lore for the current repository, so the stabilisation-guard stands down and the session can proceed cleanly.
Use this skill to work through active open_loop and assistant_goal memories in Lore for the current repository, so the stabilisation-guard stands down and the session can proceed cleanly.
onSessionStart or blocked a tool call with a message ending in "use /resolve-open-loops to work through these items".memory_search directly).lore_onboard).Required before starting
memory_status if unsure).memory_search scopes results to it automatically.Helpful if present
Call memory_search for both types in parallel and present the combined list before asking the user anything:
memory_search query="open loops and pending goals" type="open_loop" limit=50
memory_search query="open loops and pending goals" type="assistant_goal" limit=50
If both searches return zero results, tell the user the guard should not fire next session and stop — there is nothing to triage.
| Situation | Use this skill? | Route instead |
|---|---|---|
Guard fired — "X active items, use /resolve-open-loops" | Yes | — |
| User says "let's clear the Lore backlog before we start" | Yes | — |
| User wants to search what Lore knows about a topic | No | memory_search directly |
| User wants to recall recent session history | No | lore_recall |
| Lore is unavailable or not initialised | No | surface the error to the user |
Call memory_search twice in parallel — once for each type — to surface the full active list for the current repo:
memory_search query="open loops and pending goals" type="open_loop" limit=50
memory_search query="open loops and pending goals" type="assistant_goal" limit=50
Present the results as a numbered list grouped by type. For each item show: id, content summary (first 120 chars), and scope (repo / global).
Work through items one at a time (or in small thematic groups). For each, ask what resolution applies:
| Outcome | Action |
|---|---|
| Done — the work was completed | memory_forget id=<id> supersededBy="resolved: <brief outcome>" |
| Superseded — a newer item replaces it | memory_forget id=<id> supersededBy="<newer-id or description>" |
| Still open — genuinely unfinished | Leave it; acknowledge it in context so the user can decide to tackle it now |
| Invalid — stale or wrong scope | memory_forget id=<id> supersededBy="stale: removed during triage" |
Never bulk-forget all items without user confirmation. Resolve one item (or one confirmed batch) at a time.
After the triage pass, recheck the count:
memory_search query="open loops and pending goals" type="open_loop" limit=50
memory_search query="open loops and pending goals" type="assistant_goal" limit=50
If the remaining count is zero, tell the user the guard will not fire next session.
If items remain, tell the user how many are left and that the guard will still warn — the user decides whether to continue.
If the triage revealed something worth retaining (a resolved commitment, a pattern that kept recurring), offer to save it:
memory_save content="<what was learned>" type="commitment" scope="repo"
Only save when the user agrees — do not create memories speculatively.
global-scope item without explicit user confirmation — global memories affect all repositories.supersededBy human-readable — a terse phrase like "resolved: deployed to prod" beats a raw UUID.memory_search returns Lore unavailable (extension not loaded, db locked), surface the error and stop — do not attempt direct DB access.scope=transferable should be treated as read-only during this skill; they were written from another repo and the user should resolve them in context.Run node skills/skill-authoring/scripts/validate-skill-library.mjs skills/resolve-open-loops/SKILL.md.
Smoke test:
memory_search directly)lore_onboard)references/memory-types.md — memory type definitions, memory_search output format, memory_forget call shapes, and recommended supersededBy phrases for each resolution outcomeCreates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.
npx claudepluginhub matt-riley/lucky-hat --plugin resolve-open-loops