Agent skill

Research Paper Writing

by RedWoodOG in RedWoodOG/Hermes-Desktop

End-to-end pipeline for writing ML/AI research papers — from experiment design through analysis, drafting, revision, and submission.

MITAuto-check: notesResearch & Science

Install Research Paper Writing

skills CLI
$ npx skills add RedWoodOG/Hermes-Desktop --skill research-paper-writing -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install RedWoodOG/Hermes-Desktop research-paper-writing --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/RedWoodOG/Hermes-Desktop.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/research/research-paper-writing .claude/skills/research-paper-writing && rm -rf skills-src

Use ~/.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/

Facts

Skill name
research-paper-writing
GitHub stars
177
Used in
6 other repos
Token cost
~16k tokens
SKILL.md length
4,875 words
Files
57 (incl. references)
Skills in repo
62
Repo updated
First seen
Licence
MIT

At a glance

End-to-end pipeline for writing ML/AI research papers — from experiment design through analysis, drafting, revision, and submission.

  • Works in 8 steps: Project Setup → Literature Review → Experiment Design → …
  • Tasks that involve Experimental design
  • SKILL.md covers When To Use This Skill, Core Philosophy, Phase 0: Project Setup and Phase 1: Literature Review, plus 3 more sections
  • Calls git, python and claude; reaches arxiv.org and doi.org

What it does

Research Paper Writing is an agent skill from RedWoodOG/Hermes-Desktop. End-to-end pipeline for writing ML/AI research papers — from experiment design through analysis, drafting, revision, and submission. Covers NeurIPS, ICML, ICLR, ACL, AAAI, COLM. Integrates automated experiment monitoring, statistical analysis, iterative writing, and citation verification.

Its SKILL.md is about 16k tokens, which your agent loads only when the skill is triggered. The skill folder holds 60 other files, including reference files (for example `references/autoreason-methodology.md`, `references/checklists.md` and `references/citation-workflow.md`).

It sits in Research & Science, covering Experimental design, Citation management and Statistics. The licence is MIT.

When your agent uses it

  • Tasks that involve Experimental design
  • Tasks that involve Citation management
  • Tasks that involve Statistics

Example prompts

  • “/research-paper-writing”

Requirements

  • Python 3
  • Node.js

Workflow steps

8 steps, taken from the step headings in SKILL.md.

  1. Project Setup
  2. Literature Review
  3. Experiment Design
  4. Experiment Execution & Monitoring
  5. Result Analysis
  6. Paper Drafting
  7. Self-Review & Revision
  8. Submission Preparation

What it can do on your machine

Read from SKILL.md and the folder at commit be46b39. It shows what the files ask for, not the result of running them.

  • Tool permissions

    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.

  • Runs code

    Shell commands in SKILL.md call:

    • git
    • python
    • claude
    • pip

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Hosts in commands or code, which the agent is likely to contact:

    • arxiv.org
    • doi.org
    • mcp.exa.ai

    Also links to:

    • alignmentforum.org
    • sebastianfarquhar.com
    • cseweb.ucsd.edu
    • approximatelycorrect.com
    • ethanperez.net
    • api.semanticscholar.org
    • crossref.org
    • info.arxiv.org
    • neurips.cc
    • icml.cc
    • iclr.cc
    • github.com

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Research Paper Writing loads about 16k tokens when it runs, and up to ~44k if it reads all its reference files. Until then it costs about 78 tokens; SKILL.md has 4,875 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~78
When it runs · the whole SKILL.md, loaded when a task matches
~16k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~44k

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.

Safety

Auto-check: notes

The automated check noted patterns worth knowing about, such as sudo or a known installer.

  • NoteRuns commands with sudoSKILL.md:1091
    # Linux: sudo apt install latexdiff

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); files beside SKILL.md are not scanned.

SKILL.md

The full file from RedWoodOG/Hermes-Desktop at commit be46b39, republished under its MIT licence (© RedWoodOG). 4,875 words, ~16,155 tokens.

