--- name: triage-prs description: Triage all open PRs with parallel agents, label, group, and review one-by-one argument-hint: "[optional: repo owner/name or GitHub PRs URL]" disable-model-invocation: true allowed-tools: Bash(gh *), Bash(git log *) --- # Triage Open Pull Requests Review, label, and act on all open PRs for a repository using parallel review agents. Produces a grouped triage report, applies labels, cross-references with issues, and walks through each PR for merge/comment decisions. ## Step 0: Detect Repository Detect repo context: - Current repo: !`gh repo view --json nameWithOwner -q .nameWithOwner 2>/dev/null || echo "no repo detected"` - Current branch: !`git branch --show-current 2>/dev/null` If `$ARGUMENTS` contains a GitHub URL or `owner/repo`, use that instead. Confirm the repo with the user if ambiguous. ## Step 1: Gather Context (Parallel) Run these in parallel: 1. **List all open PRs:** ```bash gh pr list --repo OWNER/REPO --state open --limit 50 ``` 2. **List all open issues:** ```bash gh issue list --repo OWNER/REPO --state open --limit 50 ``` 3. **List existing labels:** ```bash gh label list --repo OWNER/REPO --limit 50 ``` 4. **Check recent merges** (to detect duplicate/superseded PRs): ```bash git log --oneline -20 main ``` ## Step 2: Batch PRs by Theme Group PRs into review batches of 4-6 based on apparent type: - **Bug fixes** - titles with `fix`, `bug`, error descriptions - **Features** - titles with `feat`, `add`, new functionality - **Documentation** - titles with `docs`, `readme`, terminology - **Configuration/Setup** - titles with `config`, `setup`, `install` - **Stale/Old** - PRs older than 30 days ## Step 3: Parallel Review (Team of Agents) Spawn one review agent per batch using the Task tool. Each agent should: For each PR in their batch: 1. Run `gh pr view --repo OWNER/REPO --json title,body,files,additions,deletions,author,createdAt` 2. Run `gh pr diff --repo OWNER/REPO ` (pipe to `head -200` for large diffs) 3. Determine: - **Description:** 1-2 sentence summary of the change - **Label:** Which existing repo label fits best - **Action:** merge / request changes / close / needs discussion - **Related PRs:** Any PRs in this or other batches that touch the same files or feature - **Quality notes:** Code quality, test coverage, staleness concerns Instruct each agent to: - Flag PRs that touch the same files (potential merge conflicts) - Flag PRs that duplicate recently merged work - Flag PRs that are part of a group solving the same problem differently - Report findings as a markdown table - Send findings back via message when done ## Step 4: Cross-Reference Issues After all agents report, match issues to PRs: - Check if any PR title/body mentions `Fixes #X` or `Closes #X` - Check if any issue title matches a PR's topic - Look for duplicate issues (same bug reported twice) Build a mapping table: ``` | Issue | PR | Relationship | |-------|-----|--------------| | #158 | #159 | PR fixes issue | ``` ## Step 5: Identify Themes Group all issues into themes (3-6 themes): - Count issues per theme - Note which themes have PRs addressing them and which don't - Flag themes with competing/overlapping PRs ## Step 6: Compile Triage Report Present a single report with: 1. **Summary stats:** X open PRs, Y open issues, Z themes 2. **PR groups** with recommended actions: - Group name and related PRs - Per-PR: #, title, author, description, label, action 3. **Issue-to-PR mapping** 4. **Themes across issues** 5. **Suggested cleanup:** spam issues, duplicates, stale items ## Step 7: Apply Labels After presenting the report, ask user: > "Apply these labels to all PRs on GitHub?" If yes, run `gh pr edit --repo OWNER/REPO --add-label "