Workflow 4: Rebuttal
Prepare and maintain a grounded, venue-compliant rebuttal for: $ARGUMENTS
Scope
This skill is optimized for:
- text-only rebuttal under strict character/word limits (e.g. ICML single-document)
- per-reviewer thread responses where each reviewer renders independently (e.g. OpenReview-style)
- multiple reviewers with shared and reviewer-specific concerns
- follow-up rounds after the initial rebuttal
- safe drafting with no fabrication, no overpromise, and full issue coverage
This skill does not:
- run new experiments automatically
- generate new theorem claims automatically
- edit or upload a revised PDF
- submit to OpenReview / CMT / HotCRP
If the user already has new results, derivations, or approved commitments, the skill can incorporate them as user-confirmed evidence.
Lifecycle Position
Workflow 1: idea-discovery
Workflow 1.5: experiment-bridge
Workflow 2: auto-review-loop (pre-submission)
Workflow 3: paper-writing
Workflow 4: rebuttal (post-submission external reviews)
Constants
- VENUE =
ICML— Default venue. Override if needed. - RESPONSE_MODE =
TEXT_ONLY— v1 default. - REVIEWER_MODEL =
gpt-5.5— Default model for the Codex backend. Used for internal stress-testing. Manual backend uses whatever model the user chooses. - REVIEWER_BACKEND =
codex— Default: Codex MCP (xhigh). Override with— reviewer: oracle-profor Oracle MCP, or— reviewer: manualfor Manual Review MCP. If manual-review MCP is unavailable, stop and print the install command; do not fall back to Codex. Seeshared-references/reviewer-routing.md. - MAX_INTERNAL_DRAFT_ROUNDS = 2 — draft → lint → revise.
- VENUE_MODE =
single_document—single_documentfor one shared author response, orper_reviewer_threadwhen each reviewer thread renders independently. Confirm the venue/interface before drafting if unclear. Affects Phase 4/7 output shape. - STRESS_TEST_ROUNDS_BASE = 1 — One external reviewer critique round on the full response set. Add focused rounds for
reviewer_priority: pivotalresponses, terminating when the reviewer returns no new substantive issues. Hard cap at 5. - MAX_FOLLOWUP_ROUNDS = 3 — per reviewer thread.
- AUTO_EXPERIMENT = false — When
true, automatically invoke/experiment-bridgeto run supplementary experiments when the strategy plan identifies reviewer concerns that require new empirical evidence. Whenfalse(default), pause and present the evidence gap to the user for manual handling. - QUICK_MODE = false — When
true, only run Phase 0-3 (parse reviews, atomize concerns, build strategy). OutputsISSUE_BOARD.md+STRATEGY_PLAN.mdand stops — no drafting, no stress test. Useful for quickly understanding what reviewers want before deciding how to respond. - REBUTTAL_DIR =
rebuttal/ - RENDER_HTML = true — When
true(default), auto-renderrebuttal/REBUTTAL_DRAFT_rich.md(the detailed reviewer-facing draft) to HTML after Phase 6 / Phase 8 finalization. Uses full Codex review gate (final pre-submission deliverable — reviewer-facing content, render fidelity matters). The plain-textPASTE_READY.txtis NOT rendered (it's character-counted plain text by design). Setfalseto skip, or pass— render html: false.
Override:
/rebuttal "paper/" — venue: NeurIPS, character limit: 5000
Reviewer Calling Convention
When calling the reviewer for stress-testing, branch on REVIEWER_BACKEND:
If REVIEWER_BACKEND = codex:
Use mcp__codex__codex for new review threads.
Use mcp__codex__codex-reply for follow-up rounds (reuse threadId).
If REVIEWER_BACKEND = manual:
Use mcp__manual_review__review for new review threads with:
prompt: [exact same prompt that would go to Codex]
config: {"model_reasoning_effort": "xhigh"}
Save the returned threadId.
Use mcp__manual_review__review_reply for follow-up rounds with:
threadId: [saved manual-review threadId]
prompt: [follow-up prompt]
config: {"model_reasoning_effort": "xhigh"}
Prompt fidelity: the manual prompt must be exactly the same text that Codex would receive. Review tracing applies equally to both backends.
Required Inputs
- Paper source — PDF, LaTeX directory, or narrative summary
- Raw reviews — pasted text, markdown, or PDF with reviewer IDs
- Venue rules — venue name, character/word limit, text-only or revised PDF allowed, rendering mode (one shared response or independent reviewer threads)
- Current stage — initial rebuttal or follow-up round
If venue rules, limit, or rendering mode are missing, stop and ask before drafting.
Safety Model
Three hard gates — if any fails, do NOT finalize:
- Provenance gate — every factual statement maps to:
paper,review,user_confirmed_result,user_confirmed_derivation, orfuture_work. No source = blocked. - Commitment gate — every promise maps to:
already_done,approved_for_rebuttal, orfuture_work_only. Not approved = blocked. - Coverage gate — every reviewer concern ends in:
answered,deferred_intentionally, orneeds_user_input. No issue disappears.
Workflow
Phase 0: Resume or Initialize
- If
rebuttal/REBUTTAL_STATE.mdexists → resume from recorded phase - Otherwise → create
rebuttal/, initialize all output documents - Load paper, reviews, venue rules, any user-confirmed evidence
Phase 1: Validate Inputs and Normalize Reviews
- Validate venue rules are explicit
- Normalize all reviewer text into
rebuttal/REVIEWS_RAW.md(verbatim) - Record metadata in
rebuttal/REBUTTAL_STATE.md - If ambiguous, pause and ask
Phase 2: Atomize and Classify Reviewer Concerns
Create rebuttal/ISSUE_BOARD.md.
For each atomic concern:
issue_id(e.g., R1-C2)reviewer,round,raw_anchor(short quote)issue_type: assumptions / theorem_rigor / novelty / empirical_support / baseline_comparison / complexity / practical_significance / clarity / reproducibility / otherseverity: critical / major / minorreviewer_stance: positive / swing / negative / unknownreviewer_priority: standard / pivotalpivotal— a reviewer whose response is likely to affect the decision if addressed well: low or borderline rating, addressable concerns, and enough confidence/influence to matter. Phase 3 allocates extra drafting and stress-test budget here.
response_mode: direct_clarification / grounded_evidence / nearest_work_delta / assumption_hierarchy / narrow_concession / future_work_boundary / structural_distinctionstructural_distinction— for "your method reduces to X / is just generic Y / is subsumed by Z" attacks. Pattern: agree on the local reduction; show the structural feature your parameterization preserves that X/Y/Z does not capture, backed by a concrete mechanism (theorem dependency, derivation step, or empirical consequence). Never use rhetorically without the supporting mechanism.
status: open / answered / deferred / needs_user_input
Phase 3: Build Strategy Plan
Create rebuttal/STRATEGY_PLAN.md.
- Identify 2-4 global themes resolving shared concerns
- Choose response mode per issue
- Build character budget (10-15% opener, 75-80% per-reviewer, 5-10% closing) — applies in
single_documentmode; inper_reviewer_threadmode, set per-thread word/char targets instead - Identify pivotal reviewer(s) — reviewers whose vote or confidence shift would most affect the decision, especially when concerns are addressable rather than ideological. Mark them
reviewer_priority: pivotalinISSUE_BOARD.md. There may be more than one. Allocate disproportionate drafting + stress-test budget here. - Identify blocked claims (ungrounded or unapproved)
- If unresolved blockers → pause and present to user
QUICK_MODE exit: If QUICK_MODE = true, stop here. Present ISSUE_BOARD.md + STRATEGY_PLAN.md to the