Skip to content
Agentmart
Submit a tool

review-repo

Adversarial review of an entire repository, run inline in a single process: propose → kill → judge, one lens per run.

Skill by gbencke

IndexedMIT★ 6
Write a review

Chalk Labs

Need help deploying review-repo?

Chalk Labs sets up agents like this inside real teams: connected to your tools, tested on your data, with a human in the loop where it matters.

Book a call

Install

Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.

npx agentmarket install skill/gbencke-review-repo

Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.

Get the weekly diff

The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.

We use your email only for this newsletter. Privacy

About

Adversarial review of an entire repository, run inline in a single process: propose → kill → judge, one lens per run. Writes a report plus findings.json under .gbencke/adversarial-review/reports/. Spawns no subagents. Trigger: /review-repo <path> [--lenses a,b,c], "adversarial review of this repo".

Use cases: documents

No reviews yet. Installed it? Reviews come from verified installers only. How reviews work

Permissions

What this skill can do and what it asks for, from its SKILL.md and code. Checked Nov 1, 2026.

Tools
No tools found
Secrets
None asked for
Install scripts
None found

Network hosts it talks to 1

  • codeload.github.com · found in install command

Files it touches

  • ~/.claude/skills/review-repo

What's inside

Skill name
review-repo
Description
Adversarial review of an entire repository, run inline in a single process: propose → kill → judge, one lens per run. Writes a report plus findings.json under .gbencke/adversarial-review/reports/. Spawns no subagents. Trigger: /review-repo <path> [--lenses a,b,c], "adversarial review of this repo".
License
MIT
Instructions
149 lines in SKILL.md · view on GitHub

Files (1)

  • SKILL.md

SKILL.md (first lines)

# review-repo — adversarial whole-repository review

Run the adversarial loop yourself, in this process (see `BASE_DIR/CONTEXT.md`
for the glossary). You are the **reviewer, the challenger,
and the judge, in that order** — three roles, one process, strict phase
separation.

**No subagents.** Never use the `Agent` tool in this skill. Parallelism is the
caller's job: batch runners launch one process per (repo × lens) — see
ADR 0004. Spawning agents here would multiply concurrency by the number of
lenses and chunks.

**Shared assets base dir** (`BASE_DIR` below) —
`~/.claude/skills/adversarial-review/`: `CONTEXT.md` (glossary), `agents/`
(reviewer, challenger, judge role packs), `lenses/` (15 lenses), `bin/run-matrix.sh`
(the matrix launcher).

## Phase 0 — Target and scope

1. **The repo path is required.** Take it from the argument. If the argument is
   empty (or contains only flags like `--lenses …`), stop immediately with:
   > review-repo needs a repository path: `/review-repo <path> [--lenses a,b,c]`

   Never fall back to the current working directory — batch runners invoke this
   from an unrelated cwd, and reviewing the wrong repo silently is worse than
   failing.
2. Resolve the path to absolute (`TARGET_DIR`). Confirm it exists and is a repo
   (has `.git` or source files). If not, stop and say which check failed.
3. Read `BASE_DIR/agents/reviewer.md`, `BASE_DIR/agents/challenger.md`, and
   `BASE_DIR/agents/judge.md`. These are **role packs**: the stance, contract, and
   output schema you adopt for each phase below. Fill their slots mentally; you
   are the audience now, not a subagent.

## Phase 1 — Lens selection (never ask)

1. List `BASE_DIR/lenses/`. For each lens read `lens.md`
   (name, apply-when signals).
2. Also check `<TARGET_DIR>/.gbencke/adversarial-review/lenses/` (project
   overlay). New names are added; same-named lenses MERGE (project `rules.md`
   appended after the global `rules.md`).
3. A lens applies when its signals match the repo (globs, dependency names,
   file types). `test-surface` and `blast-radius` are change-only — skip them
   for repo reviews.
4. **Run every matched lens. Never prompt.** There is no lens picker: the
   matched set is the selection. State the selected lens names in chat and go
   straight to Phase 2. A prompt would deadlock non-interactive callers
   (`claude -p`), which is how batch runs drive this skill.
5. **`--lenses` arg**: if the argument contains `--lenses a,b,c`, use exactly
   those lenses instead of the matched set. That is the only way to narrow the
   selection. One lens per run is the batch case and the cheapest per-process
   context.
6. Per-chunk matching: language lenses (signals are file globs like `*.go`,
   `*.ts`) review ONLY the chunks whose files match — a Go-only chunk does not
   get the typescript lens. `always` lenses review every chunk.
