Submission Guide
brycewang-stanford/Auto-Empirical-Research-Skills
This skill covers academic journal submission, referee responses, and revision management.
A skill your agent uses when a manuscript comes back with reviewer or editor comments.
$ npx skills add Aperivue/medsci-skills --skill revise -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install Aperivue/medsci-skills revise --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/Aperivue/medsci-skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/revise .claude/skills/revise && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "revise" agent skill from https://github.com/Aperivue/medsci-skills/tree/main/skills/revise into .claude/skills/revise/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "revise", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/Aperivue/medsci-skills/tree/main/skills/reviseType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add Aperivue/medsci-skills --skill revise -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install Aperivue/medsci-skills revise --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Aperivue/medsci-skills.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/revise .agents/skills/revise && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "revise" agent skill from https://github.com/Aperivue/medsci-skills/tree/main/skills/revise into .agents/skills/revise/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "revise", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add Aperivue/medsci-skills --skill revise -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install Aperivue/medsci-skills revise --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Aperivue/medsci-skills.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/revise .cursor/skills/revise && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "revise" agent skill from https://github.com/Aperivue/medsci-skills/tree/main/skills/revise into .cursor/skills/revise/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "revise", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/Aperivue/medsci-skills.git --path skills/revise--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add Aperivue/medsci-skills --skill revise -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install Aperivue/medsci-skills revise --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Aperivue/medsci-skills.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/revise .gemini/skills/revise && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "revise" agent skill from https://github.com/Aperivue/medsci-skills/tree/main/skills/revise into .gemini/skills/revise/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "revise", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install Aperivue/medsci-skills reviseInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add Aperivue/medsci-skills --skill revise -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/Aperivue/medsci-skills.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/revise .github/skills/revise && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "revise" agent skill from https://github.com/Aperivue/medsci-skills/tree/main/skills/revise into .github/skills/revise/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "revise", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add Aperivue/medsci-skills --skill revise -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install Aperivue/medsci-skills revise --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Aperivue/medsci-skills.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/revise .opencode/skills/revise && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "revise" agent skill from https://github.com/Aperivue/medsci-skills/tree/main/skills/revise into .opencode/skills/revise/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "revise", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
reviseA skill your agent uses when a manuscript comes back with reviewer or editor comments.
Revise is an agent skill from Aperivue/medsci-skills. Use when a manuscript comes back with reviewer or editor comments. Numbers every comment, classifies it MAJOR/MINOR/REBUTTAL, drafts a point-by-point response with tracked manuscript changes, routes new analyses to /analyze-stats and writes the cover letter.
Its SKILL.md is about 6.7k tokens, which your agent loads only when the skill is triggered. The skill folder holds 19 other files, including scripts and reference files (for example `references/r2r_voice.md`, `references/revision_values_schema.md` and `scripts/_quote_match.py`).
It sits in Business, Finance & HR, covering Resume and CV writing. The repository describes itself as: Agent Skills for medical research — literature search, reporting-guideline & citation checks, statistics, publication figures, submission. Works with Claude Code, Codex, Cursor &… The licence is MIT.
8 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 3b14ae2. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Ships 8 files in scripts/ (Python and Shell), which the agent can run.
Shell commands in SKILL.md call:
python3From the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Revise loads about 6.7k tokens when it runs, and up to ~12k if it reads all its reference files. Until then it costs about 66 tokens; SKILL.md has 3,051 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.
The full file from Aperivue/medsci-skills at commit 3b14ae2, republished under its MIT licence (© Aperivue). 3,051 words, ~6,655 tokens.
.claude/skills/revise/SKILL.md (or your agent's skills folder). This skill also uses 13 other files; get the full folder from GitHub.When the user provides reviewer comments (pasted text, PDF, or file path) or asks to revise a manuscript, confirm before proceeding:
manuscript/manuscript.md)Read the full decision letter. Extract every discrete comment from every reviewer and the editor.
E-1, E-2, ... <- Editor comments
R1-1, R1-2, ... <- Reviewer 1 comments
R2-1, R2-2, ... <- Reviewer 2 comments
R3-1, R3-2, ... <- Reviewer 3 (if present)If a reviewer groups multiple requests in one paragraph, split them into sub-items: R1-3a, R1-3b, R1-3c
| Type | Symbol | Definition |
|---|---|---|
| MAJOR | [MAJ] | Requires new experiment, re-analysis, new figure/table, or substantial structural rewrite |
| MINOR | [MIN] | Requires text revision, clarification, formatting change, or additional citation |
| REBUTTAL | [REB] | Reviewer is factually incorrect, misunderstood the study, or requests something scientifically unjustified |
Sort every comment into one of five categories; the category sets the response approach and informs (does not replace) the MAJ/MIN/REB classification.
| Category | Reviewer is... | Response | Typical class |
|---|---|---|---|
| 1. Simple Question (most common) | asking for description, clarification, or minor data | Add the requested text and point to its location; keep the reply short | MIN |
| 2. Misunderstanding | misreading the design, population, or analysis | Never say "you are wrong": apologise for the lack of clarity, re-explain, and revise the text so the next reader is not misled | MIN or REB |
| 3. Further Discussion | raising context (a different health system or clinical practice) | Acknowledge, explain your study context, add a brief Discussion note if appropriate; the full explanation can stay in the letter | MIN (text change) or REB (disagree) |
| 4. Additional Results | requesting a subgroup, sensitivity analysis, or additional metric | Run it (Step 2), add results to the Supplement (main text if important), and say what was done and found; never ignore these requests | MAJ |
| 5. Statistical Method Challenge | questioning or asking to change the statistical method | Justify the method with references; if the suggestion is valid, run both analyses and show the results agree | MAJ |
Say a statistician was consulted only if one was: a claim about who reviewed the work is a factual claim to the editor.
Answer careless or off-topic comments too, with the same professionalism. For an irrelevant comment, add a clarifying sentence to Methods or Discussion and say where; that shows effort without conceding a scientific point. For a factually incorrect comment, give referenced evidence framed as "We believe there may be a misunderstanding."
Unify terms before editing sentences. When several comments trace back to inconsistent terminology (rater / reader / operator; reference standard / reference set), first build a one-page term table — each term, its definition and where it may appear — apply it across the manuscript, then revise sentences; editing sentence by sentence leaves the same inconsistency elsewhere. Keep terms distinct when they name different things, and check that each statistical term is a standard one.
Output a classified comment list before generating responses:
E-1 [MIN] Request to shorten abstract
R1-1 [MAJ] Requires subgroup analysis by scanner type
R1-2 [MIN] Clarify exclusion criteria rationale
R1-3 [REB] Claims our sample size is underpowered (we disagree)
R2-1 [MAJ] Requires additional figure showing calibration curve
R2-2 [MIN] Add reference to [Author Year]Gate: Present the classified comment list to the user. Confirm classifications (especially REBUTTAL vs MAJOR) before generating responses. A misclassified REBUTTAL generates a response that argues with a valid reviewer point.
Before writing responses, flag the comments that need external work:
/self-review finding carrying requires_reanalysis: true (power/MDE re-simulation under the full model, first-visit / one-record-per-subject dedup, an extended- or reduced-adjustment over-adjustment sensitivity, optimism correction of calibration) is always routed here: a prose edit cannot answer it, so it must produce a committed script + CSV whose numbers are then fed back here.Output: "The following comments require statistical analysis before responses can be finalized: R1-1, R2-3. Run /analyze-stats with these tasks, then return to /revise."
If /analyze-stats or /make-figures is not installed, emit the same routing list as a checklist for the author to run manually (the named analysis or figure per comment) and hold those responses as BLOCKED — pending analysis/figure until the committed script + CSV (or figure file) returns. Reviewer-response numbers always trace to a produced artifact, never to a model estimate.
A script written to satisfy a reviewer (a comparative arm, a subgroup, a sensitivity check) often hand-enters values copied by eye from the original paper's tables, bypassing the locked extraction CSV; the numbers are then consistent everywhere and wrong at the source. In one R1 revision a hand-typed Fisher matrix read an adjacent severity-grade column as the event count, and the script, manuscript, and Table all carried the same direction-reversed result.
When Step 2 flags any /analyze-stats re-run:
Tag every new numerical claim with [VERIFY-CSV] as it is written into the revised
manuscript, response letter, or new table. The tag comes off only at Step 7 (Final
Verification), after an explicit CSV + primary-source back-check.
New analysis scripts must read from the locked extraction CSV. Hand-typed matrix(),
c(...), or data.frame(...) numerical inputs are PROHIBITED when a CSV row exists. If
hand entry is truly unavoidable (e.g., comparative-arm subset not present in the CSV), the
line MUST carry a comment citing the CSV coordinate AND the primary-source Table/Figure:
# source: data_extraction_final.csv row <N> (<first-author> <year>, <arm> only),
# verified against <primary source> Table <X>, page <P>
fisher.test(matrix(c(0, 45, 1, 55), nrow = 2, byrow = FALSE))Comparative / arm-specific values must enter extraction_consensus_log.md as separate
rows before the analysis script references them, so no new value skips the
dual-extraction consensus layer.
Revision-time numerical audit table — maintain it inside the response document draft and copy it into the final change log:
| New claim (response + manuscript location) | Source script:line | CSV row/col | Primary source (Table/Fig, page) | Match? |
|---|
Gate before Step 3 — do not generate response prose for a MAJOR comment whose new numbers have not yet cleared this check, because prose written around un-audited numbers is very hard to unwind after a mismatch is found.
Output location: revision/R[N]/response_to_reviewers_R[N].md
Read ${CLAUDE_SKILL_DIR}/references/r2r_voice.md before drafting: before/after examples, three response skeletons (accept / partial-accept / polite-rebuttal), and a meta-phrase-to-natural conversion table.
Response to Reviewers
Manuscript ID: [JOURNAL-XXXXX]
Manuscript Title: [Full title]
Authors: [Last name of first author] et al.
Revision Round: [R1 / R2 / R3]
Date: [YYYY-MM-DD]
We thank the Editor and reviewers for their careful reading of our manuscript
and their constructive comments. We have revised the manuscript accordingly
and provide a point-by-point response below. All changes are shown in the
revised manuscript with tracked changes (or highlighted in yellow).---
**Comment R[X]-[Y]** [MAJ/MIN/REB]
*Reviewer's comment:*
> [Exact text of the comment, quoted verbatim]
**Response:**
[Response text -- format by type below]
**Manuscript change:**
- Section: [Methods / Results / Discussion / etc.]
- Page [X], Line [Y] (in the revised manuscript)
- [Quote the new or changed sentence if short]MINOR: acknowledge, describe the change, and quote it: "The revised text now reads: '[new sentence].'"
MAJOR: acknowledgment -> new analysis -> key result -> location of changes. All new results MUST include the 95% CI and exact p-value. New text added to the Results section states findings only; interpretation belongs in the response letter or the Discussion.
[Acknowledge; state the concern.]
To address this, we [describe new analysis/experiment/rewrite].
[Key result: metric = value (95% CI, lower-upper; P = exact value)]
This finding [supports / strengthens / does not change] our original
conclusion because [brief interpretation].
We have added: [Table X / Figure X / Supplementary Table X] showing [content];
Methods revised: Page X, Lines Y-Z; Results revised: Page X, Lines Y-Z.REBUTTAL: polite but firm; open with acknowledgment, restate the reviewer's claim fairly, then give your position with evidence. Do not capitulate without scientific justification. Where it helps, add a clarifying sentence to the manuscript and quote it.
Cite only references verified via /search-lit with a confirmed DOI or PMID; mark any other as [UNVERIFIED - NEEDS MANUAL CHECK]. Never invent a clinical definition, diagnostic criterion, or guideline recommendation: flag an unconfirmed one with [VERIFY] and ask the user.
The acknowledgment lines in the skeletons are placeholders. Repeating one opener ("We thank the reviewer for this important suggestion.") down the letter is itself an AI-tell, so vary them.
A response letter is a reviewer-facing scientific argument, not an internal change log. The
AI-tell patterns are defined once in humanize references/ai_patterns.md (patterns 22-24);
references/r2r_voice.md carries the authoring guidance. The rules:
§ symbols, no internal draft line numbers. A revised-manuscript page/line, stated once
as referring to the revised manuscript, is fine.Before circulating or uploading, run /humanize on both the response letter and the cover
letter. The response-letter scan is patterns 22-24 plus 13 (em dash), 16 (filler), and 19 (§) in
humanize references/ai_patterns.md. Hold the letter to the manuscript's classical-style bar
(/write-paper references/section_guides/step7_1_classical_qc.md): zero § symbols, no
(Methods §X) self-references, em dashes kept low, and the heading style the target journal
actually publishes.
The single source of truth is the revised manuscript, not the response prose. A letter that says "we added the sentence '…'" or "we now cite Tariq et al. [15]" must be verifiable in the body. Run the gate before sending:
python3 ${CLAUDE_SKILL_DIR}/scripts/check_response_claims.py \
--response revision/response_to_reviewers.md \
--manuscript manuscript/manuscript.md --strictAdd --out qc/response_claims.json to write the verdicts to qc/response_claims.json.
RESPONSE_QUOTE_UNVERIFIED (a quoted added sentence absent from the body) and
RESPONSE_CITATION_UNVERIFIED (an added citation whose token is nowhere in the body) are real
discrepancies, since the gate ignores vague, paraphrased claims: either insert the promised edit or
correct the response wording. RESPONSE_QUOTE_UNRESOLVED is minor and does not fail --strict:
the quoted words are all present in order but separated by extraction debris (a reference column
bled in from a two-column PDF, proof line numbers, a footnote marker, a hyphen split across a line).
Look at it by eye; do not delete a quote because of this verdict — accurate quotes have nearly been
deleted that way. When a body bracket holds only numbers (',' or ';' separated, ranges with the
common dashes, '~', '--' or '---', spaces and pandoc's escaped \[5\] allowed), a numeric
citation counts only as a whole element or inside a range: a claimed [5] is not satisfied by [15]. A bracket that mixes
numbers and words ("[5, see also 8]", "[5, p. 12]") keeps the older prefix match, so "[15, p. 3]"
still satisfies [5] there; check such citations by eye.
The response letter is read as typed: a claim written in pandoc form ("[5]", "[5--7]") is not
recognised as a citation claim and is not checked.
To check the numbers themselves, declare the audit table (Step 4) as revision_values.json
(copy ${CLAUDE_SKILL_DIR}/templates/revision_values.json; schema in
references/revision_values_schema.md) and add --values revision_values.json: a declared value
missing from the paragraph or table row that holds its anchor is RESPONSE_VALUE_MISMATCH (major).
Known limits: without --values, quote CONTENT is not compared. A quote that differs from the
body's sentence by a number (the letter says 0.92, the body 0.87) or by a negator ("not", added or
dropped) is graded like extraction debris, minor RESPONSE_QUOTE_UNRESOLVED, and --strict
passes; comparing the letter's numbers with the body's was withdrawn because both sides vary in
format. --values checks declared numbers only, and a paragraph with superscripts or x10^n is
RESPONSE_VALUE_NOT_ASSESSED. Read every UNRESOLVED quote by eye for a flipped finding. A citation claim passes when ANY of its cited tokens is in the
body, so "we now cite [15] and [16]" passes with only [15] inserted; check multi-citation claims by
eye.
A claim is read as a citation claim only when its verb says so ("cite", "reference"): "We added
the citation [15]" or "We have added a reference to X [15]" is not checked. Read any added citation
by eye; reading past the verb was withdrawn ("reference standard" fired).
If a reviewer called the manuscript too long or too dense, prove the body got shorter. Answering a density comment point-by-point adds a sentence per point, so the revision that responds to "shorten this" comes back longer. This gate is arithmetic:
python3 ${CLAUDE_SKILL_DIR}/scripts/check_density_complaint.py \
--comments revision/decision_letter.md \
--previous manuscript/manuscript_R0.md \
--revised manuscript/manuscript.md --strictDENSITY_COMPLAINT_UNADDRESSED fires only when the decision letter contains a density/length
complaint AND the body word count (Introduction through Discussion, citation markers excluded) did
not fall; with no complaint it stays silent. When it fires, cut or move detail to the supplement; do
not defend the length by adding a paragraph that explains it.
Output location: revision/R[N]/cover_letter_R[N].md
[Date]
Dear Dr. [Editor Name / "Editor-in-Chief"],
Thank you for the opportunity to revise our manuscript, "[Full title]"
(Manuscript ID: XXXX), submitted to [Journal Name]. We have carefully
reviewed the comments from the Editor and reviewers and have revised
the manuscript accordingly.
In brief, the principal changes in this revision are: [1) ..., 2) ...,
3) ...]. A point-by-point response to each comment is provided in the
accompanying Response to Reviewers document. Revised sections are
highlighted in yellow in the manuscript.
We believe the revised manuscript addresses all concerns raised in the
review and is now suitable for publication in [Journal Name].
Sincerely,
[First Author Name], MD/PhD
[Institution]
[Email]
On behalf of all authorsThe template above is the R1 convention: a standalone editor cover letter (200-400 words).
On an R2+ round (second revision onward), do not write a separate cover letter. The greeting and the brief change summary go in the head of the response-to-reviewers letter; a standalone letter restating that summary reads as redundant boilerplate. If an earlier round produced a cover_letter_R1.md, move it to _superseded/, exclude it from the R2+ package, and reuse the response-letter head verbatim in any portal "cover letter" field. (Exception: a journal that requires a separate cover letter at every round — then keep the head summary and the cover letter from duplicating each other.)
Response-letter head (R2+) — placed at the top of response_to_reviewers_R[N].md, before the point-by-point:
Dear Dr. [Editor Name / "Editor-in-Chief"],
Thank you for the opportunity to revise our manuscript once more. In brief, this
revision [1-2 sentence summary of the principal changes — e.g., "adds the requested
subgroup analysis and tempers the three comparisons the reviewers flagged as
over-stated"].
[If applicable: one sentence on a companion paper, a re-analysis, or a verification
the editor requested.]
All quotations below are from the revised manuscript. A point-by-point response to each
comment follows.
Sincerely,
[First Author Name], on behalf of all authorsKeep the head to these parts; everything else is point-by-point.
Output location: revision/R[N]/change_log_R[N].md
| Comment | Type | Change Made | Section | Page | Lines |
|---|---|---|---|---|---|
| R1-1 | MAJ | Added subgroup analysis by scanner type | Results 4.3, Table 3 | 12 | 234-251 |
| R1-2 | MIN | Clarified exclusion criteria for motion artifact | Methods 2.2 | 6 | 112-115 |
After all responses are drafted, check:
§, no internal draft line numbers ("(line 43)"), no editing-mechanism narration, varied openers; (R2+) satisfied reviewers get ≤1-2 sentences, no cross-reviewer lobbying; multi-point paragraphs split; methodology disclosure folded into the relevant response/humanize (patterns 22-24 triage hits reviewed; confirmed instances = 0; § = 0 hard)The journal wants the revised paper with tracked changes against the version the reviewers saw (R0 — not the previous round). Produce it with Word's Compare, which /sync-submission drives from the command line, and verify it by round trip: accepting every revision must reproduce the revised manuscript exactly, and rejecting every revision must reproduce the original. A spot-check that "sentence X appears as an insertion" passes even when Compare has dropped a paragraph or attributed half the changes to another author.
python3 <medsci-skills>/skills/sync-submission/scripts/check_marked_manuscript.py \
--marked revision/R1/manuscript_marked.docx \
--original submission/R0/manuscript.docx \
--revised revision/R1/manuscript_clean.docx \
--author "Submitting Author" --strictSee /sync-submission Phase 10 for the build step and for why the check must be move-aware (w:moveFrom / w:moveTo are not w:ins / w:del).
| Round | Folder | Files |
|---|---|---|
| R1 | revision/R1/ | response_to_reviewers_R1.md, cover_letter_R1.md, change_log_R1.md |
| R2 | revision/R2/ | response_to_reviewers_R2.md, cover_letter_R2.md, change_log_R2.md |
Also write the current round's letter and change log to revision/response_to_reviewers.md and revision/change_log.md, the paths the claim gate and /sync-submission read.
Revised manuscript: manuscript/manuscript.md; keep the version the reviewers saw as manuscript/manuscript_R0.md (the density gate compares the two).
For R2+, acknowledge whether R1 concerns were fully resolved. If a reviewer raises a new concern at R2, note: "This comment was not raised in the first review round; we address it as follows."
| Gate | Severity | Trigger | Action on fail |
|---|---|---|---|
| Comment classification (MAJOR / MINOR / REBUTTAL) | ENFORCED | comment unclassified or classification disputed | ask user; do not silently default |
Step 2.5 [VERIFY-CSV] tagging on revision-introduced numbers | ENFORCED | new numerical claim added without [VERIFY-CSV] tag | tag automatically; HALT until CSV cross-check completes |
| Reference re-render after revisions touching citations | ENFORCED | any new [@bibkey] added in R1+ | route to /manage-refs for a re-render before R1 submission |
/verify-refs --strict post-revision | ENFORCED | submission_safe: false (any FABRICATED or MISMATCH row, or a non-empty duplicate_findings[]), or any UNVERIFIED row (--strict exits 1 on those too) | HALT R1 submission |
| New analysis coordination | ENFORCED | reviewer asks for new analysis | route to /analyze-stats (and /make-figures if figure changes); never hand-write new numbers |
| Body word count vs journal cap (revision-inflation trap) | ENFORCED after every revise pass | resolving majors pushes the body over the target journal's word limit | run python3 "${CLAUDE_SKILL_DIR}/../sync-submission/scripts/check_wordcount_cap.py" (--journal-profile or --limit; prefer the rendered DOCX count); WORDCOUNT_OVER_CAP blocks submission — relocate methods/sensitivity detail to the Supplement, do not silently exceed |
| Cover letter to editor | ENFORCED at R1 submission | R1 missing editor cover letter | block submission |
| R2+ cover-letter handling | ENFORCED at R2+ submission | standalone cover letter present on an R2+ round (not folded into the response-letter head) | move it to _superseded/; fold the summary into the head |
| Response-letter voice / AI-tell | ENFORCED before submission | editing-mechanism narration, internal draft line refs, §, tooling leak, or repeated openers in response/cover letter | run /humanize (patterns 22-24 as triage; § = 0 hard); resolve confirmed tells before submission |
© Aperivue, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 13 other files (scripts, references) in skills/revise of Aperivue/medsci-skills.
Open the folder on GitHubat commit 3b14ae2
Revise next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Revise this skillAperivue/medsci-skills | 331 | — | ~6.7k | Automated safety check: Pass | MIT | |
| Submission Guidebrycewang-stanford/Auto-Empirical-Research-Skills | 4.5k | — | ~3.6k | Automated safety check: Pass | Custom licence | |
| Medical Cv Resume Builderaipoch/medical-research-skills | 2k | — | ~1.8k | Automated safety check: Pass | MIT | |
| Scholar Journaljoshzyj/open-scholar-skill | 168 | — | ~15k | Automated safety check: Pass | Custom licence | |
| Mksc Submissionfranklee16/academic-research-skills | 223 | 1 repos | ~1k | Automated safety check: Pass | None | |
| Ectj Submissionfranklee16/academic-research-skills | 223 | 1 repos | ~417 | Automated safety check: Pass | None |
brycewang-stanford/Auto-Empirical-Research-Skills
This skill covers academic journal submission, referee responses, and revision management.
aipoch/medical-research-skills
Use medical cv resume builder for academic writing workflows that need structured execution, explicit assumptions, and clear output boundaries.
joshzyj/open-scholar-skill
Format, select, and prepare a manuscript for journal submission.
franklee16/academic-research-skills
A skill your agent uses when preparing to submit a Marketing Science manuscript through ScholarOne — blinding for double-anonymous review, choosing the track (regular / Frontiers / Database /…
franklee16/academic-research-skills
A skill your agent uses when running the final The Econometrics Journal pre-submission check for Editorial Express, RES/OUP template compliance, 20-page printed-paper norm, 150-word summary…
brycewang-stanford/Awesome-Journal-Skills
A skill your agent uses when running the final submission preflight for a Perspectives on Psychological Science (PoPS) manuscript via the ScholarOne/Manuscript Central portal —…
Aperivue/medsci-skills
A skill your agent uses when turning a folder of research PDFs into Obsidian notes, even if Obsidian is not named.
Aperivue/medsci-skills
A skill your agent uses when a clinical CSV/Excel dataset needs profiling and cleaning before analysis (missing values, outliers, duplicates, type mismatches).
Aperivue/medsci-skills
A skill your agent uses when checking a radiology or medical AI study design before drafting or submission.
Aperivue/medsci-skills
A skill your agent uses when each author needs an ICMJE Conflict of Interest disclosure form (coidisclosure.docx) for submission.
Aperivue/medsci-skills
A skill your agent uses when an institutional Word form (.doc/.docx IRB protocol, ethics application, grant template) must be filled without breaking its styles, tables, fonts or page layout.
Aperivue/medsci-skills
A skill your agent uses when looking for research topics a longitudinal cohort database can answer (NHIS, UK Biobank, an institutional EMR or registry).
Categories
A skill your agent uses when a manuscript comes back with reviewer or editor comments. Revise is an agent skill from Aperivue/medsci-skills. Use when a manuscript comes back with reviewer or editor comments.
Revise fits situations like: A manuscript comes back with reviewer; editor comments.
Run `npx skills add Aperivue/medsci-skills --skill revise -a claude-code`. Or copy the skill folder (skills/revise in Aperivue/medsci-skills) into .claude/skills/revise in your project. Claude Code loads it when a task matches its description.
Run `npx skills add Aperivue/medsci-skills --skill revise -a codex`. Or copy the skill folder (skills/revise in Aperivue/medsci-skills) into .agents/skills/revise in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add Aperivue/medsci-skills --skill revise -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/revise, .gemini/skills/revise, .github/skills/revise and .opencode/skills/revise in your project.
Going by SKILL.md and its folder, Revise needs Python and a shell for the scripts in its folder and the command-line tools its instructions call (python3). Our summary lists: Python 3; A Bash shell.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.
Revise is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 6.7k tokens (SKILL.md is roughly 27k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 5.3k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Revise: Submission Guide (brycewang-stanford/Auto-Empirical-Research-Skills, 4.5k stars), Medical Cv Resume Builder (aipoch/medical-research-skills, 2k stars), Scholar Journal (joshzyj/open-scholar-skill, 168 stars) and Mksc Submission (franklee16/academic-research-skills, 223 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
Aperivue (a GitHub organization) maintains it in Aperivue/medsci-skills, which has 331 GitHub stars. The repository holds 54 skills in this directory. The repository was last updated on October 5, 2026.
Source: Aperivue/medsci-skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.