{"id":"54128ec5-0d41-4966-ba68-0f142d668fd9","shortId":"yPtcDM","kind":"skill","title":"decision-triage","tagline":"Interactively walk through every decision log in `.ninthwave/decisions/` one at\na time. For each log: read it, check whether the choice it describes still\nmatches what shipped, ask the human what to do (ratify / record as ADR /\ncodify into an existing doc / create follow-up work ","description":"## What this skill is\n\nThis is the canonical way to process decision logs in this repo (and any other repo that uses ninthwave). It is a synchronous, human-in-the-loop session: you read each log, the user decides what to do, you execute, you delete. There is a parallel async path (`nw review-inbox decisions`) that opens a weekly review PR; this skill is the sit-down-and-clear-it-now alternative.\n\nDecision logs are not the same as friction logs. A friction log says \"something hurt, fix it or drop it.\" A decision log says \"I made a choice X for reason Y, and here is what shipped.\" So the central question is not \"fix or drop\" but **ratify, codify, or follow up**: is the choice sound, should it be promoted into durable policy or recorded as a permanent architectural record, and does it leave behind a tradeoff or missing guardrail that needs its own work item?\n\n---\n\n## Repo-agnostic rule (read before anything else)\n\nThis skill ships from one repo but runs in any repo that uses ninthwave. The only paths and contracts you may assume exist are the ones ninthwave itself defines:\n\n- `.ninthwave/decisions/` -- the inbox to drain\n- `.ninthwave/work/` -- where new work items get written\n- `.ninthwave/work-item-format.md` -- work item shape\n- `nw lineage-token` -- CLI for lineage IDs\n- The decision file fields: `item`, `date`, `summary`, `context`, `decision`, `rationale`\n\n**Anything outside `.ninthwave/` is consuming-repo-specific and must be discovered at runtime.** That includes `docs/`, `agents/`, `skills/`, `CLAUDE.md`, `README.md`, ADR directories, technical guides, and so on. Do not hardcode these paths anywhere in this session. Phase 2 subagents are responsible for discovering each repo's actual conventions before recommending where a CODIFY edit or an ADR record should land. If you find yourself about to suggest editing a file you have not opened, stop and re-survey.\n\n---\n\n## Interactive Questions (CRITICAL)\n\nThis skill is highly interactive. You MUST use your interactive question tool to ask the user questions. Do NOT print a question as text and wait for a response.\n\n**Tool names by platform:** `AskUserQuestion` (Claude Code), `question` (OpenCode), `request_user_input` (Codex), `ask_user` (Copilot CLI, Gemini CLI). Use whichever is available in your environment.\n\n**Every question must follow this structure:**\n\n1. **Re-ground:** State the project, the current branch, what phase you are in, and \"decision M of N\". Assume the user has not looked at this window in 20 minutes.\n2. **Explain simply:** Paraphrase the decision in plain English. Say what was chosen and why, not just what the log file is named.\n3. **Recommend:** State which option you would pick and why, in one line. Anchor the reason in the investigation, not the log text.\n4. **Options:** Lettered options. When an option involves effort, indicate the scale.\n\n---\n\n## Hard rules\n\n- **Never group questions across decisions.** Always one question per log. **But DO batch the slow parts:** investigation runs in parallel up front (Phase 2), execution runs after all decisions are collected (Phase 4). The human's interactive window in Phase 3 must be as tight as possible: no nested confirmations, no waiting for subagents, no follow-up \"are you sure\" prompts.\n- **Never commit.** The skill stages edits and writes new files. The human commits at the end if they want to.\n- **Work items must follow `.ninthwave/work-item-format.md`.** Read it before writing any new work item file.\n- **Generate lineage tokens with `nw lineage-token`** when creating a work item, the same way `/decompose` does.\n- **Do not assume any path outside `.ninthwave/`.** Discover the consuming repo's doc, ADR, agent prompt, and skill conventions via Phase 2 globs. Never hardcode `agents/implementer.md`, `docs/adr/`, `ETHOS.md`, etc.\n- **Never propose an edit to a file the subagent has not actually opened.** Codify edits must reference real files surfaced by the doc survey, not guesses based on common conventions.\n- **Duplicate detection is best-effort.** If you are not certain two logs are duplicates, surface it as an option and let the human decide. Do not auto-merge.\n- **No \"Drop\" option.** Decisions describe choices that already shipped, so they do not go stale the way friction does. \"Ratify\" covers \"delete with no follow-up.\" If a decision is genuinely meaningless (e.g., the underlying code was reverted), Ratify with a one-line receipt that names the revert commit.\n- **ASCII only.** No em dashes, no smart quotes, no ellipsis characters. Use `--`, straight quotes, and `...`. The repo enforces a `no-em-dash` lint rule on `.md` files.\n\n---\n\n## Phase 1: LOAD\n\n**Goal:** Find every decision log and prepare to walk through them.\n\n1. List the decisions inbox:\n   ```bash\n   ls .ninthwave/decisions/*.md 2>/dev/null\n   ```\n   Exclude `.gitkeep`. Decision logs live flat in `.ninthwave/decisions/`; there is no archive directory. The triage flow is \"log -> handle -> delete\", end of life.\n\n2. If there are zero logs, tell the user \"Decisions inbox is clean. Nothing to triage.\" and exit.\n\n3. Sort the logs by filename (timestamps in the filename make this FIFO by default). Oldest first.\n\n4. Announce the shape of the session so the human knows what is coming: \"Found N decision logs. I will investigate all of them in parallel first (this is the slow part). Then I will ask you about each one quickly. Then I will apply your decisions in a batch at the end. The interactive part should take a couple of minutes.\"\n\n---\n\n## Phase 2: INVESTIGATE (parallel)\n\n**Goal:** Front-load all the slow work. Every decision log gets a grounded investigation, including a doc survey of the consuming repo, before the human is asked anything.\n\nTriage decisions are dramatically better when grounded in the actual shipped code, the consuming repo's doc conventions, and the rest of the decisions inbox. Do not try to do this analysis from your own context: you will skim, you will guess, and recommendations will be soft. Delegate it to subagents, and run them in parallel so the human's interactive window in Phase 3 is not gated on slow exploration.\n\n### How to launch\n\n**Launch one Explore subagent per log, all in parallel.** Issue a single assistant message containing N `Agent` tool calls, one per decision log. Do NOT spawn them sequentially. This is the entire point of the phase.\n\nIf the inbox holds more than 10 logs, batch in groups of 10 (still parallel within each group). Wait for one group to finish before launching the next.\n\n**Subagent type:** in Claude Code use `subagent_type: \"Explore\"` with thoroughness \"medium\". On other platforms use the equivalent codebase-exploration agent.\n\n### Subagent prompt template\n\nFill in the bracketed parts for each log before launching:\n\n```\nYou are investigating ONE decision log from a ninthwave-managed repo so a human can decide what to do with it. Read whatever you need (shipped code, git log, the consuming repo's docs, other decision logs, open work items) to give a grounded recommendation AND draft the concrete artifact that would be applied if the human approves.\n\nDecision log path: [path]\nDecision log contents (verbatim):\n[paste the entire file body]\n\nYou are running in an unknown repo. Do NOT assume any paths outside `.ninthwave/`. Discover the consuming repo's doc and ADR conventions before recommending anything.\n\nInvestigate and report back, in this exact section order:\n\n1. WHAT SHIPPED\n   Run `git log --all --grep=<item id>` and any related searches to find the work item's PR or merge commits. Read the actual diff. Confirm the decision text matches what shipped: does the named field, function, file, or behavior actually exist as described? State explicitly: matches / partial match / mismatch / unclear, and cite the SHA you read.\n\n2. REPO DOC SURVEY\n   Glob the repo to discover its doc and ADR conventions. Do NOT hardcode paths; check what is actually present. Look for:\n     - prose doc directories: `docs/`, `documentation/`, `doc/`, `architecture/`\n     - ADR conventions: `adr/`, `**/adr/`, `**/decisions/`, `**/architecture-decisions/`\n     - root docs: `README.md`, `CLAUDE.md`, `AGENTS.md`, `CONTRIBUTING.md`, `ETHOS.md`, `VISION.md`\n     - agent / skill prompt directories: `agents/`, `skills/`, `.claude/`, `.codex/`\n   Report a short bullet list:\n     - Where prose docs live (path, organizing pattern: guide / how-to / reference)\n     - Whether an ADR directory already exists (path + filename convention) or \"none\"\n     - Whether agent or skill prompts exist (paths) or \"none\"\n     - Which root principles file (if any) future workers actually read\n   This survey is what every later step depends on. Do not skip it.\n\n3. IS IT ENCODED ANYWHERE?\n   Using the doc survey from step 2, grep the discovered locations for evidence that THIS specific decision is already expressed in tests, types, docs, skill, or agent prompt. Cite file:line for any match. If nothing encodes it, say so explicitly: this is the strongest signal that CODIFY or RECORD_ADR is the right call.\n\n4. DID IT STICK?\n   `git log` since the decision's `date` field for commits that touch the same area. Detect silent drift where a later change partly reversed the decision. State explicitly: stuck / drifted (cite SHA) / unclear.\n\n5. RELATED DECISIONS\n   Look at the other files in `.ninthwave/decisions/` for logs that overlap this one. Two workers independently choosing X and Y for the same ambiguity is a real pattern. List filename and a one-line reason for the overlap. If none, say \"none\".\n\n6. TENSION WITH STATED PRINCIPLES\n   If the doc survey found a principles file, read the sections that touch this area and flag contradictions explicitly. If no principles file exists, say so.\n\n7. RECOMMENDATION\n   Pick exactly one tag and give a one-sentence reason that references the investigation, not the log text:\n     RATIFY      -- sound, already reflected in code, no institutional value worth preserving, delete log\n     RECORD_ADR  -- sound AND worth preserving as a permanent architectural record\n     CODIFY      -- promote into an existing project doc / agent prompt / skill so future workers follow the rule\n     FOLLOWUP    -- create a work item that captures the tradeoff, owner, and missing guardrails\n     REVISE      -- decision is wrong or stale; create a work item to reverse or adjust it\n     MERGE_INTO  -- duplicate of another decision log; name which one\n\n8. DRAFT THE ARTIFACT\n   Produce the concrete thing that would be applied if the human approves your recommendation. Do not write any files; include the artifact inline in your report so the skill can apply it later.\n\n   - RATIFY: a one-line receipt naming the commit SHA that already implements the decision (or the revert SHA that made it moot).\n   - RECORD_ADR: the full ADR file body and proposed path. If the doc survey found an existing ADR directory, follow its filename and template conventions. If not, propose a path under the discovered docs root (e.g. `<docs root>/adr/NNNN-<slug>.md`) with a minimal Context / Decision / Consequences template, and call out in your recommendation that this is the repo's first ADR so the human knows they are bootstrapping a convention.\n   - CODIFY: the exact discovered file path and a before/after edit, ready for the Edit tool. Show enough surrounding context that `old_string` will be unique. Use fenced code blocks labeled `BEFORE` and `AFTER`. Do not propose an edit to a file you have not opened in this report.\n   - FOLLOWUP: the full work item file. Filename in the form `{priority_num}-{domain_slug}--{ID}.md`. Body following `.ninthwave/work-item-format.md` exactly. Acceptance criteria must explicitly include the question: \"What evidence or constraint is still missing before this should be treated as settled?\" Leave the lineage token as the literal string `<LINEAGE>`; the skill will fill it in.\n   - REVISE: same as FOLLOWUP but framed as a reversal. Quote the original decision's filename and `decision:` line in the work item body so the reversal is anchored.\n   - MERGE_INTO: the target log filename and a one-line note on what distinct context to append.\n\nBe concrete, not vague. No prose paragraphs, no hedging. Cap your report at 500 words including the artifact.\n```\n\n### After all subagents return\n\nBuild a triage table in your working notes, indexed by log path. One entry per log:\n\n```\n{\n  <log_path>: {\n    assessment: <synthesized block, see below>,\n    rec: <RATIFY | RECORD_ADR | CODIFY | FOLLOWUP | REVISE | MERGE_INTO>,\n    draft: <the concrete artifact from section 8, kept verbatim>,\n    full_report: <the subagent's full response, retained for fallbacks>\n  }\n}\n```\n\nSynthesized assessment block format:\n\n```\nDecision M of N: <filename>\nItem: <item id>   Date: <date>\nSummary: <fields.summary in one line>\nWhat shipped: <matches | partial | mismatch | unclear> (<SHA>)\nRepo doc home: <discovered docs root | none>   ADR convention: <found path | none>\nEncoded anywhere?: <file:line | nowhere>\nDrift since?: <SHA | no | unclear>\nTension with principles: <file + snippet | none>\nSubagent rec: <RATIFY | RECORD_ADR | CODIFY | FOLLOWUP | REVISE | MERGE_INTO> -- <one-line reason>\n```\n\nThe triage table is the only state Phase 3 and Phase 4 share. Carry it across both phases without dropping anything.\n\n---\n\n## Phase 3: DECIDE (quick interactive walk-through)\n\n**Goal:** Collect every decision, fast. Do not execute anything.\n\nWalk the triage table in FIFO order. For each log, in order:\n\n1. **Print** the assessment block (so the human has the grounded context on screen above the question).\n2. **Call AskUserQuestion ONCE.** No follow-ups. No \"are you sure\". No inner confirmation loops.\n3. **Mark the subagent's recommendation** as `(Recommended)` and put it first in the option list (per the AskUserQuestion convention).\n4. **Use the `preview` field** on the recommended option to show the proposed artifact: the ADR body, the work item draft, the before/after diff, the receipt, etc. AskUserQuestion renders previews as monospace markdown blocks beside the option list, so the human can read what will happen if they approve without leaving the question.\n5. **Record** the user's choice in the triage table under a new `decision` key. Move to the next log immediately.\n\nIf the user picks an option the subagent did NOT draft for (e.g. the user picks E when the subagent recommended A), record the choice anyway. Phase 4 will draft inline using the investigation context from `full_report`.\n\n### Question shape\n\nEvery Phase 3 question follows the same structure (re-grounding the user each time, since they may have lost focus mid-walk-through):\n\n> **Question:** \"Project: `<repo>`. Branch: `<current>`. Phase: decision-triage decide, decision M of N (`<filename>`). The decision: `<one-sentence paraphrase of summary + decision>`. The investigation found: `<one-line on whether the shipped code matches>` | `<one-line on whether anything encodes the rule>` | `<one-line on drift, duplicates, or principle tension if any>`. I would pick `<X>` because `<reason that references the investigation>`. What should we do with this log?\"\n\n### Conceptual option set\n\nThe skill reasons about seven options, but only four go into each AskUserQuestion call (see \"Dynamic option selection\" below).\n\n- **A) Ratify (delete)** -- decision is sound, already reflected in merged code, no institutional value worth preserving. Preview: the commit SHA receipt.\n- **B) Record as ADR** -- sound AND worth preserving as a permanent architectural record. Preview: the full ADR body + proposed path. If the consuming repo has no ADR convention yet, the preview flags that the human is bootstrapping one.\n- **C) Codify into existing doc** -- promote into a project doc / agent prompt / skill / guide that already encodes rules in this repo. Preview: drafted BEFORE/AFTER edit against a discovered file. Indicate scale (tiny / small / medium).\n- **D) Create follow-up work item** -- capture the missing guardrail, tradeoff, or owner. Preview: full work item body. Acceptance criteria includes the question \"What evidence or constraint is still missing before this should be treated as settled?\"\n- **E) Revise (reversal work item)** -- the decision was wrong or stale; create a work item framed as a reversal with the original decision quoted. Preview: full work item body.\n- **F) Merge into another decision** -- duplicate of another log; append distinct context, delete this log. Only offered when the subagent flagged a real duplicate.\n- **G) Skip** -- leave in place and move on. Use sparingly: the point of this session is to drive the inbox to zero.\n\n### Dynamic option selection\n\n`AskUserQuestion` allows four explicit options plus an automatic \"Other\" free-text field. Pick the four most relevant for each decision:\n\n1. Always include **A) Ratify** and **D) Follow-up work item**. These are the two most common outcomes and need to be one click away.\n2. Slot 3 is the subagent's recommendation if it is not already A or D (so B / C / E / F whichever was picked).\n3. Slot 4 is the next most plausible alternative based on the assessment block. Heuristics: if the rec is RECORD_ADR, slot 4 is usually CODIFY; if the rec is CODIFY, slot 4 is usually RECORD_ADR; if the rec is REVISE, slot 4 is usually FOLLOWUP; if the rec is MERGE_INTO, slot 4 is usually RATIFY; if the rec is RATIFY or FOLLOWUP, slot 4 is usually whichever of B / C the doc survey suggests is most natural.\n4. The recommended option is marked `(Recommended)` and listed first.\n5. **G) Skip** and any unlisted option are reachable through \"Other\" with a short text instruction; Phase 4 honors them.\n\nThe whole point of Phase 3 is speed: read assessment, click option, next. If the human wants to steer a draft, they pick \"Other\" with notes and Phase 4 honors them.\n\n---\n\n## Phase 4: EXECUTE (batch)\n\n**Goal:** Apply every recorded decision. The human's input window is closed; do not call AskUserQuestion in this phase.\n\nWalk the triage table in FIFO order. For each entry, look at the recorded `decision` and apply it.\n\n### Decision handlers\n\n**A) Ratify:**\n1. Print the one-line receipt from `draft` so the user has the trail (commit SHA that implements or reverts the decision).\n2. Delete the decision log (see \"After each handler\" below).\n\n**B) Record as ADR:**\n1. Use the pre-drafted ADR body from `draft`. Write it to the proposed path (which the subagent already validated against the discovered ADR convention, or proposed as a bootstrap if none existed).\n2. If the user picked B but the subagent did not draft an ADR (because it recommended something else), draft one inline from `full_report` using the same Context / Decision / Consequences template, against a path consistent with the doc survey in `full_report`. Do not invent a docs directory the survey did not find; if the survey found nothing, fall back to `docs/adr/NNNN-<slug>.md` and tell the human in the progress line that this bootstraps a new convention.\n3. Print the new ADR path.\n4. Delete the decision log.\n\n**C) Codify into existing doc:**\n1. Use the pre-drafted edit from `draft`. Open the file (which the subagent already opened and quoted), locate the BEFORE block, apply the AFTER block via the Edit tool.\n2. If the user overrode the subagent's recommendation and there is no pre-drafted edit, draft one inline from `full_report` against a file the subagent's doc survey already named. Do not edit a file that was not surfaced in the survey.\n3. Print a 3-5 line summary of what changed and which file.\n4. Delete the decision log.\n\n**D) Follow-up:**\n1. Generate a lineage token:\n   ```bash\n   nw lineage-token\n   ```\n2. Substitute it for the `<LINEAGE>` placeholder in the drafted work item body.\n3. Write the file to `.ninthwave/work/{priority_num}-{domain_slug}--{ID}.md`.\n4. Print the new ID and path.\n5. If the user picked D without a pre-drafted work item (because the subagent recommended something else), draft one inline from `full_report` using the same fields as the standard subagent template, then write. The acceptance criteria must include: \"What evidence or constraint is still missing before this should be treated as settled?\"\n6. Delete the decision log.\n\n**E) Revise:**\n1. Same flow as D, but the work item body is framed as a reversal. Quote the original decision log's filename and `decision:` line in the body so the reversal is anchored to the choice it overturns.\n2. Delete the decision log.\n\n**F) Merge into <other decision>:**\n1. Read the target decision log named in `draft`.\n2. Append a `---` divider and the distinct context from the current log (do not duplicate fields that already match).\n3. Use Edit to write the appended content.\n4. Delete the current decision log (the target stays).\n\n**G) Skip:**\n1. Leave the log in place. Do nothing.\n\n### After each handler\n\nFor decisions A, B, C, D, E, F, delete the decision log:\n\n```bash\nrm <log_path>\n```\n\nFor G, do not delete.\n\nPrint one line per log as it is handled: \"Decision M of N done: `<choice>` -- `<one-line outcome>`. `<remaining>` to go.\"\n\n---\n\n## Phase 5: WRAP\n\nWhen the loop finishes, summarize the session:\n\n1. Counts: \"Triaged N decisions. Ratified: X. Recorded as ADR: Y. Codified: Z. Follow-ups: A. Revisions: B. Merged: C. Skipped: D.\"\n2. List any new work items by ID.\n3. List any new ADR files by path.\n4. List any files edited.\n5. Run `git status` and show the user the staged/unstaged changes.\n6. **Do NOT commit.** Tell the user the suggested commit command and let them decide:\n   ```\n   Suggested next step:\n     git add -A && git commit -m \"chore: triage decisions\"\n   I will not run this for you. Commits are your call.\n   ```\n\n---\n\n## Why this skill exists (background for the worker reading this)\n\nDecision logs accumulate during heavy dogfooding: every time a worker has to make a material architectural, product, or testing call that the work item did not specify, the worker writes one. They are the sibling of friction logs in the ninthwave inbox model: friction is the dogfooding signal, decisions are the institutional memory of what got chosen and why. The async path (`nw review-inbox decisions`) exists for weekly hygiene, but it is bad for clearing twenty logs in one sitting.\n\nThe leverage of this skill is in promoting the important decisions into durable form before they are lost: an ADR for the ones future contributors will need to understand the \"why\" of, a doc or prompt edit for the ones future workers will need to follow as a rule, and a follow-up work item for the ones that exposed a missing guardrail. Ratifying the trivial ones quickly is what makes room to spend real attention on the load-bearing ones. The skill's job is to keep that loop tight: parallel investigation with per-repo doc discovery, no nested confirmations, no waiting for subagents during the Decide phase, no commits without permission.","tags":["decision","triage","ninthwave","ninthwave-io","agent-skills","ai-agents","ai-coding","claude-code","continuous-delivery","copilot-cli","multi-agent","opencode"],"capabilities":["skill","source-ninthwave-io","skill-decision-triage","topic-agent-skills","topic-ai-agents","topic-ai-coding","topic-claude-code","topic-continuous-delivery","topic-copilot-cli","topic-multi-agent","topic-opencode","topic-orchestrator","topic-pull-requests","topic-worktrees"],"categories":["ninthwave"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/ninthwave-io/ninthwave/decision-triage","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add ninthwave-io/ninthwave","source_repo":"https://github.com/ninthwave-io/ninthwave","install_from":"skills.sh"}},"qualityScore":"0.454","qualityRationale":"deterministic score 0.45 from registry signals: · indexed on github topic:agent-skills · 8 github stars · SKILL.md body (22,866 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-05-18T19:09:06.136Z","embedding":null,"createdAt":"2026-05-18T13:14:45.701Z","updatedAt":"2026-05-18T19:09:06.136Z","lastSeenAt":"2026-05-18T19:09:06.136Z","tsv":"'-5':3129 '/adr':1353 '/adr/nnnn-':1801 '/architecture-decisions':1355 '/decisions':1354 '/decompose':632 '/dev/null':826 '1':428,803,816,1260,2158,2648,2884,2921,3049,3147,3250,3296,3343,3399 '10':1096,1102 '2':322,460,543,655,825,850,948,1318,1443,2175,2674,2907,2955,3080,3157,3288,3305,3422 '20':458 '3':483,560,868,1044,1432,2116,2130,2191,2327,2676,2698,2813,3033,3125,3128,3169,3324,3430 '4':506,552,885,1492,2119,2211,2312,2700,2720,2730,2741,2752,2764,2778,2805,2836,2840,3039,3138,3181,3332,3438 '5':1529,2264,2788,3188,3390,3443 '500':1995 '6':1575,3243,3454 '7':1606 '8':1705,2040 'accept':1901,2530,3225 'accumul':3504 'across':523,2123 'actual':331,674,989,1284,1301,1339,1417 'add':3473 'adjust':1693 'adr':40,305,341,647,1246,1330,1350,1352,1391,1487,1641,1766,1769,1782,1823,2028,2077,2102,2226,2442,2455,2465,2718,2734,2920,2927,2945,2968,3037,3408,3434,3603 'agent':301,648,1070,1139,1364,1368,1401,1463,1658,2487 'agents.md':1360 'agents/implementer.md':659 'agnost':215 'allow':2628 'alreadi':730,1393,1455,1629,1753,2424,2492,2686,2940,3064,3111,3322 'altern':126,2706 'alway':525,2649 'ambigu':1555 'analysi':1011 'anchor':496,1963,3282 'announc':886 'anoth':1699,2581,2585 'anyth':219,284,979,1250,2128,2145 'anyway':2310 'anywher':317,1436,2083 'append':1981,2587,3306,3330 'appli':929,1207,1716,1739,2844,2878,3072 'approv':1211,1720,2259 'architectur':195,1349,1649,2450,3517 'archiv':838 'area':1510,1594 'artifact':1203,1708,1730,1999,2037,2224 'ascii':774 'ask':31,380,409,920,978 'askuserquest':400,2177,2209,2238,2411,2627,2858 'assess':2020,2054,2161,2710,2817 'assist':1066 'assum':242,448,636,1234 'async':102,3562 'attent':3660 'auto':721 'auto-merg':720 'automat':2634 'avail':418 'away':2673 'b':2439,2691,2769,2917,2960,3357,3417 'back':1254,3015 'background':3496 'bad':3576 'base':689,2707 'bash':821,3152,3366 'batch':532,934,1098,2842 'bear':3665 'before/after':1841,2233,2500 'behavior':1300 'behind':201 'besid':2245 'best':697 'best-effort':696 'better':984 'block':1861,2022,2055,2162,2244,2711,3071,3075 'bodi':1224,1771,1897,1958,2227,2456,2529,2577,2928,3168,3259,3277 'bootstrap':1830,2475,2951,3029 'bracket':1146 'branch':437,2352 'build':2004 'bullet':1375 'c':2477,2692,2770,3044,3358,3419 'call':1072,1491,1811,2176,2412,2857,3491,3521 'canon':58 'cap':1991 'captur':1673,2518 'carri':2121 'central':166 'certain':703 'chang':1517,3134,3453 'charact':784 'check':21,1336 'choic':24,154,181,728,2269,2309,3285 'choos':1548 'chore':3478 'chosen':472,3558 'cite':1313,1465,1526 'claud':401,1121,1370 'claude.md':303,1359 'clean':862 'clear':123,3578 'cli':270,412,414 'click':2672,2818 'close':2854 'code':402,759,991,1122,1180,1632,1860,2428 'codebas':1137 'codebase-explor':1136 'codex':408,1371 'codifi':41,175,337,676,1484,1651,1833,2029,2103,2478,2723,2728,3045,3410 'collect':550,2138 'come':898 'command':3464 'commit':583,594,773,1281,1505,1750,2436,2899,3457,3463,3476,3488,3697 'common':691,2665 'conceptu':2396 'concret':1202,1711,1983,2036 'confirm':569,1286,2189,3687 'consequ':1808,2985 'consist':2990 'constraint':1911,2538,3232 'consum':289,643,972,993,1184,1241,2461 'consuming-repo-specif':288 'contain':1068 'content':1218,3331 'context':281,1015,1806,1851,1979,2169,2319,2589,2983,3312 'contract':239 'contradict':1597 'contributing.md':1361 'contributor':3608 'convent':332,652,692,997,1247,1331,1351,1397,1789,1832,2078,2210,2466,2946,3032 'copilot':411 'count':3400 'coupl':944 'cover':743 'creat':46,625,1668,1686,2512,2560 'criteria':1902,2531,3226 'critic':366 'current':436,3315,3335 'd':2511,2654,2689,3143,3193,3254,3359,3421 'dash':778,796 'date':279,1502,2062 'decid':90,717,1169,2131,2357,3468,3694 'decis':2,8,62,108,127,148,275,282,444,465,524,548,726,752,808,819,829,859,901,931,960,981,1003,1075,1157,1189,1212,1216,1288,1453,1500,1521,1531,1681,1700,1756,1807,1948,1952,2057,2140,2277,2355,2358,2363,2370,2421,2555,2571,2582,2647,2847,2876,2880,2906,2910,2984,3042,3141,3246,3268,3273,3291,3300,3336,3355,3364,3382,3403,3480,3502,3550,3568,3594 'decision-triag':1,2354 'default':882 'defin':249 'deleg':1027 'delet':97,744,846,1638,2420,2590,2908,3040,3139,3244,3289,3333,3362,3372 'depend':1426 'describ':26,727,1304 'detect':694,1511 'diff':1285,2234 'directori':306,839,1345,1367,1392,1783,3003 'discov':295,327,641,1239,1326,1446,1797,1836,2073,2504,2944 'discoveri':3684 'distinct':1978,2588,3311 'divid':3308 'doc':45,300,646,685,968,996,1187,1244,1320,1328,1344,1346,1348,1357,1379,1439,1460,1582,1657,1777,1798,2071,2074,2481,2486,2772,2993,3002,3048,3109,3617,3683 'docs/adr':660 'docs/adr/nnnn-':3017 'document':1347 'dogfood':3507,3548 'domain':1893,3177 'done':3386 'draft':1200,1706,2034,2231,2295,2314,2499,2828,2892,2926,2930,2966,2974,3054,3057,3095,3097,3165,3198,3207,3304 'drain':254 'dramat':983 'drift':1513,1525,2087,2378 'drive':2619 'drop':145,172,724,2127 'duplic':693,707,1697,2379,2583,2601,3319 'durabl':188,3596 'dynam':2414,2624 'e':2301,2549,2693,3248,3360 'e.g':756,1800,2297 'edit':338,352,587,666,677,1842,1846,1870,2501,3055,3078,3096,3115,3326,3442,3620 'effort':514,698 'ellipsi':783 'els':220,2973,3206 'em':777,795 'encod':1435,1473,2082,2493 'end':597,847,937 'enforc':791 'english':468 'enough':1849 'entir':1085,1222 'entri':2017,2871 'environ':421 'equival':1135 'etc':662,2237 'ethos.md':661,1362 'everi':7,422,807,959,1423,2139,2325,2845,3508 'evid':1449,1909,2536,3230 'exact':1257,1609,1835,1900 'exclud':827 'execut':95,544,2144,2841 'exist':44,243,1302,1394,1405,1603,1655,1781,2480,2954,3047,3495,3569 'exit':867 'explain':461 'explicit':1306,1477,1523,1598,1904,2630 'explor':1050,1056,1126,1138 'expos':3644 'express':1456 'f':2578,2694,3293,3361 'fall':3014 'fallback':2052 'fast':2141 'fenc':1859 'field':277,1296,1503,2215,2639,3216,3320 'fifo':880,2151,2867 'file':276,354,480,591,615,669,681,801,1223,1298,1412,1466,1536,1587,1602,1727,1770,1837,1873,1886,2084,2095,2505,3060,3105,3117,3137,3172,3435,3441 'filenam':873,877,1396,1561,1786,1887,1950,1969,3271 'fill':1143,1933 'find':347,806,1273,3008 'finish':1113,3395 'first':884,911,1822,2202,2787 'fix':142,170 'flag':1596,2470,2598 'flat':832 'flow':842,3252 'focus':2345 'follow':48,177,425,576,605,748,1664,1784,1898,2181,2329,2514,2656,3145,3413,3629,3636 'follow-up':47,575,747,2180,2513,2655,3144,3412,3635 'followup':1667,1881,1939,2030,2104,2744,2762 'form':1890,3597 'format':2056 'found':899,1584,1779,2079,2373,3012 'four':2407,2629,2642 'frame':1941,2564,3261 'free':2637 'free-text':2636 'friction':134,137,740,3538,3545 'front':541,953 'front-load':952 'full':1768,1883,2043,2048,2321,2454,2526,2574,2978,2996,3101,3211 'function':1297 'futur':1415,1662,3607,3624 'g':2602,2789,3341,3369 'gate':1047 'gemini':413 'generat':616,3148 'genuin':754 'get':260,962 'git':1181,1264,1496,3445,3472,3475 'gitkeep':828 'give':1195,1613 'glob':656,1322 'go':736,2408,3388 'goal':805,951,2137,2843 'got':3557 'grep':1267,1444 'ground':431,964,986,1197,2168,2335 'group':521,1100,1107,1111 'guardrail':206,1679,2521,3647 'guess':688,1021 'guid':308,1384,2490 'handl':845,3381 'handler':2881,2915,3353 'happen':2256 'hard':518 'hardcod':314,658,1334 'heavi':3506 'hedg':1990 'heurist':2712 'high':370 'hold':1093 'home':2072 'honor':2806,2837 'how-to':1385 'human':33,79,554,593,716,894,976,1038,1167,1210,1719,1826,2165,2251,2473,2823,2849,3022 'human-in-the-loop':78 'hurt':141 'hygien':3572 'id':273,1895,3179,3185,3429 'immedi':2284 'implement':1754,2902 'import':3593 'inbox':107,252,820,860,1004,1092,2621,3543,3567 'includ':299,966,1728,1905,1997,2532,2650,3228 'independ':1547 'index':2012 'indic':515,2506 'inlin':1731,2315,2976,3099,3209 'inner':2188 'input':407,2851 'institut':1634,2430,3553 'instruct':2803 'interact':4,364,371,376,556,939,1040,2133 'invent':3000 'investig':501,536,905,949,965,1155,1251,1622,2318,2372,3678 'involv':513 'issu':1063 'item':212,259,264,278,603,614,628,1193,1276,1671,1689,1885,1957,2061,2230,2517,2528,2553,2563,2576,2659,3167,3200,3258,3427,3525,3639 'job':3670 'keep':3673 'kept':2041 'key':2278 'know':895,1827 'label':1862 'land':344 'later':1424,1516,1741 'launch':1053,1054,1115,1152 'leav':200,1922,2261,2604,3344 'let':714,3466 'letter':508 'leverag':3585 'life':849 'line':495,767,1467,1566,1746,1953,1974,2085,2376,2889,3026,3130,3274,3375 'lineag':268,272,617,622,1924,3150,3155 'lineage-token':267,621,3154 'lint':797 'list':817,1376,1560,2206,2248,2786,3423,3431,3439 'liter':1928 'live':831,1380 'load':804,954,3664 'load-bear':3663 'locat':1447,3068 'log':9,18,63,87,128,135,138,149,479,504,529,705,809,830,844,855,871,902,961,1059,1076,1097,1150,1158,1182,1190,1213,1217,1265,1497,1540,1625,1639,1701,1968,2014,2019,2155,2283,2395,2586,2592,2911,3043,3142,3247,3269,3292,3301,3316,3337,3346,3365,3377,3503,3539,3580 'look':453,1341,1532,2872 'loop':82,2190,3394,3675 'lost':2344,3601 'ls':822 'm':445,2058,2359,3383,3477 'made':152,1762 'make':878,3514,3655 'manag':1163 'mark':2192,2783 'markdown':2243 'match':28,1290,1307,1309,1470,2066,3323 'materi':3516 'may':241,2342 'md':800,824,1802,1896,3018,3180 'meaningless':755 'medium':1129,2510 'memori':3554 'merg':722,1280,1695,1964,2032,2106,2427,2579,2749,3294,3418 'messag':1067 'mid':2347 'mid-walk-through':2346 'minim':1805 'minut':459,946 'mismatch':1310,2068 'miss':205,1678,1914,2520,2541,3235,3646 'model':3544 'monospac':2242 'moot':1764 'move':2279,2608 'must':293,373,424,561,604,678,1903,3227 'n':447,900,1069,2060,2361,3385,3402 'name':397,482,770,1295,1702,1748,3112,3302 'natur':2777 'need':208,1178,2668,3610,3627 'nest':568,3686 'never':520,582,657,663 'new':257,590,612,2276,3031,3036,3184,3425,3433 'next':1117,2282,2703,2820,3470 'ninthwav':73,234,247,286,640,1162,1238,3542 'ninthwave-manag':1161 'ninthwave/decisions':11,250,823,834,1538 'ninthwave/work':255,3174 'ninthwave/work-item-format.md':262,606,1899 'no-em-dash':793 'none':1399,1408,1572,1574,2076,2081,2097,2953 'note':1975,2011,2833 'noth':863,1472,3013,3350 'nowher':2086 'num':1892,3176 'nw':104,266,620,3153,3564 'offer':2594 'old':1853 'oldest':883 'one':12,225,246,494,526,766,924,1055,1073,1110,1156,1544,1565,1610,1616,1704,1745,1973,2016,2365,2375,2476,2671,2888,2975,3098,3208,3374,3532,3582,3606,3623,3642,3651,3666 'one-lin':765,1564,1744,1972,2374,2887 'one-sent':1615,2364 'open':110,358,675,1191,1877,3058,3065 'opencod':404 'option':487,507,509,512,712,725,2205,2219,2247,2290,2397,2404,2415,2625,2631,2781,2794,2819 'order':1259,2152,2157,2868 'organ':1382 'origin':1947,2570,3267 'outcom':2666 'outsid':285,639,1237 'overlap':1542,1570 'overrod':3084 'overturn':3287 'owner':1676,2524 'paragraph':1988 'parallel':101,539,910,950,1035,1062,1104,3677 'paraphras':463,2367 'part':535,916,940,1147,1518 'partial':1308,2067 'past':1220 'path':103,237,316,638,1214,1215,1236,1335,1381,1395,1406,1774,1794,1838,2015,2080,2458,2936,2989,3038,3187,3437,3563 'pattern':1383,1559 'per':528,1058,1074,2018,2207,3376,3681 'per-repo':3680 'perman':194,1648,2449 'permiss':3699 'phase':321,439,542,551,559,654,802,947,1043,1089,2115,2118,2125,2129,2311,2326,2353,2804,2812,2835,2839,2861,3389,3695 'pick':490,1608,2288,2300,2387,2640,2697,2830,2959,3192 'place':2606,3348 'placehold':3162 'plain':467 'platform':399,1132 'plausibl':2705 'plus':2632 'point':1086,2613,2810 'polici':189 'possibl':566 'pr':114,1278 'pre':2925,3053,3094,3197 'pre-draft':2924,3052,3093,3196 'prepar':811 'present':1340 'preserv':1637,1645,2433,2446 'preview':2214,2240,2434,2452,2469,2498,2525,2573 'principl':1411,1579,1586,1601,2094,2381 'print':386,2159,2885,3034,3126,3182,3373 'prioriti':1891,3175 'process':61 'produc':1709 'product':3518 'progress':3025 'project':434,1656,2351,2485 'promot':186,1652,2482,3591 'prompt':581,649,1141,1366,1404,1464,1659,2488,3619 'propos':664,1773,1792,1868,2223,2457,2935,2948 'prose':1343,1378,1987 'put':2200 'question':167,365,377,383,388,403,423,522,527,1907,2174,2263,2323,2328,2350,2534 'quick':925,2132,3652 'quot':781,787,1945,2572,3067,3265 'ratifi':37,174,742,762,1627,1742,2026,2100,2419,2652,2755,2760,2883,3404,3648 'rational':283 're':362,430,2334 're-ground':429,2333 're-survey':361 'reachabl':2796 'read':19,85,217,607,1175,1282,1317,1418,1588,2253,2816,3297,3500 'readi':1843 'readme.md':304,1358 'real':680,1558,2600,3659 'reason':157,498,1567,1618,2401 'rec':2025,2099,2715,2726,2737,2747,2758 'receipt':768,1747,2236,2438,2890 'recommend':334,484,1023,1198,1249,1607,1722,1815,2196,2198,2218,2305,2681,2780,2784,2971,3088,3204 'record':38,191,196,342,1486,1640,1650,1765,2027,2101,2265,2307,2440,2451,2717,2733,2846,2875,2918,3406 'refer':679,1388,1620 'reflect':1630,2425 'relat':1270,1530 'relev':2644 'render':2239 'repo':66,70,214,226,231,290,329,644,790,973,994,1164,1185,1231,1242,1319,1324,1820,2070,2462,2497,3682 'repo-agnost':213 'report':1253,1372,1734,1880,1993,2044,2322,2979,2997,3102,3212 'request':405 'respons':325,395,2049 'rest':1000 'retain':2050 'return':2003 'revers':1519,1691,1944,1961,2551,2567,3264,3280 'revert':761,772,1759,2904 'review':106,113,3566 'review-inbox':105,3565 'revis':1680,1936,2031,2105,2550,2739,3249,3416 'right':1490 'rm':3367 'room':3656 'root':1356,1410,1799,2075 'rule':216,519,798,1666,2494,3632 'run':228,537,545,1032,1227,1263,3444,3484 'runtim':297 'say':139,150,469,1475,1573,1604 'scale':517,2507 'screen':2171 'search':1271 'section':1258,1590,2039 'see':2023,2413,2912 'select':2416,2626 'sentenc':1617,2366 'sequenti':1081 'session':83,320,891,2616,3398 'set':2398 'settl':1921,2548,3242 'seven':2403 'sha':1315,1527,1751,1760,2089,2437,2900 'shape':265,888,2324 'share':2120 'ship':30,163,223,731,990,1179,1262,1292,2065 'short':1374,2801 'show':1848,2221,3448 'sibl':3536 'signal':1482,3549 'silent':1512 'simpli':462 'sinc':1498,2088,2340 'singl':1065 'sit':120,3583 'sit-down-and-clear-it-now':119 'skill':53,116,222,302,368,585,651,1365,1369,1403,1461,1660,1737,1931,2400,2489,3494,3588,3668 'skill-decision-triage' 'skim':1018 'skip':1430,2603,2790,3342,3420 'slot':2675,2699,2719,2729,2740,2751,2763 'slow':534,915,957,1049 'slug':1894,3178 'small':2509 'smart':780 'snippet':2096 'soft':1026 'someth':140,2972,3205 'sort':869 'sound':182,1628,1642,2423,2443 'source-ninthwave-io' 'spare':2611 'spawn':1079 'specif':291,1452 'specifi':3528 'speed':2815 'spend':3658 'stage':586 'staged/unstaged':3452 'stale':737,1685,2559 'standard':3219 'state':432,485,1305,1522,1578,2114 'status':3446 'stay':3340 'steer':2826 'step':1425,1442,3471 'stick':1495 'still':27,1103,1913,2540,3234 'stop':359 'straight':786 'string':1854,1929 'strongest':1481 'structur':427,2332 'stuck':1524 'subag':323,573,671,1030,1057,1118,1124,1140,2002,2046,2098,2194,2292,2304,2597,2679,2939,2963,3063,3086,3107,3203,3220,3691 'substitut':3158 'suggest':351,2774,3462,3469 'summar':3396 'summari':280,2063,2369,3131 'sure':580,2186 'surfac':682,708,3121 'surround':1850 'survey':363,686,969,1321,1420,1440,1583,1778,2773,2994,3005,3011,3110,3124 'synchron':77 'synthes':2021,2053 'tabl':2007,2110,2149,2273,2865 'tag':1611 'take':942 'target':1967,3299,3339 'technic':307 'tell':856,3020,3458 'templat':1142,1788,1809,2986,3221 'tension':1576,2092,2382 'test':1458,3520 'text':390,505,1289,1626,2638,2802 'thing':1712 'thorough':1128 'tight':564,3676 'time':15,2339,3509 'timestamp':874 'tini':2508 'token':269,618,623,1925,3151,3156 'tool':378,396,1071,1847,3079 'topic-agent-skills' 'topic-ai-agents' 'topic-ai-coding' 'topic-claude-code' 'topic-continuous-delivery' 'topic-copilot-cli' 'topic-multi-agent' 'topic-opencode' 'topic-orchestrator' 'topic-pull-requests' 'topic-worktrees' 'touch':1507,1592 'tradeoff':203,1675,2522 'trail':2898 'treat':1919,2546,3240 'tri':1007 'triag':3,841,865,980,2006,2109,2148,2272,2356,2864,3401,3479 'trivial':3650 'twenti':3579 'two':704,1545,2663 'type':1119,1125,1459 'unclear':1311,1528,2069,2091 'under':758 'understand':3612 'uniqu':1857 'unknown':1230 'unlist':2793 'up':2182,3414 'use':72,233,374,415,785,1123,1133,1437,1858,2212,2316,2610,2922,2980,3050,3213,3325 'user':89,382,406,410,450,858,2267,2287,2299,2337,2895,2958,3083,3191,3450,3460 'usual':2722,2732,2743,2754,2766 'vagu':1985 'valid':2941 'valu':1635,2431 'verbatim':1219,2042 'via':653,3076 'vision.md':1363 'wait':392,571,1108,3689 'walk':5,813,2135,2146,2348,2862 'walk-through':2134 'want':600,2824 'way':59,631,739 'week':112,3571 'whatev':1176 'whether':22,1389,1400 'whichev':416,2695,2767 'whole':2809 'window':456,557,1041,2852 'within':1105 'without':2126,2260,3194,3698 'word':1996 'work':50,211,258,263,602,613,627,958,1192,1275,1670,1688,1884,1956,2010,2229,2516,2527,2552,2562,2575,2658,3166,3199,3257,3426,3524,3638 'worker':1416,1546,1663,3499,3511,3530,3625 'worth':1636,1644,2432,2445 'would':489,1205,1714,2386 'wrap':3391 'write':589,610,1725,2931,3170,3223,3328,3531 'written':261 'wrong':1683,2557 'x':155,1549,3405 'y':158,1551,3409 'yet':2467 'z':3411 'zero':854,2623","prices":[{"id":"dc3b9280-88c5-4438-95a7-cd05fda83fb6","listingId":"54128ec5-0d41-4966-ba68-0f142d668fd9","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"ninthwave-io","category":"ninthwave","install_from":"skills.sh"},"createdAt":"2026-05-18T13:14:45.701Z"}],"sources":[{"listingId":"54128ec5-0d41-4966-ba68-0f142d668fd9","source":"github","sourceId":"ninthwave-io/ninthwave/decision-triage","sourceUrl":"https://github.com/ninthwave-io/ninthwave/tree/main/skills/decision-triage","isPrimary":false,"firstSeenAt":"2026-05-18T13:14:45.701Z","lastSeenAt":"2026-05-18T19:09:06.136Z"}],"details":{"listingId":"54128ec5-0d41-4966-ba68-0f142d668fd9","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"ninthwave-io","slug":"decision-triage","github":{"repo":"ninthwave-io/ninthwave","stars":8,"topics":["agent-skills","ai-agents","ai-coding","claude-code","continuous-delivery","copilot-cli","multi-agent","opencode","orchestrator","pull-requests","worktrees"],"license":"apache-2.0","html_url":"https://github.com/ninthwave-io/ninthwave","pushed_at":"2026-05-17T16:00:56Z","description":"Orchestrate parallel AI coding into reviewable PRs.","skill_md_sha":"b9b2ef6e300c62d15bae8f906c53d21840986f1d","skill_md_path":"skills/decision-triage/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/ninthwave-io/ninthwave/tree/main/skills/decision-triage"},"layout":"multi","source":"github","category":"ninthwave","frontmatter":{"name":"decision-triage","description":"Interactively walk through every decision log in `.ninthwave/decisions/` one at\na time. For each log: read it, check whether the choice it describes still\nmatches what shipped, ask the human what to do (ratify / record as ADR /\ncodify into an existing doc / create follow-up work item / revise / merge /\nskip), execute the decision, and delete the log. This is the canonical way\nto clear the decisions inbox: a synchronous, human-in-the-loop session.\nUse when asked to \"triage decisions\", \"review decision logs\", \"clear the\ndecisions inbox\", or \"walk through decisions\"."},"skills_sh_url":"https://skills.sh/ninthwave-io/ninthwave/decision-triage"},"updatedAt":"2026-05-18T19:09:06.136Z"}}