Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Use when a quest already has a paper, draft, or review package and the task is to map reviewer feedback into experiments, manuscript deltas, and a durable rebuttal / revision response.
.claude/skills/ds-rebuttal/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-10 | ✗→✓ | ▲ Improved | — | — |
| case-11 | ✗→✓ | ▲ Improved | — | — |
| case-16 | ✗→✓ | ▲ Improved | — | — |
| case-14 | ✗→✓ | ▲ Improved | — | — |
| case-08 | ✗→✓ | ▲ Improved | — | — |
Use this skill when the quest is in review, revision, or rebuttal mode.
This is not the same as ordinary write. The task is no longer “draft the paper from evidence”. The task is “respond to concrete reviewer pressure with the smallest honest set of experiments, text changes, claim adjustments, and response artifacts”.
artifact.interact(kind='milestone', reply_mode='threaded', ...) update that says what reviewer concerns are now addressed, what still remains open, and what happens next.bash_exec.rebuttal is an auxiliary orchestration skill for review-driven work.
It should convert reviewer material into a durable response workflow:
analysis-campaign only after the analysis step says they are truly neededwriteDefault rebuttal stance: analysis before execution. Do not jump from “reviewer asked for more evidence” straight to experiments. Do not invent rebuttal-only special tools or side workflows. Stay inside the normal DeepScientist surface: memory, artifact, bash_exec, plus ordinary stage/companion skills. First decide whether the issue is actually:
startup_contract.custom_profile = revision_rebuttalstartup_contract.baseline_execution_policy is present, honor it:must_reproduce_or_verifyreuse_existing_onlyskip_unless_blockingstartup_contract.manuscript_edit_mode = latex_required, treat the provided LaTeX tree or paper/latex/ as the preferred writing surface when manuscript revision is needed.latex_required is requested, do not pretend the manuscript was edited; produce LaTeX-ready replacement text and an explicit blocker note instead.Use, in roughly this order:
evaluation_summary blocks from recent main experiments and analysis slicesIf the current paper/result state is still unclear, open intake-audit first before continuing the rebuttal workflow. Before launching any new supplementary experiment, read those structured evaluation_summary blocks first so the rebuttal plan starts from the already-recorded evidence state rather than from raw narrative memory. If the user provided manuscript files or review-packet files directly, first normalize them into durable quest-visible paths under paper/ or paper/rebuttal/input/ before planning reviewer-linked experiments or draft replies.
The rebuttal pass should usually leave behind:
paper/rebuttal/review_matrix.mdpaper/rebuttal/action_plan.mdpaper/rebuttal/response_letter.mdpaper/rebuttal/text_deltas.mdpaper/rebuttal/evidence_update.mdpaper/paper_experiment_matrix.md when reviewer concerns materially change the paper experiment planpaper/paper_experiment_matrix.json when reviewer concerns materially change the paper experiment planUse the templates in references/ when needed:
review-matrix-template.mdaction-plan-template.mdresponse-letter-template.mdevidence-update-template.mdBefore any rebuttal experiment or major rewrite, normalize reviewer pressure into stable atomic items.
For each item:
R1-C1, R1-C2, R2-C1missing_evidence if the gap is still realtext_revisionevidence_repackagingliterature_positioningbaseline_recoverysupplementary_experimentclaim_downgradeexplicit_limitationDo not let one vague reviewer paragraph remain as one vague work item. The point is to make downstream routing auditable.
Every substantive reviewer comment should be classified as one or more of:
editorialtext_onlyevidence_gapexperiment_gapclaim_scopecannot_fully_addressDo not blur these categories. The whole point is to route work correctly.
Useful stance values for draft replies:
agreepartially_agreeclarifyrespectful_disagreeUseful concern-type labels when the simple class list is not enough:
non_experimentalexperimentalwriting_logicscope_noveltyCollect reviewer inputs into a durable matrix using references/review-matrix-template.md.
For each comment, record:
R1-C1If the user gave only rough prose rather than a structured review package, build that matrix yourself before planning experiments or edits.
For each reviewer issue, decide whether the right answer is:
Then write one durable rebuttal plan in paper/rebuttal/action_plan.md. That plan should explicitly include the analysis-experiment TODO list for reviewer-linked follow-up work. If reviewer concerns materially change the paper's experiment story, also create or revise paper/paper_experiment_matrix.* so the rebuttal experiment package stays consistent with the paper-facing plan rather than drifting into a reviewer-only side list.
The action plan should be the main thinking draft before execution. For each serious item, record:
For experimental items, do not stop at “run experiment”. Write at least:
For novelty / comparison / positioning complaints, do not default to experiments. First decide whether the issue is better answered by a focused literature audit and clearer paper positioning.
When a reviewer concern really does imply experimental follow-up, map it into the same paper experiment taxonomy used by the writing line:
component_ablationsensitivityrobustnessefficiency_costhighlight_validationfailure_boundarycase_study_optionalCase study remains optional unless the reviewer concern is specifically qualitative and cannot be addressed better with quantitative evidence.
If one or more comments truly require new runs:
scout first instead of treating it as an experiment requestbaseline firstdecision(action='launch_analysis_campaign')analysis-campaignartifact.record_analysis_slice(...)Do not launch a free-floating ablation batch. Every supplementary run should answer a named reviewer issue. Every slice should reference one or more stable reviewer item ids. Every rebuttal-linked slice should also reference the corresponding exp_id from paper/paper_experiment_matrix.* when that matrix exists. After each completed reviewer-linked slice, record the result, the implication for the manuscript, and the concrete modification advice in paper/rebuttal/evidence_update.md. Use the same shared supplementary-experiment protocol as ordinary analysis work; do not invent a rebuttal-only experiment system. If ids or refs are unclear, recover them first with artifact.resolve_runtime_refs(...), artifact.get_analysis_campaign(...), or artifact.list_paper_outlines(...). After each completed, excluded, or blocked reviewer-linked slice:
paper/paper_experiment_matrix.*exp_idDo not finalize the rebuttal package while reviewer-critical and currently feasible matrix rows remain unresolved without an explicit blocker note.
If the paper text, structure, or claim scope must change:
writetext_deltas.md explicit:If a reviewer request forces a narrower story, revise the outline before polishing prose.
Use references/response-letter-template.md when helpful.
Before treating the response letter as final:
paper/paper_experiment_matrix.* have been refreshed after those runsThe response should be:
Good response structure:
Drafting style rules for the actual author reply body:
response_letter.md as rebuttal-ready author text, not as internal coaching notes.startup_contract.manuscript_edit_mode = latex_required, keep manuscript-facing replacement text LaTeX-ready.If details are still genuinely unknown, use explicit placeholders such as [[AUTHOR TO FILL]] rather than inventing specifics.
Avoid:
When the rebuttal package is durably ready:
artifact.submit_paper_bundle(...)If a combined rebuttal note is useful, make sure the total package still covers:
Open additional skills only when the rebuttal workflow requires them:
intake-auditscoutbaselineanalysis-campaignwritefigure-polishdecisionUse these tools deliberately:
artifact.record(payload={'kind': 'decision', ...})artifact.create_analysis_campaign(...)artifact.record_analysis_slice(...)artifact.submit_paper_outline(mode='revise', ...)artifact.submit_paper_bundle(...)artifact.interact(...)Stage-start requirement:
memory.list_recent(scope='quest', limit=5)memory.search(...) for:Stage-end requirement:
memory.write(...)Useful tags include:
stage:rebuttaltype:review-matrixtype:claim-downgradetype:revision-lessontype:reviewer-requestrebuttal is successful when:
The goal is not just “write a nicer response”. The goal is to convert review pressure into a durable, auditable revision workflow.
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-06 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-21 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-10 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-09 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-03 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-19 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-02 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-07 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-11 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-16 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-12 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-14 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-08 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-15 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-20 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-13 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-01 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-22 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-04 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-05 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-17 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-18 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted, and 10 counted toward the lift figure. The other 12 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +27 percentage points is the difference between those two pass rates over the 10 comparable cases. 5 cases got worse with the skill loaded, and they are included in that figure.
The per-case answers from this run were removed by the retention sweep, so the case table below shows the verdicts without the text either arm produced. The counts above were recorded at the time and are unaffected. Answers are now kept for 180 days.
Other measured skills in the registry, with their headline benchmark lift.