outlinedriven/odin-codex-plugin

github-triage

Triage GitHub issues through a configurable label-based state machine. Use when user wants to triage incoming issues, prepare issues for an autonomous agent, or move an issue between workflow states. Repo inferred from `git remote`; all GitHub calls go through `gh`.

First seen Jun 4, 2026

Installation

$ npx skills add outlinedriven/odin-codex-plugin --skill github-triage

Similar popular skills

Related neighbors and high-traction skills in the same topics — useful to compare before installing.

Also in this package

Other skills from outlinedriven/odin-codex-plugin · top by installs.

npx skills add outlinedriven/odin-codex-plugin

Browse all from outlinedriven/odin-codex-plugin

More details

Agent compatibility

Declared targets from SKILL.md / docs. Unmarked agents are not listed — the skill may still install via the CLI.

Claude Code Not declared
Cursor Not declared
Codex Not declared
GitHub Copilot Not declared
Windsurf Not declared
Gemini CLI Not declared
Cline Not declared
OpenCode Not declared

Repository health

Stars 15
License LICENSE
Default branch main
Open issues 0
Status Active

Package contents

Files included with this skill beyond the listing page.

  • skill md SKILL.md 4,366 B
  • docs SUMMARY.md 287 B

History

  1. First seen on skills.sh
  2. First recorded snapshot · 1 installs

SKILL.md

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 (triagepending, readyfor_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

From To Trigger Effect
unlabeled triage_pending skill (first look) applies label after presenting recommendation
unlabeled readyforagent maintainer post agent brief, apply label
unlabeled readyforhuman maintainer post task summary, apply label
unlabeled wont_fix maintainer comment + close
triage_pending awaiting_info maintainer post triage notes capturing progress + reporter questions
triage_pending readyforagent maintainer grilling complete; agent brief; apply label
triage_pending readyforhuman maintainer grilling complete; task summary; apply label
triage_pending wont_fix maintainer comment + close
awaiting_info triage_pending skill (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, run a /domain-model session.
  5. Apply outcome per state.

awaiting_info comment template

## Triage Notes

**Established so far:**
- point 1
- point 2

**Need from you (@reporter):**
- specific question 1
- specific question 2

Reporter questions must be specific and actionable.

Parallel examples

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

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