Agent skill

Triage Issues

by agent-substrate in agent-substrate/substrate

Triages open GitHub issues by applying the correct labels. An agent skill from agent-substrate/substrate.

Apache-2.0Auto-check passedDevelopment

Install Triage Issues

skills CLI
$ npx skills add agent-substrate/substrate --skill triage-issues -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install agent-substrate/substrate triage-issues --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/agent-substrate/substrate.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/triage-issues .claude/skills/triage-issues && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
triage-issues
GitHub stars
4.5k
Token cost
~2.9k tokens
SKILL.md length
1,296 words
Files
1
Skills in repo
6
Repo updated
First seen
Licence
Apache-2.0

At a glance

Triages open GitHub issues by applying the correct labels. An agent skill from agent-substrate/substrate.

  • Works in 5 steps: Check for missing labels → Fetch and classify issues → Present the proposal and wait for approval → …
  • Asked to triage issues
  • SKILL.md covers Label taxonomy, Classification guide, Process and Classification examples, plus 1 more section
  • Calls gh and bash

What it does

Triage Issues is an agent skill from agent-substrate/substrate. Triages open GitHub issues by applying the correct labels. Use when asked to triage issues, label issues, or organize the issue backlog. Processes unlabeled issues first, then reviews labeled issues for correctness. Proposes all changes for approval before applying anything, and writes an undo script for each run.

Its SKILL.md is about 2.9k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Development, covering Issue triage. It works with GitHub. The repository describes itself as: Agent Substrate: the core system. The licence is Apache-2.0.

When your agent uses it

  • Asked to triage issues
  • Organize the issue backlog

Example prompts

  • “Use the triage-issues skill to triage open GitHub issues by applying the correct labels. An agent skill from agent-substrate/substrate”
  • “/triage-issues”

Workflow steps

5 steps, taken from the step headings in SKILL.md.

  1. Check for missing labels
  2. Fetch and classify issues
  3. Present the proposal and wait for approval
  4. Apply approved changes and record the undo
  5. Report

What it can do on your machine

Read from SKILL.md and the folder at commit 0b91488. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • gh
    • bash

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md. Its commands use gh, which can reach the network depending on how they are called.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Triage Issues loads about 2.9k tokens when it runs. Until then it costs about 82 tokens; SKILL.md has 1,296 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~82
When it runs · the whole SKILL.md, loaded when a task matches
~2.9k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from agent-substrate/substrate at commit 0b91488, republished under its Apache-2.0 licence (© agent-substrate). 1,296 words, ~2,915 tokens.

