github-triage
Automated triage system to move GitHub issues through standardized states.
Install
mkdir -p .claude/skills/github-triage && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/11248" && unzip -o skill.zip -d .claude/skills/github-triage && rm skill.zipInstalls to .claude/skills/github-triage
Activation
This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.
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`.Key capabilities
- →Triage incoming GitHub issues using a state machine
- →Map repository labels to abstract workflow states
- →Prepare issues for autonomous agent processing
- →Enforce mandatory AI disclaimers on all comments
- →Group open issues by triage status
How it works
It uses a state-machine approach to transition issues between labels like triage_pending and ready_for_agent, ensuring every interaction includes a mandatory AI disclaimer.
Inputs & outputs
When to use github-triage
- →Triage incoming issue reports
- →Prepare issues for agent processing
- →Standardize issue status transitions
About this skill
State-machine triage over GitHub issues and pull requests. 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
include_pull_requests: false # default off; set true to triage external pull requests alongside issues
Body uses the abstract tokens (triage_pending, ready_for_agent, etc.). Replace with your repo's labels at apply time.
Invariants
- Every issue or pull request carries exactly one
categorylabel and onestatelabel. - External pull requests are treated as issues with attached code and share the exact same roles, labels, and state machine. Discovery surfaces only external PRs (from forks or non-members); internal PRs are ignored.
- 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 | ready_for_agent | maintainer | post agent brief, apply label |
| unlabeled | ready_for_human | 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 | ready_for_agent | maintainer | grilling complete; agent brief; apply label |
| triage_pending | ready_for_human | maintainer | grilling complete; task summary; apply label |
| triage_pending | wont_fix | maintainer | comment + close (or mark redundant/already-implemented) |
| awaiting_info | triage_pending | skill (reply seen) | reporter replied; surface for re-evaluation |
Workflows
Overview ("what needs my attention")
Group open issues (and external pull requests, if include_pull_requests: true) into three buckets and display oldest-first:
- Unlabeled: never triaged. When
include_pull_requestsis enabled, discover only external PRs (from forks or external contributors) alongside issues. triage_pending: needs evaluation or continuation.awaiting_infowith new activity since the last triage-notes comment.
Triage a specific item
- Dispatch Explore agent to read full issue/PR + all comments + related code paths (including attached code/diff for PRs).
- Check for redundancy: verify whether the requested behavior or PR logic is already implemented in the codebase. If redundant or already satisfied, resolve to
wont_fix(closed, not actioned) without polluting the out-of-scope knowledge base. - Present category and state recommendations with reasoning.
- Verify the claim: for bugs, attempt reproduction (run repo tests, trace logic); for feature requests or PRs, verify the underlying claims against existing codebase behavior, tests, and diffs.
- If underspecified, do a focused domain-model pass: map entities and constraints before re-categorizing.
- 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 or pull request 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.
When not to use it
- →When state semantics need to deviate from the predefined machine
Limitations
- →State semantics are not configurable
- →Requires exactly one category and one state label per issue
How it compares
It automates the triage process through a configurable label map rather than requiring manual label management for every issue.
Compared to similar skills
github-triage side by side with the closest alternatives in the catalog.
| Skill | Installs | Updated | Safety | Difficulty |
|---|---|---|---|---|
| github-triage (this skill) | 0 | 3mo | No flags | Intermediate |
| triage-issue | 1 | 6mo | Review | Intermediate |
| proof-of-work | 1 | 6mo | No flags | Intermediate |
| checkpointing | 0 | 5mo | No flags | Intermediate |
Try saying
Example prompts that trigger this skill in your AI assistant.
You might also like
triage-issue
mysticaltech
Use when triaging a GitHub issue - analyzes issue, checks for duplicates, categorizes, and drafts response
proof-of-work
MadAppGang
Proof artifact generation patterns for task validation. Covers screenshots, test results, deployments, and confidence scoring.
checkpointing
arugo11
Run full session checkpointing from Codex without Claude dependencies. Collect git and CLI activity, generate checkpoint files, update session history, and analyze reusable skill patterns.
label-issue
chagong
Classify and label GitHub issues based on repository-specific labeling instructions. Use when (1) auto-labeling new issues, (2) classifying issue types (bug, feature, etc.), (3) adding priority or area labels, (4) applying consistent labeling rules. Triggers on requests like "label issue", "classify
resolve-conflicts
antinomyhq
Use this skill immediately when the user mentions merge conflicts that need to be resolved. Do not attempt to resolve conflicts directly - invoke this skill first. This skill specializes in providing a structured framework for merging imports, tests, lock files (regeneration), configuration files, and handling deleted-but-modified files with backup and analysis.
git-advanced-workflows
wshobson
Master advanced Git workflows including rebasing, cherry-picking, bisect, worktrees, and reflog to maintain clean history and recover from any situation. Use when managing complex Git histories, collaborating on feature branches, or troubleshooting repository issues.