Source profileQuality 91/100

wanshuiyin/Auto-claude-code-research-in-sleep/skills/skills-codex-claude-review/auto-review-loop/SKILL.md

auto-review-loop

Autonomous multi-round research review loop. Repeatedly reviews using Claude Code via claude-review MCP, implements fixes, and re-reviews until positive assessment or max rounds reached. Use when user says "auto review loop", "review until it passes", or wants autonomous iterative improvement.

Source repository stars
14,225
Declared platforms
1
Static risk flags
2
Last source update
2026-08-04
Source checked
2026-08-04

Decision brief

What it does—and where it fits

Claude overlay assurance: this route is a different model family from the Codex executor and records reviewindependence: cross-family plus acceptancestatus: accepted.

Best for

  • Use when user says "auto review loop", "review until it passes", or wants autonomous iterative improvement.

Not for

  • Tasks that require unconfirmed production actions or broad system permissions.
  • Environments where the pinned source and install steps cannot be inspected.

Compatibility matrix

Platform support, with evidence labels

PlatformStatusEvidenceWhat to check
CodexNot declaredNo explicit evidencePortability before use
Claude CodeDeclaredSource recordInstall path and trigger
CursorNot declaredNo explicit evidencePortability before use
Gemini CLINot declaredNo explicit evidencePortability before use
Open the compatibility checker

Installation

Inspect first. Install second.

The source command is displayed only when detected. A safe inspection prompt is always available so your agent can explain every action before execution.

Source-detected install commandSource
npx skills add https://github.com/wanshuiyin/Auto-claude-code-research-in-sleep --skill "skills/skills-codex-claude-review/auto-review-loop"
Safe inspection promptEditorial

Inspect the Agent Skill "auto-review-loop" from https://github.com/wanshuiyin/Auto-claude-code-research-in-sleep/blob/a5fcc6970f08d45f6a2100abef4d5d234a1cef25/skills/skills-codex-claude-review/auto-review-loop/SKILL.md at commit a5fcc6970f08d45f6a2100abef4d5d234a1cef25. List every install step, command, network request, credential, file read/write, external action, and rollback step. Explain whether it fits my task. Do not install or execute anything until I approve.

Workflow

