spboyer/repo-issue-triage/repo-issue-triage
Claude Code and agent skill by spboyer/repo-issue-triage
- community
Checking that the SKILL.md file is still in the repository.
Automate GitHub issue and PR triage by cross-referencing open issues against pending PRs, merged PRs, and the current main branch to produce an actionable report with close/keep recommendations. Includes PR health monitoring. USE FOR: triage issues, issue checkup, PR status, close stale issues, issue audit, what can we close, outstanding issues, issue report, cross-reference PRs and issues, repo health check, sprint planning. DO NOT USE FOR: creating issues (use GitHub directly), fixing bugs (u…
Install
npx vskill@latest install spboyer/repo-issue-triage/repo-issue-triageSKILL.md
Repo Issue Triage
Automates the process of auditing all open GitHub issues against pending PRs, recently merged PRs, and the current main branch codebase, then produces a structured report with close/keep recommendations and actionable work items.
Quick Reference
| Property | Value | |
|---|---|---|
| MCP Tools | github-mcp-server | |
| CLI Tools | grep, glob, git log | |
| Tracking | Session SQL database | |
| Output | Structured markdown report | |
| Best For | Periodic repo hygiene, sprint planning, release prep |
When to Use This Skill
- Periodic issue hygiene (weekly/monthly triage)
- Sprint planning — identify what's already covered by PRs
- Pre-release audit — find issues that can be closed
- Post-merge cleanup — close issues covered by recent merges
- PR health monitoring — CI status, review threads, approvals
Workflow
Execute these 7 phases in order. Use parallel tool calls wherever noted.
Phase 1: PR HEALTH CHECK
Check the status of the user's open PRs first. This is always the starting point — address any failing CI or unresolved review threads before moving to issue triage.
Parallel calls:
Output table:
Actions if issues found:
- CI failures → fetch job logs, identify and fix
- Unresolved threads → read comments, address or resolve
- No approvals → note as "awaiting review"
Phase 2: FETCH ALL DATA
Fetch all open issues, open PRs, and recently merged PRs in parallel.
Parallel calls:
Extract into structured format: number | title | labels | assignees
Important: Use--limit 500for issues. Paginate if repo has more.Use CLI (gh) for bulk fetching — it's faster than individual API calls.
Phase 3: BUILD COVERAGE MAP
Build a mapping of what PRs (open and merged) cover which issues.
Method 1: Direct links
- Scan PR titles/bodies for "Fixes #N", "Closes #N", "fix #N"
- Check issue bodies for PR references
Method 2: Keyword matching
- Match PR titles against issue titles using topic keywords
- Use regex patterns for common coverage relationships
Method 3: Known mappings
- If the user has been working in this session, use SQL tables
from prior work to pre-populate known coverage
Store in SQL:
Phase 4: DEEP ANALYSIS (Parallel Batches)
For issues not clearly mapped, do deep analysis using sub-agents.
Split issues into batches of ~100-120 and send to parallel explore agents. Each agent gets:
- The batch of issues (number | title | labels | assignees)
- The list of open PRs with descriptions of what they change
- The list of recently merged PRs
- Instructions to check the codebase for implemented features
Agent prompt pattern:
Key: Useexploreagent type with a capable model (e.g., Codex)for accurate codebase analysis. Run 4 batches in parallel.
Phase 5: VERIFY ON MAIN
For issues flagged as potentially fixed, verify against the codebase:
Critical: Don't trust keyword matches alone. Verify the actual implementation exists and addresses the issue's requirements.
Phase 6: CATEGORIZE AND TIER
Assign each issue to a category using the classification rules.
Additionally, tier actionable issues:
| Tier | Description | Criteria | |
|---|---|---|---|
| Close Now | Fully covered or already on main | Verified implementation exists | |
| Auto-Close | Linked to open PR with "Fixes #N" | Will close when PR merges | |
| Partially Covered | PR addresses part of issue | Note what's done and what remains | |
| Quick Win | Small, well-defined, unassigned | Can fix in <1 hour | |
| Actionable Bug | Clear scope, reproducible, unassigned | Can investigate and fix | |
| Needs Design | Requires architecture decisions | Flag for team discussion | |
| Assigned | Has owner, in progress | Skip — someone is working on it | |
| Epic/Tracking | Tracking issue, not directly closeable | Skip |
Phase 7: REPORT
Generate the final report using the report template.
Report sections:
- PR Health Status table
- Closeable issues (with reasons)
- Auto-close on merge issues
- Partially covered issues (what's done, what remains)
- Quick wins and actionable items
- Category breakdown of remaining issues
- Summary statistics
Output as a markdown file and open in the user's editor.
Closing Issues
When closing issues, always include a detailed comment explaining:
- What PR or commit covers the issue
- Specifically how the issue is addressed (mention code/features)
- Any remaining gaps (for partial closures, note what's left)
Pattern:
Do NOT use generic close messages like "Fixed" or "Resolved".
Batch Processing Guidelines
To avoid flooding the GitHub API:
| Operation | Batch Size | Delay | |
|---|---|---|---|
| Issue fetching | 100-500 per call | None needed | |
| PR status checks | All in parallel | None needed | |
| Issue closing | 2-3 at a time | 1-2 seconds between | |
| Comment posting | 2-3 at a time | 1-2 seconds between | |
| Sub-agent analysis | 4 parallel batches | Wait for all to complete |
MCP Tools Used
| Tool | Method | Purpose | |
|---|---|---|---|
github-mcp-server | list_pull_requests | Fetch all open/merged PRs | |
github-mcp-server | list_issues | Fetch all open issues | |
github-mcp-server | issue_read | Deep-read individual issues | |
github-mcp-server | pull_request_read | Check PR details/diff/status | |
github-mcp-server | search_issues | Find linked issues | |
github-mcp-server | search_code | Search codebase for implementations | |
grep | — | Search local codebase for fixes | |
glob | — | Find implementation files |
Error Handling
| Error | Resolution | |
|---|---|---|
| Pagination needed (>500 items) | Use page parameter, loop until empty | |
| Rate limiting | Add delays between batches | |
| Issue body too large | Extract first 500 chars for classification | |
| Ambiguous classification | Default to KEEP_OPEN (conservative) | |
| Sub-agent timeout | Retry with smaller batch | |
| GraphQL thread query fails | Fall back to REST API reviews endpoint |
Reference Documentation
- Classification Rules — Decision tree for categorizing issues
- Report Template — Output format specification
Security
- Security scanPassed, 100 of 100Pattern checks on the skill's files.
- Model reviewNot runA model review is scheduled for the next rescan.
- semgrepPassed, 100 of 100
- njsscanPassed, 100 of 100
- trufflehogPassed, 100 of 100
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingSKILL.md
Popularity
- 7-day trend score
- 0
Refreshed 18 Mar 2026, 7 months ago.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/spboyer/repo-issue-triage/repo-issue-triage)