| name | nature-response |
| description | Generate a point-by-point reviewer response letter in Nature house style (complements `rebuttal-writer` which targets conference rebuttals). |
nature-response — Nature journal point-by-point response
When to use this skill
Use this skill only when the target venue is Nature or a Nature
sub-journal (Nature Methods, Nature Cities, Nature Machine Intelligence,
...). For NeurIPS / ICLR / ACL / CVPR-style conference rebuttals, use
rebuttal-writer instead — the formatting conventions are incompatible.
Inputs
| File | Required | Notes |
|---|
artifacts/reviewer_feedback.json | yes | Same schema as Wave A.1. May use the minimal weaknesses: [str] shape or the enriched comments: [...] shape (see generator docstring). |
artifacts/draft_revised.tex | yes | The post-revision manuscript. The generator does not parse it but its presence proves the author has actually revised before drafting the response. |
Output
artifacts/nature_response.md — a Markdown letter, one block per
reviewer comment, grouped by reviewer.
House-style rules (enforced by the generator's validator)
- Opening sentence. Every response must open with one of:
We have ..., We now ..., We thank ..., We agree ...,
We respectfully .... Nature copy editors flag passive or
non-actionable openings ("It is now the case that ...").
- Manuscript-change footer. Every response must end with the
exact pattern
Manuscript change: [page X, line Y, paragraph Z]
(all three integers). Editors do not diff — the footer lets them
jump straight to the change.
- No weasel words. Phrases like "future work", "in subsequent
studies", "we plan to", "beyond the scope", "we may explore"
are forbidden. Nature reviewers treat deferred promises as
non-responses. If you genuinely cannot address a point, mark it
disagreed and justify the disagreement.
- Disposition label. Every block carries one of three labels in
the header:
Addressed by experiment — new data / new analysis added.
Addressed by clarification — wording / framing change only.
Disagreed (with justification) — explicit refusal, justified
inline.
- Length caps. Per-response ≤ 300 words; total letter ≤ ~8 A4
pages (≈ 3600 words at Nature density). Editors triage by length;
a 14-page letter signals defensive over-explanation.
How to invoke
from nature_response_generator import generate
result = generate("/path/to/project")
Difference from rebuttal-writer (Wave A.1)
| Dimension | rebuttal-writer (conference) | nature-response (Nature) |
|---|
| Length cap | Per-reviewer page budget (venue-specific) | Per-response 300 words, total 8 A4 pages |
| Opening | Free — Thank the reviewer ..., R1 raises ... etc. | Fixed prefix whitelist |
| Manuscript locator | Section/figure references inline | Mandatory [page X, line Y, paragraph Z] footer |
| "Future work" | Permitted as polite hedge | Forbidden (weasel) |
| Disposition | Free-form category (legitimate, looks-legit-but-wrong, ...) | Fixed 3-label vocabulary |
Failure modes the generator catches
- Block missing for any comment id present in
reviewer_feedback.json.
- Response opens with anything other than the allowed prefixes.
Manuscript change: [...] footer missing or malformed.
- Any weasel phrase in any response body.
- Per-response word count over 300.
- Total letter word count over ~3600.
See templates/response_block.md for the
canonical block shape an LLM (or human) should produce when populating
the enriched comments[*].response field of reviewer_feedback.json.