Skip to content
Back to skills

Review Repository

ASecurity

This repository's own pull request reviewer: a specialists manifest that routes the deployer, the skills, the validation policies, the trust-boundary files, and the documents to briefed reviewers, which review-prs runs. Set it up on a machine, check it, or tune it from canary reviews.

  • 2 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added October 19, 2026
ai-agentspythonrustgoshellbashcode-reviewgitapidocumentation

Works with

  • api

Security analysis

A100/100

Pro scans all 17 files and shows the line behind each finding

Scanned October 19, 2026

npx -y skills add EJRyan89/coding-agent-skills --skill review-repository --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Review Repository?

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

Security grade badge for Review Repository
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/ejryan89-review-repository-coding-agent-skills/badge)](https://www.skillsdirectory.com/skills/ejryan89-review-repository-coding-agent-skills)

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: review-repository
description: >-
  This repository's own pull request reviewer: a specialists manifest that routes the deployer, the skills, the
  validation policies, the trust-boundary files, and the documents to briefed reviewers, which review-prs runs. Set
  it up on a machine, check it, or tune it from canary reviews.
argument-hint: "[PULL_NUMBER ...]"
disable-model-invocation: true
allowed-tools: ["Bash(python -B skills/code-review-core/scripts/review_pipeline.py validate-reviewer *)", "PowerShell(python -B skills/code-review-core/scripts/review_pipeline.py validate-reviewer *)"]
---

# This repository's reviewer

`review-prs` reviews a pull request of this repository with the specialists manifest `.claude/skills/review-repository/references/specialists.json`, read at the pull request's base as every repository reviewer is. This skill does not review: it sets the reviewer up, checks it, and tunes it. "Specialist reviewers" in `docs/code-review-operations.md` describes the mechanism. Each route's profile, under `references/`, names the invariant or decision in `docs/design.md` it holds and the drift the v0.4.0 audit found there:

| Route | Files | Holds |
| --- | --- | --- |
| `deployer` | `deployer/`, `deploy.py` | One write point, one platform seam, refusals before mutation, the journal, the kinds table |
| `skill-contract` | skills' `SKILL.md`, `agents/`, `deploy-meta/`, `source.json`, repository skills and shims | Grants that match what runs, script over prose, metadata, cost |
| `skill-scripts` | skills' and repository skills' scripts but their suites, beside the reviewers above, with the `skill-contract` profile | Grants that still match what a changed script runs |
| `validation-policy` | `tests/validation/`, the runner, `pyproject.toml` | Each policy holds the sentence that cites it, with a fixture, read through `ast` |
| `trust-boundary` | the code-review contract, the review modules for documents, the guard, hosts, records, process starts, GitHub reads, analyzers, canaries, reviewer resolution, the pipeline, the runtime, source commands, and specialists, `test_adversarial_inputs.py`, `review_document.py`, and skill-core's process, program-lookup, git, GitHub, remote, diff-path, flattening, Markdown-escaping, field-reader, XML, and PDF modules | A threat-model row and its adversarial test for what an author reaches |
| `documentation` | `docs/`, top-level Markdown, the templates | Each sentence true of the code and of its owner |
| `documentation-drift` | scripts, beside the reviewers above, when a document names what changed | Each passage that names changed code still true of it |
| `untested-changes` | scripts, beside the reviewers above, when a changed function, method, or class has no test naming it | A test for each changed definition, or the body's reason none applies |
| `upgrade-notes` | contract files, skills' `SKILL.md`, `deployer/arguments.py`, `pdf_tool.py` | The body's upgrade-note entry for each contract change, at the level and with the user action it asks for |

The generic reviewer takes every other file: `tools/`, skill scripts, the deployer and tools suites, CI, and this skill's own profiles. Every pattern matches without regard to case, as a checkout on a case-insensitive file system places a path. Every finding names one of the manifest's `finding_categories`, each a kind of drift. `review-prs` gives every reviewer the pull request's body as untrusted data, `PULL_REQUEST_BODY_FILE`, so `upgrade-notes` reads its `## Upgrade note`. Validation requires coverage of changed contract values and makes syntactic checks: non-empty `Level`, `Contract`, and `User action` fields, a `Level` whose first word is from Versioning's allowed levels, and a `Contract` naming backticked items or `none`. The reviewer judges whether the level and user action fit the actual change and migration, and detects a contract with no file. `documentation-drift` and `untested-changes` open only when their conditions find something; they and `skill-scripts` share their files, so the generic reviewer still reviews those files.

## 1. Configure

The configuration stays on each machine and never in the repository. Add this entry to the code-review configuration's `repositories`, and the repository to a set, putting the hub checkout's absolute path for the placeholder:

```json
"EJRyan89/coding-agent-skills": {
  "reviewer": {"id": "review-repository", "protocol_version": 1, "scope": "repository", "trusted_ref": null,
               "manifest_path": ".claude/skills/review-repository/references/specialists.json"},
  "checkout_path": "<hub checkout>",
  "snapshot_exclude": ["tests/fixtures/**"]
}
```

`snapshot_exclude` leaves out the evaluation and canary fixtures, whose planted defects and own `README.md` and `docs/design.md` `source-search` would return beside the repository's. A pull request that changes a fixture is therefore `INCOMPLETE`: its fixtures are reviewed from the diff, and `evaluate-skill` exercises them.

## 2. Check

Check the reviewer against each pull request given, or a recent merged one of each route:

```bash
python -B skills/code-review-core/scripts/review_pipeline.py validate-reviewer --repository EJRyan89/coding-agent-skills --pull '<number>'
```

Expect, in order: `REVIEWER` and `FILES`, with an `UNMATCHED` line for any include pattern that matches no file; then for each pull request `PULL <owner/repo#number> base=... head=... files=<n> reviewer=<source>`, `BODY` with how much of the body reviewers would be given, `SNAPSHOT ... source=checkout-lazy`, a `CONDITION <name> open|closed` line for each condition a matching specialist names (whether the drift and untested-changes routes would open), a `ROUTE` line per route that starts, an `UNCOVERED <path>` line for each changed file no specialist that does not share its files matches, and `GENERIC files=<n>` for the files the generic reviewer reviews; and last `VALID`. "Choosing and checking a repository reviewer" in `docs/code-review-operations.md` gives every line `validate-reviewer` prints. A base that predates the manifest fails: set `trusted_ref` to a commit that has it, for that check only.

## 3. Tune

Tune from records, not from reading the profiles. Commit the change, set `trusted_ref` to that commit, and run `/review-prs --canary EJRyan89/coding-agent-skills#<number>` on merged pull requests that reach each route it changes. Compare each record's findings, by reviewer and category, with what the pull request later needed, then reset `trusted_ref` to `null`. A profile is what a reviewer reads on every turn, so keep each one short. Run `analyze-skill-cost` on this skill before the pull request, as for any repository skill.

Files in this skill

  • SKILL.md6.6 KB
  • references/deployer.md2.5 KB
  • references/documentation-drift.md2.2 KB
  • references/documentation.md2.8 KB
  • references/skill-contract.md2.9 KB
  • references/specialists.json6.1 KB
  • references/trust-boundary.md4.1 KB
  • references/untested-changes.md2 KB
  • references/upgrade-notes.md3.1 KB
  • references/validation-policy.md2.6 KB
  • scripts/conditions.py5.4 KB
  • scripts/doc_passages.py14.3 KB
  • scripts/test_conditions.py5.6 KB
  • scripts/test_doc_passages.py16.6 KB
  • scripts/test_review_repository.py49.6 KB
  • scripts/test_untested_functions.py19.3 KB
  • scripts/untested_functions.py25.4 KB

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.