agentsclimarketplace

Github triage

Skill OutlineDriven/odin-claude-plugin/skills/github-triage

Triage GitHub issues. Use when the user wants to triage incoming issues, prepare issues for an autonomous agent, or move an issue between workflow states.From its SKILL.md

Install
npx -y skills add OutlineDriven/odin-claude-plugin --skill github-triage

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

SKILL.md

4.3 KB, 843 tokens by cl100k_base, as published. Nobody here has run it

State-machine triage over GitHub issues. Every comment posted carries an AI disclaimer. Label names are configurable; state semantics are not.

AI disclaimer (mandatory)

Every comment or new issue body posted during triage MUST begin with:

> *This was generated by AI during triage.*

No exceptions.

Label map (configure per project)

Bind ODIN's abstract state tokens to your repo's actual label names. Edit this block before first use; defaults match Matt Pocock's upstream convention.

category:
  bug:        "bug"             # something is broken
  enhancement:"enhancement"     # new feature or improvement
state:
  triage_pending:   "needs-triage"     # maintainer must evaluate
  awaiting_info:    "needs-info"       # waiting on reporter
  ready_for_agent:  "ready-for-agent"  # fully specified, autonomous-agent-suitable
  ready_for_human:  "ready-for-human"  # requires human judgment
  wont_fix:         "wontfix"          # closed, not actioned

Body uses the abstract tokens (triage_pending, ready_for_agent, etc.). Replace with your repo's labels at apply time.

Invariants

  • Every issue carries exactly one category label and one state label.
  • Conflicting state labels = halt and ask the maintainer which is correct.
  • Maintainer can override any state directly; flag unusual transitions.

State machine

FromToTriggerEffect
unlabeledtriage_pendingskill (first look)applies label after presenting recommendation
unlabeledready_for_agentmaintainerpost agent brief, apply label
unlabeledready_for_humanmaintainerpost task summary, apply label
unlabeledwont_fixmaintainercomment + close
triage_pendingawaiting_infomaintainerpost triage notes capturing progress + reporter questions
triage_pendingready_for_agentmaintainergrilling complete; agent brief; apply label
triage_pendingready_for_humanmaintainergrilling complete; task summary; apply label
triage_pendingwont_fixmaintainercomment + close
awaiting_infotriage_pendingskill (reply seen)reporter replied; surface for re-evaluation

Workflows

Overview ("what needs my attention")

Group open issues into three buckets and display oldest-first:

  1. Unlabeled: never triaged.
  2. triage_pending: needs evaluation or continuation.
  3. awaiting_info with new activity since the last triage-notes comment.

Triage a specific issue

  1. Dispatch Explore agent to read full issue + all comments + related code paths.
  2. Present category and state recommendations with reasoning.
  3. For bugs: attempt reproduction. Run repo tests, trace logic.
  4. If underspecified, do a focused domain-model pass: map entities and constraints before re-categorizing.
  5. Apply outcome per state.

awaiting_info comment template

The Triage Notes template (established-so-far / need-from-reporter) lives in references/awaiting-info-template.md — read it when transitioning an issue to awaiting_info; other transitions (ready_for_agent, ready_for_human, wont_fix) don't need it.

Parallel examples

TypeScript repo: label-map binds ready_for_agent → "agent-ready", awaiting_info → "blocked-on-reporter". State machine and prose unchanged.

Rust repo: label-map binds triage_pending → "S-needs-triage", wont_fix → "C-wont-fix" per Rust-project conventions. State machine and prose unchanged.

What ships with it: 1 file

242 B alongside SKILL.md

Keep looking

Skills are one crate of 325,949. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.