Files
optimclaw/.claude/commands/respond-pr.md
8929baf76a feat: add review and fix-issue project commands (#104)
* feat: add review and fix-issue project commands

Add 4 Claude Code project commands adapted from global skills,
tailored to IronClaw's build/test/lint workflow and conventions:

- review-pr: Paranoid architect PR review across 6 lenses
- review-crate: Deep Rust crate audit (vulnerabilities, bugs, unfinished work)
- respond-pr: Triage and address PR review comments
- fix-issue: End-to-end GitHub issue resolution with branch/plan/implement flow

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

* fix: address PR review feedback on project commands

- Add headRefOid to gh pr view and resolve {owner}/{repo} in review-pr.md
  so Step 6 line comments actually work (Gemini + Copilot)
- Add --paginate to gh api calls in respond-pr.md for large PRs (Gemini + Copilot)
- Use gh repo view --json defaultBranchRef instead of hardcoded main/master
  fallback in fix-issue.md (Gemini)
- Narrow allowed-tools in all four commands to match repo convention of
  specific subcommands (Bash(cargo fmt:*) style) instead of broad wildcards (Copilot)
- Clarify >20 files guidance in review-pr.md: read all, process in priority order (Copilot)
- Make cargo audit mandatory with install hint in review-crate.md (Gemini)

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

---------

Co-authored-by: Claude Opus 4.6 <[email protected]>
2026-02-17 07:52:42 +00:00

3.3 KiB

description, disable-model-invocation, allowed-tools, argument-hint
description disable-model-invocation allowed-tools argument-hint
Respond to PR review comments — triage, plan fixes, implement after confirmation, push, and reply to reviewers true Bash(gh pr list:*), Bash(gh pr comment:*), Bash(gh api:*), Bash(gh repo view:*), Bash(git branch:*), Bash(git status:*), Bash(git add:*), Bash(git commit:*), Bash(git push:*), Bash(cargo fmt:*), Bash(cargo clippy:*), Bash(cargo test:*), Read, Edit, Write, Grep, Glob [pr-number (optional, auto-detects from branch)]

Review and Address PR Comments

Step 1: Find the PR

If $ARGUMENTS is provided, use that as the PR number. Otherwise, detect the PR for the current branch:

gh pr list --head $(git branch --show-current) --json number,title,url --jq '.[0]'

If no PR is found, tell the user and stop.

Step 2: Fetch all review comments

Resolve the repo owner and name:

gh repo view --json owner,name --jq '"\(.owner.login)/\(.name)"'

Fetch the full set of review comments (not issue-level comments):

gh api --paginate repos/{owner}/{repo}/pulls/{number}/comments

Also fetch the review summaries:

gh api --paginate repos/{owner}/{repo}/pulls/{number}/reviews

Deduplicate comments that appear multiple times (bots sometimes post the same finding under different IDs). Group by the actual issue being raised, not by comment ID.

Step 3: Triage and plan

For each unique issue raised in the comments:

  1. Check if already addressed - Read the current code at the referenced location. If a prior commit already fixed it, note it as "already resolved".
  2. Assess validity - Determine if the comment identifies a real problem or is a false positive. Be honest about false positives but explain why.
  3. Classify severity - Critical (security/data loss), High (bugs/broken behavior), Medium (correctness/robustness), Low (style/naming/nits).
  4. Plan the fix - For each valid unresolved issue, describe the specific code change needed.

Present the plan as a table to the user:

# Issue File:Line Severity Status Planned Fix

Wait for user confirmation before proceeding to implementation.

Step 4: Implement fixes

After user confirms:

  1. Implement each fix in the plan.
  2. Run IronClaw's quality gate to verify nothing breaks:
    • cargo fmt
    • cargo clippy --all --benches --tests --examples --all-features
    • cargo test --lib
  3. Commit with a descriptive message referencing the PR review.
  4. Push to the branch.

Step 5: Reply to comments

For each comment addressed, reply on the PR with a short message stating what was fixed and the commit SHA. For false positives or already-resolved items, reply explaining why no change was needed.

Rules

  • Never guess at code you haven't read. Always read the referenced file and line before assessing a comment.
  • Group duplicate comments (same issue reported by multiple bots) and reply to all of them.
  • Do not make changes beyond what the review comments ask for. Stay focused.
  • If a comment suggests a change you disagree with, present your reasoning to the user during the planning phase rather than silently ignoring it.
  • Follow IronClaw conventions: no .unwrap() in production code, use crate:: imports, thiserror errors.
  • If changes touch persistence, verify both database backends are updated.