Skip to content
Back to skills

Peer Review

ASecurity

Orchestrates rigorous peer review with three reviewers (methodology+completeness, statistics, impact+provenance). Manages revision cycles until unanimous acceptance.

  • 7 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added May 26, 2026
ai-agentspythongobashtesting

Security analysis

A100/100

Scanned May 27, 2026

npx -y skills add rhowardstone/Claude-Code-Scientist --skill peer-review --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Peer Review?

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

Security grade badge for Peer Review
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/rhowardstone-peer-review/badge)](https://www.skillsdirectory.com/skills/rhowardstone-peer-review)

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: peer-review
description: Orchestrates rigorous peer review with three reviewers (methodology+completeness, statistics, impact+provenance). Manages revision cycles until unanimous acceptance.
user-invocable: true
---

# Peer Review Workflow

Execute rigorous peer review of synthesized papers.

## The Three Reviewers

Spawn three reviewer subagents in parallel. Each has expanded focus.

### 1. Methodology Reviewer
Focus: Rigor + Completeness
- Arithmetic consistency (do numbers add up?)
- Mock data detection (np.random without disclosure = REJECT)
- Reproducibility (can someone replicate from description?)
- Honest failure reporting
- **All RQs addressed** (check against world_model.json)
- **All artifacts used** (no orphaned experiment results)
- **PRISMA numbers consistent**

### 2. Statistics Reviewer
Focus: Statistical correctness
- Number verification against source files
- Appropriate statistical tests for data type
- Effect sizes and confidence intervals (not just p-values)
- Multiple testing correction where needed
- **Figures reference real data files**

### 3. Impact Reviewer
Focus: Contribution + Provenance
- Scope vs claims honesty
- Failure disclosure (are negative results hidden?)
- Overclaiming detection
- Abstract matches actual results
- **Every claim has DOI + exact quote**
- **Source types match confidence** (blog ≤ 0.7, article ≤ 1.0)
- **Spot-check 3-5 quotes are verbatim**
- **Run DOI validation**: `python3 .claude/hooks/validate-doi.py`

## MANDATORY: Compile PDF Before Review

**Before spawning reviewers, compile the PDF:**

```bash
cd $SESSION_DIR/synthesis
pdflatex -interaction=nonstopmode paper.tex
bibtex paper
pdflatex -interaction=nonstopmode paper.tex
pdflatex -interaction=nonstopmode paper.tex

# Verify PDF exists and has content
ls -lh paper.pdf  # Should be > 50KB
```

**Why compile first?**
- LaTeX errors block reviewer assessment
- Some issues (figure placement, citation format, encoding) only visible in PDF
- Reviewers should see what the reader will see

**If compilation fails:** Fix LaTeX errors before spawning reviewers. Common fixes:
- Missing packages: `\usepackage{...}`
- Undefined citations: Check references.bib has all cited keys
- Encoding issues: Ensure UTF-8 and escape special chars

## Spawning Reviewers

```
# Spawn all 3 reviewers IN PARALLEL (single message, 3 Task tool calls)

# 1. Methodology reviewer (includes completeness checks)
Task: Spawn reviewer-methodology subagent
Prompt: "Review paper.tex AND paper.pdf for methodological rigor AND completeness.
Check: arithmetic, mock data, reproducibility.
Also verify: all RQs addressed, all artifacts used, PRISMA consistent.
Check PDF for: formatting issues, figure placement, readability.
Save methodology_review.json with verdict and issues."

# 2. Statistics reviewer
Task: Spawn reviewer-statistics subagent
Prompt: "Review paper.tex AND paper.pdf for statistical correctness.
Verify numbers match source files, appropriate tests, effect sizes.
Check figures reference real data files.
Check PDF for: figure rendering, table formatting, equation display.
Save statistics_review.json with verdict and issues."

# 3. Impact reviewer (includes provenance checks)
Task: Spawn reviewer-impact subagent
Prompt: "Review paper.tex AND paper.pdf for contribution AND provenance.
Check: scope vs claims, failures disclosed, no overclaiming.
Also verify: every claim has DOI+quote, spot-check 3 quotes verbatim.
Check PDF for: citation formatting, reference list completeness.
Run: python3 .claude/hooks/validate-doi.py
Save impact_review.json with verdict and issues."
```

## External Validation (Recommended)

Include at least one Codex reviewer:

```bash
codex exec --full-auto -m gpt-5.2-codex -o codex_review.txt \
  "Review this paper for scientific validity. Check:
   1. Do claims match evidence?
   2. Are limitations honest?
   3. Any overclaiming?

   Paper: $(cat paper.tex)

   Output JSON with verdict (ACCEPT/REVISE/REJECT) and issues."
```

## Acceptance Criteria

**NOT majority vote. Unanimous acceptance required.**

- All THREE reviewers must give ACCEPT
- If ANY reviewer gives REVISE/REJECT → revision cycle
- Codex reviewer has veto power if included

## Revision Cycle

If not unanimous acceptance:

1. **Collect all issues** from reviewer JSONs
2. **Resume synthesizer** using saved agent ID (preserves context)
3. Synthesizer must address EVERY issue:
   - **FIX**: Make the change
   - **REBUT**: Explain why reviewer is wrong (with evidence)
   - **ACKNOWLEDGE**: If can't fix, explain in Limitations
4. Synthesizer creates `revision_response.md`
5. **RE-COMPILE PDF after revisions:**
   ```bash
   cd $SESSION_DIR/synthesis
   pdflatex -interaction=nonstopmode paper.tex
   bibtex paper
   pdflatex -interaction=nonstopmode paper.tex
   pdflatex -interaction=nonstopmode paper.tex
   ```
6. **Resume same reviewers** using saved agent IDs to verify fixes (they review updated PDF too)

## Agent ID Tracking (MANDATORY)

**⚠️ This is NOT optional. Without agent IDs, revision cycles spawn fresh agents that don't remember their prior analysis.**

### Step 1: CREATE the tracking file FIRST (before spawning)

```bash
mkdir -p $SESSION_DIR/peer_review
cat > $SESSION_DIR/peer_review/agent_ids.json << 'EOF'
{
  "synthesizer": null,
  "methodology": null,
  "statistics": null,
  "impact": null,
  "cycle": 1
}
EOF
```

### Step 2: SAVE agent IDs IMMEDIATELY after spawning

**The Task tool returns an `agent_id` when an agent completes.** You MUST save it:

```bash
# After each Task tool completes, read the agent_id from the result
# Then immediately update the tracking file:

# Example - after methodology reviewer completes with ID "a7df9f1":
jq '.methodology = "a7df9f1"' $SESSION_DIR/peer_review/agent_ids.json > tmp.json && \
  mv tmp.json $SESSION_DIR/peer_review/agent_ids.json

# Also update world_model.json for cross-session visibility:
jq '.agents["reviewer-methodology"] = {"id": "a7df9f1", "status": "completed"}' \
  $SESSION_DIR/world_model.json > tmp.json && mv tmp.json $SESSION_DIR/world_model.json
```

### Step 3: USE saved IDs when resuming for revision

**In revision cycles, you MUST use the `resume` parameter:**

```
Task tool with:
  resume: "<saved-agent-id>"   # ← Use the saved ID, NOT a fresh spawn
  prompt: "Continue from where you left off. Review revision_response.md
    and verify the following fixes were made: [list issues from review]
    Re-review paper.tex and paper.pdf. Update your review JSON."
```

### Why This Matters

| Without Resume | With Resume |
|----------------|-------------|
| Fresh agent re-reads entire paper | Agent remembers prior analysis |
| May raise already-fixed issues | Knows what was already fixed |
| Circular feedback ("you already fixed this") | Productive revision cycle |
| Wasted tokens re-processing | Efficient targeted review |

### Common Failure Mode

**If you see reviewers raising the same issues in cycle 2 that were fixed in cycle 1:**
→ You forgot to use `resume` with the saved agent ID
→ The reviewer is a fresh spawn with no memory

**Check yourself:** Before every revision cycle reviewer spawn, verify:
1. `agent_ids.json` exists and has non-null IDs
2. Your Task tool call includes `resume: "<id>"`

## Convergence Detection

If 3 revision cycles with >70% similarity in issues:
- **Escalate to user** - something is stuck
- Don't keep looping indefinitely

## Review File Locations

```
$SESSION_DIR/peer_review/
├── methodology_review.json     # Rigor + completeness
├── statistics_review.json      # Numbers + figures
├── impact_review.json          # Contribution + provenance
├── agent_ids.json              # For resume tracking
├── codex_review.txt (optional)
├── reviewer_feedback_for_revision.json  # Combined for synthesizer
└── revision_response.md  # Synthesizer's responses
```

## Issue Format

Each reviewer issue must have:
```json
{
  "id": "METH-1",
  "severity": "major|minor|critical",
  "location": "Section 2.1, line 45",
  "issue": "Clear description",
  "required_action": "What to do",
  "verification": "How to verify fix"
}
```

## Workflow Loop

```
1. Spawn 3 reviewers (parallel, single message)
2. Wait for all reviews (poll for completion)
3. Check verdicts:
   - All 3 ACCEPT? → Done, paper passes
   - Any REVISE/REJECT? → Revision cycle
4. Revision cycle:
   a. Combine feedback for synthesizer
   b. Resume synthesizer for revisions (use saved agent ID)
   c. Resume reviewers to verify (use saved agent IDs)
   d. Go to step 3
5. Max 3 cycles, then escalate
```

**Rigorous review. Actionable feedback. Unanimous acceptance.**

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.