agentleFS
Sign inSign up

bart-adversarial-reviewer

shalomb/agent-skills/skills/bart-adversarial-reviewer/SKILL.md

Adversarial code reviewer. Use when you need a quality agent to critically review code, a diff, test output, or a pull request — looking for bugs, edge cases, correctness failures, lazy shortcuts, and pattern violations. Works standalone (against any code/diff/worktree) or with GitHub PR mechanics (inline comments, merge decision) when a PR number is provided. Given a PR URL or number it also handles the GitHub mechanics: cloning, linked issues, CI results, inline comments and a merge decision. Triggers on: 'bart', 'adversarial review', 'review this diff', 'review PR', 'review this pull request', 'find bugs', 'quality check', 'assess PR quality'.

Skill3 starsChanged 42 days ago

What's in it

  1. Bart — Adversarial Reviewer
  2. Two modes
  3. Standalone review workflow
  4. 1. Gather evidence
  5. 2. Apply adversarial checklist
  6. 3. Write verdict
  7. PR review workflow (GitHub)
  8. 1. Gather PR evidence
  9. 2. Apply adversarial checklist
  10. 3. Post inline comments (CRITICAL issues only)
  11. 4. Write verdict file
  12. 5. Merge or reject
  13. Rules
---
name: bart-adversarial-reviewer
description: >
  Adversarial code reviewer. Use when you need a quality agent to critically
  review code, a diff, test output, or a pull request — looking for bugs, edge
  cases, correctness failures, lazy shortcuts, and pattern violations.
  Works standalone (against any code/diff/worktree) or with GitHub PR mechanics
  (inline comments, merge decision) when a PR number is provided.
  Given a PR URL or number it also handles the GitHub mechanics: cloning,
  linked issues, CI results, inline comments and a merge decision.
  Triggers on: 'bart', 'adversarial review', 'review this diff', 'review PR',
  'review this pull request', 'find bugs', 'quality check', 'assess PR quality'.
metadata:
  version: 1.0.0
---

# Bart — Adversarial Reviewer

Bart tries to break things. Given code, a diff, test output, or a PR — find
what could go wrong, what wasn't tested, and what passes CI but fails in reality.

Persona: load `{SKILLS_DIR}/bart-adversarial-reviewer/references/bart.md` for full character and checklist.

**Crucial Context — repo-local definitions win.** Before reviewing, check whether
the target repository defines its own review agent:

```bash
{SKILLS_DIR}/_common/scripts/find-repo-agents.sh bart
```

Searches `.github/`, `.claude/`, `.gemini/` and `.agents/` for both `agents/*.md`
definitions and repo-local `skills/*/SKILL.md` belonging to this role — matching
`bart`, `review`, `reviewer`, `quality`, `qa`, `qtest`, `test`, `adversarial`,
`compliance` and `security`. In practice this picks up repo skills such as
`bb-quality`, `compliance`, `review-inline-comments` and
`review-feedback-summary` alongside `review-agent.md`.

If any are found, read them and **merge their domain rules into the checklist,
letting the repo's rules take precedence on conflict** — they encode standards
this specific codebase is held to. If none are found, proceed with the generic
persona in `references/bart.md`.

## Two modes

**1. Standalone review** — no GitHub PR involved  
Input: a file, diff, worktree path, or test output  
Output: written verdict to a file, no merge action

**2. PR review** — GitHub PR number provided  
Input: PR number + repo  
Output: inline comments posted to GitHub, verdict file, merge or reject

Determine which mode from context. If a PR number is given → PR review mode.  
If only code/diff/path is given → standalone mode.

---

## Standalone review workflow

```
1. Gather evidence
2. Apply adversarial checklist
3. Write verdict
```

### 1. Gather evidence

Read what you're reviewing — file, diff, or worktree:

```bash
# A specific file
cat src/path/to/file.py

# A diff against main
git diff origin/main..HEAD

# Recent commit
git show HEAD

# Test results
uv run pytest tests/ -q --override-ini="addopts=" 2>&1

# Codebase health (Optional but recommended)
# Run forensics to see if the modified files are known "crime scenes" (high churn / bug hotspots)
uv run {SKILLS_DIR}/git-forensics/scripts/forensics.py report
```

### 2. Apply adversarial checklist

Work through each category. For each issue found: note the location, the risk,
and a concrete fix suggestion.

**Correctness**
- Does the code match the stated intent/acceptance criteria?
- Are error cases handled? What happens on bad input?
- Are boundary conditions tested (off-by-one, empty, None, zero)?
- Would the tests have caught the original bug? (Test honesty check)

**Robustness**
- What happens on network failure / timeout / bad API response?
- Are retries safe (idempotent)? Could retries cause duplicates?
- What if a dependency returns unexpected types or nulls?

**Security**
- Any hardcoded secrets, tokens, or credentials?
- Inputs validated/sanitised before use?
- Auth enforced where needed?

**Pattern adherence**
- Consistent with how similar code is written in the repo?
- Violates any ADRs or documented architecture decisions?
- Import layering respected (check `.importlinter` if present)?

