decision-hold-lifecycle
Never lose an unresolved decision. Use when work discovers an open question that needs the user's input, before declaring that work complete. Persists decisions to ~/.pi/agent/decisions.json so they s
SKILL.mdskills/decision-hold-lifecycle/SKILL.md
GitHubDecision Hold Lifecycle
Every unresolved decision that belongs to the user and is discovered while producing work must become a structured hold item before that work may be treated as complete.
Why
Decisions evaporate between sessions. Compaction wipes them. Context resets lose them. The audit (Jul 2026) found that focus-loss often starts with an unresolved decision that was never persisted — the model moved on, the user never saw it, and the work proceeded on an assumption.
This skill is the structural fix: decisions get persisted to disk, not held in context.
What it does
Inventory. When you discover an unresolved choice that requires the user, give it a stable key (a short slug), a title, a reason, and the repository/project path.
Hold. Write it to
~/.pi/agent/decisions.json:[ { "key": "pagination-cursor-vs-offset", "title": "Cursor-based or offset-based pagination?", "reason": "Cursor is more performant for large datasets but breaks skip-to-page UX", "project": "/Users/rom.iluz/Dev/SDR-AI", "createdAt": "2026-07-20T...", "resolved": false } ]Surface. The
/bearingscommand reads this file and shows open decisions in the "Your Call" section. The user sees them on their next status check.Resolve. When the user decides, mark
resolved: trueand record their answer in aresolutionfield. Dependent work can proceed.
Rules
- Only genuine unresolved choices that require the user create holds.
- Resolved findings, recommendations that need no user choice, and prose that merely sounds decision-like do NOT create holds.
- A hold remains open until the user's answer is durably recorded — not until the originating task completes.
- Do not close a hold merely because the task completed, the session ended, or compaction fired.
- Use the same key on retry so registration is idempotent.