Repository navigation
ci: opt-in Claude deep review via deep-review label (#273) - #278
Conversation
Add a second trigger path to claude-review.yml: a triage+ user can apply the deep-review label to any same-repo PR to run the one-shot opus deep review. The labeler's live role is re-verified (on-slop/claude-implement pattern); the dedupe marker still caps it at one review per PR ever. Document the label in the AI-development docs table and CLAUDE.md. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Pohc8xLkdx4gwXkW3xd7up
WalkthroughThe Claude deep review workflow now supports a permission-verified ChangesOpt-in deep review
Estimated code review effort: 3 (Moderate) | ~20 minutes Sequence Diagram(s)sequenceDiagram
participant GitHubPR as GitHub PR event
participant Workflow as claude-review.yml
participant GitHubAPI as Collaborators API
participant Claude as Claude deep review
GitHubPR->>Workflow: Apply deep-review label
Workflow->>GitHubAPI: Verify labeler permission
GitHubAPI-->>Workflow: Return permission result
Workflow->>Workflow: Check review deduplication marker
Workflow->>Claude: Run one-shot deep review
Possibly related issues
Possibly related PRs
Suggested labels: 🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
Comment |
Preview DeploymentPreview URL: https://ca7a2985.bestax.pages.dev |
There was a problem hiding this comment.
🧹 Nitpick comments (1)
.github/workflows/claude-review.yml (1)
67-91: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick winPermission re-check is well-reasoned defense-in-depth.
Falls back safely to
allowed=falseon anygh apifailure (|| echo none→ hits the*)catch-all), and therole_namevalues checked (admin|maintain|write|triage) match the GitHub collaborators-permission API's documented set. Good belt-and-braces pattern.One optional note: this same pattern is called out in the comments as duplicated from
on-slop.ymlandclaude-implement.yml. If this triage+ permission re-check is going to be reused a third time, consider extracting it into a small composite action to avoid drift between the three copies.🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In @.github/workflows/claude-review.yml around lines 67 - 91, Consider extracting the duplicated permission re-check logic from the workflow step identified by “Check labeler permission” into a reusable composite action, then replace the repeated implementations in the related workflows with that action while preserving the existing inputs, outputs, and fail-closed behavior.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Nitpick comments:
In @.github/workflows/claude-review.yml:
- Around line 67-91: Consider extracting the duplicated permission re-check
logic from the workflow step identified by “Check labeler permission” into a
reusable composite action, then replace the repeated implementations in the
related workflows with that action while preserving the existing inputs,
outputs, and fail-closed behavior.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro Plus
Run ID: 7a241539-b6ea-4553-91b7-952e1e477d85
📒 Files selected for processing (3)
.github/workflows/claude-review.ymlCLAUDE.mddocs/docs/guides/getting-started/ai-development.md
|
@claude perform deep review |
|
Claude finished @allxsmith's task in 4m 14s —— View job Deep review
No blocking defects found. The gating logic is sound; I traced the four trigger shapes (loop Overall: the design is sound. Worth calling out one thing I specifically checked because it looked suspicious at first glance, then confirmed is not a bug:
Two pre-existing minor items, both non-blocking:
Verified: paren-balance in the multi-line |
Addresses the PR #278 deep-review note: the inserted sentence ran to ~142 chars; rewrap the paragraph tail to the surrounding ~90-char style. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0142miDJt2AX9QUw5fNJt2xu
Preview DeploymentPreview URL: https://fe5eb120.bestax.pages.dev |
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@CLAUDE.md`:
- Around line 90-91: Clarify the `deep-review` documentation to state that it
applies only to same-repository PRs, not pull requests originating from forks.
Update the sentence describing labeling any PR while preserving the one-shot
behavior and existing kill-switch details.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro Plus
Run ID: e3c6886a-0697-48cf-bdf1-9b053a2091de
📒 Files selected for processing (1)
CLAUDE.md
| user can also apply the opt-in `deep-review` label to any PR to run the one-shot Claude | ||
| deep review on it (once ever per PR). Kill switches: remove `ai-loop` (per PR) or set repo |
There was a problem hiding this comment.
🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win
Document the same-repository restriction
“Any PR” is broader than the workflow contract: fork PRs are intentionally rejected. Clarify that deep-review applies to same-repository PRs so users do not expect labeling a fork PR to trigger a review.
Suggested wording
- A triage+ user can also apply the opt-in `deep-review` label to any PR to run the one-shot Claude
+ A triage+ repository collaborator can also apply the opt-in `deep-review` label to any
+ same-repository PR to run the one-shot Claude📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| user can also apply the opt-in `deep-review` label to any PR to run the one-shot Claude | |
| deep review on it (once ever per PR). Kill switches: remove `ai-loop` (per PR) or set repo | |
| A triage+ repository collaborator can also apply the opt-in `deep-review` label to any | |
| same-repository PR to run the one-shot Claude | |
| deep review on it (once ever per PR). Kill switches: remove `ai-loop` (per PR) or set repo |
🧰 Tools
🪛 LanguageTool
[style] ~90-~90: Consider a different adjective to strengthen your wording.
Context: ...el to any PR to run the one-shot Claude deep review on it (once ever per PR). Kill s...
(DEEP_PROFOUND)
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@CLAUDE.md` around lines 90 - 91, Clarify the `deep-review` documentation to
state that it applies only to same-repository PRs, not pull requests originating
from forks. Update the sentence describing labeling any PR while preserving the
one-shot behavior and existing kill-switch details.
|
🎉 This PR is included in version 3.2.0 🎉 The release is available on: Your semantic-release bot 📦🚀 |
|
🎉 This PR is included in version 5.4.1 🎉 The release is available on: Your semantic-release bot 📦🚀 |
|
🎉 This PR is included in version 1.0.0 🎉 The release is available on: Your semantic-release bot 📦🚀 |
|
🎉 This PR is included in version 1.0.0 🎉 The release is available on: Your semantic-release bot 📦🚀 |
Pull Request
Description
Adds a second, opt-in trigger path to the one-shot Claude deep review (
claude-review.yml): a triage+ user can apply thedeep-reviewlabel to any same-repo PR to run the opus deep review — closing the gap where Claude-Code-authored but human-opened PRs (e.g. #267–271) never get one. The AI-loop path is logically unchanged; the labeler's live role is re-verified via the collaborators API (same belt-and-braces pattern ason-slop.yml/claude-implement.yml), and the<!-- claude-deep-review -->dedupe marker still caps usage at one review per PR ever — re-labeling never re-fires it. Documents the new label in the AI-development guide and the rootCLAUDE.md.@allxsmith/bestax-bulma)create-bestax)@allxsmith/bestax-docs).github/workflows/claude-review.yml) + docsRelated Issue(s)
Closes #273
Type of Change
Checklist
CLAUDE.mdfiles are updatedScreenshots / Demos
N/A — CI workflow + docs change.
Additional Context
claude-review.yml. The hunks here (opening sentence + step 5 gate wording) are expected to merge cleanly with it, but whichever PR lands second should rebase and re-verify.deep-reviewlabel must exist in the repo before use — create it at rollout.docs/docs/guides/getting-started/ai-development.md, so trivial table conflicts (prettier re-padded the column widths) are expected and easy to resolve.if:: loop PR opened withai-loop→ runs (unchanged);ai-looplabeled → runs (unchanged);deep-reviewlabeled by triage+ → runs after the live permission re-check (non-triage labelers are a silent no-op that spends no Claude usage); unlabeled PR opened → does not run. Fork PRs never run. Nosynchronizetrigger was added.🤖 Generated with Claude Code
https://claude.ai/code/session_01Pohc8xLkdx4gwXkW3xd7up
Generated by Claude Code
Summary by CodeRabbit
New Features
deep-reviewlabel to trigger a one-time deep review for eligible pull requests.Documentation
deep-reviewlabel, its one-shot lifecycle, and the updated label instructions in the AI development loop.