← okrdevCONTENT HISTORYWHAT CHANGED · RULE-BASED ANALYSIS
Update to okrdev
Snapshot Sep 30, 2026 · 23:14 UTC · version 0.8.4
Collection source: not recorded for this historical snapshot.
First saved snapshot
No earlier snapshot is available to establish a change.
Compare saved observations
Download comparison JSONFull technical diff · 0 changed fields
Full snapshot data
{
"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"
}SHA-256 of public snapshot: 5e5041fbd607d1fc47ed8d9690ce4a4d5ef0580a610dd1b658cff41ea1b86881