skills/github-triage/SKILL.md
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`.
npx skillsauth add outlinedriven/odin-codex-plugin github-triageInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
State-machine triage over GitHub issues. Every comment posted carries an AI disclaimer. Label names are configurable; state semantics are not.
Every comment or new issue body posted during triage MUST begin with:
> *This was generated by AI during triage.*
No exceptions.
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.
category label and one state label.| 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 | | awaiting_info | triage_pending | skill (reply seen) | reporter replied; surface for re-evaluation |
Group open issues into three buckets and display oldest-first:
triage_pending — needs evaluation or continuation.awaiting_info with new activity since the last triage-notes comment./domain-model session.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.
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.
testing
ODIN's compress-operations dispatcher under the Compressor/Extender role. Invoke on "tidy", "clean up", "tidy this file/memory/workspace/git/docs", or when active context (current file, diff, stack, memory directory) has structural rot to resolve before touching behavior. Detects target domain from context and routes to the sibling skill. Requires explicit target or clear active-context signal — do not invoke speculatively.
development
Cross-domain taste skill — apply distinctive judgment to any artifact (prose, code, design, decisions) instead of converging to AI defaults. Two modes — `audit` (judge work against the two-sided charter and portable anchors) and `anchor` (load register before producing). Auto-detects by phrasing; override via `/taste audit | anchor`. Trigger on "is this slop?", "overkill?", "elegant?", "taste-test this".
tools
One-shot bootstrap of strict-mode tooling per ecosystem plus per-task GOALS.md scaffolding so an agentic loop can self-verify. Writes typechecker/linter/schema-validator config for TS (strict + noUncheckedIndexedAccess + exactOptionalPropertyTypes), Python (Pyright strict, Ruff strict), Rust (Clippy deny-correctness), Go (golangci-lint with staticcheck), OCaml (dune --release); establishes `.agent-tasks/<id>/GOALS.md` per-task convention distinct from project-stable AGENTS.md. C++/Java/Kotlin and framework specifics (Spring Boot, Nest, React-strict) are out of scope. Trigger on new project bootstrap, agentic-task setup, "make this self-verifying", "set the loop's goal", "scaffold goals for this issue". Pairs with `llm-self-loop` runtime.
tools
Install git pre-commit hooks via the project's hook tool — Husky+lint-staged (JS), pre-commit (Python/OCaml), lefthook (Go), cargo-husky (Rust). Use when the user wants commit-time formatting, linting, type-checking, or test gates. Detects ecosystem first.