Download SKILL.mdSave it as .claude/skills/triage-issues/SKILL.md (or your agent's skills folder).
name
triage-issues
description
Triages open GitHub issues by applying the correct labels. Use when asked to triage issues, label issues, or organize the issue backlog. Processes unlabeled issues first, then reviews labeled issues for correctness. Proposes all changes for approval before applying anything, and writes an undo script for each run.

Triage Issues

Triage means: read each issue, decide the right labels from the taxonomy below, and apply them with gh issue edit. Do not remove labels a human has already added unless they are clearly wrong. Do not add priority labels unless the issue body or discussion makes the priority obvious.

Two hard rules govern every run:

  1. Propose before applying. Classify everything first and present the full set of proposed changes as a summary for the user to validate. Apply nothing — no labels, no label creation — until the user approves.
  2. Record an undo. While applying approved changes, build an undo script that reverses exactly what this run did, and hand the user the command to run it.

Label taxonomy

Every issue should have at least one kind/ label and at least one area/ label. Priority and status labels are optional.

kind/ — what the issue is
LabelWhen to apply
kind/bugSomething is broken or behaves incorrectly. The current behavior is wrong.
kind/featureA new capability that does not exist today. Includes enhancements to existing features.
kind/cleanupCode quality improvements that do not change behavior: refactors, naming, dead code removal, small inconsistencies.
kind/docsDocumentation only — missing, outdated, or incorrect docs.
kind/designDesign discussions, investigations, research, and open questions that must be resolved before implementation. Includes "Design discussion:", "Identify what X should be", "Measure/benchmark X", "Explore options".

If any label in this taxonomy does not exist on the repo yet, include its creation in the proposal and create it during the apply step with:

bash
gh label create "<label>" \
  --repo agent-substrate/substrate \
  --description "<short description matching the taxonomy table>" \
  --color "c5def5"
area/ — which part of the codebase

Apply all areas that are touched. Most issues need one or two; a few need more.

LabelScope
area/apiUser-facing Substrate API (pkg/proto/ateapipb/, proto definitions, API semantics, versioning)
area/api-machineryAPI server internals: RPC handlers, storage layer, syncer, controllers (cmd/ateapi/, cmd/atecontroller/)
area/networkNetworking: atenet-router, Envoy, ext_proc, DNS, xDS, ingress (cmd/atenet/)
area/nodeNode agent and worker lifecycle: atelet, sandbox launch, OCI, cgroups (cmd/atelet/)
area/gvisorgVisor sandbox specifics: runsc integration, GPU in gVisor, gVisor OCI (cmd/ateom-gvisor/)
area/microVMMicro-VM sandbox specifics: cloud-hypervisor, kata, snapshot/restore (cmd/ateom-microvm/)
area/storageSnapshot storage, image cache, GCS/S3 backends, retention (internal/imagecache/, ActorSnapshot)
area/schedulingWorkerPool sizing, actor placement, HPA, resource allocation
area/observabilityMetrics, tracing, logging, OTLP, OTel SDK integration
area/securityAuth, mTLS, RBAC, threat detection, credential management, PodCertificate
area/identityActor identity, token issuance, JWT auth, ActorIdentity extension
area/dev-infraCI/CD, GitHub Actions, presubmit checks, tooling, proto generation
area/testsTest coverage, flaky tests, test infrastructure (not a bug in production code)
area/clikubectl-ate CLI plugin
area/demosDemo applications in demos/
area/benchmarkingPerformance benchmarks and capacity measurements (benchmarking/)
area/reliabilityReliability, stability, error recovery, and uptime concerns
prio/ — priority

Only apply when the issue body or a maintainer comment makes the priority evident. Do not guess.

LabelMeaning
prio/P0Highest priority; required for next milestone or blocking ongoing work
prio/P1Important but not blocking; should land in the near term
prio/P2Real issue but not urgent; can wait
Status labels

Apply only when clearly appropriate. Never add wontfix, duplicate, or invalid yourself — those are maintainer decisions.

LabelWhen
good first issueWell-scoped, self-contained, does not require deep system knowledge
help wantedMaintainers actively want external contributions

Classification guide

Work through these questions in order:

1. Is something broken? If the current behavior is incorrect, it is kind/bug. Security holes and data loss are bugs, not features.

2. Does it ask for new capability? If the system would need to do something it cannot do today, it is kind/feature. Apply kind/feature even if the issue is framed as "support X" or "add Y".

3. Is it a design question or investigation? If the issue is asking how to do something, comparing approaches, measuring capacity, or researching unknowns before any code is written, it is kind/design. Keywords: "Design discussion", "Investigate", "Explore options", "Identify what", "Measure", "Research".

The clearest way to distinguish kind/design from kind/feature:

  • kind/feature: you could open a PR today — the what and how are known.
  • kind/design: a decision or investigation must happen first; a PR cannot be written yet.

When in doubt, ask: "Could someone reasonably start coding this issue right now?" If yes → kind/feature. If no → kind/design.

4. Is it a code quality improvement with no behavior change? Refactoring, renaming, consolidating duplicated code, removing dead code → kind/cleanup.

5. Is it documentation only? Docs fixes, missing API guide sections, README updates → kind/docs.

For area/ labels, use the component the issue is about, not where the fix will necessarily land. A bug in actor scheduling reported via the API is area/api + area/scheduling, not area/api-machinery.


Process

Steps 1–3 are read-only. Nothing is written to GitHub until the user approves the proposal in Step 3.

Show full SKILL.md (530 more words)Show less
Step 1 — Check for missing labels

List the repo's labels and compare against the taxonomy above:

bash
gh label list --repo agent-substrate/substrate --limit 100 --json name --jq '.[].name'

Do not create anything yet. If any taxonomy label is missing, list its creation in the proposal.

Step 2 — Fetch and classify issues

Fetch unlabeled issues first:

bash
gh issue list --repo agent-substrate/substrate \
  --state open --limit 500 \
  --json number,title,labels,body \
  --jq '[.[] | select(.labels | length == 0)]'

Classify each one using the guide above. Then scan already-labeled issues for obvious gaps:

  • Issues with a kind/ label but no area/ label
  • Issues with area/ labels but no kind/ label
  • Issues that look like kind/design but are filed as kind/feature

Do not propose changes to labels that look reasonable even if you might have chosen differently. Only correct clear mismatches (for example, a bug filed as kind/feature, or a design discussion with no kind/ label at all).

Only propose labels an issue does not already have, so the undo record in Step 4 removes exactly what this run added and nothing a human applied earlier.

Step 3 — Present the proposal and wait for approval

Output a summary of every change you intend to make, then stop and wait. Do not apply anything in the same turn as the proposal.

## Proposed changes

Labels to create: kind/design, area/benchmarking

| Issue | Title (truncated) | Labels to add |
|---|---|---|
| #900 | Implement chain of authenticator... | kind/feature, area/identity, area/api-machinery |
| #874 | Design discussion: WorkerPool vs... | kind/design, area/scheduling |

### Uncertain (best guess included above, please confirm)
- #812 — could be kind/bug or kind/design: unclear whether the behavior is intended.

Reply to approve all, or list the issue numbers to change or skip.

List every uncertain issue with the question you could not resolve from the text alone. Do not leave those out of the proposal — include your best guess and flag it.

If the user asks for corrections, update the proposal and confirm again. Apply only what the user approved.

Step 4 — Apply approved changes and record the undo

Create any approved missing labels with the gh label create command above, then apply labels to each approved issue:

bash
gh issue edit <number> \
  --repo agent-substrate/substrate \
  --add-label "kind/bug,area/network"

Use --add-label, not --label, so you don't overwrite existing labels.

As you apply, build an undo script at /tmp/triage-issues-undo-<YYYYMMDD-HHMMSS>.sh containing one line per successfully applied change, reversing it:

bash
#!/usr/bin/env bash
# Undo record for triage-issues run on 2026-09-04 14:03 UTC.
# Removes only the labels this run added; labels applied by humans are untouched.
set -euo pipefail
gh issue edit 900 --repo agent-substrate/substrate --remove-label "kind/feature,area/identity,area/api-machinery"
gh issue edit 874 --repo agent-substrate/substrate --remove-label "kind/design,area/scheduling"
# Label deletions must come last: deleting a label strips it from all issues.
# Only present if this run created the label.
gh label delete "kind/design" --repo agent-substrate/substrate --yes

Rules for the undo script:

  • Record only changes that actually succeeded, not the full proposal.
  • Include a --remove-label line per issue listing exactly the labels this run added.
  • Include gh label delete only for labels this run created, and place those lines after all --remove-label lines.
  • Make it executable: chmod +x <script>.
Step 5 — Report

After applying, output a table of what was actually done:

| Issue | Title (truncated) | Labels applied |
|---|---|---|
| #900 | Implement chain of authenticator... | kind/feature, area/identity, area/api-machinery |

Note any approved changes that failed to apply. Then point at the undo record:

To undo everything this run changed:
  bash /tmp/triage-issues-undo-20260904-140312.sh

Classification examples

These illustrate the taxonomy applied to real issues in this repo:

Title patternkind/area/
"X is broken / returns wrong value / panics"bugaffected component
"Add support for X / Implement Y"featureaffected component
"Design discussion: should X or Y"designaffected component
"Identify what metrics to use for Z"designobservability, scheduling
"Measure / benchmark X capacity"designbenchmarking, affected component
"Consolidate / Reorganize / Rework X"cleanupaffected component
"Update docs / Add doc for X"docs(omit area unless specific)
"E2E test flaky: TestFoo"bugtests, affected component
"Presubmit doesn't catch X"bugdev-infra

Notes

  • An issue can have multiple area/ labels. Apply all that fit.
  • A single kind/ label per issue is the norm. Applying two is unusual.
  • Do not add prio/ labels to issues that don't clearly warrant one. Unlabeled priority is better than a wrong priority label.
  • Never remove a label a human applied. If you think it is wrong, note it in your report and let a maintainer decide.

© agent-substrate, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in .agents/skills/triage-issues of agent-substrate/substrate.

Open the folder on GitHubat commit 0b91488

Compare with similar skills

Triage Issues next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Triage Issues compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Triage Issues this skillagent-substrate/substrate4.5k—~2.9kAutomated safety check: PassApache-2.0
Setup Matt Pocock Skillsbestofjs/bestofjs3.1k20 repos~1.7kAutomated safety check: PassMIT
Windows App SDK Issue Triage Reportmicrosoft/WindowsAppSDK4.7k—~3.4kAutomated safety check: PassApache-2.0
Exposed Bug Fix WorkflowJetBrains/Exposed9.3k—~3.8kAutomated safety check: PassApache-2.0
Pre-Release PR Triagejamiepine/voicebox57k—~3.1kAutomated safety check: PassMIT
WinAppSDK Triage Meeting Prepmicrosoft/WindowsAppSDK4.7k—~2.8kAutomated safety check: PassApache-2.0

Similar skills

  • Setup Matt Pocock Skills

    bestofjs/bestofjs

    Configure this repo for the engineering skills — set up its issue tracker, triage label vocabulary, and domain doc layout.

    3.1k GitHub starsUsed in 20 repos~1.7k tokens
    DevelopmentAuto-check passed
  • Official

    Generates GitHub Feature Area Status reports for the Windows App SDK repository, scoring issues so teams can see what needs attention in each area.

    4.7k GitHub stars~3.4k tokensUpdated today
    DevelopmentAuto-check passed
  • Exposed Bug Fix Workflow

    JetBrains/Exposed

    Official

    Takes a GitHub or YouTrack issue for the Exposed project through reproduction, a failing test, a fix, validation and a pull request.

    9.3k GitHub stars~3.8k tokensUpdated today
    DevelopmentAuto-check passed
  • Pre-Release PR Triage

    jamiepine/voicebox

    Sorts a backlog of open pull requests into must-merge, candidate, superseded and deferred, writes a triage doc and works the merge loop before a release.

    57k GitHub stars~3.1k tokensUpdated today
    DevelopmentAuto-check passed
  • WinAppSDK Triage Meeting Prep

    microsoft/WindowsAppSDK

    Official

    Prepares the triage meeting summary for WinAppSDK Needs-Triage issues, with research-backed area suggestions, draft replies and a diff since the last triage.

    4.7k GitHub stars~2.8k tokensUpdated today
    DevelopmentAuto-check passed
  • A2ui Issue Triage

    a2ui-project/a2ui

    Automates the triage of GitHub issues in the A2UI repository.

    17k GitHub stars~1.5k tokensUpdated today
    DevelopmentAuto-check passed

More from agent-substrate/substrate

  • Post Draft Review

    agent-substrate/substrate

    Posts pull request review findings as GitHub draft (pending) inline comments for a human to edit and submit, instead of publishing them straight to the PR author.

    4.5k GitHub stars~2.8k tokensUpdated today
    Auto-check passed
  • Detect Flaky Tests

    agent-substrate/substrate

    Detects flaky Go tests by analyzing GitHub Actions workflow runs across the last 7 days and all PRs — covering both the run-tests job (unit/integration) and the e2e-test job (gVisor and microVM…

    4.5k GitHub stars~3k tokensUpdated today
    Auto-check passed
  • Review Crds

    agent-substrate/substrate

    Reviews CRDs for compliance with Kubernetes API conventions.

    4.5k GitHub stars~228 tokensUpdated today
    Auto-check passed
  • Security Status Report

    agent-substrate/substrate

    Generates a security status report based on docs/threats.json by spinning up sub-agents for each threat to compute a quality score.

    4.5k GitHub stars~524 tokensUpdated today
    Auto-check passed
  • Agents Md

    agent-substrate/substrate

    Generates or updates an AGENTS.md file

    4.5k GitHub stars~635 tokensUpdated today
    Auto-check passed

Works with

Categories

Questions about Triage Issues

What does Triage Issues do?

Triages open GitHub issues by applying the correct labels. An agent skill from agent-substrate/substrate. Triage Issues is an agent skill from agent-substrate/substrate. Triages open GitHub issues by applying the correct labels.

When should I use Triage Issues?

Triage Issues fits situations like: asked to triage issues; organize the issue backlog.

How do I install Triage Issues in Claude Code?

Run `npx skills add agent-substrate/substrate --skill triage-issues -a claude-code`. Or copy the skill folder (.agents/skills/triage-issues in agent-substrate/substrate) into .claude/skills/triage-issues in your project. Claude Code loads it when a task matches its description.

How do I install Triage Issues in Codex?

Run `npx skills add agent-substrate/substrate --skill triage-issues -a codex`. Or copy the skill folder (.agents/skills/triage-issues in agent-substrate/substrate) into .agents/skills/triage-issues in your project. Codex loads it when a task matches its description.

Can I use Triage Issues in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add agent-substrate/substrate --skill triage-issues -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/triage-issues, .gemini/skills/triage-issues, .github/skills/triage-issues and .opencode/skills/triage-issues in your project.

What does Triage Issues need to run?

Going by SKILL.md and its folder, Triage Issues needs the command-line tools its instructions call (gh and bash).

Does Triage Issues access the network?

SKILL.md contains no URLs. Its commands use gh, which can reach the network depending on how they are called. This is read from the text; nothing was executed.

Is Triage Issues safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Triage Issues use?

Triage Issues is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Triage Issues use?

About 2.9k tokens (SKILL.md is roughly 12k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Triage Issues?

Skills that share tags, products or a category with Triage Issues: Setup Matt Pocock Skills (bestofjs/bestofjs, 3.1k stars), Windows App SDK Issue Triage Report (microsoft/WindowsAppSDK, 4.7k stars), Exposed Bug Fix Workflow (JetBrains/Exposed, 9.3k stars) and Pre-Release PR Triage (jamiepine/voicebox, 57k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Triage Issues?

agent-substrate (a GitHub organization) maintains it in agent-substrate/substrate, which has 4,459 GitHub stars. The repository holds 6 skills in this directory. The repository was last updated on October 7, 2026.

Source: agent-substrate/substrate on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.