issue-labeler

patniko's avatarfrom patniko

Analyze unlabeled GitHub issues and generate label recommendations for review. Supports batch submission after approval.

⭐0stars🔀0forks📁View on GitHub🕐Updated Jan 7, 2026⬇️1downloads

When & Why to Use This Skill

The Issue Labeler skill is a powerful developer tool designed to automate the classification and triage of GitHub issues. By leveraging LLM analysis of issue titles, descriptions, and repository context, it generates intelligent label recommendations for priority, type, and functional area. This tool significantly reduces manual triage overhead for maintainers, ensures labeling consistency across large codebases, and integrates seamlessly with the GitHub CLI for secure, batch-processed updates.

Use Cases

  • Open Source Maintenance: Streamline the initial review of high-volume community reports by automatically suggesting labels for bugs, enhancements, and priority levels.
  • Backlog Grooming: Efficiently organize and categorize hundreds of unlabeled legacy issues in a repository to improve project visibility and searchability.
  • Workflow Standardization: Maintain consistent labeling conventions across an organization's repositories by using AI to objectively analyze issue content against a predefined schema.
  • Rapid Triage UI: Use the built-in review interface to quickly approve or reject AI-generated suggestions before they are applied to the live repository.
nameissue-labeler
descriptionAnalyze unlabeled GitHub issues and generate label recommendations for review. Supports batch submission after approval.
licenseMIT
compatibilityRequires gh CLI authenticated with repo access.
authorpatrick
version"1.0"
allowed-toolsbash gh jq

Issue Labeler

Generate label recommendations for unlabeled GitHub issues, review them, then submit in batch.

When to Use

  • Repository has many unlabeled or poorly labeled issues
  • You want to triage issues without manually reading each one
  • Need consistent labeling based on issue content

Workflow

Step 1: Generate Recommendations

# Fetch unlabeled issues and analyze them
./scripts/analyze.sh owner/repo

This creates recommendations.json with suggested labels for each issue.

Step 2: Review Recommendations

# Launch the review UI
./scripts/serve.sh

The UI shows:

  • Issue title and preview
  • Current labels (if any)
  • Recommended labels with confidence
  • Checkbox to approve/reject each recommendation

Step 3: Submit Approved Labels

After reviewing in the UI, export approved recommendations and run:

# Apply approved labels
./scripts/apply.sh recommendations-approved.json

Or use the "Submit All" button in the UI to apply via gh CLI.

Label Categories

The analyzer suggests labels from these categories:

Category Labels
Type bug, enhancement, question, documentation
Priority priority-1, priority-2, priority-3
Status triage, needs-info, investigating, confirmed
Area (detected from content: auth, cli, api, ui, etc.)

How Analysis Works

For each unlabeled issue, the LLM analyzes:

  1. Title keywords - error, feature, how to, crash, etc.
  2. Body content - stack traces, repro steps, feature requests
  3. Existing patterns - what labels similar issues have
  4. Repository context - available labels in the repo

Files

issue-labeler/
├── SKILL.md              # This file
├── review.html           # Review UI for recommendations
├── scripts/
│   ├── analyze.sh        # Fetch and generate recommendations
│   ├── apply.sh          # Apply approved labels
│   └── serve.sh          # Launch review UI
├── recommendations.json  # Generated recommendations (git-ignored)
└── approved.json         # Approved recommendations (git-ignored)

Example Recommendation

{
  "number": 123,
  "title": "App crashes when clicking submit",
  "current_labels": [],
  "recommended_labels": ["bug", "priority-2", "needs-info"],
  "confidence": 0.85,
  "reasoning": "Title indicates crash (bug). No repro steps provided (needs-info). User-facing issue (priority-2).",
  "approved": null
}

Safety

  • No labels applied without explicit approval
  • Review UI shows reasoning for each recommendation
  • Dry-run mode available: ./scripts/apply.sh --dry-run
  • All actions logged for audit

Notes

  • Requires gh CLI authenticated with write access to issues
  • Run gh auth status to verify permissions
  • For large repos, analyze in batches using --limit flag