Download SKILL.mdSave it as .claude/skills/research-paper-writing/SKILL.md (or your agent's skills folder). This skill also uses 56 other files; get the full folder from GitHub.
name
research-paper-writing
description
End-to-end pipeline for writing ML/AI research papers — from experiment design through analysis, drafting, revision, and submission. Covers NeurIPS, ICML, ICLR, ACL, AAAI, COLM. Integrates automated experiment monitoring, statistical analysis, iterative writing, and citation verification.
title
Research Paper Writing Pipeline
version
1.0.0
author
Orchestra Research
license
MIT
dependencies
semanticscholar, arxiv, habanero, requests, scipy, numpy, matplotlib, SciencePlots
platforms
linux, macos

Research Paper Writing Pipeline

End-to-end pipeline for producing publication-ready ML/AI research papers targeting NeurIPS, ICML, ICLR, ACL, AAAI, and COLM. This skill covers the full research lifecycle: experiment design, execution, monitoring, analysis, paper writing, review, revision, and submission.

This is not a linear pipeline — it is an iterative loop. Results trigger new experiments. Reviews trigger new analysis. The agent must handle these feedback loops.

┌─────────────────────────────────────────────────────────────┐
│                    RESEARCH PAPER PIPELINE                  │
│                                                             │
│  Phase 0: Project Setup ──► Phase 1: Literature Review      │
│       │                          │                          │
│       ▼                          ▼                          │
│  Phase 2: Experiment     Phase 5: Paper Drafting ◄──┐      │
│       Design                     │                   │      │
│       │                          ▼                   │      │
│       ▼                    Phase 6: Self-Review      │      │
│  Phase 3: Execution &           & Revision ──────────┘      │
│       Monitoring                 │                          │
│       │                          ▼                          │
│       ▼                    Phase 7: Submission               │
│  Phase 4: Analysis ─────► (feeds back to Phase 2 or 5)     │
│                                                             │
└─────────────────────────────────────────────────────────────┘

When To Use This Skill

Use this skill when:

  • Starting a new research paper from an existing codebase or idea
  • Designing and running experiments to support paper claims
  • Writing or revising any section of a research paper
  • Preparing for submission to a specific conference
  • Responding to reviews with additional experiments or revisions
  • Converting a paper between conference formats

Core Philosophy

  1. Be proactive. Deliver complete drafts, not questions. Scientists are busy — produce something concrete they can react to, then iterate.
  2. Never hallucinate citations. AI-generated citations have ~40% error rate. Always fetch programmatically. Mark unverifiable citations as [CITATION NEEDED].
  3. Paper is a story, not a collection of experiments. Every paper needs one clear contribution stated in a single sentence. If you can't do that, the paper isn't ready.
  4. Experiments serve claims. Every experiment must explicitly state which claim it supports. Never run experiments that don't connect to the paper's narrative.
  5. Commit early, commit often. Every completed experiment batch, every paper draft update — commit with descriptive messages. Git log is the experiment history.
Proactivity and Collaboration

Default: Be proactive. Draft first, ask with the draft.

Confidence LevelAction
High (clear repo, obvious contribution)Write full draft, deliver, iterate on feedback
Medium (some ambiguity)Write draft with flagged uncertainties, continue
Low (major unknowns)Ask 1-2 targeted questions via clarify, then draft
SectionDraft Autonomously?Flag With Draft
AbstractYes"Framed contribution as X — adjust if needed"
IntroductionYes"Emphasized problem Y — correct if wrong"
MethodsYes"Included details A, B, C — add missing pieces"
ExperimentsYes"Highlighted results 1, 2, 3 — reorder if needed"
Related WorkYes"Cited papers X, Y, Z — add any I missed"

Block for input only when: target venue unclear, multiple contradictory framings, results seem incomplete, explicit request to review first.


Phase 0: Project Setup

Goal: Establish the workspace, understand existing work, identify the contribution.

Step 0.1: Explore the Repository
bash
# Understand project structure
ls -la
find . -name "*.py" | head -30
find . -name "*.md" -o -name "*.txt" | xargs grep -l -i "result\|conclusion\|finding"

Look for:

  • README.md — project overview and claims
  • results/, outputs/, experiments/ — existing findings
  • configs/ — experimental settings
  • .bib files — existing citations
  • Draft documents or notes
Step 0.2: Organize the Workspace

Establish a consistent workspace structure:

workspace/
  paper/               # LaTeX source, figures, compiled PDFs
  experiments/         # Experiment runner scripts
  code/                # Core method implementation
  results/             # Raw experiment results (auto-generated)
  tasks/               # Task/benchmark definitions
  human_eval/          # Human evaluation materials (if needed)
Step 0.3: Set Up Version Control
bash
git init  # if not already
git remote add origin <repo-url>
git checkout -b paper-draft  # or main

Git discipline: Every completed experiment batch gets committed with a descriptive message. Example:

Add Monte Carlo constrained results (5 runs, Sonnet 4.6, policy memo task)
Add Haiku baseline comparison: autoreason vs refinement baselines at cheap model tier
Step 0.4: Identify the Contribution

Before writing anything, articulate:

  • The What: What is the single thing this paper contributes?
  • The Why: What evidence supports it?
  • The So What: Why should readers care?

Propose to the scientist: "Based on my understanding, the main contribution is: [one sentence]. The key results show [Y]. Is this the framing you want?"

Step 0.5: Create a TODO List

Use the todo tool to create a structured project plan:

Research Paper TODO:
- [ ] Define one-sentence contribution
- [ ] Literature review (related work + baselines)
- [ ] Design core experiments
- [ ] Run experiments
- [ ] Analyze results
- [ ] Write first draft
- [ ] Self-review (simulate reviewers)
- [ ] Revise based on review
- [ ] Submission prep

Update this throughout the project. It serves as the persistent state across sessions.


Phase 1: Literature Review

Goal: Find related work, identify baselines, gather citations.

Step 1.1: Identify Seed Papers

Start from papers already referenced in the codebase:

bash
# Via terminal:
grep -r "arxiv\|doi\|cite" --include="*.md" --include="*.bib" --include="*.py"
find . -name "*.bib"

Load the arxiv skill for structured paper discovery: skill_view("arxiv"). It provides arXiv REST API search, Semantic Scholar citation graphs, author profiles, and BibTeX generation.

Use web_search for broad discovery, web_extract for fetching specific papers:

# Via web_search:
web_search("[main technique] + [application domain] site:arxiv.org")
web_search("[baseline method] comparison ICML NeurIPS 2024")

# Via web_extract (for specific papers):
web_extract("https://arxiv.org/abs/2303.17651")

Additional search queries to try:

Search queries:
- "[main technique] + [application domain]"
- "[baseline method] comparison"
- "[problem name] state-of-the-art"
- Author names from existing citations

Recommended: Install Exa MCP for real-time academic search:

bash
claude mcp add exa -- npx -y mcp-remote "https://mcp.exa.ai/mcp"
Step 1.3: Verify Every Citation

NEVER generate BibTeX from memory. ALWAYS fetch programmatically.

For each citation, follow the mandatory 5-step process:

Citation Verification (MANDATORY per citation):
1. SEARCH → Query Semantic Scholar or Exa MCP with specific keywords
2. VERIFY → Confirm paper exists in 2+ sources (Semantic Scholar + arXiv/CrossRef)
3. RETRIEVE → Get BibTeX via DOI content negotiation (programmatically, not from memory)
4. VALIDATE → Confirm the claim you're citing actually appears in the paper
5. ADD → Add verified BibTeX to bibliography
If ANY step fails → mark as [CITATION NEEDED], inform scientist
python
# Fetch BibTeX via DOI
import requests

def doi_to_bibtex(doi: str) -> str:
    response = requests.get(
        f"https://doi.org/{doi}",
        headers={"Accept": "application/x-bibtex"}
    )
    response.raise_for_status()
    return response.text

If you cannot verify a citation:

latex
\cite{PLACEHOLDER_author2024_verify_this}  % TODO: Verify this citation exists

Always tell the scientist: "I've marked [X] citations as placeholders that need verification."

See references/citation-workflow.md for complete API documentation and the full CitationManager class.

Group papers by methodology, not paper-by-paper:

Good: "One line of work uses X's assumption [refs] whereas we use Y's assumption because..." Bad: "Smith et al. introduced X. Jones et al. introduced Y. We combine both."


Phase 2: Experiment Design

Goal: Design experiments that directly support paper claims. Every experiment must answer a specific question.

Step 2.1: Map Claims to Experiments

Create an explicit mapping:

ClaimExperimentExpected Evidence
"Our method outperforms baselines"Main comparison (Table 1)Win rate, statistical significance
"Effect is larger for weaker models"Model scaling studyMonotonic improvement curve
"Convergence requires scope constraints"Constrained vs unconstrainedConvergence rate comparison

Rule: If an experiment doesn't map to a claim, don't run it.

Step 2.2: Design Baselines

Strong baselines are what separates accepted papers from rejected ones. Reviewers will ask: "Did they compare against X?"

Standard baseline categories:

  • Naive baseline: Simplest possible approach
  • Strong baseline: Best known existing method
  • Ablation baselines: Your method minus one component
  • Compute-matched baselines: Same compute budget, different allocation
Step 2.3: Define Evaluation Protocol

Before running anything, specify:

  • Metrics: What you're measuring, direction symbols (higher/lower better)
  • Aggregation: How results are combined across runs/tasks
  • Statistical tests: What tests will establish significance
  • Sample sizes: How many runs/problems/tasks
Step 2.4: Write Experiment Scripts

Follow these patterns from successful research pipelines:

Incremental saving — save results after each step for crash recovery:

python
# Save after each problem/task
result_path = f"results/{task}/{strategy}/result.json"
if os.path.exists(result_path):
    continue  # Skip already-completed work
# ... run experiment ...
with open(result_path, 'w') as f:
    json.dump(result, f, indent=2)

Artifact preservation — save all intermediate outputs:

results/<experiment>/
  <task>/
    <strategy>/
      final_output.md          # Final result
      history.json             # Full trajectory
      pass_01/                 # Per-iteration artifacts
        version_a.md
        version_b.md
        critic.md

Separation of concerns — keep generation, evaluation, and visualization separate:

run_experiment.py              # Core experiment runner
run_baselines.py               # Baseline comparison
run_comparison_judge.py        # Blind evaluation
analyze_results.py             # Statistical analysis
make_charts.py                 # Visualization

See references/experiment-patterns.md for complete design patterns, cron monitoring, and error recovery.


Phase 3: Experiment Execution & Monitoring

Goal: Run experiments reliably, monitor progress, recover from failures.

Step 3.1: Launch Experiments

Use nohup for long-running experiments:

bash
nohup python run_experiment.py --config config.yaml > logs/experiment_01.log 2>&1 &
echo $!  # Record the PID

Parallel execution: Run independent experiments simultaneously, but be aware of API rate limits. 4+ concurrent experiments on the same API will slow each down.

Step 3.2: Set Up Monitoring (Cron Pattern)

For long-running experiments, set up periodic status checks. The cron prompt should follow this template:

Monitor Prompt Template:
1. Check if process is still running: ps aux | grep <pattern>
2. Read last 30 lines of log: tail -30 <logfile>
3. Check for completed results: ls <result_dir>
4. If results exist, read and report: cat <result_file>
5. If all done, commit: git add -A && git commit -m "<descriptive message>" && git push
6. Report in structured format (tables with key metrics)
7. Answer the key analytical question for this experiment

Silent mode: If nothing has changed since the last check, respond with [SILENT] to suppress notification to the user. Only report when there's news.

Step 3.3: Handle Failures

Common failure modes and recovery:

FailureDetectionRecovery
API rate limit / credit exhaustion402/429 errors in logsWait, then re-run (scripts skip completed work)
Process crashPID gone, incomplete resultsRe-run from last checkpoint
Timeout on hard problemsProcess stuck, no log progressKill and skip, note in results
Wrong model IDErrors referencing model nameFix ID and re-run

Key: Scripts should always check for existing results and skip completed work. This makes re-runs safe and efficient.

Step 3.4: Commit Completed Results

After each experiment batch completes:

bash
git add -A
git commit -m "Add <experiment name>: <key finding in 1 line>"
git push

Phase 4: Result Analysis

Goal: Extract findings, compute statistics, identify the story.

Step 4.1: Aggregate Results

Write analysis scripts that:

  1. Load all result files from a batch
  2. Compute per-task and aggregate metrics
  3. Generate summary tables
python
# Standard analysis pattern
import json, os
from pathlib import Path

results = {}
for result_file in Path("results/").rglob("result.json"):
    data = json.loads(result_file.read_text())
    strategy = result_file.parent.name
    task = result_file.parent.parent.name
    results.setdefault(strategy, {})[task] = data

# Compute aggregate metrics
for strategy, tasks in results.items():
    scores = [t["score"] for t in tasks.values()]
    print(f"{strategy}: mean={np.mean(scores):.1f}, std={np.std(scores):.1f}")
Step 4.2: Statistical Significance

Always compute:

  • Error bars: Standard deviation or standard error, specify which
  • Confidence intervals: 95% CI for key results
  • Pairwise tests: McNemar's test for comparing two methods
  • Effect sizes: Cohen's d or h for practical significance

See references/experiment-patterns.md for complete implementations of McNemar's test, bootstrapped CIs, and Cohen's h.

Step 4.3: Identify the Story

After analysis, explicitly answer:

  1. What is the main finding? State it in one sentence.
  2. What surprised you? Unexpected results often make the best papers.
  3. What failed? Failed experiments can be the most informative. Honest reporting of failures strengthens the paper.
  4. What follow-up experiments are needed? Results often raise new questions.
Step 4.4: Create Figures and Tables

Figures:

  • Use vector graphics (PDF) for all plots: plt.savefig('fig.pdf')
  • Colorblind-safe palettes (Okabe-Ito or Paul Tol)
  • Self-contained captions — reader should understand without main text
  • No title inside figure — the caption serves this function

Tables:

  • Use booktabs LaTeX package
  • Bold best value per metric
  • Include direction symbols (higher/lower better)
  • Consistent decimal precision
latex
\usepackage{booktabs}
\begin{tabular}{lcc}
\toprule
Method & Accuracy $\uparrow$ & Latency $\downarrow$ \\
\midrule
Baseline & 85.2 & 45ms \\
\textbf{Ours} & \textbf{92.1} & 38ms \\
\bottomrule
\end{tabular}
Step 4.5: Decide: More Experiments or Write?
SituationAction
Core claims supported, results significantMove to Phase 5 (writing)
Results inconclusive, need more dataBack to Phase 2 (design)
Unexpected finding suggests new directionBack to Phase 2 (design)
Missing one ablation reviewers will ask forRun it, then Phase 5
All experiments done but some failedNote failures, move to Phase 5

Iterative Refinement: Strategy Selection

Any output in this pipeline — paper drafts, experiment scripts, analysis — can be iteratively refined. The autoreason research provides empirical evidence for when each refinement strategy works and when it fails. Use this section to choose the right approach.

Quick Decision Table
Your SituationStrategyWhy
Mid-tier model + constrained taskAutoreasonSweet spot. Generation-evaluation gap is widest. Baselines actively destroy weak model outputs.
Mid-tier model + open taskAutoreason with scope constraints addedAdd fixed facts, structure, or deliverable to bound the improvement space.
Frontier model + constrained taskAutoreasonWins 2/3 constrained tasks even at frontier.
Frontier model + unconstrained taskCritique-and-revise or single passAutoreason comes last. Model self-evaluates well enough.
Concrete technical task (system design)Critique-and-reviseDirect find-and-fix loop is more efficient.
Template-filling task (one correct structure)Single pass or conservativeMinimal decision space. Iteration adds no value.
Code with test casesAutoreason (code variant)Structured analysis of why it failed before fixing. Recovery rate 62% vs 43%.
Very weak model (Llama 8B class)Single passModel too weak for diverse candidates. Invest in generation quality.
The Generation-Evaluation Gap

Core insight: Autoreason's value depends on the gap between a model's generation capability and its self-evaluation capability.

Model Tier        │ Generation │ Self-Eval │ Gap    │ Autoreason Value
──────────────────┼────────────┼───────────┼────────┼─────────────────
Weak (Llama 8B)   │ Poor       │ Poor      │ Small  │ None — can't generate diverse candidates
Mid (Haiku 3.5)   │ Decent     │ Poor      │ LARGE  │ MAXIMUM — 42/42 perfect Borda
Mid (Gemini Flash)│ Decent     │ Moderate  │ Large  │ High — wins 2/3
Strong (Sonnet 4) │ Good       │ Decent    │ Medium │ Moderate — wins 3/5
Frontier (S4.6)   │ Excellent  │ Good      │ Small  │ Only with constraints

This gap is structural, not temporary. As costs drop, today's frontier becomes tomorrow's mid-tier. The sweet spot moves but never disappears.

Autoreason Loop (Summary)

Each pass produces three candidates from fresh, isolated agents:

  1. Critic → finds problems in incumbent A (no fixes)
  2. Author B → revises A based on critique
  3. Synthesizer → merges A and B (randomized labels)
  4. Judge Panel → 3 blind CoT judges rank A, B, AB via Borda count
  5. Convergence → A wins k=2 consecutive passes → done

Key parameters:

  • k=2 convergence (k=1 premature, k=3 too expensive, no quality gain)
  • CoT judges always (3x faster convergence)
  • Temperature 0.8 authors, 0.3 judges
  • Conservative tiebreak: incumbent wins ties
  • Every role is a fresh agent with no shared context
Applying to Paper Drafts

When refining the paper itself through autoreason:

  • Provide ground truth to the critic: actual experimental data, result JSONs, statistical outputs. Without this, models hallucinate fabricated ablation studies and fake confidence intervals.
  • Use 3 working judges minimum: A broken judge parser doesn't add noise — it prevents equilibrium entirely.
  • Scope constrain the revision: "Address these specific weaknesses" not "improve the paper."
Failure Modes
FailureDetectionFix
No convergence (A never wins)A wins <15% over 20+ passesAdd scope constraints to the task
Synthesis driftWord counts grow unboundedlyConstrain structure and deliverable
Degradation below single passBaselines score higher than iterated outputSwitch to single pass; model may be too weak
Overfitting (code)High public-test pass, low private-test passUse structured analysis, not just test feedback
Broken judgesParsing failures reduce panel below 3Fix parser before continuing

See references/autoreason-methodology.md for complete prompts, Borda scoring details, model selection guide, scope constraint design patterns, and compute budget reference.


Phase 5: Paper Drafting

Goal: Write a complete, publication-ready paper.

The Narrative Principle

The single most critical insight: Your paper is not a collection of experiments — it's a story with one clear contribution supported by evidence.

Every successful ML paper centers on what Neel Nanda calls "the narrative": a short, rigorous, evidence-based technical story with a takeaway readers care about.

Three Pillars (must be crystal clear by end of introduction):

PillarDescriptionTest
The What1-3 specific novel claimsCan you state them in one sentence?
The WhyRigorous empirical evidenceDo experiments distinguish your hypothesis from alternatives?
The So WhatWhy readers should careDoes this connect to a recognized community problem?

If you cannot state your contribution in one sentence, you don't yet have a paper.

Time Allocation

Spend approximately equal time on each of:

  1. The abstract
  2. The introduction
  3. The figures
  4. Everything else combined

Why? Most reviewers form judgments before reaching your methods. Readers encounter your paper as: title → abstract → introduction → figures → maybe the rest.

Writing Workflow
Paper Writing Checklist:
- [ ] Step 1: Define the one-sentence contribution
- [ ] Step 2: Draft Figure 1 (core idea or most compelling result)
- [ ] Step 3: Draft abstract (5-sentence formula)
- [ ] Step 4: Draft introduction (1-1.5 pages max)
- [ ] Step 5: Draft methods
- [ ] Step 6: Draft experiments & results
- [ ] Step 7: Draft related work
- [ ] Step 8: Draft conclusion & discussion
- [ ] Step 9: Draft limitations (REQUIRED by all venues)
- [ ] Step 10: Plan appendix (proofs, extra experiments, details)
- [ ] Step 11: Complete paper checklist
- [ ] Step 12: Final review
Step 5.0: Title

The title is the single most-read element of the paper. It determines whether anyone clicks through to the abstract.

Good titles:

  • State the contribution or finding: "Autoreason: When Iterative LLM Refinement Works and Why It Fails"
  • Highlight a surprising result: "Scaling Data-Constrained Language Models" (implies you can)
  • Name the method + what it does: "DPO: Direct Preference Optimization of Language Models"

Bad titles:

  • Too generic: "An Approach to Improving Language Model Outputs"
  • Too long: anything over ~15 words
  • Jargon-only: "Asymptotic Convergence of Iterative Stochastic Policy Refinement" (who is this for?)

Rules:

  • Include your method name if you have one (for citability)
  • Include 1-2 keywords reviewers will search for
  • Avoid colons unless both halves carry meaning
  • Test: would a reviewer know the domain and contribution from the title alone?
Step 5.1: Abstract (5-Sentence Formula)

From Sebastian Farquhar (DeepMind):

1. What you achieved: "We introduce...", "We prove...", "We demonstrate..."
2. Why this is hard and important
3. How you do it (with specialist keywords for discoverability)
4. What evidence you have
5. Your most remarkable number/result

Delete generic openings like "Large language models have achieved remarkable success..."

Step 5.2: Figure 1

Figure 1 is the second thing most readers look at (after abstract). Draft it before writing the introduction — it forces you to clarify the core idea.

Figure 1 TypeWhen to UseExample
Method diagramNew architecture or pipelineTikZ flowchart showing your system
Results teaserOne compelling result tells the whole storyBar chart: "Ours vs baselines" with clear gap
Problem illustrationThe problem is unintuitiveBefore/after showing failure mode you fix
Conceptual diagramAbstract contribution needs visual grounding2x2 matrix of method properties

Rules: Figure 1 must be understandable without reading any text. The caption alone should communicate the core idea. Use color purposefully — don't just decorate.

Step 5.3: Introduction (1-1.5 pages max)

Must include:

  • Clear problem statement
  • Brief approach overview
  • 2-4 bullet contribution list (max 1-2 lines each in two-column format)
  • Methods should start by page 2-3
Step 5.3: Methods

Enable reimplementation:

  • Conceptual outline or pseudocode
  • All hyperparameters listed
  • Architectural details sufficient for reproduction
  • Present final design decisions; ablations go in experiments
Step 5.4: Experiments & Results

For each experiment, explicitly state:

  • What claim it supports
  • How it connects to main contribution
  • What to observe: "the blue line shows X, which demonstrates Y"

Requirements:

  • Error bars with methodology (std dev vs std error)
  • Hyperparameter search ranges
  • Compute infrastructure (GPU type, total hours)
  • Seed-setting methods

Organize methodologically, not paper-by-paper. Cite generously — reviewers likely authored relevant papers.

Step 5.6: Limitations (REQUIRED)

All major conferences require this. Honesty helps:

  • Reviewers are instructed not to penalize honest limitation acknowledgment
  • Pre-empt criticisms by identifying weaknesses first
  • Explain why limitations don't undermine core claims
Step 5.7: Conclusion & Discussion

Conclusion (required, 0.5-1 page):

  • Restate the contribution in one sentence (different wording from abstract)
  • Summarize key findings (2-3 sentences, not a list)
  • Implications: what does this mean for the field?
  • Future work: 2-3 concrete next steps (not vague "we leave X for future work")

Discussion (optional, sometimes combined with conclusion):

  • Broader implications beyond immediate results
  • Connections to other subfields
  • Honest assessment of when the method does and doesn't work
  • Practical deployment considerations

Do NOT introduce new results or claims in the conclusion.

Step 5.8: Appendix Strategy

Appendices are unlimited at all major venues and are essential for reproducibility. Structure:

Appendix SectionWhat Goes Here
Proofs & DerivationsFull proofs too long for main text. Main text can state theorems with "proof in Appendix A."
Additional ExperimentsAblations, scaling curves, per-dataset breakdowns, hyperparameter sensitivity
Implementation DetailsFull hyperparameter tables, training details, hardware specs, random seeds
Dataset DocumentationData collection process, annotation guidelines, licensing, preprocessing
Prompts & TemplatesExact prompts used (for LLM-based methods), evaluation templates
Human EvaluationAnnotation interface screenshots, instructions given to annotators, IRB details
Additional FiguresPer-task breakdowns, trajectory visualizations, failure case examples

Rules:

  • The main paper must be self-contained — reviewers are not required to read appendices
  • Never put critical evidence only in the appendix
  • Cross-reference: "Full results in Table 5 (Appendix B)" not just "see appendix"
  • Use \appendix command, then \section{A: Proofs} etc.
Page Budget Management

When over the page limit:

Cut StrategySavesRisk
Move proofs to appendix0.5-2 pagesLow — standard practice
Condense related work0.5-1 pageMedium — may miss key citations
Combine tables with subfigures0.25-0.5 pageLow — often improves readability
Use \vspace{-Xpt} sparingly0.1-0.3 pageLow if subtle, high if obvious
Remove qualitative examples0.5-1 pageMedium — reviewers like examples
Reduce figure sizes0.25-0.5 pageHigh — figures must remain readable

Do NOT: reduce font size, change margins, remove required sections (limitations, broader impact), or use \small/\footnotesize for main text.

Writing Style

Sentence-level clarity (Gopen & Swan's 7 Principles):

PrincipleRule
Subject-verb proximityKeep subject and verb close
Stress positionPlace emphasis at sentence ends
Topic positionPut context first, new info after
Old before newFamiliar info → unfamiliar info
One unit, one functionEach paragraph makes one point
Action in verbUse verbs, not nominalizations
Context before newSet stage before presenting

Word choice (Lipton, Steinhardt):

  • Be specific: "accuracy" not "performance"
  • Eliminate hedging: drop "may" unless genuinely uncertain
  • Consistent terminology throughout
  • Avoid incremental vocabulary: "develop", not "combine"

Full writing guide with examples: See references/writing-guide.md

Using LaTeX Templates

Always copy the entire template directory first, then write within it.

Template Setup Checklist:
- [ ] Step 1: Copy entire template directory to new project
- [ ] Step 2: Verify template compiles as-is (before any changes)
- [ ] Step 3: Read the template's example content to understand structure
- [ ] Step 4: Replace example content section by section
- [ ] Step 5: Use template macros (check preamble for \newcommand definitions)
- [ ] Step 6: Clean up template artifacts only at the end

Step 1: Copy the Full Template

bash
cp -r templates/neurips2025/ ~/papers/my-paper/
cd ~/papers/my-paper/
ls -la  # Should see: main.tex, neurips.sty, Makefile, etc.

Copy the ENTIRE directory, not just the .tex file. Templates include style files (.sty), bibliography styles (.bst), example content, and Makefiles.

Step 2: Verify Template Compiles First

Before making ANY changes:

bash
latexmk -pdf main.tex
# Or manual: pdflatex main.tex && bibtex main && pdflatex main.tex && pdflatex main.tex

If the unmodified template doesn't compile, fix that first (usually missing TeX packages — install via tlmgr install <package>).

Step 3: Keep Template Content as Reference

Don't immediately delete example content. Comment it out and use as formatting reference:

latex
% Template example (keep for reference):
% \begin{figure}[t]
%   \centering
%   \includegraphics[width=0.8\linewidth]{example-image}
%   \caption{Template shows caption style}
% \end{figure}

% Your actual figure:
\begin{figure}[t]
  \centering
  \includegraphics[width=0.8\linewidth]{your-figure.pdf}
  \caption{Your caption following the same style.}
\end{figure}

Step 4: Replace Content Section by Section

Work through systematically: title/authors → abstract → introduction → methods → experiments → related work → conclusion → references → appendix. Compile after each section.

Step 5: Use Template Macros

latex
\newcommand{\method}{YourMethodName}  % Consistent method naming
\newcommand{\eg}{e.g.,\xspace}        % Proper abbreviations
\newcommand{\ie}{i.e.,\xspace}
Show full SKILL.md (1,926 more words)Show less
Template Pitfalls
PitfallProblemSolution
Copying only .tex fileMissing .sty, won't compileCopy entire directory
Modifying .sty filesBreaks conference formattingNever edit style files
Adding random packagesConflicts, breaks templateOnly add if necessary
Deleting template content earlyLose formatting referenceKeep as comments until done
Not compiling frequentlyErrors accumulateCompile after each section
Raster PNGs for figuresBlurry in paperAlways use vector PDF via savefig('fig.pdf')
Quick Template Reference
ConferenceMain FileStyle FilePage Limit
NeurIPS 2025main.texneurips.sty9 pages
ICML 2026example_paper.texicml2026.sty8 pages
ICLR 2026iclr2026_conference.texiclr2026_conference.sty9 pages
ACL 2025acl_latex.texacl.sty8 pages (long)
AAAI 2026aaai2026-unified-template.texaaai2026.sty7 pages
COLM 2025colm2025_conference.texcolm2025_conference.sty9 pages

Universal: Double-blind, references don't count, appendices unlimited, LaTeX required.

Templates in templates/ directory. See templates/README.md for compilation setup (VS Code, CLI, Overleaf, other IDEs).

Tables and Figures

Tables — use booktabs for professional formatting:

latex
\usepackage{booktabs}
\begin{tabular}{lcc}
\toprule
Method & Accuracy $\uparrow$ & Latency $\downarrow$ \\
\midrule
Baseline & 85.2 & 45ms \\
\textbf{Ours} & \textbf{92.1} & 38ms \\
\bottomrule
\end{tabular}

Rules:

  • Bold best value per metric
  • Include direction symbols ($\uparrow$ higher better, $\downarrow$ lower better)
  • Right-align numerical columns
  • Consistent decimal precision

Figures:

  • Vector graphics (PDF, EPS) for all plots and diagrams — plt.savefig('fig.pdf')
  • Raster (PNG 600 DPI) only for photographs
  • Colorblind-safe palettes (Okabe-Ito or Paul Tol)
  • Verify grayscale readability (8% of men have color vision deficiency)
  • No title inside figure — the caption serves this function
  • Self-contained captions — reader should understand without main text
Conference Resubmission

For converting between venues, see Phase 7 (Submission Preparation) — it covers the full conversion workflow, page-change table, and post-rejection guidance.

Professional LaTeX Preamble

Add these packages to any paper for professional quality. They are compatible with all major conference style files:

latex
% --- Professional Packages (add after conference style file) ---

% Typography
\usepackage{microtype}              % Microtypographic improvements (protrusion, expansion)
                                     % Makes text noticeably more polished — always include

% Tables
\usepackage{booktabs}               % Professional table rules (\toprule, \midrule, \bottomrule)
\usepackage{siunitx}                % Consistent number formatting, decimal alignment
                                     % Usage: \num{12345} → 12,345; \SI{3.5}{GHz} → 3.5 GHz
                                     % Table alignment: S column type for decimal-aligned numbers

% Figures
\usepackage{graphicx}               % Include graphics (\includegraphics)
\usepackage{subcaption}             % Subfigures with (a), (b), (c) labels
                                     % Usage: \begin{subfigure}{0.48\textwidth} ... \end{subfigure}

% Diagrams and Algorithms
\usepackage{tikz}                   % Programmable vector diagrams
\usetikzlibrary{arrows.meta, positioning, shapes.geometric, calc, fit, backgrounds}
\usepackage[ruled,vlined]{algorithm2e}  % Professional pseudocode
                                     % Alternative: \usepackage{algorithmicx} if template bundles it

% Cross-references
\usepackage{cleveref}               % Smart references: \cref{fig:x} → "Figure 1"
                                     % MUST be loaded AFTER hyperref
                                     % Handles: figures, tables, sections, equations, algorithms

% Math (usually included by conference .sty, but verify)
\usepackage{amsmath,amssymb}        % AMS math environments and symbols
\usepackage{mathtools}              % Extends amsmath (dcases, coloneqq, etc.)

% Colors (for figures and diagrams)
\usepackage{xcolor}                 % Color management
% Okabe-Ito colorblind-safe palette:
\definecolor{okblue}{HTML}{0072B2}
\definecolor{okorange}{HTML}{E69F00}
\definecolor{okgreen}{HTML}{009E73}
\definecolor{okred}{HTML}{D55E00}
\definecolor{okpurple}{HTML}{CC79A7}
\definecolor{okcyan}{HTML}{56B4E9}
\definecolor{okyellow}{HTML}{F0E442}

Notes:

  • microtype is the single highest-impact package for visual quality. It adjusts character spacing at a sub-pixel level. Always include it.
  • siunitx handles decimal alignment in tables via the S column type — eliminates manual spacing.
  • cleveref must be loaded after hyperref. Most conference .sty files load hyperref, so put cleveref last.
  • Check if the conference template already loads any of these (especially algorithm, amsmath, graphicx). Don't double-load.
siunitx Table Alignment

siunitx makes number-heavy tables significantly more readable:

latex
\begin{tabular}{l S[table-format=2.1] S[table-format=2.1] S[table-format=2.1]}
\toprule
Method & {Accuracy $\uparrow$} & {F1 $\uparrow$} & {Latency (ms) $\downarrow$} \\
\midrule
Baseline         & 85.2  & 83.7  & 45.3 \\
Ablation (no X)  & 87.1  & 85.4  & 42.1 \\
\textbf{Ours}    & \textbf{92.1} & \textbf{90.8} & \textbf{38.7} \\
\bottomrule
\end{tabular}

The S column type auto-aligns on the decimal point. Headers in {} escape the alignment.

Subfigures

Standard pattern for side-by-side figures:

latex
\begin{figure}[t]
  \centering
  \begin{subfigure}[b]{0.48\textwidth}
    \centering
    \includegraphics[width=\textwidth]{fig_results_a.pdf}
    \caption{Results on Dataset A.}
    \label{fig:results-a}
  \end{subfigure}
  \hfill
  \begin{subfigure}[b]{0.48\textwidth}
    \centering
    \includegraphics[width=\textwidth]{fig_results_b.pdf}
    \caption{Results on Dataset B.}
    \label{fig:results-b}
  \end{subfigure}
  \caption{Comparison of our method across two datasets. (a) shows the scaling
  behavior and (b) shows the ablation results. Both use 5 random seeds.}
  \label{fig:results}
\end{figure}

Use \cref{fig:results} → "Figure 1", \cref{fig:results-a} → "Figure 1a".

Pseudocode with algorithm2e
latex
\begin{algorithm}[t]
\caption{Iterative Refinement with Judge Panel}
\label{alg:method}
\KwIn{Task $T$, model $M$, judges $J_1 \ldots J_n$, convergence threshold $k$}
\KwOut{Final output $A^*$}
$A \gets M(T)$ \tcp*{Initial generation}
$\text{streak} \gets 0$\;
\While{$\text{streak} < k$}{
  $C \gets \text{Critic}(A, T)$ \tcp*{Identify weaknesses}
  $B \gets M(T, C)$ \tcp*{Revised version addressing critique}
  $AB \gets \text{Synthesize}(A, B)$ \tcp*{Merge best elements}
  \ForEach{judge $J_i$}{
    $\text{rank}_i \gets J_i(\text{shuffle}(A, B, AB))$ \tcp*{Blind ranking}
  }
  $\text{winner} \gets \text{BordaCount}(\text{ranks})$\;
  \eIf{$\text{winner} = A$}{
    $\text{streak} \gets \text{streak} + 1$\;
  }{
    $A \gets \text{winner}$; $\text{streak} \gets 0$\;
  }
}
\Return{$A$}\;
\end{algorithm}
TikZ Diagram Patterns

TikZ is the standard for method diagrams in ML papers. Common patterns:

Pipeline/Flow Diagram (most common in ML papers):

latex
\begin{figure}[t]
\centering
\begin{tikzpicture}[
  node distance=1.8cm,
  box/.style={rectangle, draw, rounded corners, minimum height=1cm, 
              minimum width=2cm, align=center, font=\small},
  arrow/.style={-{Stealth[length=3mm]}, thick},
]
  \node[box, fill=okcyan!20] (input) {Input\\$x$};
  \node[box, fill=okblue!20, right of=input] (encoder) {Encoder\\$f_\theta$};
  \node[box, fill=okgreen!20, right of=encoder] (latent) {Latent\\$z$};
  \node[box, fill=okorange!20, right of=latent] (decoder) {Decoder\\$g_\phi$};
  \node[box, fill=okred!20, right of=decoder] (output) {Output\\$\hat{x}$};
  
  \draw[arrow] (input) -- (encoder);
  \draw[arrow] (encoder) -- (latent);
  \draw[arrow] (latent) -- (decoder);
  \draw[arrow] (decoder) -- (output);
\end{tikzpicture}
\caption{Architecture overview. The encoder maps input $x$ to latent 
representation $z$, which the decoder reconstructs.}
\label{fig:architecture}
\end{figure}

Comparison/Matrix Diagram (for showing method variants):

latex
\begin{tikzpicture}[
  cell/.style={rectangle, draw, minimum width=2.5cm, minimum height=1cm, 
               align=center, font=\small},
  header/.style={cell, fill=gray!20, font=\small\bfseries},
]
  % Headers
  \node[header] at (0, 0) {Method};
  \node[header] at (3, 0) {Converges?};
  \node[header] at (6, 0) {Quality?};
  % Rows
  \node[cell] at (0, -1) {Single Pass};
  \node[cell, fill=okgreen!15] at (3, -1) {N/A};
  \node[cell, fill=okorange!15] at (6, -1) {Baseline};
  \node[cell] at (0, -2) {Critique+Revise};
  \node[cell, fill=okred!15] at (3, -2) {No};
  \node[cell, fill=okred!15] at (6, -2) {Degrades};
  \node[cell] at (0, -3) {Ours};
  \node[cell, fill=okgreen!15] at (3, -3) {Yes ($k$=2)};
  \node[cell, fill=okgreen!15] at (6, -3) {Improves};
\end{tikzpicture}

Iterative Loop Diagram (for methods with feedback):

latex
\begin{tikzpicture}[
  node distance=2cm,
  box/.style={rectangle, draw, rounded corners, minimum height=0.8cm, 
              minimum width=1.8cm, align=center, font=\small},
  arrow/.style={-{Stealth[length=3mm]}, thick},
  label/.style={font=\scriptsize, midway, above},
]
  \node[box, fill=okblue!20] (gen) {Generator};
  \node[box, fill=okred!20, right=2.5cm of gen] (critic) {Critic};
  \node[box, fill=okgreen!20, below=1.5cm of $(gen)!0.5!(critic)$] (judge) {Judge Panel};
  
  \draw[arrow] (gen) -- node[label] {output $A$} (critic);
  \draw[arrow] (critic) -- node[label, right] {critique $C$} (judge);
  \draw[arrow] (judge) -| node[label, left, pos=0.3] {winner} (gen);
\end{tikzpicture}
latexdiff for Revision Tracking

Essential for rebuttals — generates a marked-up PDF showing changes between versions:

bash
# Install
# macOS: brew install latexdiff (or comes with TeX Live)
# Linux: sudo apt install latexdiff

# Generate diff
latexdiff paper_v1.tex paper_v2.tex > paper_diff.tex
pdflatex paper_diff.tex

# For multi-file projects (with \input{} or \include{})
latexdiff --flatten paper_v1.tex paper_v2.tex > paper_diff.tex

This produces a PDF with deletions in red strikethrough and additions in blue — standard format for rebuttal supplements.

SciencePlots for matplotlib

Install and use for publication-quality plots:

bash
pip install SciencePlots
python
import matplotlib.pyplot as plt
import scienceplots  # registers styles

# Use science style (IEEE-like, clean)
with plt.style.context(['science', 'no-latex']):
    fig, ax = plt.subplots(figsize=(3.5, 2.5))  # Single-column width
    ax.plot(x, y, label='Ours', color='#0072B2')
    ax.plot(x, y2, label='Baseline', color='#D55E00', linestyle='--')
    ax.set_xlabel('Training Steps')
    ax.set_ylabel('Accuracy')
    ax.legend()
    fig.savefig('paper/fig_results.pdf', bbox_inches='tight')

# Available styles: 'science', 'ieee', 'nature', 'science+ieee'
# Add 'no-latex' if LaTeX is not installed on the machine generating plots

Standard figure sizes (two-column format):

  • Single column: figsize=(3.5, 2.5) — fits in one column
  • Double column: figsize=(7.0, 3.0) — spans both columns
  • Square: figsize=(3.5, 3.5) — for heatmaps, confusion matrices

Phase 6: Self-Review & Revision

Goal: Simulate the review process before submission. Catch weaknesses early.

Step 6.1: Simulate Reviews

Generate reviews from multiple perspectives using strong models (Opus 4, Sonnet 4.6, Gemini 2.5 Pro). Use the reviewer guidelines from the target venue.

Review prompt template:

You are an expert reviewer for [VENUE]. Review this paper according to the 
official reviewer guidelines. Evaluate:

1. Quality (technical soundness, baselines, claims supported by evidence)
2. Clarity (writing, notation consistency, reproducibility)
3. Significance (impact, importance of the problem)
4. Originality (novelty, new insights)

Provide:
- Summary (2-3 sentences)
- Strengths (bullet list)
- Weaknesses (bullet list, most critical first)
- Questions for authors
- Missing references
- Score (1-6 on NeurIPS scale)
- Confidence (1-5)
Step 6.2: Prioritize Feedback

After collecting reviews, categorize:

PriorityAction
Critical (technical flaw, missing baseline)Must fix. May require new experiments → back to Phase 2
High (clarity issue, missing ablation)Should fix in this revision
Medium (minor writing issues, extra experiments)Fix if time allows
Low (style preferences, tangential suggestions)Note for future work
Step 6.3: Revision Cycle

For each critical/high issue:

  1. Identify the specific section(s) affected
  2. Draft the fix
  3. Verify the fix doesn't break other claims
  4. Update the paper
  5. Re-check against the reviewer's concern
Step 6.4: Rebuttal Writing

When responding to actual reviews (post-submission), rebuttals are a distinct skill from revision:

Format: Point-by-point. For each reviewer concern:

> R1-W1: "The paper lacks comparison with Method X."

We thank the reviewer for this suggestion. We have added a comparison with 
Method X in Table 3 (revised). Our method outperforms X by 3.2pp on [metric] 
(p<0.05). We note that X requires 2x our compute budget.

Rules:

  • Address every concern — reviewers notice if you skip one
  • Lead with the strongest responses
  • Be concise and direct — reviewers read dozens of rebuttals
  • Include new results if you ran experiments during the rebuttal period
  • Never be defensive or dismissive, even of weak criticisms
  • Use latexdiff to generate a marked-up PDF showing changes (see Professional LaTeX Tooling section)
  • Thank reviewers for specific, actionable feedback (not generic praise)

What NOT to do: "We respectfully disagree" without evidence. "This is out of scope" without explanation. Ignoring a weakness by only responding to strengths.

Step 6.5: Paper Evolution Tracking

Save snapshots at key milestones:

paper/
  paper.tex                    # Current working version
  paper_v1_first_draft.tex     # First complete draft
  paper_v2_post_review.tex     # After simulated review
  paper_v3_pre_submission.tex  # Final before submission
  paper_v4_camera_ready.tex    # Post-acceptance final

Phase 7: Submission Preparation

Goal: Final checks, formatting, and submission.

Step 7.1: Conference Checklist

Every venue has mandatory checklists. Complete them carefully — incomplete checklists can result in desk rejection.

See references/checklists.md for:

  • NeurIPS 16-item paper checklist
  • ICML broader impact + reproducibility
  • ICLR LLM disclosure policy
  • ACL mandatory limitations section
  • Universal pre-submission checklist
Step 7.2: Anonymization Checklist

Double-blind review means reviewers cannot know who wrote the paper. Check ALL of these:

Anonymization Checklist:
- [ ] No author names or affiliations anywhere in the PDF
- [ ] No acknowledgments section (add after acceptance)
- [ ] Self-citations written in third person: "Smith et al. [1] showed..." not "We previously showed [1]..."
- [ ] No GitHub/GitLab URLs pointing to your personal repos
- [ ] Use Anonymous GitHub (https://anonymous.4open.science/) for code links
- [ ] No institutional logos or identifiers in figures
- [ ] No file metadata containing author names (check PDF properties)
- [ ] No "our previous work" or "in our earlier paper" phrasing
- [ ] Dataset names don't reveal institution (rename if needed)
- [ ] Supplementary materials don't contain identifying information

Common mistakes: Git commit messages visible in supplementary code, watermarked figures from institutional tools, acknowledgments left in from a previous draft, arXiv preprint posted before anonymity period.

Step 7.3: Formatting Verification
Pre-Submission Format Check:
- [ ] Page limit respected (excluding references and appendix)
- [ ] All figures are vector (PDF) or high-res raster (600 DPI PNG)
- [ ] All figures readable in grayscale
- [ ] All tables use booktabs
- [ ] References compile correctly (no "?" in citations)
- [ ] No overfull hboxes in critical areas
- [ ] Appendix clearly labeled and separated
- [ ] Required sections present (limitations, broader impact, etc.)
Step 7.3: Final Compilation
bash
# Clean build
rm -f *.aux *.bbl *.blg *.log *.out *.pdf
latexmk -pdf main.tex

# Or manual
pdflatex main.tex
bibtex main
pdflatex main.tex
pdflatex main.tex
Step 7.4: Conference-Specific Requirements
VenueSpecial Requirements
NeurIPSPaper checklist in appendix, lay summary if accepted
ICMLBroader Impact Statement (after conclusion, doesn't count toward limit)
ICLRLLM disclosure required, reciprocal reviewing agreement
ACLMandatory Limitations section, Responsible NLP checklist
AAAIStrict style file — no modifications whatsoever
COLMFrame contribution for language model community
Step 7.6: Conference Resubmission & Format Conversion

When converting between venues, never copy LaTeX preambles between templates:

bash
# 1. Start fresh with target template
cp -r templates/icml2026/ new_submission/

# 2. Copy ONLY content sections (not preamble)
#    - Abstract text, section content, figures, tables, bib entries

# 3. Adjust for page limits
# 4. Add venue-specific required sections
# 5. Update references
From → ToPage ChangeKey Adjustments
NeurIPS → ICML9 → 8Cut 1 page, add Broader Impact
ICML → ICLR8 → 9Expand experiments, add LLM disclosure
NeurIPS → ACL9 → 8Restructure for NLP conventions, add Limitations
ICLR → AAAI9 → 7Significant cuts, strict style adherence
Any → COLMvaries → 9Reframe for language model focus

When cutting pages: move proofs to appendix, condense related work, combine tables, use subfigures. When expanding: add ablations, expand limitations, include additional baselines, add qualitative examples.

After rejection: Address reviewer concerns in the new version, but don't include a "changes" section or reference the previous submission (blind review).

Step 7.7: Camera-Ready Preparation (Post-Acceptance)

After acceptance, prepare the camera-ready version:

Camera-Ready Checklist:
- [ ] De-anonymize: add author names, affiliations, email addresses
- [ ] Add Acknowledgments section (funding, compute grants, helpful reviewers)
- [ ] Add public code/data URL (real GitHub, not anonymous)
- [ ] Address any mandatory revisions from meta-reviewer
- [ ] Switch template to camera-ready mode (if applicable — e.g., AAAI \anon → \camera)
- [ ] Add copyright notice if required by venue
- [ ] Update any "anonymous" placeholders in text
- [ ] Verify final PDF compiles cleanly
- [ ] Check page limit for camera-ready (sometimes differs from submission)
- [ ] Upload supplementary materials (code, data, appendix) to venue portal

Hermes Agent Integration

This skill is designed for the Hermes agent. It uses Hermes tools, delegation, scheduling, and memory for the full research lifecycle.

Compose this skill with other Hermes skills for specific phases:

SkillWhen to UseHow to Load
arxivPhase 1 (Literature Review): searching arXiv, generating BibTeX, finding related papers via Semantic Scholarskill_view("arxiv")
subagent-driven-developmentPhase 5 (Drafting): parallel section writing with 2-stage review (spec compliance then quality)skill_view("subagent-driven-development")
planPhase 0 (Setup): creating structured plans before execution. Writes to .hermes/plans/skill_view("plan")
qmdPhase 1 (Literature): searching local knowledge bases (notes, transcripts, docs) via hybrid BM25+vector searchInstall: skill_manage("install", "qmd")
diagrammingPhase 4-5: creating Excalidraw-based figures and architecture diagramsskill_view("diagramming")
data-sciencePhase 4 (Analysis): Jupyter live kernel for interactive analysis and visualizationskill_view("data-science")

This skill supersedes ml-paper-writing — it contains all of ml-paper-writing's content plus the full experiment/analysis pipeline and autoreason methodology.

Hermes Tools Reference
ToolUsage in This Pipeline
terminalLaTeX compilation (latexmk -pdf), git operations, launching experiments (nohup python run.py &), process checks
processBackground experiment management: process("start", ...), process("poll", pid), process("log", pid), process("kill", pid)
execute_codeRun Python for citation verification, statistical analysis, data aggregation. Has tool access via RPC.
read_file / write_file / patchPaper editing, experiment scripts, result files. Use patch for targeted edits to large .tex files.
web_searchLiterature discovery: web_search("transformer attention mechanism 2024")
web_extractFetch paper content, verify citations: web_extract("https://arxiv.org/abs/2303.17651")
delegate_taskParallel section drafting — spawn isolated subagents for each section. Also for concurrent citation verification.
todoPrimary state tracker across sessions. Update after every phase transition.
memoryPersist key decisions across sessions: contribution framing, venue choice, reviewer feedback.
cronjobSchedule experiment monitoring, deadline countdowns, automated arXiv checks.
clarifyAsk the user targeted questions when blocked (venue choice, contribution framing).
send_messageNotify user when experiments complete or drafts are ready, even if user isn't in chat.
Tool Usage Patterns

Experiment monitoring (most common):

terminal("ps aux | grep <pattern>")
→ terminal("tail -30 <logfile>")
→ terminal("ls results/")
→ execute_code("analyze results JSON, compute metrics")
→ terminal("git add -A && git commit -m '<descriptive message>' && git push")
→ send_message("Experiment complete: <summary>")

Parallel section drafting (using delegation):

delegate_task("Draft the Methods section based on these experiment scripts and configs. 
  Include: pseudocode, all hyperparameters, architectural details sufficient for 
  reproduction. Write in LaTeX using the neurips2025 template conventions.")

delegate_task("Draft the Related Work section. Use web_search and web_extract to 
  find papers. Verify every citation via Semantic Scholar. Group by methodology.")

delegate_task("Draft the Experiments section. Read all result files in results/. 
  State which claim each experiment supports. Include error bars and significance.")

Each delegate runs as a fresh subagent with no shared context — provide all necessary information in the prompt. Collect outputs and integrate.

Citation verification (using execute_code):

python
# In execute_code:
from semanticscholar import SemanticScholar
import requests

sch = SemanticScholar()
results = sch.search_paper("attention mechanism transformers", limit=5)
for paper in results:
    doi = paper.externalIds.get('DOI', 'N/A')
    if doi != 'N/A':
        bibtex = requests.get(f"https://doi.org/{doi}", 
                              headers={"Accept": "application/x-bibtex"}).text
        print(bibtex)
State Management with memory and todo

memory tool — persist key decisions (bounded: ~2200 chars for MEMORY.md):

memory("add", "Paper: autoreason. Venue: NeurIPS 2025 (9 pages). 
  Contribution: structured refinement works when generation-evaluation gap is wide.
  Key results: Haiku 42/42, Sonnet 3/5, S4.6 constrained 2/3.
  Status: Phase 5 — drafting Methods section.")

Update memory after major decisions or phase transitions. This persists across sessions.

todo tool — track granular progress:

todo("add", "Design constrained task experiments for Sonnet 4.6")
todo("add", "Run Haiku baseline comparison")
todo("add", "Draft Methods section")
todo("update", id=3, status="in_progress")
todo("update", id=1, status="completed")

Session startup protocol:

1. todo("list")                           # Check current task list
2. memory("read")                         # Recall key decisions
3. terminal("git log --oneline -10")      # Check recent commits
4. terminal("ps aux | grep python")       # Check running experiments
5. terminal("ls results/ | tail -20")     # Check for new results
6. Report status to user, ask for direction
Cron Monitoring with cronjob

Use the cronjob tool to schedule periodic experiment checks:

cronjob("create", {
  "schedule": "*/30 * * * *",  # Every 30 minutes
  "prompt": "Check experiment status:
    1. ps aux | grep run_experiment
    2. tail -30 logs/experiment_haiku.log
    3. ls results/haiku_baselines/
    4. If complete: read results, compute Borda scores, 
       git add -A && git commit -m 'Add Haiku results' && git push
    5. Report: table of results, key finding, next step
    6. If nothing changed: respond with [SILENT]"
})

[SILENT] protocol: When nothing has changed since the last check, respond with exactly [SILENT]. This suppresses notification delivery to the user. Only report when there are genuine changes worth knowing about.

Deadline tracking:

cronjob("create", {
  "schedule": "0 9 * * *",  # Daily at 9am
  "prompt": "NeurIPS 2025 deadline: May 22. Today is {date}. 
    Days remaining: {compute}. 
    Check todo list — are we on track? 
    If <7 days: warn user about remaining tasks."
})
Communication Patterns

When to notify the user (via send_message or direct response):

  • Experiment batch completed (with results table)
  • Unexpected finding or failure requiring decision
  • Draft section ready for review
  • Deadline approaching with incomplete tasks

When NOT to notify:

  • Experiment still running, no new results → [SILENT]
  • Routine monitoring with no changes → [SILENT]
  • Intermediate steps that don't need attention

Report format — always include structured data:

## Experiment: <name>
Status: Complete / Running / Failed

| Task | Method A | Method B | Method C |
|------|---------|---------|---------|
| Task 1 | 85.2 | 82.1 | **89.4** |

Key finding: <one sentence>
Next step: <what happens next>
Decision Points Requiring Human Input

Use clarify for targeted questions when genuinely blocked:

DecisionWhen to Ask
Target venueBefore starting paper (affects page limits, framing)
Contribution framingWhen multiple valid framings exist
Experiment priorityWhen TODO list has more experiments than time allows
Submission readinessBefore final submission

Do NOT ask about (be proactive, make a choice, flag it):

  • Word choice, section ordering
  • Which specific results to highlight
  • Citation completeness (draft with what you find, note gaps)

Reviewer Evaluation Criteria

Understanding what reviewers look for helps focus effort:

CriterionWhat They Check
QualityTechnical soundness, well-supported claims, fair baselines
ClarityClear writing, reproducible by experts, consistent notation
SignificanceCommunity impact, advances understanding
OriginalityNew insights (doesn't require new method)

Scoring (NeurIPS 6-point scale):

  • 6: Strong Accept — groundbreaking, flawless
  • 5: Accept — technically solid, high impact
  • 4: Borderline Accept — solid, limited evaluation
  • 3: Borderline Reject — weaknesses outweigh
  • 2: Reject — technical flaws
  • 1: Strong Reject — known results or ethics issues

See references/reviewer-guidelines.md for detailed guidelines, common concerns, and rebuttal strategies.


Common Issues and Solutions

IssueSolution
Abstract too genericDelete first sentence if it could prepend any ML paper. Start with your specific contribution.
Introduction exceeds 1.5 pagesSplit background into Related Work. Front-load contribution bullets.
Experiments lack explicit claimsAdd: "This experiment tests whether [specific claim]..." before each one.
Reviewers find paper hard to followAdd signposting, use consistent terminology, make figure captions self-contained.
Missing statistical significanceAdd error bars, number of runs, statistical tests, confidence intervals.
Scope creep in experimentsEvery experiment must map to a specific claim. Cut experiments that don't.
Paper rejected, need to resubmitSee Conference Resubmission in Phase 7. Address reviewer concerns without referencing reviews.

Reference Documents

DocumentContents
references/writing-guide.mdGopen & Swan 7 principles, Perez micro-tips, Lipton word choice, Steinhardt precision, figure design
references/citation-workflow.mdCitation APIs, Python code, CitationManager class, BibTeX management
references/checklists.mdNeurIPS 16-item, ICML, ICLR, ACL requirements, universal pre-submission checklist
references/reviewer-guidelines.mdEvaluation criteria, scoring, common concerns, rebuttal template
references/sources.mdComplete bibliography of all writing guides, conference guidelines, APIs
references/experiment-patterns.mdExperiment design patterns, evaluation protocols, monitoring, error recovery
references/autoreason-methodology.mdAutoreason loop, strategy selection, model guide, prompts, scope constraints, Borda scoring
LaTeX Templates

Templates in templates/ for: NeurIPS 2025, ICML 2026, ICLR 2026, ACL, AAAI 2026, COLM 2025.

See templates/README.md for compilation instructions.

Key External Sources

Writing Philosophy:

APIs: Semantic Scholar | CrossRef | arXiv

Venues: NeurIPS | ICML | ICLR | ACL

© RedWoodOG, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 56 other files (references) in skills/research/research-paper-writing of RedWoodOG/Hermes-Desktop.

  • SKILL.md
  • references/autoreason-methodology.md
  • references/checklists.md
  • references/citation-workflow.md
  • references/experiment-patterns.md
  • references/reviewer-guidelines.md
  • references/sources.md
  • references/writing-guide.md
  • templates/README.md
  • templates/aaai2026/README.md
  • templates/aaai2026/aaai2026-unified-supp.tex
  • templates/aaai2026/aaai2026-unified-template.tex
  • templates/aaai2026/aaai2026.bib
  • templates/aaai2026/aaai2026.bst
  • templates/aaai2026/aaai2026.sty
  • templates/acl/README.md
  • templates/acl/acl.sty
  • … and 40 more

Open the folder on GitHubat commit be46b39

Used in 6 other repositories

We found 7 copies of this SKILL.md (exact, near-identical or edited) in other folders, from 6 other GitHub owners. This page covers the copy in RedWoodOG/Hermes-Desktop, which our catalogue first saw on October 7, 2026.

Compare with similar skills

Research Paper Writing 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.

Research Paper Writing compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Research Paper Writing this skillRedWoodOG/Hermes-Desktop1776 repos~16kAutomated safety check: NotesMIT
Academic Writingwentorai/Research-Claw858—~896Automated safety check: PassCustom licence
Academic Paper Writing PipelineImbad0202/academic-research-skills51k—~16kAutomated safety check: PassCustom licence
Academic Research Suite for CodexImbad0202/academic-research-skills-codex12k—~12kAutomated safety check: PassCustom licence
Autonomous Researchfedericodeponte/opendraft507—~8.2kAutomated safety check: PassApache-2.0
Manuscript Writing Reviewlabarba/sciwrite852—~2.4kAutomated safety check: PassCC-BY-4.0

Similar skills

  • Academic Writing

    wentorai/Research-Claw

    Academic writing expert specializing in scholarly papers, literature reviews, research methodology, and thesis writing with strict academic standards.

    858 GitHub stars~896 tokensUpdated 1 mo ago
    Research & ScienceAuto-check passed
  • Academic Paper Writing Pipeline

    Imbad0202/academic-research-skills

    Runs a 12-agent pipeline that plans, drafts, cites, reviews and formats academic papers, with modes for revision, rebuttals, abstracts and citation checks.

    51k GitHub stars~16k tokensUpdated yesterday
    Research & ScienceAuto-check passed
  • Academic Research Suite for Codex

    Imbad0202/academic-research-skills-codex

    A router skill that sends academic work such as literature reviews, drafting, citation checks, peer review and revision to the right workflow in the ARS suite.

    12k GitHub stars~12k tokensUpdated 7 days ago
    Research & ScienceAuto-check passed
  • Autonomous Research

    federicodeponte/opendraft

    An 18-agent pipeline that turns one topic line into a drafted research paper, literature review, or thesis chapter.

    507 GitHub stars~8.2k tokensUpdated 9 days ago
    Research & ScienceAuto-check passed
  • A skill your agent uses when asked to review, edit, or improve the writing quality of a scientific or engineering manuscript.

    852 GitHub stars~2.4k tokensUpdated 2 mo ago
    Research & ScienceAuto-check passed
  • Social Science Paper Writing

    fakerqwq/social-science-paper-writing-skill

    Helps draft, diagnose, review and revise social science papers, from topic and research question to literature review, citation risks and pre-submission checks.

    382 GitHub stars~7k tokensUpdated 4 mo ago
    Research & ScienceAuto-check passed

More from RedWoodOG/Hermes-Desktop

All 62 skills in this repo
  • Excalidraw

    RedWoodOG/Hermes-Desktop

    Create hand-drawn style diagrams using Excalidraw JSON format.

    177 GitHub starsUsed in 5 repos~1.8k tokens
    Auto-check passed
  • Obliteratus

    RedWoodOG/Hermes-Desktop

    Remove refusal behaviors from open-weight LLMs using OBLITERATUS — mechanistic interpretability techniques (diff-in-means, SVD, whitened SVD, LEACE, SAE decomposition, etc.) to excise guardrails…

    177 GitHub starsUsed in 5 repos~3.8k tokens
    Auto-check passed
  • Ascii Video

    RedWoodOG/Hermes-Desktop

    Production pipeline for ASCII art video — any format. An agent skill from RedWoodOG/Hermes-Desktop.

    177 GitHub starsUsed in 2 repos~3.2k tokens
    Auto-check passed
  • Systematic Debugging

    RedWoodOG/Hermes-Desktop

    A skill your agent uses when encountering any bug, test failure, or unexpected behavior.

    177 GitHub starsUsed in 6 repos~2.6k tokens
    Auto-check passed
  • Test Driven Development

    RedWoodOG/Hermes-Desktop

    A skill your agent uses when implementing any feature or bugfix, before writing implementation code.

    177 GitHub starsUsed in 6 repos~2.4k tokens
    Auto-check passed
  • Claude Code

    RedWoodOG/Hermes-Desktop

    Delegate coding tasks to Claude Code (Anthropic's CLI agent).

    177 GitHub starsUsed in 4 repos~784 tokens
    Auto-check passed

Questions about Research Paper Writing

What does Research Paper Writing do?

End-to-end pipeline for writing ML/AI research papers — from experiment design through analysis, drafting, revision, and submission. Research Paper Writing is an agent skill from RedWoodOG/Hermes-Desktop. End-to-end pipeline for writing ML/AI research papers — from experiment design through analysis, drafting, revision, and submission.

When should I use Research Paper Writing?

Research Paper Writing fits situations like: tasks that involve Experimental design; tasks that involve Citation management; tasks that involve Statistics.

How do I install Research Paper Writing in Claude Code?

Run `npx skills add RedWoodOG/Hermes-Desktop --skill research-paper-writing -a claude-code`. Or copy the skill folder (skills/research/research-paper-writing in RedWoodOG/Hermes-Desktop) into .claude/skills/research-paper-writing in your project. Claude Code loads it when a task matches its description.

How do I install Research Paper Writing in Codex?

Run `npx skills add RedWoodOG/Hermes-Desktop --skill research-paper-writing -a codex`. Or copy the skill folder (skills/research/research-paper-writing in RedWoodOG/Hermes-Desktop) into .agents/skills/research-paper-writing in your project. Codex loads it when a task matches its description.

Can I use Research Paper Writing in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add RedWoodOG/Hermes-Desktop --skill research-paper-writing -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/research-paper-writing, .gemini/skills/research-paper-writing, .github/skills/research-paper-writing and .opencode/skills/research-paper-writing in your project.

What does Research Paper Writing need to run?

Going by SKILL.md and its folder, Research Paper Writing needs the command-line tools its instructions call (git, python, claude and pip). Our summary lists: Python 3; Node.js.

Does Research Paper Writing access the network?

SKILL.md names 15 domains. In commands or code: arxiv.org, doi.org and mcp.exa.ai; the agent is likely to contact these when it follows the instructions. As links in the text: alignmentforum.org, sebastianfarquhar.com, cseweb.ucsd.edu, approximatelycorrect.com, ethanperez.net, api.semanticscholar.org, crossref.org, info.arxiv.org, neurips.cc, icml.cc, iclr.cc and github.com. This is read from the text; nothing was executed.

Is Research Paper Writing safe to install?

Our automated static check of SKILL.md found notes only (runs commands with sudo), nothing it rates as a warning. It is not a guarantee. Review the folder before installing.

What licence does Research Paper Writing use?

Research Paper Writing is published under the MIT licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Research Paper Writing use?

About 16k tokens (SKILL.md is roughly 65k 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 28k tokens, read only when the agent opens those files.

What are the alternatives to Research Paper Writing?

Skills that share tags, products or a category with Research Paper Writing: Academic Writing (wentorai/Research-Claw, 858 stars), Academic Paper Writing Pipeline (Imbad0202/academic-research-skills, 51k stars), Academic Research Suite for Codex (Imbad0202/academic-research-skills-codex, 12k stars) and Autonomous Research (federicodeponte/opendraft, 507 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Research Paper Writing?

RedWoodOG (a GitHub user) maintains it in RedWoodOG/Hermes-Desktop, which has 177 GitHub stars. The repository holds 62 skills in this directory. The repository was last updated on May 30, 2026.

Source: RedWoodOG/Hermes-Desktop on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.