{"id":17617,"plugin_id":"plugins_6a7a2f9e3968819187e30eaee8da1435","kind":"skill","collection_source":null,"comparison_source":null,"observed_at":"2026-09-30T23:14:17.566Z","digest":"5e5041fbd607d1fc47ed8d9690ce4a4d5ef0580a610dd1b658cff41ea1b86881","against":null,"payload":{"description":"Walk every parked idea — open okrdev:parked GitHub issues plus the parking lot's Captured section — to a decision (promote, archive, or side-quest with a time-box); then check the side-quest budget. Use when the user says \"triage the parking lot\", \"triage the parked issues\", \"go through my parked ideas\", \"clean up the ideas list\", or as the parking-lot step of a weekly check-in.","included_files":[],"name":"triage","skill_md_contents":"---\nname: triage\ndescription: Walk every parked idea — open okrdev:parked GitHub issues plus the parking lot's Captured section — to a decision (promote, archive, or side-quest with a time-box); then check the side-quest budget. Use when the user says \"triage the parking lot\", \"triage the parked issues\", \"go through my parked ideas\", \"clean up the ideas list\", or as the parking-lot step of a weekly check-in.\n---\n\n# Triage\n\nGive every parked idea a decision — the inbox is open `okrdev:parked` issues plus\n`okrdev/PARKING_LOT.md`'s Captured section — then sweep the open side-quests and report the\nbox-hours budget. Triage is the other half of the capture deal:\n\"park it\" is only an acceptable answer because every parked idea gets a fair hearing within a\nweek. Skip triage for a few weeks and the parking lot stops being a rudder and becomes a\ngraveyard — and people stop parking.\n\nUsually this runs inside `/okrdev:checkin` as the \"Parking lot triage\" section. It also runs\nstandalone, any day, at any install level — a Level 0 install is exactly a parking lot plus\nthis ritual.\n\nPace matters: seconds to a minute per item, not a debate. An item that needs real discussion\nhas answered its own question — it's a planning topic. Promote it as a next-cycle candidate\nand argue about it at planning, where arguing is the job.\n\n## Procedure\n\n1. **Check the install and load context.**\n   - No `okrdev/` directory → point at `/okrdev:install` and stop.\n   - `okrdev/PARKING_LOT.md` missing or missing its section headings → repair it to the\n     canonical format (see the format reference in [../park/SKILL.md](../park/SKILL.md)),\n     preserving any existing lines, then continue.\n   - Read `okrdev/config.md` for `side_quest_box_hours_per_week` (default 4).\n   - Gather the second inbox: when `gh` is authed and the repo's remote is GitHub, list the\n     open parked issues with `gh issue list --label okrdev:parked --state open`. Two inboxes\n     — issues and the file's Captured section — one ledger: every item gets the same\n     three-way decision, and every decision lands in the file.\n   - Find the active cycle: the file in `okrdev/okrs/` with `status: active`. No active cycle\n     (Level 0, or between cycles) is fine — triage still runs; it just changes what \"promote\"\n     means (step 4).\n   - Note whether you were invoked from a check-in. If so, decisions also get mirrored into\n     the check-in file (step 6).\n\n2. **Report the state before deciding anything.** Two lines: how many items are in the\n   inboxes (open `okrdev:parked` issues plus Captured lines, oldest first — ideas shouldn't\n   rot at the bottom), and the side-quest budget: for each\n   person, sum the `box:` hours of side quests they opened this ISO week (by the line's date)\n   and compare to the weekly budget. Box-hours are a crude proxy for committed distraction\n   time — say so — but it's the number everyone agreed to steer by. Quests still open from\n   earlier weeks don't count against this week's budget; the step-5 sweep handles their\n   staleness. If both inboxes are empty, say so, do the side-quest sweep (step 5), and be\n   done in a minute.\n\n3. **Walk every inbox item to a decision — issues and Captured lines alike.** Read the item\n   back — one line, no elaboration — and ask: promote, archive, or side-quest? Three options, because each maps to a distinct\n   claim about the idea: it serves an objective, it doesn't, or it's worth a bounded detour.\n\n   - **Promote** — the idea earns real work.\n     - Maps to an existing KR in the active cycle: move it to `## Promoted` as\n       `- [<today>] <idea> → KR2.1`. The KR's DRI decides when it gets built; promotion is\n       alignment, not a start date.\n     - Worth pursuing but not this cycle: `- [<today>] <idea> → next-cycle candidate`.\n       Planning reads Promoted before drafting, so nothing promoted gets lost.\n     - Wants to be a *new* KR mid-cycle: rare, and never silent. That's a mid-cycle amendment\n       — a PR to the cycle file per the amendment protocol in\n       [../../docs/method.md](../../docs/method.md). Challenge it first: if it can wait for\n       planning, it's a next-cycle candidate. Mid-cycle scope addition is how focused cycles\n       die.\n     - No active cycle: every promote is `→ next-cycle candidate` (read: planning candidate).\n       When a few of these accumulate, say so — that's the signal to run `/okrdev:plan`.\n   - **Archive** — move to `## Archived` as `- [<today>] <idea> — reason: <one line>`. The\n     reason is required; \"no longer excited\" is a perfectly good one. Frame it right:\n     archiving is the parking lot working as designed. Most ideas should die here, on\n     purpose, with a one-line epitaph instead of a half-built feature.\n   - **Side-quest** — the human wants to just do it, bounded. Ask for a time-box in hours,\n     check their budget from step 2, and move the line (for an issue item, write one) to\n     `## Side quests` as\n     `- [<today>] <idea> — @alex — box: <n>h — spent: 0h — status: open — notes: —` — the\n     file's Side quests section stays the budget's source of truth, wherever the idea was\n     captured. If the box would blow the weekly budget, say so plainly and ask anyway — you\n     warn, you never block. If they proceed over budget, log it: at Level 1+, append a\n     judgment-call line\n     (`- <date> — <who> — <reason> — <branch/PR>`) to the `## Judgment calls` section of this\n     week's check-in file at `okrdev/checkins/<cycle>/<yyyy-Www>.md`, creating it from the\n     template if it doesn't exist. At Level 0, where there are no check-in files, record it\n     in the item's `notes:` field instead.\n\n   Three verbs make the 30-second reason faster (full lens in\n   [../../docs/evidence.md](../../docs/evidence.md)): **buy** — a solved problem the market\n   already sells; archive with \"already solved elsewhere — adopt X\" as the epitaph, the\n   sharpest reason line there is (\"duplicate of what CRM already does\" is the house example).\n   **Box** — keeps-the-lights-on work; box, as in: it gets one — a bounded budget (a\n   side-quest time-box or the maintenance share), never open-ended investment — and it never\n   auto-promotes to next-cycle candidacy on its own. **Build** — work only this team\n   can do that a stakeholder of the mission would recognize as winning; that's what promote\n   is reserved for. Reasons, not extra questions — the pace stays thirty seconds per item.\n\n   Issue items get their decision recorded by closing the issue with a comment —\n   `gh issue close <n> --comment \"okrdev triage: promoted → KR1.3\"`,\n   `\"okrdev triage: archived — <reason>\"`, or `\"okrdev triage: side-quest, box: 4h\"` — and\n   the decision line ALSO lands in the file's Promoted / Archived / Side quests section. The\n   file is the single canonical, git-versioned ledger; issues are an inbox, not a second\n   ledger. Inbox to zero, every triage: every swept `okrdev:parked` issue ends up closed,\n   whatever the decision — a parked issue is never assigned, milestoned, or worked.\n\n   If the human refuses to decide on an item, it stays in its inbox — the Captured line stays\n   put, the issue stays open — deferral is an override like any other, and you never block. But keep count. When an item survives its third\n   triage, say what you see: \"Energy was high on July 13. You haven't missed it since.\n   Archive it?\" Undecided ideas cost a little attention every single week; that's the case\n   for deciding.\n\n4. **Date the decisions today.** Lines landing in Promoted, Archived, or Side quests carry\n   today's date — these sections are a log of decisions, not of captures. Keep the idea text\n   verbatim, issue titles included.\n\n5. **Sweep the open side-quests.** For every `status: open` item in `## Side quests`:\n   - Ask for a `spent:` update and write it.\n   - Finished → `status: done` — and ask once at the close: \"anything to show? a link, a\n     screenshot, one line.\" Record it in `notes:`; \"no\" costs nothing, and the question is\n     never asked mid-box. Demoable output is the strongest promotion argument at the next triage.\n   - Box blown (`spent` at or past `box`, still open) → force a named decision: close it as\n     done-enough, extend the box once with a reason in `notes:`, or promote it — a side-quest\n     that keeps eating hours is evidently real work and should compete at planning like real\n     work. Unbounded side-quests are just distractions with paperwork.\n\n6. **Write the ledger — one batched commit or PR per triage, never one per item.** Update\n   `okrdev/PARKING_LOT.md` with every decision from this sweep, then:\n   - **Unprotected default branch** → commit directly, same mechanics as `/okrdev:park`'s\n     file fallback (temporary worktree if you're on a working branch; commit message like\n     `okrdev: triage — 2 promoted, 3 archived, 1 side-quest`).\n   - **Protected default branch** → a small state PR: branch `okrdev/state-<date>-triage`,\n     push, open a PR titled `okrdev: triage — <summary>` with a `KR:` line, then merge it\n     immediately (`gh pr merge --squash`) — or enable auto-merge when required checks must\n     run first. Because the write is batched, this costs ~one PR per week, not one per idea.\n\n   If you were invoked from a check-in, also copy the decision lines into the `## Parking\n   lot triage` section of this week's check-in file — the check-in is the ritual's record;\n   the parking lot is the ledger.\n\n7. **Close with a summary.** A few lines, no more: N promoted (and where), N archived, N\n   side-quests sanctioned with total hours boxed, budget remaining per person, and what's\n   left in the inboxes — ideally \"nothing,\" file and issues both. If deferred items remain,\n   name them, so leaving them parked was a decision someone made out loud.\n\nThe full protocol — why nothing in Captured gets worked on, box-hours budgeting, what happens\nto Promoted items at cycle boundaries — lives in\n[../../docs/parking-lot.md](../../docs/parking-lot.md).\n"},"changes":[],"summary":"First saved snapshot. No earlier version is available for comparison.","summary_kind":"deterministic","summary_metadata":{}}