| name | rhdh-pr-review |
| description | Review pull requests: code-level analysis with inline comments, and live cluster testing for rhdh-operator PRs. Supports GitHub (GitLab planned). Use when asked to review a PR, review code, post review comments, test PR changes on a cluster, deploy PR images for testing, or do a full PR review. Also use when given a PR URL or number and asked for feedback, or when user mentions "review this PR", "PR review", "code review", or "test this PR on my cluster".
|
<cli_setup>
For cluster testing workflows, set up the orchestrator CLI:
RHDH=../rhdh/scripts/rhdh
</cli_setup>
<essential_principles>
Reviews follow a three-layer pipeline: **fetch** (forge-specific) → **analyze** (agnostic) → **post** (forge-specific). Each layer produces a structured artifact for the next. The analyze layer never calls forge-specific CLIs.
Reviewers will produce false positives. Verify every finding against actual code at HEAD before including it. Drop findings that reference non-existent code, duplicate existing comments, misread the code, or conflict with codebase conventions.
Present the full review draft — summary, inline comments with file:line, and event type — to the user before posting. Proceed only after confirmation.
For cluster testing: deploy the full PR bundle/manifests, not just the operator binary image. PR changes to CRDs, RBAC, default config, or bundle metadata are baked into the OLM bundle or install.yaml — a binary-only image swap misses them.
</essential_principles>
What would you like to do?
Code Review
- Review PR code — Analyze a PR diff, generate findings, and post inline comments
- Review PR code (analysis only) — Analyze without posting (e.g., to review locally or post later)
Cluster Testing (rhdh-operator PRs)
- Test PR on cluster — Deploy PR operator bundle on a live RHDH cluster and verify changes
Combined
- Full review — Code review + post to GitHub + cluster testing
Wait for response before proceeding.
| Response | Workflow |
|---|
| 1, "review", "review PR", "code review", a PR URL or number | workflows/fetch-github.md → workflows/review-code.md → workflows/post-to-github.md |
| 2, "analyze", "analysis only", "review locally" | workflows/fetch-github.md → workflows/review-code.md (stop after findings) |
| 3, "test", "cluster", "deploy", "operator PR", "test on cluster" | workflows/fetch-github.md → workflows/review-operator-pr.md |
| 4, "full", "full review", "both" | workflows/fetch-github.md → workflows/review-code.md → workflows/post-to-github.md → workflows/review-operator-pr.md |
Routing rules
- PR URL or number with no other context: default to route 1 (code review + post).
- rhdh-operator PR detected (repo is
redhat-developer/rhdh-operator): suggest route 4 (full review) but let the user choose.
- "review" without "post" or "cluster": route 1.
- All routes start with fetch. The fetch workflow produces a context artifact consumed by all downstream workflows.
Forge detection
Currently GitHub only. Detect from URL pattern or gh CLI availability.
When GitLab support is added: fetch-gitlab.md and post-to-gitlab.md will slot into the same pipeline. The analyze workflow (review-code.md) is forge-agnostic and needs no changes.
<artifact_contracts>
Context artifact (fetch → analyze / cluster test)
Produced by the fetch workflow, consumed by all downstream workflows:
context artifact
├── forge: "github"
├── repo: "owner/repo"
├── pr_number: 123
├── head_sha: "abc123..."
├── base_ref, head_ref, title, body, author, state, url
├── labels: [...]
├── files: [{path, additions, deletions}, ...]
├── total_additions, total_deletions
├── diff: "full unified diff"
├── linked_issues: [{number, title, body, labels, state}, ...]
├── jira_keys: ["RHIDP-1234", ...]
├── existing_comments: [{user, path, line, body, created_at}, ...]
├── existing_reviews: [{user, state, body}, ...]
└── ci_status: "pass" | "fail" | "pending" | "unknown"
Findings artifact (analyze → post)
Produced by the analysis workflow, consumed by the posting workflow:
findings artifact
├── pr: {repo, number, head_sha}
├── summary: "top-level review text"
├── event: "COMMENT" | "APPROVE" | "REQUEST_CHANGES"
└── findings[]
├── path, line, start_line
├── type: "suggestion" | "question" | "observation"
└── body: "comment text"
</artifact_contracts>
<reference_index>
| Reference | Purpose | Load when... | Path |
|---|
| review-perspectives | Review perspective examples and signal hints | Running review-code.md | references/review-perspectives.md |
| operator-pr-images | CI image extraction and validation | Running review-operator-pr.md | references/operator-pr-images.md |
| github-reference | gh CLI patterns, PR queries | Running any GitHub workflow | ../rhdh/references/github-reference.md (if available) |
| rhdh-repos | RHDH ecosystem repository map | Cluster testing | ../rhdh/references/rhdh-repos.md (if available) |
</reference_index>
<skills_index>
| Skill | Purpose | Path |
|---|
| rhdh | Orchestrator, environment status, activity tracking | ../rhdh/SKILL.md |
</skills_index>
<success_criteria>
Code review
Cluster testing
See workflows/review-operator-pr.md <success_criteria> for the full checklist.
Full review
All code review criteria + all cluster testing criteria.
</success_criteria>