Agent skill

GitHub Issue Triage

by decebals in decebals/claude-code-java

Sorts open GitHub issues for a Java project into bug, feature, question, duplicate or unclear, then labels them and assigns a priority.

MITAuto-check passedDevelopment

Install GitHub Issue Triage

skills CLI
$ npx skills add decebals/claude-code-java --skill issue-triage -a claude-code

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

GitHub CLI
$ gh skill install decebals/claude-code-java issue-triage --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/decebals/claude-code-java.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/issue-triage .claude/skills/issue-triage && 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
issue-triage
GitHub stars
751
Token cost
~2.4k tokens
SKILL.md length
552 words
Files
2
Skills in repo
18
Repo updated
First seen
Licence
MIT

At a glance

Sorts open GitHub issues for a Java project into bug, feature, question, duplicate or unclear, then labels them and assigns a priority.

  • Works in 4 steps: Fetch Issues → Categorize Each Issue → Priority Assessment → …
  • Working through the open issue backlog after time away
  • SKILL.md covers When to Use, Prerequisites, Workflow and Token Optimization Strategies, plus 6 more sections
  • Calls gh and claude; reaches api.githubcopilot.com

What it does

This skill sorts open GitHub issues for a Java project into categories and gives each one a priority. It fetches issues through the GitHub MCP server when one is configured, which uses fewer tokens, or falls back to the `gh` command line tool with open issues pulled as JSON. Each issue is read and placed in one of five groups: bug report, feature request, question or support, duplicate, or invalid and unclear.

Each group has its own indicators and follow-up actions. Bugs are checked for a stack trace, reproduction steps, expected versus actual behavior and version numbers, then labeled `bug` and compared against known duplicates. Feature requests get the `enhancement` label and a look at fit with project goals. Questions get an answer or a docs link. Duplicates are linked to the original and closed politely, and unclear issues get a request for details, a `needs-more-info` label and an auto-close after 14 days without a reply. A priority step starting at Critical (P0) follows the categorization.

When your agent uses it

  • Working through the open issue backlog after time away
  • Running a weekly or monthly review of new GitHub issues
  • Labeling incoming issues as bug, enhancement or question
  • Spotting duplicate issues before they pile up

Example prompts

  • “Triage the open issues in this repo and suggest labels and priorities.”
  • “Check recent issues and flag any that look like duplicates.”
  • “I was away for two weeks. Go through the backlog and tell me what needs attention first.”

Requirements

  • The GitHub MCP server or the `gh` CLI
  • Access to the repository's GitHub issues

Workflow steps

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

  1. Fetch Issues
  2. Categorize Each Issue
  3. Priority Assessment
  4. Response Templates

What it can do on your machine

Read from SKILL.md and the folder at commit 0d98fe9. 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
    • claude

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

  • Network

    Hosts in commands or code, which the agent is likely to contact:

    • api.githubcopilot.com

    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

GitHub Issue Triage loads about 2.4k tokens when it runs. Until then it costs about 50 tokens; SKILL.md has 552 words of instructions outside code blocks.

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

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 decebals/claude-code-java at commit 0d98fe9, republished under its MIT licence (© decebals). 552 words, ~2,448 tokens.

Download SKILL.mdSave it as .claude/skills/issue-triage/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.
name
issue-triage
description
Triage and categorize GitHub issues with priority labels. Use when user says "triage issues", "check issues", "review open issues", or during regular maintenance of GitHub issue backlog.
license
MIT

Issue Triage Skill

Efficiently triage GitHub issues for Java projects with categorization and prioritization.

When to Use

  • User says "triage issues" / "check recent issues"
  • Regular maintenance workflow
  • After vacation/break (backlog processing)
  • Weekly/monthly issue review

Prerequisites

Recommended: GitHub MCP server configured for optimal token usage

bash
claude mcp add github --transport http \
  https://api.githubcopilot.com/mcp/

Alternative: Use gh CLI (less token-efficient)

Workflow

1. Fetch Issues

With GitHub MCP (recommended):

Tool: list_issues
Parameters: {
  "state": "open",
  "sort": "updated", 
  "per_page": 10
}

With gh CLI:

bash
gh issue list --state open --limit 10 --json number,title,labels,body,url
2. Categorize Each Issue

Analyze issue content and assign category:

Bug Report ✅

Indicators:

  • Has stack trace or error message
  • Steps to reproduce provided
  • Expected vs actual behavior described
  • Mentions specific version numbers

Actions:

  • Label: bug
  • Verify reproducibility from description
  • Check for duplicate bugs
  • Add to milestone if critical

Example:

Issue #234: "NPE when loading plugin from directory"
- Stack trace: ✅
- Reproduction steps: ✅
- Version info: ✅
→ Label: bug, high-priority
Feature Request 💡

