Agent Skills: CodeRabbit SDK Patterns

|

UncategorizedID: jeremylongshore/claude-code-plugins-plus-skills/coderabbit-sdk-patterns

Install this agent skill to your local

pnpm dlx add-skill https://github.com/jeremylongshore/claude-code-plugins-plus-skills/tree/HEAD/plugins/saas-packs/coderabbit-pack/skills/coderabbit-sdk-patterns

Skill Files

Browse the full folder contents for coderabbit-sdk-patterns.

Download Skill

Loading file tree…

plugins/saas-packs/coderabbit-pack/skills/coderabbit-sdk-patterns/SKILL.md

Skill Metadata

Name
coderabbit-sdk-patterns
Description
|

CodeRabbit SDK Patterns

Overview

CodeRabbit does not have a traditional SDK. You interact with it through .coderabbit.yaml configuration, PR comment commands (@coderabbitai), and the GitHub/GitLab API to process its review output. These patterns show how to automate around CodeRabbit reviews programmatically.

Prerequisites

  • CodeRabbit installed on repository (see coderabbit-install-auth)
  • GitHub CLI (gh) or GitHub API access via personal access token
  • Node.js 18+ for automation scripts

Instructions

Step 1: Fetch CodeRabbit Reviews via GitHub API

// scripts/fetch-coderabbit-reviews.ts
import { Octokit } from "@octokit/rest";

const octokit = new Octokit({ auth: process.env.GITHUB_TOKEN });

async function getCodeRabbitReview(owner: string, repo: string, prNumber: number) {
  const reviews = await octokit.pulls.listReviews({ owner, repo, pull_number: prNumber });

  const coderabbitReview = reviews.data.find(
    (r) => r.user?.login === "coderabbitai[bot]"
  );

  if (!coderabbitReview) {
    console.log("No CodeRabbit review found yet. Review typically takes 2-5 minutes.");
    return null;
  }

  return {
    state: coderabbitReview.state,      // "APPROVED" | "CHANGES_REQUESTED" | "COMMENTED"
    body: coderabbitReview.body,         // Walkthrough summary
    submittedAt: coderabbitReview.submitted_at,
  };
}

Step 2: Extract Line-Level Comments

async function getCodeRabbitComments(owner: string, repo: string, prNumber: number) {
  const comments = await octokit.pulls.listReviewComments({
    owner, repo, pull_number: prNumber,
  });

  const coderabbitComments = comments.data
    .filter((c) => c.user?.login === "coderabbitai[bot]")
    .map((c) => ({
      file: c.path,
      line: c.line || c.original_line,
      body: c.body,
      severity: categorizeSeverity(c.body),
      url: c.html_url,
    }));

  return coderabbitComments;
}

function categorizeSeverity(body: string): "critical" | "warning" | "suggestion" {
  const lower = body.toLowerCase();
  if (lower.includes("security") || lower.includes("vulnerability") || lower.includes("injection")) {
    return "critical";
  }
  if (lower.includes("bug") || lower.includes("error") || lower.includes("issue")) {
    return "warning";
  }
  return "suggestion";
}

Step 3: Post Commands to CodeRabbit via PR Comments

// Programmatically trigger CodeRabbit actions
async function sendCodeRabbitCommand(
  owner: string, repo: string, prNumber: number, command: string
) {
  await octokit.issues.createComment({
    owner, repo, issue_number: prNumber,
    body: `@coderabbitai ${command}`,
  });
}

// Available commands:
// "full review"                    - Complete review from scratch
// "summary"                        - Generate walkthrough summary
// "resolve"                        - Mark all comments resolved
// "generate-docstrings"            - Generate docstrings for functions
// "configuration"                  - Show current config as YAML
// "run <recipe>"                   - Run a finishing touch recipe

Step 4: Build a Review Dashboard Script

#!/bin/bash
# scripts/coderabbit-dashboard.sh - Review metrics for last 50 PRs
set -euo pipefail

ORG="${1:?Usage: $0 <org> <repo>}"
REPO="${2:?Usage: $0 <org> <repo>}"

echo "=== CodeRabbit Review Dashboard ==="
echo "Repository: $ORG/$REPO"
echo ""

# Count PRs with CodeRabbit reviews
TOTAL=$(gh api "repos/$ORG/$REPO/pulls?state=closed&per_page=50" --jq 'length')
REVIEWED=0

for PR_NUM in $(gh api "repos/$ORG/$REPO/pulls?state=closed&per_page=50" --jq '.[].number'); do
  HAS_CR=$(gh api "repos/$ORG/$REPO/pulls/$PR_NUM/reviews" \
    --jq '[.[] | select(.user.login=="coderabbitai[bot]")] | length' 2>/dev/null || echo "0")
  [ "$HAS_CR" -gt 0 ] && REVIEWED=$((REVIEWED + 1))
done

echo "Review Coverage: $REVIEWED/$TOTAL PRs reviewed ($(( REVIEWED * 100 / TOTAL ))%)"

Step 5: GitHub Actions Automation

# .github/workflows/coderabbit-gate.yml
# Block merge until CodeRabbit has reviewed
name: CodeRabbit Review Gate

on:
  pull_request_review:
    types: [submitted]

jobs:
  check-coderabbit:
    if: github.event.review.user.login == 'coderabbitai[bot]'
    runs-on: ubuntu-latest
    steps:
      - name: Check review state
        uses: actions/github-script@v7
        with:
          script: |
            const { data: reviews } = await github.rest.pulls.listReviews({
              owner: context.repo.owner,
              repo: context.repo.repo,
              pull_number: context.issue.number,
            });
            const crReview = reviews.find(r => r.user.login === 'coderabbitai[bot]');
            if (crReview?.state === 'CHANGES_REQUESTED') {
              core.setFailed('CodeRabbit requested changes. Address feedback before merging.');
            } else {
              core.info(`CodeRabbit review state: ${crReview?.state || 'pending'}`);
            }

Output

  • GitHub API integration for fetching CodeRabbit review data
  • Automated command posting to trigger CodeRabbit actions
  • Review metrics dashboard script
  • CI gate that enforces CodeRabbit approval before merge

Error Handling

| Issue | Cause | Solution | |-------|-------|----------| | Review not found | PR too new | Wait 2-5 minutes for review to complete | | 403 from GitHub API | Token missing scopes | Ensure repo scope on personal access token | | Bot login doesn't match | Different app slug | Check with coderabbitai[bot] (includes [bot] suffix) | | Rate limited by GitHub | Too many API calls | Use pagination and caching for bulk queries |

Resources

Next Steps

Apply patterns in coderabbit-core-workflow-a for real-world review workflows.