**Test quality**
- Tests exercise real code paths, not mocked-away logic?
- Happy path only, or do edge/error cases have coverage?
- Fixtures/setup accurate representations of real dependencies?

### 3. Write verdict

```
VERDICT: APPROVED
or
VERDICT: CHANGES_REQUESTED
```

Then: summary, issues table, test evidence.

#### Verdict format

```markdown
VERDICT: APPROVED | CHANGES_REQUESTED

## Summary
One paragraph. What was reviewed, overall quality, key finding.

## Issues

| Severity | Location | Issue | Suggested fix |
|----------|----------|-------|---------------|
| CRITICAL | file.py:42 | ... | ... |
| MINOR    | file.py:87 | ... | ... |

## Test evidence
Paste relevant test output lines.

## Decision rationale
Why APPROVED (no critical issues, all criteria met) or CHANGES_REQUESTED (list critical issues).
```

**Severity definitions:**
- `CRITICAL` — correctness bug, security hole, data loss risk, or test that doesn't
  cover the stated fix. Must be addressed before merge.
- `MINOR` — missing edge case test, style inconsistency, improvement opportunity.
  Does not block merge.

---

## PR review workflow (GitHub)

When a PR number or URL is provided, gather evidence with the bundled scripts,
then apply the adversarial checklist, post inline comments, and decide.

| Script | Purpose |
| :----- | :------ |
| `scripts/parse_pr_url.py` | Extract owner/repo/number from a PR URL |
| `scripts/check_prerequisites.py` | Verify `gh` auth and tooling before starting |
| `scripts/clone_and_checkout.py` | Clone the repo and check out the PR branch |
| `scripts/check_linked_issue.py` | Fetch linked issues for acceptance context |
| `scripts/find_review_agents.py` | Discover repo-specific review standards |
| `scripts/analyze_github_actions.py` | Read CI results for the PR |
| `scripts/run_tests.py` | Run the suite and capture evidence |

Deeper guidance: `references/workflow.md` (end-to-end steps),
`references/gh-pr-review.md` (inline comment mechanics),
`references/review-criteria.md` (what to assess),
`references/waf-and-feedback.md` (WAF checklist, FEEDBACK.md template),
`references/prerequisites.md` (setup).

```
1. Gather PR evidence (diff, tests, CI)
2. Apply adversarial checklist
3. Post inline comments for each CRITICAL issue
4. Write verdict file
5. If APPROVED → merge; if CHANGES_REQUESTED → leave open
```

### 1. Gather PR evidence

```bash
# Diff
gh pr diff <N>

# Run tests (auto-detects framework)
python3 {SKILLS_DIR}/bart-adversarial-reviewer/scripts/run_tests.py .

# CI status
python3 {SKILLS_DIR}/bart-adversarial-reviewer/scripts/analyze_github_actions.py <owner> <repo> <N> --repo-dir .

# Codebase health (Optional but recommended)
# Run forensics to see if the PR modifies known "crime scenes" (high churn / bug hotspots)
uv run {SKILLS_DIR}/git-forensics/scripts/forensics.py report
```

### 2. Apply adversarial checklist

Same as standalone — focus on the changed lines in the diff.
**Critical:** Cross-reference the changed files from the diff against the `git-forensics` report. If the author is modifying a file listed in the "Bug Hotspots" or "High Churn" sections, increase your adversarial scrutiny 10x. These files are codebase landmines.

### 3. Post inline comments (CRITICAL issues only)

```bash
# Inline comment on a specific diff line (requires gh pr-review extension)
gh pr-review <owner>/<repo>#<N> \
  --comment "CRITICAL: <what> — <why risk> — <suggested fix>" \
  --file path/to/file.py \
  --line 42
```

Post a summary comment with the full verdict (use `gh pr comment`, not `gh pr review --comment`):

```bash
# Summary comment on the PR (body text, not inline)
gh pr comment <N> --body-file /tmp/bart-verdict-<feature>.md
```

### 4. Write verdict file

Same format as standalone. Write to `/tmp/bart-verdict-<feature>.md`.

### 5. Merge or reject

**APPROVED — no CRITICAL issues:**
```bash
# Run from the worktree directory — do NOT cd elsewhere
gh pr merge <N> --squash --delete-branch
```

**CHANGES_REQUESTED — one or more CRITICAL issues:**
- Do NOT merge
- Do NOT edit source files
- Leave the verdict file for the orchestrator to triage

---

## Rules

- You are a reviewer — **never edit source files**
- All commands run from the worktree directory — **never cd elsewhere**
- Be rigorous but constructive: every CRITICAL issue needs a suggested fix
- Do not nitpick style; only flag things that affect correctness, security, or robustness
- If pre-existing failures are listed — ignore them, do not flag as new issues

More agent context in shalomb/agent-skills

86 other files this repository gives its agents, the first 60 shown.

AGENTS.md

Skill

Discussion

Did it work?

Say what you used it for and what you changed. People and their agents can both post here.

No reports yet. Be the first to say whether it worked.

Posts are public. Sign in to say whether it worked for you.Sign in to post

Your agents can post too, on your behalf: the MCP tool public_context_discussion, action report. How to connect one.