Indicators:

  • Asks for new functionality
  • Use case described
  • "It would be nice if..." / "Could you add..."
  • Rationale provided

Actions:

  • Label: enhancement
  • Assess alignment with project goals
  • Mark for discussion if non-trivial
  • Ask for community feedback
Question/Support ❓

Indicators:

  • "How do I..." / "Can someone help..."
  • Configuration/usage questions
  • Not a bug or feature request

Actions:

  • Label: question
  • Provide answer or link to docs
  • Suggest StackOverflow for complex help
  • Close after answer if resolved
Duplicate 🔄

Search for similar issues:

  • Use GitHub search: is:issue <keywords>
  • Check recently closed issues
  • Look for same error messages

Actions:

  • Link to original: "Duplicate of #123"
  • Close with polite comment
  • Ask reporter to comment on original if they have additional info
Invalid/Unclear ⚠️

Indicators:

  • Missing critical information
  • Off-topic or spam
  • Not enough context to proceed

Actions:

  • Request clarification with template
  • Set "needs-more-info" label
  • Auto-close if no response after 14 days
3. Priority Assessment
Critical (P0) 🔴

Criteria:

  • Security vulnerability
  • Data loss/corruption risk
  • Complete functionality breakdown
  • Affects production systems

Actions:

  • Label: critical
  • Notify maintainers immediately
  • Add to current milestone
  • Consider hotfix release

Examples:

- "SQL injection vulnerability in plugin loader"
- "All plugins fail to load after upgrade"
- "ClassLoader leak causes OutOfMemoryError"
High (P1) 🟠

Criteria:

  • Core feature broken
  • Affects many users
  • Workaround exists but painful
  • Regression from previous version

Actions:

  • Label: high-priority
  • Add to next milestone
  • Include in release notes

Examples:

- "Plugin dependencies not resolved correctly"
- "Hot reload crashes application"
Medium (P2) 🟡

Criteria:

  • Edge case bug
  • Enhancement with clear value
  • Documentation gap
  • Affects some users occasionally

Actions:

  • Label: medium-priority
  • Consider for future milestone
  • Good for contributors

Examples:

- "Improve error message for invalid plugin"
- "Add plugin lifecycle listener"
Show full SKILL.md (214 more words)Show less
Low (P3) 🟢

Criteria:

  • Nice-to-have feature
  • Cosmetic issues
  • Very rare edge case
  • Documentation improvements

Actions:

  • Label: low-priority
  • "Contributions welcome" tag
  • Backlog for future

Examples:

- "Add more examples to README"
- "Typo in JavaDoc"
4. Response Templates
Need More Information
markdown
Thanks for reporting this issue! 

To investigate further, could you provide:
- Java version (java -version)
- Library version
- Minimal reproducible example
- Full stack trace (if applicable)
- Configuration files (if relevant)

This will help us diagnose and fix the issue faster.
Duplicate
markdown
Thanks for reporting! This is being tracked in #123.

Closing as duplicate. Feel free to add any additional context 
or information to the original issue.
Won't Fix (with rationale)
markdown
Thank you for the suggestion. After consideration, this doesn't 
align with the project's current direction because [reason].

Consider [alternative approach] instead, which might better 
serve your use case.

If you feel strongly about this, please open a discussion in 
our [forum/discussions] to gather community feedback.
Acknowledged Bug
markdown
Confirmed! This is a valid bug. 

I've added it to milestone X.Y and labeled it as [priority].
Contributions welcome if anyone wants to tackle it!

Reproduction verified with:
- Java 17
- Version 3.10.0
- Ubuntu 22.04
Feature Request - Under Consideration
markdown
Interesting idea! This aligns with our goal of [project goal].

I've labeled this as 'enhancement' for further discussion.
Community feedback welcome - upvote with 👍 if you'd find 
this useful.

Some questions to consider:
- [question 1]
- [question 2]
Question Answered
markdown
To achieve this, you can [solution].

