Files
optimclaw/.claude/commands/triage-prs.md
T
Illia PolosukhinGitHubIllia PolosukhinClaude Opus 4.6gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
6330f1b27a feat: add PR triage dashboard skill (#196)
* feat: add PR triage dashboard skill

Adds /triage-prs slash command that classifies all open PRs by module,
review state, scope, and architectural impact to produce a prioritized
triage dashboard for maintainers.

Co-Authored-By: Claude Opus 4.6 <[email protected]>

* Apply suggestions from code review

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>

* Apply suggestions from code review

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>

* fix: address review feedback on triage-prs skill

- Add body and updatedAt to PR query fields for superseded detection
- Use --label/--author flags directly instead of post-filtering
- Use date-based --search for merged PRs instead of --limit 20
- Simplify LLM module listing, add missing module categories
- Use updatedAt for staleness, clarify lines changed metric

Co-Authored-By: Claude Opus 4.6 <[email protected]>

---------

Co-authored-by: Illia Polosukhin <[email protected]>
Co-authored-by: Claude Opus 4.6 <[email protected]>
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
2026-02-18 22:38:23 +00:00

6.1 KiB

description, disable-model-invocation, allowed-tools, argument-hint
description disable-model-invocation allowed-tools argument-hint
Classify all open PRs by module, review state, scope, and architectural impact — produces a prioritized triage dashboard true Bash(gh pr list:*), Bash(gh pr view:*), Bash(gh pr diff:*), Bash(gh api:*), Bash(gh pr checks:*), Bash(git log:*), Read, Grep, Glob, Task [--label=<filter>] [--author=<filter>]

PR Triage Dashboard

You are triaging all open PRs on this repository. Your job is to produce a prioritized, module-grouped dashboard that tells the maintainer exactly which PRs need attention and in what order.

Step 1: Fetch all open PRs

Fetch every open PR with metadata:

gh pr list --state open --limit 100 --json number,title,author,labels,additions,deletions,headRefName,createdAt,updatedAt,isDraft,reviewRequests,reviews,files,body

If $ARGUMENTS contains --label=<X>, append --label '<X>' to the gh pr list command. If it contains --author=<X>, append --author '<X>' to the command.

Also fetch recently merged PRs (last 7 days) to detect superseded/conflicting work:

gh pr list --state merged --search "merged:>=$(date -v-7d +%Y-%m-%d)" --limit 100 --json number,title,body,mergedAt

Step 2: Classify each PR by module

For each open PR, determine the primary module it touches by examining the files field. Classify into these categories based on the dominant src/ subdirectory:

Category Directories
LLM & Inference src/llm/
Agent Core src/agent/, src/skills/
Tools src/tools/, tools-src/
Channels src/channels/, channels-src/
Storage & Memory src/db/, src/workspace/, migrations/
Security src/safety/, src/secrets/
Config & Setup src/config.rs, src/setup/, src/cli/
Sandbox & Orchestration src/sandbox/, src/orchestrator/, src/worker/
Hooks & Extensions src/hooks/, src/extensions/
Context & History src/context/, src/history/, src/estimation/, src/evaluation/
Web Gateway src/channels/web/
CI/CD & Docs .github/, README.md, CLAUDE.md, *.md (no src)
Other Anything else

If a PR touches multiple modules, assign it to the primary module (most files changed) but note the cross-cutting modules.

Step 3: Assess review state

For each PR, determine its review status:

  • Approved — At least one human APPROVED review, no outstanding CHANGES_REQUESTED
  • Changes requested — At least one CHANGES_REQUESTED review still unresolved
  • Reviewed (comments only) — Human comments but no formal approve/reject
  • Automated only — Only bot reviews (gemini-code-assist, copilot, etc.)
  • No review — No reviews at all

Also check:

  • CI status: gh pr checks {number} — PASS / FAIL / NONE
  • Draft status: is the PR marked as draft?
  • Staleness: how many days since updatedAt?

Step 4: Determine scope and risk

Classify each PR by scope:

Scope Criteria
Tiny <50 lines changed (additions + deletions), 1-2 files
Small 50-200 lines, 1-5 files
Medium 200-500 lines, 3-10 files
Large 500-2000 lines, 5-20 files
XL 2000+ lines or 20+ files

Step 5: Classify as fix vs. architectural

For each PR, determine its nature:

Fixes (merge fast)

  • Bug fixes with clear root cause
  • Security patches
  • Crash/panic prevention
  • Typo/doc corrections
  • Code quality (removing .unwrap(), etc.)

Features (standard review)

  • New functionality within existing patterns
  • New tool implementations
  • Configuration additions
  • Test additions

Architectural (deep review needed)

  • New modules or subsystems
  • Changes to core traits or interfaces
  • New database backends or storage engines
  • New provider abstractions
  • Changes touching 5+ modules
  • Anything modifying the agent loop, session model, or security layer
  • New dependencies (check Cargo.toml changes)

Step 6: Detect conflicts and superseded PRs

Check for:

  • Multiple PRs fixing the same issue (look at "Closes #N" / "Fixes #N" in PR bodies)
  • PRs touching the same files (potential merge conflicts)
  • PRs that are follow-ups to other open PRs (dependency chains)
  • PRs superseded by recently merged work

Step 7: Produce the dashboard

Present the output in this format:

Quick Stats

Open: N | Draft: N | Needs review: N | Changes requested: N | Ready to merge: N

Ready to Merge

PRs that are approved, CI passing, and non-draft. List with one-line summary.

Needs Human Review (Fixes)

Fixes that have no human review yet, sorted by severity (security > crash > bug > quality).

Needs Human Review (Features)

Features with no human review, sorted by scope (smallest first).

Needs Deep Architectural Review

Large/XL PRs, new modules, or cross-cutting changes. For each, include:

  • Which modules are affected
  • What new patterns or abstractions are introduced
  • Key risk areas to focus review on

Changes Requested (Waiting on Author)

PRs where a reviewer asked for changes. Include who requested and a 1-line summary of what's needed.

Stale / Blocked

PRs with no activity >7 days, or blocked by other PRs.

Conflicts & Overlaps

Any detected conflicts, superseded PRs, or dependency chains.

By Module

Group all PRs by their primary module in a compact table:

Module PRs Key PR to review first

Superseded PRs (recommend closing)

PRs that are clearly superseded by merged work. Include reasoning.

Rules

  • Use gh CLI for all GitHub operations. Never guess PR state — always check.
  • For large PR lists (>15), use the Task tool to parallelize fetching PR details and diffs.
  • Be concise in summaries. One line per PR in tables.
  • When assessing "ready to merge", be conservative. If there's any unresolved concern from a repo member, it's not ready.
  • Flag any PR that has been open >14 days with no review as needing attention.
  • If a PR description says "Closes #N" but #N was already closed by another merged PR, flag it as potentially superseded.
  • Do NOT post comments or take any action on PRs. This skill is read-only analysis.