3.5 KiB
3.5 KiB
name, description
| name | description |
|---|---|
| input-mode-resolution | How to parse code-review arguments and resolve PR number, commit hash, pending changes, or default context into a reviewable diff |
Input Mode Resolution
Resolve /code-review arguments into a diff for the review pipeline.
Auto-Detection Rules
Parse arguments left-to-right. First match wins.
| Pattern | Mode | Example |
|---|---|---|
#\d+ |
PR | #123, #45 |
| GitHub PR URL | PR | https://github.com/org/repo/pull/123 |
[0-9a-f]{7,40} |
Commit | abc1234, full SHA |
--pending |
Pending | explicit flag |
codebase |
Codebase | existing mode |
| (none + context) | Default | recent changes |
| (none + no context) | Prompt | ask user via AskUserQuestion |
Resolution Commands
PR Mode
# Extract PR number from argument
PR_NUM=$(echo "$ARG" | grep -oE '[0-9]+$')
# Fetch PR metadata
gh pr view "$PR_NUM" --json title,body,files,additions,deletions,baseRefName,headRefName
# Get the diff
gh pr diff "$PR_NUM"
# Get changed file list
gh pr diff "$PR_NUM" --name-only
Context passed to reviewers:
- PR title and description (intent)
- Base branch (what it merges into)
- Full diff
- Changed file list for scout
Commit Mode
# Validate commit exists
git cat-file -t "$COMMIT_HASH"
# Get commit metadata
git log -1 --format="%H%n%s%n%b" "$COMMIT_HASH"
# Get the diff
git show "$COMMIT_HASH" --stat
git show "$COMMIT_HASH" -- # full diff
# Changed files
git show "$COMMIT_HASH" --name-only --format=""
Context passed to reviewers:
- Commit message (intent)
- Parent commit (what it changed from)
- Full diff
- Changed file list for scout
Pending Mode
# Staged changes
git diff --cached
# Unstaged changes
git diff
# Combined (staged + unstaged vs HEAD)
git diff HEAD
# Changed files
git diff HEAD --name-only
# Status overview
git status --short
Context passed to reviewers:
- No commit message yet — ask user for brief intent description
- Combined diff (staged + unstaged)
- Changed file list for scout
Default Mode
Use recent changes already in conversation context. If no changes apparent, fall back to Prompt mode.
Prompt Mode
When no arguments and no recent context, use AskUserQuestion:
- Header: "Review Target"
- Question: "What would you like to review?"
- Options: Pending changes, Enter PR number, Enter commit hash, Full codebase scan, Parallel codebase audit
For PR/commit options, follow up with second AskUserQuestion to get the number/hash.
Codebase Mode
Codebase modes bypass diff resolution — they scan the full codebase instead.
codebase→ hand off toreferences/codebase-scan-workflow.mdcodebase parallel→ hand off toreferences/parallel-review-workflow.md
Both workflows include adversarial review (always-on).
Pipeline Handoff
After resolving the diff, pass to the review pipeline:
Resolved diff
├─ Changed files → Edge case scout
├─ Full diff → Stage 1 (Spec compliance, if plan exists)
├─ Full diff → Stage 2 (Code quality review)
└─ Full diff + findings → Stage 3 (Adversarial review)
Error Handling
| Error | Action |
|---|---|
| PR not found | gh pr view fails → report "PR #N not found in this repo" |
| Commit not found | git cat-file fails → report "Commit not found — is it pushed?" |
| No pending changes | git diff HEAD empty → report "No pending changes to review" |
| Ambiguous input | Could be PR or commit → prefer PR (more common), note assumption |