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.
If a reviewer groups multiple requests in one paragraph, split them into sub-items: R1-3a, R1-3b, R1-3c
Classification
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
5-Category Triage Strategy
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.
Step 2: Triage -- Flag External Actions Needed
Before writing responses, flag the comments that need external work:
/analyze-stats: any MAJOR comment that needs new statistical analysis, a re-run of an existing analysis, an additional metric (calibration, NRI, ICC), or a sample size recalculation. A /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.
/make-figures: any MAJOR comment that needs a new or revised figure (calibration plot, subgroup forest plot, Bland-Altman, new panel).
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:
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.
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.
Document Header
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).
Per-Comment Response Block
---
**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]
Step 4: Response Formats by Comment Type
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.
Response-Letter Voice & AI-Tell Avoidance
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:
Write the change and the science, not the editing mechanism. State what changed and why,
and quote the new sentence. No version prefixes ("v2 adds..."), no "softened N phrases", no
grep/verification language, no internal FIX codes, no bare "No further manuscript change"
stubs. Describing a new analysis you ran ("we performed a sensitivity analysis and found X")
is the science, not a tell.
No § symbols, no internal draft line numbers. A revised-manuscript page/line, stated once
as referring to the revised manuscript, is fine.
Succinct and non-defensive, especially on R2+. A satisfied reviewer gets one sentence. No
cross-reviewer lobbying ("Reviewers 2 and 3 also accepted this") and no defensive meta-comments
("we confirm this statement is unchanged and not softened"). Fold methodology disclosure
(multiplicity, a SAP deviation) into the response to the comment it answers, never a separate
front section, and never drop it. Split a multi-point reviewer paragraph into separate comments,
each with its reviewer sentence quoted.
Mandatory pre-submission scan
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-paperreferences/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:
Add --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:
DENSITY_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.
[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 authors
R1 vs R2+ cover-letter protocol
The 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 authors
Keep the head to these parts; everything else is point-by-point.
Step 6: Change Log
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
Step 7: Final Verification
After all responses are drafted, check:
Every reviewer comment has a response (none skipped, even trivial ones or ones addressed elsewhere)
Every MAJOR comment has the actual new data or analysis and a manuscript change with location, not just agreement
Every change the letter promises was actually made in the manuscript
Every REBUTTAL is backed by cited evidence or clear scientific reasoning
All new statistics include 95% CI and exact p-values
Page/line number references match the revised manuscript (not the original)
Figures and tables renumbered if new items were inserted; all new figures/tables are referenced in the response letter
Voice rules hold: no §, 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
Response letter AND cover letter ran through /humanize (patterns 22-24 triage hits reviewed; confirmed instances = 0; § = 0 hard)
(R2+) No separate cover letter — the editor greeting and "in brief" summary are folded into the response-letter head
Cover letter is addressed to the correct editor
Response letter length within the Word Count Guidance below
If the letter was compressed or converted after drafting (a page limit, a co-author's LaTeX version), each response still carries the evidence it relied on and answers what was asked — diff the evidence item by item, not the word count (e.g. a statistical result line, citation markers, units and abbreviations, a rater's stated credentials); evidence the paper itself needs goes into the manuscript or Supplement with an exact pointer in the response, evidence that only answers the reviewer stays in the letter in condensed form, and redundant explanation can simply go
The marked manuscript passed the round-trip gate (below) — not merely "tracked changes are on"
The marked manuscript is gated, not eyeballed
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.
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."
Word Count Guidance
Response letter total: no target. It is the per-comment responses below plus the quoted reviewer comments, so a short decision letter gets a short reply
Cover letter: 200-400 words (R1 only; on R2+ there is no separate cover letter — see Step 5)
MINOR response: 50-150 words
MAJOR response: 150-400 words
REBUTTAL response: 200-500 words
Headroom is not a target. When the manuscript sits under a journal cap, do not propose filling
the remaining words, and do not write a word count or cap into the manuscript body unless the
journal or a reviewer asks for it there.
R2+ rounds run leaner. Most R1 concerns are already resolved, so the letter is shorter and a satisfied reviewer's response is 1-2 sentences. Do not pad an R2+ reply to reach the R1 range.
Gates
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
Use when a medical AI paper should be found and cited by AI search engines and RAG tools. Optimizes the title, abstract, summary box (Key Points, Research in Context), keywords, preprint, GitHub README/CITATION.cff and Hugging Face card, returning a visible pass/fail checklist.
Use when a target journal has no profile yet. Reads the journal's author guidelines and writes a detailed /write-paper profile plus a compact /find-journal profile, public or user-local private, in the canonical format with quality gates.
Use when data needs statistical analysis. Runs reproducible Python/R code for Table 1, diagnostic accuracy, agreement, regression, survival, propensity score, survey-weighted and repeated-measures models, with publication tables. Sample size is /calc-sample-size; pooling studies is /meta-analysis.
Use when analyzing a researcher's publication record from PubMed. Fetches an author's papers, classifies study types and author position, charts the patterns and writes a strategy report, with an optional trajectory-archetype classification. Works from PubMed metadata only.
Use when one validated cohort analysis must be repeated across many exposure/outcome pairs. Generates one R/Python script per combination from a single methodology template, changing only the variables, and aggregates the results into a summary matrix.