From coderabbit-pack
Configures CodeRabbit as GitHub CI merge gate with Actions workflows, branch protection rules, and .coderabbit.yaml for PR review enforcement.
How this skill is triggered — by the user, by Claude, or both
Slash command
/coderabbit-pack:coderabbit-ci-integrationThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
Integrate CodeRabbit into your CI/CD pipeline as a merge gate. CodeRabbit posts a GitHub Check on each PR, and you can require this check to pass before merging. This skill covers branch protection rules, GitHub Actions workflows that react to CodeRabbit reviews, and strategies for enforcing review quality in CI.
Integrate CodeRabbit into your CI/CD pipeline as a merge gate. CodeRabbit posts a GitHub Check on each PR, and you can require this check to pass before merging. This skill covers branch protection rules, GitHub Actions workflows that react to CodeRabbit reviews, and strategies for enforcing review quality in CI.
.coderabbit.yaml committed to repository root1. Go to GitHub repo > Settings > Branches > Branch protection rules
2. Click "Add rule" (or edit existing rule for `main`)
3. Enable "Require status checks to pass before merging"
4. Search for "coderabbitai" in the status checks list
5. Select it as a required check
6. Save changes
Result: PRs cannot be merged until CodeRabbit completes its review.
# .coderabbit.yaml - Control when CodeRabbit blocks merge
reviews:
request_changes_workflow: true # CodeRabbit marks review as "Changes Requested" for issues
# When true: PRs with issues show as "Changes Requested" (blocks merge if reviews required)
# When false: CodeRabbit only posts "Comment" reviews (never blocks merge)
profile: "assertive" # Controls comment volume
# chill: fewer comments, only critical issues
# assertive: balanced, blocks on significant issues
# nitpicky: detailed comments, blocks more frequently
auto_review:
enabled: true
drafts: false # Don't run CI-blocking reviews on drafts
base_branches:
- main
- develop
- "release/*"
ignore_title_keywords:
- "WIP"
- "DO NOT MERGE"
# .github/workflows/coderabbit-gate.yml
name: CodeRabbit Review Gate
on:
pull_request_review:
types: [submitted]
jobs:
check-review:
# Only run when CodeRabbit submits a review
if: github.event.review.user.login == 'coderabbitai[bot]'
runs-on: ubuntu-latest
steps:
- name: Evaluate CodeRabbit review
uses: actions/github-script@v7
with:
script: |
const reviews = await github.rest.pulls.listReviews({
owner: context.repo.owner,
repo: context.repo.repo,
pull_number: context.issue.number,
});
const crReview = reviews.data
.filter(r => r.user.login === 'coderabbitai[bot]')
.pop();
if (!crReview) {
core.info('No CodeRabbit review found yet.');
return;
}
core.info(`CodeRabbit review state: ${crReview.state}`);
if (crReview.state === 'CHANGES_REQUESTED') {
core.setFailed('CodeRabbit requested changes. Address review feedback before merging.');
}
# .github/workflows/pr-size-check.yml
name: PR Size Check
on:
pull_request:
types: [opened, synchronize]
jobs:
check-size:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Check PR size
run: |
CHANGES=$(git diff --stat origin/${{ github.base_ref }}...HEAD | tail -1)
LINES=$(echo "$CHANGES" | grep -oP '\d+ insertion' | grep -oP '\d+' || echo 0)
DELETIONS=$(echo "$CHANGES" | grep -oP '\d+ deletion' | grep -oP '\d+' || echo 0)
TOTAL=$((LINES + DELETIONS))
echo "Total lines changed: $TOTAL"
if [ "$TOTAL" -gt 1000 ]; then
echo "::warning::PR has $TOTAL lines changed. CodeRabbit works best with PRs under 500 lines."
echo "Consider splitting into smaller PRs for better review quality."
fi
# .github/workflows/coderabbit-notify.yml
name: CodeRabbit Notification
on:
pull_request_review:
types: [submitted]
jobs:
notify:
if: >
github.event.review.user.login == 'coderabbitai[bot]' &&
github.event.review.state == 'changes_requested'
runs-on: ubuntu-latest
steps:
- name: Post Slack notification
uses: slackapi/[email protected]
with:
payload: |
{
"text": "CodeRabbit found issues in PR #${{ github.event.pull_request.number }}: ${{ github.event.pull_request.title }}",
"blocks": [
{
"type": "section",
"text": {
"type": "mrkdwn",
"text": "*CodeRabbit Review*: Changes requested on <${{ github.event.pull_request.html_url }}|PR #${{ github.event.pull_request.number }}>"
}
}
]
}
env:
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}
set -euo pipefail
# Programmatically set CodeRabbit as a required check
OWNER="your-org"
REPO="your-repo"
BRANCH="main"
gh api "repos/$OWNER/$REPO/branches/$BRANCH/protection" \
--method PUT \
--field 'required_status_checks={"strict":true,"contexts":["coderabbitai"]}' \
--field 'required_pull_request_reviews={"required_approving_review_count":1}' \
--field 'enforce_admins=true' \
--field 'restrictions=null'
echo "Branch protection updated: CodeRabbit review required for merge"
| Issue | Cause | Solution |
|---|---|---|
| "coderabbitai" not in status checks list | App not installed or no PRs reviewed yet | Install App, create a test PR, then configure |
| Review blocks all PRs | request_changes_workflow: true with aggressive profile | Switch to chill or set to false |
| CI times out waiting for review | Large PR or CodeRabbit backlog | Reviews take 2-15 min depending on PR size |
| Draft PRs blocked | drafts: true in config | Set drafts: false to skip draft PR reviews |
| Status check stays pending | CodeRabbit outage | Check status.coderabbit.ai; admin merge if needed |
For deployment and multi-repo rollout, see coderabbit-deploy-integration.
npx claudepluginhub jeremylongshore/claude-code-plugins-plus-skills --plugin coderabbit-packExecutes CodeRabbit production readiness checklist: audits GitHub app setup, validates .coderabbit.yaml config and review settings before enforcing as org-wide merge gate.
Creates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.