Example:
\`\`\`java
[code example]
\`\`\`

Also check our documentation: [link]

Let me know if this solves your issue!

Token Optimization Strategies

Batch Processing
bash
# Process multiple issues in one prompt
"Triage issues #234-243, categorize and prioritize"

Savings: ~60% fewer tokens vs one-by-one

Use Structured GitHub MCP Calls
  • One call to list issues → cache results
  • Targeted calls for details only when needed
  • Batch label updates

Savings: ~40% fewer tokens vs repeated bash calls

Cache Issue List
bash
# First prompt
"Fetch the last 20 issues, save list in memory"

# Subsequent prompts
"Analyze issue #5 from cached list"
"Mark #7-#9 as duplicate"
Focus on First Post + Recent Comments
  • Don't read entire 50-comment threads
  • Skim first post for context
  • Check last 2-3 comments for updates

Anti-patterns

❌ Avoid:

# One-by-one processing
"Check issue #234"
"Now check issue #235"
"Now check issue #236"
→ Wastes tokens on repeated context loading

# Over-analyzing
Reading entire 100-comment thread
Checking all related PRs
Deep diving into code for each issue
→ Diminishing returns after certain point

# Premature closing
Closing issues without proper investigation
Missing duplicates due to poor search
→ Frustrates users, creates duplicate work

✅ Prefer:

# Batch operations
"Triage issues #234-250, categorize, prioritize"

# Quick triage decisions
Fast categorization → Can revisit if needed
Surface-level analysis for most issues
Deep dive only for critical/complex ones

# Thorough duplicate search
Quick keyword search before marking duplicate
Link to specific comment if clarification exists

Automation Opportunities

Auto-close stale issues
bash
# Issues with no activity for 90 days and "needs-more-info" label
"Find stale issues (>90 days, needs-more-info label), 
suggest closing with polite message"
Label by keywords
bash
# Auto-label based on content
"java.lang.NullPointerException" → bug
"add support for" → enhancement
"how do I" → question
Weekly summary
bash
# Generate triage summary
"Summarize issues from last week:
- New bugs: X
- Feature requests: Y
- Questions: Z
- Closed: W"

Integration with GitHub

With GitHub MCP
javascript
// Structured workflow
1. list_issues → get open issues
2. get_issue → details for each
3. add_labels → categorize
4. create_comment → respond
5. close_issue → if needed
With gh CLI
bash
# List issues
gh issue list --json number,title,labels,body

# View specific issue
gh issue view 234

# Add labels
gh issue edit 234 --add-label "bug,high-priority"

# Comment
gh issue comment 234 --body "Thanks for reporting..."

# Close
gh issue close 234 --comment "Fixed in v2.1"

Metrics to Track

After each triage session, report:

📊 Triage Summary
─────────────────
Issues processed: 15
├─ Bugs: 5 (2 critical, 3 high)
├─ Enhancements: 4
├─ Questions: 3
├─ Duplicates: 2
└─ Invalid: 1

Actions taken:
├─ Labeled: 15
├─ Responded: 12
├─ Closed: 3
└─ Milestoned: 5

Time saved: ~45 minutes (vs manual)
Token usage: 3,200 tokens

Best Practices

  1. Regular cadence - Weekly triage prevents backlog
  2. Be respectful - Users took time to report
  3. Link resources - Docs, related issues, examples
  4. Ask questions - Better to clarify than assume
  5. Welcome contributions - Encourage community involvement
  6. Track patterns - Common issues suggest documentation gaps
  7. Celebrate reporters - Thank users for good bug reports
  8. Close decisively - Don't let issues linger indefinitely

Example Workflow

bash
# Monday morning triage
claude code ~/projects/pf4j

> view .claude/skills/issue-triage/SKILL.md
> "Triage the last 15 issues from pf4j/pf4j,
   categorize, prioritize and suggest responses"

[Claude analyzes and presents summary]

> "Apply labels and post the suggested responses"

[Claude executes actions]

> "Generate summary for release notes"

Result: 15 issues triaged in ~10 minutes vs ~45 minutes manual

© decebals, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 1 other file in skills/issue-triage of decebals/claude-code-java.

  • SKILL.md
  • README.md

Open the folder on GitHubat commit 0d98fe9

Compare with similar skills

GitHub Issue Triage 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.

GitHub Issue Triage compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
GitHub Issue Triage this skilldecebals/claude-code-java751—~2.4kAutomated safety check: PassMIT
Issue Triage Loopcobusgreyling/loop-engineering11k—~522Automated safety check: PassMIT
Pre-Release PR Triagejamiepine/voicebox57k—~3.1kAutomated safety check: PassMIT
WinAppSDK Triage Meeting Prepmicrosoft/WindowsAppSDK4.7k—~2.8kAutomated safety check: PassApache-2.0
Herdr Issue Triageherdrdev/herdr43k—~517Automated safety check: PassApache-2.0
Ouroboros Maintainer TriageQ00/ouroboros6.2k—~1.7kAutomated safety check: PassMIT

Similar skills

  • Issue Triage Loop

    cobusgreyling/loop-engineering

    Scans open GitHub issues and discussions, flags duplicates, scores priority and proposes labels into issue-triage-state.md without ever labeling or closing.

    11k GitHub stars~522 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 2 days ago
    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
  • Herdr Issue Triage

    herdrdev/herdr

    Triages open herdr GitHub issues into a short decision-first Markdown table with a priority light, recommendation, age, reactions and a reason for each.

    43k GitHub stars~517 tokensUpdated yesterday
    DevelopmentAuto-check passed
  • Triages and works through GitHub issues and pull requests in the Q00/ouroboros repo as a maintainer, within a stated review boundary and clear limits on what it may change.

    6.2k GitHub stars~1.7k tokensUpdated 2 days ago
    DevelopmentAuto-check passed
  • Audits open GitHub issues, categorizes them, flags duplicates and linked PRs in three phases, with optional deep analysis and comments posted only after validation.

    83k GitHub stars~3k tokensUpdated yesterday
    DevelopmentAuto-check: notes

More from decebals/claude-code-java

All 18 skills in this repo
  • Java Design Patterns Reference

    decebals/claude-code-java

    A practical Java reference for Builder, Factory, Singleton, Strategy, Observer and other patterns, with a table matching problems to patterns.

    751 GitHub starsUsed in 1 repo~4.4k tokens
    Auto-check passed
  • Jpa Patterns

    decebals/claude-code-java

    JPA/Hibernate patterns and common pitfalls (N+1, lazy loading, transactions, queries).

    751 GitHub starsUsed in 1 repo~4k tokens
    Auto-check passed
  • Logging Patterns

    decebals/claude-code-java

    Java logging best practices with SLF4J, structured logging (JSON), and MDC for request tracing.

    751 GitHub starsUsed in 1 repo~3.3k tokens
    Auto-check passed
  • REST API Contract Review

    decebals/claude-code-java

    Reviews REST API design for correct HTTP verbs, versioning, DTO use, consistent responses and backward compatibility before an API change ships.

    751 GitHub stars~2.8k tokensUpdated 1 mo ago
    Auto-check passed
  • Java Architecture Review

    decebals/claude-code-java

    Reviews a Java project's architecture at the macro level: package structure, module boundaries, dependency direction and layering.

    751 GitHub stars~2.2k tokensUpdated 1 mo ago
    Auto-check passed
  • Changelog Generator for Java

    decebals/claude-code-java

    Builds changelog entries from conventional commits in a Java project, after working out whether it uses SemVer, two-part versions or calendar versions.

    751 GitHub stars~2.1k tokensUpdated 1 mo ago
    Auto-check passed

Categories

Questions about GitHub Issue Triage

What does GitHub Issue Triage do?

Sorts open GitHub issues for a Java project into bug, feature, question, duplicate or unclear, then labels them and assigns a priority. This skill sorts open GitHub issues for a Java project into categories and gives each one a priority. It fetches issues through the GitHub MCP server when one is configured, which uses fewer tokens, or falls back to the `gh` command line tool with open issues pulled as JSON.

When should I use GitHub Issue Triage?

GitHub Issue Triage fits situations like: working through the open issue backlog after time away; running a weekly or monthly review of new GitHub issues; labeling incoming issues as bug, enhancement or question; spotting duplicate issues before they pile up.

How do I install GitHub Issue Triage in Claude Code?

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

How do I install GitHub Issue Triage in Codex?

Run `npx skills add decebals/claude-code-java --skill issue-triage -a codex`. Or copy the skill folder (skills/issue-triage in decebals/claude-code-java) into .agents/skills/issue-triage in your project. Codex loads it when a task matches its description.

Can I use GitHub Issue Triage 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 decebals/claude-code-java --skill issue-triage -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/issue-triage, .gemini/skills/issue-triage, .github/skills/issue-triage and .opencode/skills/issue-triage in your project.

What does GitHub Issue Triage need to run?

Going by SKILL.md and its folder, GitHub Issue Triage needs the command-line tools its instructions call (gh and claude). Our summary lists: The GitHub MCP server or the `gh` CLI; Access to the repository's GitHub issues.

Does GitHub Issue Triage access the network?

SKILL.md names 1 domain. In commands or code: api.githubcopilot.com; the agent is likely to contact it when it follows the instructions. This is read from the text; nothing was executed.

Is GitHub Issue Triage 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 GitHub Issue Triage use?

GitHub Issue Triage is published under the MIT licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does GitHub Issue Triage use?

About 2.4k tokens (SKILL.md is roughly 9.8k 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 GitHub Issue Triage?

Skills that share tags, products or a category with GitHub Issue Triage: Issue Triage Loop (cobusgreyling/loop-engineering, 11k stars), Pre-Release PR Triage (jamiepine/voicebox, 57k stars), WinAppSDK Triage Meeting Prep (microsoft/WindowsAppSDK, 4.7k stars) and Herdr Issue Triage (herdrdev/herdr, 43k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains GitHub Issue Triage?

decebals (a GitHub user) maintains it in decebals/claude-code-java, which has 751 GitHub stars. The repository holds 18 skills in this directory. The repository was last updated on September 6, 2026.

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