/triage
Triage GitHub issues by applying type, effort, priority, and area labels. Runs in an isolated context to avoid polluting the main conversation with issue details. Delegates to a specialized triage agent with label validation hooks.
Claude Code
$ npx -y skills add coleam00/Archon --skill triage --agent claude-code
Codex
$ npx skills add coleam00/Archon --skill triage -a codex -y
Cursor
$ npx skills add coleam00/Archon --skill triage -a cursor -y
Gemini CLI
$ npx skills add coleam00/Archon --skill triage -a gemini-cli -y
GitHub Copilot
$ npx skills add coleam00/Archon --skill triage -a github-copilot -y
OpenCode
$ npx skills add coleam00/Archon --skill triage -a opencode -y
Windsurf
$ npx skills add coleam00/Archon --skill triage -a windsurf -y
SKILL.md
triage.SKILL.mdname: triage
description: |
Triage GitHub issues by applying type, effort, priority, and area labels.
Runs in an isolated context to avoid polluting the main conversation with
issue details. Delegates to a specialized triage agent with label validation hooks.
argument-hint: "[unlabeled|all|N|N-M]"
disable-model-invocation: true
context: fork
agent: triage-agent
allowed-tools: Bash(gh *), Read, Glob, Grep
Triage GitHub Issues
Triage issues for this repository by applying appropriate labels.
Repository Context
- **Current repo**: !`gh repo view --json nameWithOwner -q .nameWithOwner 2>/dev/null || echo "unknown"`
- **Open issues**: !`gh issue list --state open --json number --jq 'length' 2>/dev/null || echo "?"`
- **Existing labels**: !`gh label list --json name -q '.[].name' 2>/dev/null | head -20 || echo "none found"`
---
Scope
Determine which issues to triage based on the arguments: **$ARGUMENTS**
| Argument | Behavior | |----------|----------| | (empty) | Only unlabeled issues (default) | | `unlabeled` | Only issues without any labels | | `all` | All open issues | | `N` | Specific issue (e.g., `67`) | | `N-M` | Range of issues inclusive (e.g., `60-67`) |
Process
1. **Fetch available labels** — run `gh label list --json name,description` to understand the label taxonomy. Labels are organized into type, effort, priority, and area categories.
2. **Fetch target issues** — based on the scope above. For each issue, fetch the full body:
gh issue view {number} --json number,title,body,labels3. **For each issue**:
- Read the title and full body carefully
- If needed, explore the codebase (`Glob`, `Grep`, `Read`) to understand the affected code
- Classify: one type, one effort, one priority, one or more areas
- Track relationships with other issues (duplicates, related, blocking)
- Apply labels:
gh issue edit {number} --add-label "type,effort/level,P#,area.domain"- Skip issues that already have complete labeling (type + effort + priority + area)
- For partially labeled issues, only add missing label categories
4. **Output a triage summary**:
## Triage Summary
| Issue | Title | Labels Applied | Reasoning |
|-------|-------|----------------|-----------|
| #67 | ... | bug, effort/low, P1, core.config | ... |
**Totals:**
- Issues triaged: X
- Already labeled (skipped): Y
- By priority: P0(n), P1(n), P2(n), P3(n)
## Relationships Discovered
| Issues | Relationship | Notes |
|--------|--------------|-------|
| #61, #62 | Related | Both involve config/logging UX |
Rules
- **Don't hardcode labels** — always fetch current labels first, they may change
- **Respect existing labels** — don't remove labels, only add missing ones
- **Check issue body** — titles alone aren't enough context
- **Use the codebase** — if understanding a relationship requires seeing how modules connect, look
- **When uncertain, note it** — flag ambiguous issues in the summary rather than guessing
Read more
name: triage description: | Triage GitHub issues by applying type, effort, priority, and area labels. Runs in an isolated context to avoid polluting the main conversation with issue details. Delegates to a specialized triage agent with label validation hooks. argument-hint: "[unlabeled|all|N|N-M]" disable-model-invocation: true context: fork agent: triage-agent allowed-tools: Bash(gh *), Read, Glob, Grep
Triage GitHub Issues
Triage issues for this repository by applying appropriate labels.
Repository Context
- **Current repo**: !`gh repo view --json nameWithOwner -q .nameWithOwner 2>/dev/null || echo "unknown"`
- **Open issues**: !`gh issue list --state open --json number --jq 'length' 2>/dev/null || echo "?"`
- **Existing labels**: !`gh label list --json name -q '.[].name' 2>/dev/null | head -20 || echo "none found"`
---
Scope
Determine which issues to triage based on the arguments: **$ARGUMENTS**
| Argument | Behavior | |----------|----------| | (empty) | Only unlabeled issues (default) | | `unlabeled` | Only issues without any labels | | `all` | All open issues | | `N` | Specific issue (e.g., `67`) | | `N-M` | Range of issues inclusive (e.g., `60-67`) |
Process
1. **Fetch available labels** — run `gh label list --json name,description` to understand the label taxonomy. Labels are organized into type, effort, priority, and area categories.
2. **Fetch target issues** — based on the scope above. For each issue, fetch the full body:
gh issue view {number} --json number,title,body,labels3. **For each issue**:
- Read the title and full body carefully
- If needed, explore the codebase (`Glob`, `Grep`, `Read`) to understand the affected code
- Classify: one type, one effort, one priority, one or more areas
- Track relationships with other issues (duplicates, related, blocking)
- Apply labels:
gh issue edit {number} --add-label "type,effort/level,P#,area.domain"- Skip issues that already have complete labeling (type + effort + priority + area)
- For partially labeled issues, only add missing label categories
4. **Output a triage summary**:
## Triage Summary | Issue | Title | Labels Applied | Reasoning | |-------|-------|----------------|-----------| | #67 | ... | bug, effort/low, P1, core.config | ... | **Totals:** - Issues triaged: X - Already labeled (skipped): Y - By priority: P0(n), P1(n), P2(n), P3(n) ## Relationships Discovered | Issues | Relationship | Notes | |--------|--------------|-------| | #61, #62 | Related | Both involve config/logging UX |
Rules
- **Don't hardcode labels** — always fetch current labels first, they may change
- **Respect existing labels** — don't remove labels, only add missing ones
- **Check issue body** — titles alone aren't enough context
- **Use the codebase** — if understanding a relationship requires seeing how modules connect, look
- **When uncertain, note it** — flag ambiguous issues in the summary rather than guessing
The first open-source harness builder for AI coding. Make AI coding deterministic and repeatable.
Other skills on archon.
More skills from other plugins.
agentmail
Use your assigned AgentMail inbox to read email tasks, explicitly send or reply, and check delivery. Provided automatically by…
adr-create
Create a new Architecture Decision Record with sequential numbering and AgentDB registration
Questions about triage.
- Which coding agents can use triage?
- triage installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.