What the source asks the agent to do

  1. 01

    Instructions

    In hard and nightmare modes, the reviewer must actively look for omissions, unsupported claims, cherry-picked evidence, metric mistakes, and weaknesses the executor may have downplayed.

    Codex writes a concise rebuttal with evidence, not spin.Send the rebuttal to the same reviewer via mcpclaude-reviewreviewreplystart.The reviewer rules which objections are resolved, unresolved, or newly discovered.
  2. 02

    Workflow

    1. Check for review-stage/REVIEWSTATE.json (fall back to ./REVIEWSTATE.json if not found — legacy path): - If neither path exists: fresh start (normal case, identical to behavior before this feature existed) - If it exists AND status is "completed": fresh start (previous loop fi…

    Check for review-stage/REVIEWSTATE.json (fall back to ./REVIEWSTATE.json if not found — legacy path):If neither path exists: fresh start (normal case, identical to behavior before this feature existed)If it exists AND status is "completed": fresh start (previous loop finished normally)
  3. 03

    Phase A: Review

    Route by REVIEWERDIFFICULTY:

    Route by REVIEWERDIFFICULTY:Medium (default) — Claude ReviewSend comprehensive context to the external reviewer:
  4. 04

    Phase B: Parse Assessment

    CRITICAL: Save the FULL raw response from the external reviewer verbatim (store in a variable for Phase E). Do NOT discard or summarize — the raw text is the primary record.

    Score (numeric 1-10)Verdict ("ready" / "almost" / "not ready")Action items (ranked list of fixes)
  5. 05

    Phase B.5: Reviewer Memory Update (hard + nightmare only)

    Skip entirely if REVIEWERDIFFICULTY = medium.

    Skip entirely if REVIEWERDIFFICULTY = medium.After parsing the assessment, update review-stage/REVIEWERMEMORY.md:

Permission review

Static risk signals and limitations

Writes files

medium · line 24

The documentation asks the agent to create, modify, or delete local files.

**OUTPUT_DIR = `review-stage/`** — All review-stage outputs go here. Create the directory if it doesn't exist.

Writes files

medium · line 71

The documentation asks the agent to create, modify, or delete local files.

*Write this file at the end of every Phase E** (after documenting the round). Overwrite each time — only the latest state matters.

Reads files

low · line 84

The documentation asks the agent to read local files, directories, or repositories.

Read the state file to recover `round`, `threadId`, `last_score`, `pending_experiments`

Evidence record

Why each signal appears

EvidenceSourceComputedTestedEditorial
SignalValueEvidence typeMeaning
Quality score91/100ComputedDocumentation, specificity, maintenance, and trust rules
Repository stars14,225SourceRepository attention, not individual Skill quality
Compatibility1 platformsSourceDeclared in the catalog source record
Usage guideautomated source guideEditorialGenerated or reviewed according to the visible evidence level

Pinned source

Provenance and original SKILL.md

Repository
wanshuiyin/Auto-claude-code-research-in-sleep
Skill path
skills/skills-codex-claude-review/auto-review-loop/SKILL.md
Commit
a5fcc6970f08d45f6a2100abef4d5d234a1cef25
License
MIT
Collected
2026-08-04
Default branch
main
View the original SKILL.md

Override for Codex users who want Claude Code, not a second Codex agent, to act as the reviewer. Install this package after skills/skills-codex/*.

This reviewer is a different model family from the Codex executor. Every overlay trace/audit records:

review_independence: cross-family
acceptance_status: accepted

Auto Review Loop: Autonomous Research Improvement

Claude overlay assurance: this route is a different model family from the Codex executor and records review_independence: cross-family plus acceptance_status: accepted.

Autonomously iterate: review → implement fixes → re-review, until the external reviewer gives a positive assessment or MAX_ROUNDS is reached.

Context: $ARGUMENTS

Constants

  • MAX_ROUNDS = 4
  • POSITIVE_THRESHOLD: score >= 6/10 AND verdict ∈ {"ready", "almost"} — both must hold, matching the operative STOP CONDITION below. Verdict vocabulary is {"ready", "almost", "not ready"}. (Earlier wording used "or" + a stale verdict set; the AND form is authoritative.)
  • REVIEW_DOC: review-stage/AUTO_REVIEW.md (cumulative log) (fall back to ./AUTO_REVIEW.md for legacy projects)
  • OUTPUT_DIR = review-stage/ — All review-stage outputs go here. Create the directory if it doesn't exist.
  • REVIEWER_MODEL = claude-review — Claude reviewer invoked through the local claude-review MCP bridge. Set CLAUDE_REVIEW_MODEL if you need a specific Claude model override.
  • REVIEWER_BACKEND = claude-review — reviews route through the claude-review MCP (Claude family; cross-family for a Codex executor).
  • HUMAN_CHECKPOINT = false — When true, pause after each round's review (Phase B) and present the score + weaknesses to the user. Wait for user input before proceeding to Phase C. The user can: approve the suggested fixes, provide custom modification instructions, skip specific fixes, or stop the loop early. When false (default), the loop runs fully autonomously.
  • COMPACT = false — When true, (1) read EXPERIMENT_LOG.md and findings.md instead of parsing full logs on session recovery, (2) append key findings to findings.md after each round.
  • REVIEWER_DIFFICULTY = medium — Controls adversarial depth: medium uses a normal high-rigor Claude review through mcp__claude-review__review_start / mcp__claude-review__review_reply_start; hard adds Reviewer Memory and Debate Protocol; nightmare adds direct repository-reading adversarial verification by an independent reviewer.
  • RENDER_HTML = true — When true (default), auto-render review-stage/AUTO_REVIEW.md to HTML on loop termination via /render-html. Uses --no-review because the loop already performed a traced cross-family accepted Claude review. Set false to skip.

💡 Override: /auto-review-loop "topic" — compact: true, human checkpoint: true, difficulty: hard

Claude-Aligned Reviewer Memory and Debate

For difficulty: hard and difficulty: nightmare, maintain review-stage/REVIEWER_MEMORY.md.

  • Before each reviewer call, prepend the full REVIEWER_MEMORY.md contents under ## Your Reviewer Memory (persistent across rounds).
  • Tell the reviewer to check whether prior suspicions were genuinely addressed or merely sidestepped.
  • Require a Memory update section in the reviewer response.
  • After Phase B, copy the Memory update into REVIEWER_MEMORY.md before writing REVIEW_STATE.json.
  • In nightmare, launch an additional fresh adversarial reviewer with direct repository/file-reading instructions. It should read NARRATIVE_REPORT.md or review-stage/AUTO_REVIEW.md for the author's claims, then verify those claims against code, logs, result files, and paper drafts instead of trusting executor summaries.

Instructions

In hard and nightmare modes, the reviewer must actively look for omissions, unsupported claims, cherry-picked evidence, metric mistakes, and weaknesses the executor may have downplayed.

For difficulty: hard and nightmare, use the Debate Protocol after a critical review:

  1. Codex writes a concise rebuttal with evidence, not spin.
  2. Send the rebuttal to the same reviewer via mcp__claude-review__review_reply_start.
  3. The reviewer rules which objections are resolved, unresolved, or newly discovered.
  4. Only mark a concern resolved when the reviewer accepts the rebuttal.

State Persistence (Compact Recovery)

Long-running loops may hit the context window limit, triggering automatic compaction. To survive this, persist state to review-stage/REVIEW_STATE.json after each round:

{
  "round": 2,
  "threadId": "019cd392-...",
  "status": "in_progress",
  "last_score": 5.0,
  "last_verdict": "not ready",
  "pending_experiments": ["screen_name_1"],
  "timestamp": "2026-03-13T21:00:00"
}

Write this file at the end of every Phase E (after documenting the round). Overwrite each time — only the latest state matters.

On completion (positive assessment or max rounds), set "status": "completed" so future invocations don't accidentally resume a finished loop.

Workflow

Initialization

  1. Check for review-stage/REVIEW_STATE.json (fall back to ./REVIEW_STATE.json if not found — legacy path):
    • If neither path exists: fresh start (normal case, identical to behavior before this feature existed)
    • If it exists AND status is "completed": fresh start (previous loop finished normally)
    • If it exists AND status is "in_progress" AND timestamp is older than 24 hours: fresh start (stale state from a killed/abandoned run — delete the file and start over)
    • If it exists AND status is "in_progress" AND timestamp is within 24 hours: resume
      • Read the state file to recover round, threadId, last_score, pending_experiments
      • Read review-stage/AUTO_REVIEW.md to restore full context of prior rounds (fall back to ./AUTO_REVIEW.md)
      • If pending_experiments is non-empty, check if they have completed (e.g., check screen sessions)
      • Resume from the next round (round = saved round + 1)
      • Log: "Recovered from context compaction. Resuming at Round N."
  2. Read project narrative documents, memory files, and any prior review documents. When COMPACT = true and compact files exist, prefer findings.md + EXPERIMENT_LOG.md over full raw logs.
  3. Read recent experiment results (check output directories, logs)
  4. Identify current weaknesses and open TODOs from prior reviews
  5. Initialize round counter = 1 (unless recovered from state file)
  6. Create/update review-stage/AUTO_REVIEW.md with header and timestamp

Loop (repeat up to MAX_ROUNDS)

Phase A: Review

Route by REVIEWER_DIFFICULTY:

Medium (default) — Claude Review

Send comprehensive context to the external reviewer:

mcp__claude-review__review_start:
  prompt: |
    [Round N/MAX_ROUNDS of autonomous review loop]

    Review the work directly from its artifacts — executor notes are not
    evidence, so read the files yourself rather than trusting my framing:
    - Claims / paper draft: <path>
    - Methods / code under review: <path(s)>
    - Raw results (verbatim files, not a summary): <path(s)>
    - Changed since last round: <changed-file paths> — read the diff, not my description

    Please act as a senior ML reviewer (NeurIPS/ICML level). Start from the
    assumption that the work is broken somewhere — your job is to find where.
    Be adversarial. Trust nothing the author tells you — verify everything
    yourself.

    1. Score this work 1-10 for a top venue
    2. List remaining critical weaknesses (ranked by severity)
    3. For each weakness, specify the MINIMUM fix (experiment, analysis, or reframing)
    4. State clearly: is this READY for submission? Yes/No/Almost

    Be brutally honest. If, after genuinely trying to break it, the work holds
    up and is ready, say so clearly.

After this start call, immediately save the returned jobId and poll mcp__claude-review__review_status with a bounded waitSeconds until done=true. Treat the completed status payload's response as the reviewer output, and save the completed threadId for any follow-up round.

If this is round 2+, use mcp__claude-review__review_reply_start with the saved completed threadId, then poll mcp__claude-review__review_status with the returned jobId until done=true to maintain continuity.

Hard — Claude Review + Reviewer Memory

Use the same mcp__claude-review__review_start / mcp__claude-review__review_reply_start route as medium, but prepend the full review-stage/REVIEWER_MEMORY.md contents under ## Your Reviewer Memory (persistent across rounds) and require a Memory update section in the reviewer response.

Nightmare — Independent Repository Review

Use everything in hard mode, then ask an additional fresh adversarial reviewer to verify claims against repository files, logs, result files, and paper drafts instead of trusting executor summaries. Preserve the fresh review as a separate raw response and trace.

Phase B: Parse Assessment

CRITICAL: Save the FULL raw response from the external reviewer verbatim (store in a variable for Phase E). Do NOT discard or summarize — the raw text is the primary record.

Then extract structured fields:

  • Score (numeric 1-10)
  • Verdict ("ready" / "almost" / "not ready")
  • Action items (ranked list of fixes)

STOP CONDITION: If score >= 6 AND verdict ∈ {"ready", "almost"} (exact match — "not ready" does NOT qualify) → stop loop, document final state.

Phase B.5: Reviewer Memory Update (hard + nightmare only)

Skip entirely if REVIEWER_DIFFICULTY = medium.

After parsing the assessment, update review-stage/REVIEWER_MEMORY.md:

Your Reviewer Memory (persistent across rounds)

Pass this file back to the reviewer in the next round so it can track its own suspicions.

# Reviewer Memory

## Round 1 — Score: X/10
- **Suspicion**: [what the reviewer flagged]
- **Unresolved**: [concerns not yet addressed]
- **Patterns**: [recurring issues the reviewer noticed]

## Round 2 — Score: X/10
- **Previous suspicions addressed?**: [yes/no for each, with reviewer judgment]
- **New suspicions**: [...]
- **Unresolved**: [carried forward + new]

Rules:

  • Append each round; never delete prior rounds.
  • If the reviewer response includes a Memory update section, copy it verbatim.
  • If the score REGRESSES round-to-round, don't just write a new memory line: diff the two rounds' raw .response.md files in .aris/traces/ first and find the exact criterion that flipped (see shared-references/review-tracing.md § Debugging With Traces). The memory file is a summary; the trace is evidence.
  • This file is passed back to the reviewer in the next round's Phase A.

Phase B.6: Debate Protocol (hard + nightmare only)

Skip entirely if REVIEWER_DIFFICULTY = medium.

After parsing the review, Codex writes a structured rebuttal for up to three high-impact weaknesses:

### Rebuttal to Weakness #1: [title]
- **Accept / Partially Accept / Reject**
- **Argument**: [why this criticism is valid, invalid, already addressed, or out of scope]
- **Evidence**: [specific code, result file, log, prior-round fix, or paper section]

Send the rebuttal to the same reviewer via mcp__claude-review__review_reply_start:

mcp__claude-review__review_reply_start:
  threadId: [saved reviewer id]
  prompt: |
    Please rule on the author's rebuttal below.
    For each contested weakness, decide: accepted / partially accepted / rejected.
    If rejected, state the minimum evidence or change required.

    [paste rebuttal + evidence]

After this start call, immediately save the returned jobId and poll mcp__claude-review__review_status with a bounded waitSeconds until done=true. Treat the completed status payload's response as the reviewer output, and save the completed threadId for any follow-up round.

Record a ### Debate Transcript (hard + nightmare only) section in review-stage/AUTO_REVIEW.md. Only mark a weakness resolved if the reviewer accepts the rebuttal.

Debate Transcript (hard + nightmare only)

In the round log, preserve the rebuttal, reviewer ruling, accepted objections, rejected objections, and any required follow-up evidence.

Human Checkpoint (if enabled)

Skip this step entirely if HUMAN_CHECKPOINT = false.

When HUMAN_CHECKPOINT = true, present the review results and wait for user input:

📋 Round N/MAX_ROUNDS review complete.

Score: X/10 — [verdict]
Top weaknesses:
1. [weakness 1]
2. [weakness 2]
3. [weakness 3]

Suggested fixes:
1. [fix 1]
2. [fix 2]
3. [fix 3]

Options:
- Reply "go" or "continue" → implement all suggested fixes
- Reply with custom instructions → implement your modifications instead
- Reply "skip 2" → skip fix #2, implement the rest
- Reply "stop" → end the loop, document current state

Wait for the user's response. Parse their input:

  • Approval ("go", "continue", "ok", "proceed"): proceed to Phase C with all suggested fixes
  • Custom instructions (any other text): treat as additional/replacement guidance for Phase C. Merge with reviewer suggestions where appropriate
  • Skip specific fixes ("skip 1,3"): remove those fixes from the action list
  • Stop ("stop", "enough", "done"): terminate the loop, jump to Termination

Feishu Notification (if configured)

After parsing the score, check if ~/.codex/feishu.json exists and mode is not "off":

  • Send a review_scored notification: "Round N: X/10 — [verdict]" with top 3 weaknesses
  • If interactive mode and verdict is "almost": send as checkpoint, wait for user reply on whether to continue or stop
  • If config absent or mode off: skip entirely (no-op)

Phase C: Implement Fixes (if not stopping)

For each action item (highest priority first):

  1. Code changes: Write/modify experiment scripts, model code, analysis scripts
  2. Run experiments: Deploy to GPU server via SSH + screen/tmux
  3. Analysis: Run evaluation, collect results, update figures/tables
  4. Documentation: Update project notes and review document

Prioritization rules:

  • Skip fixes requiring excessive compute (flag for manual follow-up)
  • Skip fixes requiring external data/models not available
  • Prefer reframing/analysis over new experiments when both address the concern
  • Always implement metric additions (cheap, high impact)

Phase D: Wait for Results

If experiments were launched:

  • Monitor remote sessions for completion
  • Collect results from output files and logs
  • Training quality check — if W&B is configured, invoke /training-check to verify training was healthy (no NaN, no divergence, no plateau). If W&B is not available, skip silently.

Phase E: Document Round

Append to review-stage/AUTO_REVIEW.md:

## Round N (timestamp)

### Assessment (Summary)
- Score: X/10
- Verdict: [ready/almost/not ready]
- Key criticisms: [bullet list]

### Reviewer Raw Response

<details>
<summary>Click to expand full reviewer response</summary>

[Paste the COMPLETE raw response from the external reviewer here — verbatim, unedited.
This is the authoritative record. Do NOT truncate or paraphrase.]

</details>

### Actions Taken
- [what was implemented/changed]

### Results
- [experiment outcomes, if any]

### Status
- [continuing to round N+1 / stopping]

Write review-stage/REVIEW_STATE.json with current round, completed threadId, score, verdict, and any pending experiments.

Append to findings.md (when COMPACT = true): one-line entry per key finding this round.

- [Round N] [positive/negative/unexpected]: [one-sentence finding] (metric: X.XX → Y.YY)

Increment round counter → back to Phase A.

Review Tracing

Review Tracing

After every mcp__claude-review__review_start, mcp__claude-review__review_reply_start, oracle-pro, or nightmare adversarial verification call, save a trace following ../shared-references/review-tracing.md. Include prompt summary, reviewer route, saved threadId, raw response path, score/verdict, accepted fixes, rejected rebuttals, and the Reviewer Memory update if present.

Termination

When loop ends (positive assessment or max rounds):

  1. Update review-stage/REVIEW_STATE.json with "status": "completed"
  2. Write final summary to review-stage/AUTO_REVIEW.md
  3. Update project notes with conclusions
  4. Write method/pipeline description to review-stage/AUTO_REVIEW.md under a ## Method Description section — a concise 1-2 paragraph summary of the final method, architecture, and data flow. This serves as direct input for /paper-illustration.
  5. Generate claims from results — invoke /result-to-claim to convert experiment results from review-stage/AUTO_REVIEW.md into structured paper claims. Output: CLAIMS_FROM_RESULTS.md. If /result-to-claim is not installed, skip this step (no CLAIMS_FROM_RESULTS.md is produced; /paper-plan extracts claims from the narrative as before) — but NEVER fabricate the file or its verdict. If it ran but its output starts with verdict: REVIEW_UNAVAILABLE, keep that file AS-IS (do not overwrite or paraphrase it) and record in AUTO_REVIEW.md that claims are UNADJUDICATED — downstream paper stages must not treat them as validated.
  6. If stopped at max rounds without positive assessment:
    • List remaining blockers
    • Estimate effort needed for each
    • Suggest whether to continue manually or pivot
  7. Feishu notification (if configured): Send pipeline_done with final score progression table
  8. Render HTML view (if RENDER_HTML = true, default): invoke /render-html on the cumulative review log:
    /render-html "review-stage/AUTO_REVIEW.md" --no-review --state review-stage/REVIEW_STATE.json
    
    Pass --state explicitly when REVIEW_STATE.json exists (the helper does not auto-discover the sidecar). HTML lands at review-stage/AUTO_REVIEW.html with embedded source SHA256. Non-blocking: if /render-html fails, log the error and continue — the HTML is a convenience, not a termination prerequisite.

Output Protocols

Follow these shared protocols for all output files:

Key Rules

  • Large file handling: If the Write tool fails due to file size, immediately retry using Bash (cat << 'EOF' > file) to write in chunks. Do NOT ask the user for permission — just do it silently.

  • Always ask the Claude reviewer for strict, high-rigor feedback.

  • Save the completed threadId from the first mcp__claude-review__review_status result, then use mcp__claude-review__review_reply_start plus mcp__claude-review__review_status for subsequent rounds

  • Be honest — include negative results and failed experiments

  • Do NOT hide weaknesses to game a positive score

  • Implement fixes BEFORE re-reviewing (don't just promise to fix)

  • If an experiment takes > 30 minutes, launch it and continue with other fixes while waiting

  • Document EVERYTHING — the review log should be self-contained

  • Update project notes after each round, not just at the end

Prompt Template for Round 2+

mcp__claude-review__review_reply_start:
  threadId: [saved from round 1]
  # inherits the agent's model/effort — do not re-send
  prompt: |
    [Round N update]

    Since your last review these files changed — read them yourself; do not
    take my word for what changed or whether it worked:
    - Changed files: <paths>
    - Raw diff: <path, or the `git diff` range>
    - Updated raw results: <result-file paths> (verbatim files, not a pasted table)

    Please re-score and re-assess. Are the remaining concerns addressed?
    Same format: Score, Verdict, Remaining Weaknesses, Minimum Fixes.

After this start call, immediately save the returned jobId and poll mcp__claude-review__review_status with a bounded waitSeconds until done=true. Treat the completed status payload's response as the reviewer output, and save the completed threadId for any follow-up round.

Alternatives

Compare before choosing

Computed 9214,225

wanshuiyin/Auto-claude-code-research-in-sleep

auto-review-loop

Autonomous multi-round research review loop. Repeatedly reviews via external reviewer backend (Codex or manual), implements fixes, and re-reviews until positive assessment or max rounds reached. Use when user says "auto review loop", "review until it passes", or wants autonomous iterative improvement.

Computed 9114,225

wanshuiyin/Auto-claude-code-research-in-sleep

auto-review-loop

Autonomous multi-round research review loop. Repeatedly reviews using a secondary Codex agent, implements fixes, and re-reviews until positive assessment or max rounds reached. Use when user says "auto review loop", "review until it passes", or wants autonomous iterative improvement.

Computed 8614,225

wanshuiyin/Auto-claude-code-research-in-sleep

auto-review-loop

Autonomous multi-round research review loop. Repeatedly reviews using Gemini via gemini-review MCP, implements fixes, and re-reviews until positive assessment or max rounds reached. Use when user says "auto review loop", "review until it passes", or wants autonomous iterative improvement.

Computed 1007

narrative-io/narrative-skills-marketplace

design-analysis

Translate a fuzzy analytical question into a rigorous investigation plan. Interrogates the ask, grounds the plan in the available data dictionary, applies analytical best practices, and produces a structured brief of query specifications for a downstream query-writing skill. Plans, does not write SQL. Use when: "why did X drop", "is there a relationship between A and B", "who are our highest-value customers", "what's driving the change in Y", "investigate this trend", "design an analysis for", "