Skip to content
Back to skills

Reviewer Distillation Select

ASecurity

Select merged PRs with substantive human reviews for reviewer distillation experiment

  • 5 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added September 2, 2026
ai-agentsbashnodegitapisecurity

Works with

  • cursor
  • api

Security analysis

A100/100

Scanned September 2, 2026

npx -y skills add kookr-ai/kookr --skill reviewer-distillation-select --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Reviewer Distillation Select?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Reviewer Distillation Select
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/kookr-ai-reviewer-distillation-select/badge)](https://www.skillsdirectory.com/skills/kookr-ai-reviewer-distillation-select)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: reviewer-distillation-select
description: Select merged PRs with substantive human reviews for reviewer distillation experiment
keywords: [reviewer, distillation, select, pr, graphql]
related: [reviewer-distillation-prepare, find-best-reviewers]
---

# SELECT Phase — PR Batch Selection

## When to Use

Called by the reviewer-distillation playbook at the start of each iteration to select the next batch of PRs.

## Parameters

- `repo`: GitHub owner/repo (e.g., `grafana/grafana`)
- `batchSize`: Number of PRs per batch (default: 3 for POC, 10 for production)
- `stateDir`: Path to `~/.claude/{repoSlug}-reviewer-distillation/`

## Bot Filter

Exclude reviews from these accounts (case-insensitive, also any login ending with `[bot]` or `-bot` or containing `bot`):

```
dependabot, renovate, github-actions, copilot-pull-request-reviewer,
coderabbitai, sweep-ai, mergify, bors, grafana-delivery-bot,
grafanabot, CLAassistant, github-advanced-security, chatgpt-codex-connector,
copilot, codecov, sonarcloud, snyk-bot, allstar-app, openai-codex,
semgrep-code-grafana
```

## GraphQL Query

```bash
gh api graphql -f query='
query($owner: String!, $repo: String!, $cursor: String) {
  repository(owner: $owner, name: $repo) {
    pullRequests(states: MERGED, first: 50, after: $cursor,
                 orderBy: {field: UPDATED_AT, direction: DESC}) {
      nodes {
        number
        title
        additions
        deletions
        mergeCommit { oid }
        baseRefName
        author { login }
        reviews(first: 30) {
          nodes {
            author { login }
            state
            comments { totalCount }
          }
        }
      }
      pageInfo { hasNextPage endCursor }
    }
  }
}
' -f owner="$OWNER" -f repo="$REPO"
```

## Filter Criteria

A PR qualifies when ALL of these are true:
1. `additions + deletions > 20` (non-trivial)
2. Sum of `reviews.comments.totalCount` ≥ 3 from non-bot human authors
3. PR number NOT in `state.json.processed_prs` or `state.json.skipped_prs`
4. Author is not a bot
5. Title does NOT match: `bump`, `release`, `chore(deps)`, `dependency`, `[release-`
6. `mergeCommit` exists (actually merged)
7. Total diff size < 120K characters (~30K tokens) — skip oversized PRs

## Output

Write selected PR metadata to `state.json` under `current_batch`:

```json
{
  "current_batch": [
    { "number": 121445, "title": "...", "mergeCommitOid": "abc123", "baseRefName": "main" }
  ]
}
```

Add skipped PR numbers to `state.json.skipped_prs` with reason.

## Pagination

Start from `state.json.cursor`. If fewer than `batchSize` PRs qualify in a page, advance cursor and fetch more. If no qualifying PRs remain, report "insufficient data" and stop.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.