7. Compute `LENS_SLUG` for the report basename: the lens name when exactly one
   lens is selected, otherwise `multi`. This is what keeps concurrent runs from
   overwriting each other (Phase 4).

## Phase 2 — Chunking (exhaustive)

1. Walk the repo. ALWAYS skip: `.git`, `node_modules`, `vendor`, `dist`,
   `build`, `target`, lock files, generated code, minified assets, binary
   files, the `.gbencke/adversarial-review` dir itself.
2. Chunk along top-level module/directory boundaries. Split a directory that is
   too large for one reading pass (~>40 source files or ~>30k tokens)
   mechanically into sub-chunks.
3. Produce the chunk list `[{id, paths[]}]` and state the count.

## Phase 3 — The loop, one chunk at a time

Process chunks **sequentially**. For each chunk, for each lens that matches it:

1. **Propose** — adopt `BASE_DIR/agents/reviewer.md` for that lens: read the chunk's
   files under the lens's merged `rules.md` and produce findings as the JSON in
   that role pack. Every finding needs `file:line`, a failure condition, and
   evidence. Run the role pack's adversarial self-check and drop what dies.
2. **Kill** — switch to `BASE_DIR/agents/challenger.md` for the same findings: try to
   disprove each one against the actual code (callers, middleware, framework
   defaults, parent config). Emit `VALID` / `INVALID` / `AMBIGUOUS` with the
   kill attempts you actually made. Do not raise new findings while wearing
   this hat; note them and propose them in the next chunk that owns the code.
3. **Discard the file contents.** Keep ONLY the challenger JSON for this chunk.
   Your own context is the budget now that there are no subagents to absorb it
   — carrying source across chunks is what makes a large repo run out of room.
   If context is still tight, append each chunk's challenger JSON to a scratch
   file in the system temp dir and re-read it in Phase 4.

Never batch all chunks into one reading pass: one chunk in context at a time is
what keeps findings specific instead of vague.

If a chunk cannot be read or blows the budget, record it as skipped with the
reason and carry on. Partial coverage beats aborting — the report says what was
skipped.

## Phase 4 — Judge

Now adopt `BASE_DIR/agents/judge.md` with:

- `{{MODE}}`: `repo`
- `{{FINDINGS}}`: every chunk's challenger JSON from Phase 3
- `{{CONTEXT}}`: repo name, selected lenses, chunk count, skipped chunks

Rule on challenger output only — do not re-read code to invent new findings.
Drop `INVALID`, dedup across chunks and lenses, audit severity, then write BOTH
artifacts into `<TARGET_DIR>/.gbencke/adversarial-review/reports/`:

- `<yyyymmdd-hhmmss>-repo-<LENS_SLUG>.md` — the report
- `<yyyymmdd-hhmmss>-repo-<LENS_SLUG>.findings.json` — the sidecar (same basename)

The lens slug is required, not cosmetic: reviews of one repo run concurrently
(one process per repo × lens), so a lens-less basename collides whenever two
runs finish in the same second.

### Concurrency safety

Other reviews of this same repo are probably running right now in other
processes, under other lenses. Therefore:

- `mkdir -p` the reports dir; never clear, prune, or rotate it.

From gbencke/dotfiles, MIT.

More from gbencke/dotfiles

Signals

Stars
6
Forks
0
Open issues
0
Last commit (this folder)
Aug 4, 2026 (3 months ago)

From GitHub (fetched Oct 24, 2026).

Details

License
MIT
First seen
Oct 24, 2026
Last checked
Oct 24, 2026

Same skill elsewhere

Copies of this SKILL.md published by others; search shows only one of them.

More from gbencke

Done for you

Rather not set it up yourself?

Chalk Labs scopes, builds and runs agents for your team: the task audit, the eval harness, the integrations and the weekly ops report. Fixed scope, priced before we start.

See how we build AI agents →Read the case studies

Chalk Labs is a two-founder AI and growth studio. We build AI agents, CRMs and MVPs for Web3 and AI companies, and have shipped 50+ product and token launches.

launches shipped
50+
launches shipped
media placements
500+
media placements
founders on every account
2
founders on every account

Press we've placed: Forbes · CoinDesk · Decrypt · Cointelegraph · The Block

Rahil Jain, Co-founder, Chalk Labs. Ex-Goldman Sachs engineer. You talk to the person who builds it.

Get review-repo running in your business

Tell us what you want to automate. A founder replies within one working day with a plan, not a pitch deck.

Goes to the Chalk Labs founders, not the newsletter. Privacy

Need help deploying review-repo?

CallGet help
Cite this page

review-repo skill. Agent Mart. https://agentmart.dev/skills/gbencke-review-repo (last updated 2026-10-24)