Files
english/.opencode/skills/code-review/references/input-mode-resolution.md
2026-04-12 01:06:31 +07:00

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 to references/codebase-scan-workflow.md
  • codebase parallel → hand off to references/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