ワンクリックで
omh-triage
Multi-role consensus triage of an issue backlog.
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
メニュー
Multi-role consensus triage of an issue backlog.
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
SOC 職業分類に基づく
Drive an omh-ralph run: dispatch, evidence, commit hygiene.
Execute one omh-ralph task: file-scope, commit, report.
Drive omh-ralplan: context package, rounds, distillation.
Drive omh-triage: when to invoke, how to run rounds.
pipeline: interview→plan→execute→QA→verify (idea→code)
Socratic reqs interview; clarify vague/ambiguous goals
| name | omh-triage |
| description | Multi-role consensus triage of an issue backlog. |
| version | 0.1.0 |
| metadata | {"hermes":{"tags":["triage","multi-agent","consensus","backlog"],"category":"omh","requires_toolsets":["terminal","omh","delegation"]}} |
v0.1 status: This skill is deliberately small. It ships with two roles (Maintainer, Skeptic) and is being battle-tested before more roles are added. The full design hypothesis (Maintainer / Operator / Architect / Member-advocate / Skeptic) lives in witt3rd/oh-my-hermes#9. The next concrete milestone (Operator role for version-cut planning pressure) is tracked at witt3rd/oh-my-hermes#11. Roles will be added as lived rounds surface real tensions that the current set cannot represent. The discipline here is learn through use, then expand — the inverse of authoring all five roles up-front against imagined friction.
omh-deep-interview then omh-ralplan)docs/triage/PROCESS.md if it has one)docs/triage/ for delta-since-last-pass framingdelegate_task tool must be availableBefore dispatching any roles, the orchestrator gathers:
gh issue list --state open --limit <N>. Note count, label distribution, age distribution.docs/triage/YYYY-MM-DD-*.md is delta-since-last-pass anchor.Phase 0's output is a ~500-word context package that all subagents will receive. Same shape as omh-ralplan Phase 0.
v0.1 ships two roles. Future versions will add Operator, Architect, Member-advocate.
delegate_task(
goal="[omh-role:triage-maintainer] Vet each issue in the attached inventory against current code. Produce a per-issue verdict (stale/recast/live/partial-stale/out-of-scope) with code-anchored reasoning. Repo HEAD: <ref>. Inventory: <list>",
context="# Project context\n\n<context-package>\n\n# Inventory\n\n<full issue bodies, not just titles>"
)
The Maintainer's pass is per-issue. Output is structured (one block per issue with verdict + anchor + reasoning + close-comment-or-recast-spec).
delegate_task(
goal="[omh-role:triage-skeptic] For each LIVE issue from the Maintainer pass, apply skeptical pressure: keep/drop/dedup/refile-smaller/wait-for-recurrence. Stale/out-of-scope issues do not need skeptical review.",
context="# Project context\n\n<context-package>\n\n# Maintainer verdicts\n\n<Maintainer's structured output>\n\n# Full inventory (for cross-reference)\n\n<full issue bodies>"
)
The Skeptic only reviews issues the Maintainer marked live or recast. Stale/out-of-scope are already moving to close; double-pressure on them wastes the role's attention.
The orchestrator combines Maintainer + Skeptic verdicts. The matrix below is authoritative — every Maintainer × Skeptic combination resolves to a specific disposition. Combinations not enumerated here are the only cases that escalate to user as a true conflict.
The Maintainer verdict partial-stale (issue contains multiple sub-claims; some stale, some live) is treated identically to recast for matrix purposes — both signal "body needs surgery, possibly extensive." Maintainer output should still distinguish them so the recast spec can name which sub-claims are stale vs live, but the disposition resolution is the same.
| Maintainer | Skeptic | Resolved disposition |
|---|---|---|
| stale | (not run) | close — Maintainer pointer-comment |
| out-of-scope | (not run) | close — refile-target named |
| recast / partial-stale | keep | recast body, keep open |
| recast / partial-stale | drop / wait-for-recurrence | close — Skeptic pointer-comment (the body needs work AND the underlying friction may not be load-bearing; combined verdict is "not worth the surgery") |
| recast / partial-stale | dedup | close + comment-on-covering-issue |
| recast / partial-stale | refile-smaller | close + reopen-as-smaller |
| live | keep | live |
| live | drop / wait-for-recurrence | close — Skeptic pointer-comment |
| live | dedup | close + comment-on-covering-issue |
| live | refile-smaller | close + reopen-as-smaller |
The matrix is exhaustive over the verdict types in this skill (v0.1). When future versions add roles or new verdict types, the matrix expands; conflicts surface only when a new combination doesn't have a resolution.
The escalation case (rare in v0.1): if a Skeptic returns needs lived signal (the role's escape hatch when verdict cannot be determined) — or any other unresolved value the role catalog doesn't enumerate — that's a true escalation. The orchestrator surfaces these to user as specific decision questions. The orchestrator's job is to distill, not to decide for the user when the matrix doesn't resolve.
The orchestrator produces:
docs/triage/YYYY-MM-DD-<descriptor>.md (in the host repo, not in this skill repo) using the host project's template. If no template exists, use the structure documented in references/triage-doc-template.md./tmp/closeN.md), recasts (with proposed body diffs), refile-smaller drafts.The orchestrator stages, does not execute by default. The user sign-off gate happens between Phase 2 and execution. See references/orchestrator-review-template.md.
After user approval:
| Role | Reference | Pressure |
|---|---|---|
| Triage Maintainer | references/role-triage-maintainer.md | Code-anchored ground truth: is the premise live? |
| Triage Skeptic | references/role-triage-skeptic.md | Pruning: does this earn its slot? |
Roles planned for v0.2+ (witt3rd/oh-my-hermes#9):
These will be added when lived rounds surface tensions the current two cannot represent. Resist authoring them ahead of evidence.
A run is done when:
Maintainer's job is to anchor against current code. If the orchestrator hasn't already mapped recent migrations/refactors, the Maintainer discovers them in-flight and wastes attention re-deriving what Phase 0 should have given.
Issues the Maintainer marked stale or out-of-scope are already moving to close. Sending them to Skeptic produces noise (Skeptic will say "drop" on stale issues, which adds nothing).
Triage closes are durable on the issue tracker. Always stage closures with body files at /tmp/closeN.md and let the user approve before executing the actual close commands. The skill that runs the close after approval should loop in shell with --comment "$(cat /tmp/closeN.md)" (multi-paragraph quoted bodies through terminal() from execute_code fail silently — lesson from janus round 1).
The verdict-combination matrix in Phase 1 Step 3 is authoritative — live + drop resolves to "close — Skeptic pointer-comment", not to "user conflict." The matrix encodes our considered judgment that "Maintainer says live, Skeptic says drop" means the issue is real but not worth the slot it consumes; closing with a clear pointer-comment that invites refile-on-recurrence is the correct disposition, not a user-decision question.
True escalations are: the Skeptic returns needs lived signal (escape hatch), the Maintainer returns needs investigation (escape hatch), or some future role's verdict produces a combination the matrix doesn't enumerate. These are rare in v0.1 and surface to user as specific decision questions, not as "there are some conflicts."
The dispatcher should also feel free to override the matrix for individual issues when their own bar applied to the verdict produces a different read — but that's a dispatcher-judgment call, not a matrix conflict. Note overrides explicitly in the orchestrator review (omh-ralplan-driver P25 — skepticism over deference applies here too).
The triage doc under docs/triage/YYYY-MM-DD-*.md is the round's audit trail. It names what was decided, what was deferred, and what the round taught. A round without a doc didn't happen.
This skill is v0.1 deliberately. The OMH#9 design names five roles; only two ship today. Adding Operator / Architect / Member-advocate before lived rounds surface real tensions for them is the "imagined friction" failure mode. Wait for evidence.
omh-triage-driver — the dispatcher's playbook (when to invoke, how to drive, what good output looks like)omh-ralplan-driver — analogous skill for the design layer; the discipline patterns are similaromh-deep-interview — for ambiguous issues that need clarification before triage can decidewitt3rd/oh-my-hermes#9 — design tracking issuereferences/role-triage-maintainer.mdreferences/role-triage-skeptic.md