# Coderabbit Adoption

> Report on CodeRabbit adoption across OpenShift org PRs

- Skill: `openshift-eng/coderabbit-adoption` (Agent Skill, multi-file: 3 files)
- Install (CLI): `npx skillmds@latest add openshift-eng/coderabbit-adoption`
- Raw SKILL.md: https://api.skillmd.com/api/skills/openshift-eng/coderabbit-adoption/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Docs & Writing
- Author: openshift-eng (https://skillmd.com/u/openshift-eng)
- Updated: 2026-09-10
- Page: https://skillmd.com/skills/openshift-eng/coderabbit-adoption

---


# CodeRabbit Adoption Report

This skill queries the GitHub search API to measure what percentage of merged PRs in the `openshift` GitHub organization received comments from the `coderabbitai[bot]` app.

## When to Use This Skill

Use this skill when you need to:

- Measure CodeRabbit adoption rates across the openshift org
- Identify repos with high or low CodeRabbit usage
- Generate adoption reports for stakeholders
- Track adoption trends over time

## Prerequisites

1. **GitHub CLI (`gh`)**: Must be installed and authenticated with access to the `openshift` org.

   ```bash
   gh auth status
   ```

2. **Python 3**: Python 3.6 or later is required.

## Implementation Steps

### Step 1: Verify Prerequisites

```bash
gh auth status
python3 --version
```

### Step 2: Run the Script

The script is located at:

```
plugins/teams/skills/coderabbit-adoption/coderabbit_adoption.py
```

Execute with appropriate arguments:

```bash
# Default: last 30 days, org-wide summary only (2 API calls)
python3 plugins/teams/skills/coderabbit-adoption/coderabbit_adoption.py

# Specific date range
python3 plugins/teams/skills/coderabbit-adoption/coderabbit_adoption.py \
  --start-date 2026-02-01 --end-date 2026-02-28

# Detailed mode: per-repo breakdowns (~50 API calls, prone to rate limiting)
# ONLY use when user explicitly requests --detailed
python3 plugins/teams/skills/coderabbit-adoption/coderabbit_adoption.py --detailed
```

### Step 3: Parse the Output

The script outputs JSON to stdout with the following structure:

**Default mode** (2 API calls, no per-repo data):

```json
{
  "start_date": "2026-02-04",
  "end_date": "2026-03-06",
  "total_merged_prs": 7950,
  "prs_with_coderabbit": 1445,
  "adoption_pct": 18.2,
  "detailed": false,
  "repo_breakdown": [],
  "no_coderabbit_activity": []
}
```

**Detailed mode** (~50 API calls, with per-repo data):

```json
{
  "start_date": "2026-02-04",
  "end_date": "2026-03-06",
  "total_merged_prs": 7950,
  "prs_with_coderabbit": 1445,
  "adoption_pct": 18.2,
  "detailed": true,
  "per_repo_approximate": true,
  "repo_breakdown": [
    {
      "repo": "openshift/cincinnati-graph-data",
      "cr_count": 150,
      "total": 196,
      "adoption_pct": 76.5
    }
  ],
  "no_coderabbit_activity": [
    {
      "repo": "openshift/release",
      "total": 1072
    }
  ]
}
```

**Field Descriptions**:

- `start_date`, `end_date`: The date range queried
- `total_merged_prs`: Total merged PRs in the openshift org
- `prs_with_coderabbit`: PRs where coderabbitai[bot] commented
- `adoption_pct`: Overall adoption percentage
- `detailed`: Whether detailed mode was used
- `per_repo_approximate`: (detailed only) True if per-repo breakdown is approximate (>1000 CodeRabbit PRs)
- `repo_breakdown`: (detailed only) Array of top repos sorted by CR count descending
- `no_coderabbit_activity`: (detailed only) High-volume repos with zero CodeRabbit comments

### Step 4: Format and Present the Report

- **Default mode**: Present the summary stats (total PRs, CodeRabbit PRs, adoption %)
- **Detailed mode**: Also include per-repo table and no-activity list

### Step 5: AI Analysis

After presenting the data, provide:

- License gap analysis: repos in `repo_breakdown` are enabled; missing reviews = engineers without licenses
- Observations on adoption trends
- In default mode, mention `--detailed` is available but warn it is prone to GitHub API rate limits

## Notes

- **API usage**: Default mode uses only 2 API calls. `--detailed` makes ~50 calls with 2-second sleeps between each to respect GitHub's search API rate limit (30 requests/minute). Even with throttling, `--detailed` may hit rate limits and takes several minutes.
- The script uses `gh` CLI with `-X GET` for all GitHub API calls (required for the search endpoint)
- Uses Python's standard library only (no external dependencies)
- Diagnostic messages go to stderr, JSON data to stdout
- Never use `--detailed` unless the user explicitly asks for it

