aops-core/skills/peer-review/SKILL.md
Peer review of research funding applications and academic submissions. Scheme-agnostic — fetches current criteria from the relevant handbook each round, since weights and language change. Covers Detailed Assessor and College-of-Experts / General Assessor roles, plus collegial draft review.
npx skillsauth add nicsuzor/academicops peer-reviewInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Prepare peer reviews of research funding applications or academic submissions, matching the current round's scheme criteria and producing evidence-based, signable feedback. The agent prepares and verifies; the academic owns the scores, the net call, and the final submitted text.
A review is not a linear pipeline that ends in a self-check. It is an adaptive loop of five stages whose quality comes from two moves a naive draft-then-submit flow lacks: adversarial independent verification of every claim, and a voice-match + whole-set de-template pass that makes the prose signable and un-formulaic. Its failures happen at the seams between stages — a polish pass that quietly promotes a paraphrase into a fabricated quote; a voice rewrite that drops a verified correction. So the loop gates its regeneration boundaries: "verified" attaches to a committed artifact, not an idea, and any regeneration re-enters verification.
-v2 / -v3 files, no carried-forward appendix. Cut critique lives in the history, not
in a growing reserve block (see [[review-template]])."{quoted phrase}")
are fine; invented specifics are not.The loop is written so one agent can run it alone, in series, wearing each stage as a hat (read the stage's reference file → do the stage → move on). That is the portable default; it needs no fleet infrastructure.
When you have many reviews in a round and the infrastructure to fan out, two stages parallelise — in opposite directions:
Dispatch constraint. Fan-out is a privilege of a top-level / lead session. If this
skill is itself running inside a leaf sub-agent, it cannot fan out a verifier panel —
fall back to the serial hat-switch, or escalate to the caller that a panel needs a
top-level session (see specs/review-dispatch-topology.md).
The number of passes is not fixed (informal iteration): a clean application may need one VERIFY cycle; a contested one several. Exit a stage when its checks pass, not after a prescribed count.
${ACA_DATA:-~/brain}/reviews/{scheme}/{appid}/. Convert:
pdftotext -layout source.pdf source.txt. Honest tooling note: -layout gives
layout-preserved text, not line numbers, and it mangles tables / GANTT / budget —
read those from the PDF pages directly. Build a section→line map in the reading notes.Read the application against the analytical probes ([[review-probes]]) and produce two deliberately separated things ([[reading-notes-format]]):
Then draft evidence-cited per-criterion comments applying the probes, following the scheme's bands ([[review-guidance]]). Scores left blank.
PREP self-review before finishing (guard F3 — PREP is the weakest self-checking link):
[?].Run as a separate contextless pass (fan-out) or an explicit, forceful hat-switch: "You are now an adversarial verifier. The draft's authors are not to be trusted. Distrust any prior PASS. Demand proof." Full method in [[review-verification]]. The core:
python3 -c …,
not mental math). Quote no total you haven't re-derived.Convert the verified draft into clean, signable prose in the academic's voice ([[voice-and-detemplating]]):
{academic}-style.md) isn't trained
yet, run the reflection-on-diff loop (agent drafts → human edits → agent diffs and
codifies the delta) over the first few reviews. A static style guide alone is insufficient.When external or cross-model review comments arrive, integrate them with a distrust default ([[external-feedback]]): per-claim adjudication, a two-axis filter (is it already covered, sharper? does its framing reverse a position we reached?), and a one-line justification per ADD / MODIFY / REJECT. Cross-model's proven value is distillation (of the academic's analytical signature) and corroboration of emphasis — not new content. A final cross-model truth-check is reasonable but optional, not the primary safety net.
| Guard | Rule | | ----- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | F1 | Any regeneration re-enters verification; "verified" stamps a committed artifact. — [[review-verification]] | | F2 | VERIFY is always a full independent cold re-read + re-derivation — never a citation-checker. Includes the verbatim-quote-existence sweep and tool-backed arithmetic. — [[review-verification]] | | F3 | PREP self-reviews before writing (integrity material, un-recomputed numbers, paraphrase-as-paraphrase). | | F4 | Any integration/fix step re-reads the edited artifact and re-derives every number/quote it lands; uses the narrowest possible edit target. — [[review-verification]] | | F5 | Silo per-application for fact-checking; one whole-set pass for anything cross-document (fingerprints, conflicts, consistency). | | F6 | Severity ladder with explicit BLOCKER / FIX / NIT definitions ([[review-verification]]). | | F7 | Verification techniques live in a pre-"ready" gate, not only at the end. — [[review-verification]] | | F8 | On-disk drafts are mutable and get rewritten post-hoc — never treat a live draft as proof of a stage's output; the committed/verified artifact is the record. — [[review-verification]] |
For reviewing draft papers / proposals written by colleagues before submission:
${ACA_DATA:-~/brain}/reviews/{author}/.{scheme}-Assessor-Handbook or {scheme} Grant Guidelines;
if no PKB, fetch the handbook from the scheme's site each round.tools
Streamlit implementation of the analyst presentation layer. Use when building or updating a Streamlit dashboard that displays pre-computed research data. This is the Streamlit-specific HOW for the tech-agnostic principles in the aops-tools analyst skill — display only, never transform.
tools
Python plotting and statistical-modelling libraries (matplotlib, seaborn, statsmodels) for the analyst presentation and statistical-methodology layers. Use when producing publication-quality figures or fitting statistical models in Python. Library-specific HOW for the tech-agnostic principles in the aops-tools analyst skill.
tools
dbt (data build tool) implementation of the analyst transformation layer. Use when a project has a dbt/ directory or you need to build, test, or document SQL transformations as version-controlled, reproducible dbt models. This is the dbt-specific HOW for the tech-agnostic principles in the aops-tools analyst skill.
development
Core academicOps skill — institutional memory, strategic coordination, workflow routing, and framework governance. Merges butler (chief-of-staff) with framework development conventions.