SKILL.md
SKILL.mdBrowse 56 files
16,698 tokens
72,164 bytes
Token encoding: o200k_base
Snapshot 24fd22b
1---2name: research-paper-writing3title: Research Paper Writing Pipeline4description: "Write ML papers for NeurIPS/ICML/ICLR: design→submit."5version: 1.1.06author: Orchestra Research7license: MIT8dependencies: [semanticscholar, arxiv, habanero, requests, scipy, numpy, matplotlib, SciencePlots]9platforms: [linux, macos]10metadata:11 hermes:12 tags: [Research, Paper Writing, Experiments, ML, AI, NeurIPS, ICML, ICLR, ACL, AAAI, COLM, LaTeX, Citations, Statistical Analysis]13 category: research14 related_skills: [arxiv, subagent-driven-development]15 requires_toolsets: [terminal, files]16 17---18 19# Research Paper Writing Pipeline20 21End-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.22 23This 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.24 25<!-- ascii-guard-ignore -->26```27┌─────────────────────────────────────────────────────────────┐28│ RESEARCH PAPER PIPELINE │29│ │30│ Phase 0: Project Setup ──► Phase 1: Literature Review │31│ │ │ │32│ ▼ ▼ │33│ Phase 2: Experiment Phase 5: Paper Drafting ◄──┐ │34│ Design │ │ │35│ │ ▼ │ │36│ ▼ Phase 6: Self-Review │ │37│ Phase 3: Execution & & Revision ──────────┘ │38│ Monitoring │ │39│ │ ▼ │40│ ▼ Phase 7: Submission │41│ Phase 4: Analysis ─────► (feeds back to Phase 2 or 5) │42│ │43└─────────────────────────────────────────────────────────────┘44```45<!-- ascii-guard-ignore-end -->46 47---48 49## When To Use This Skill50 51Use this skill when:52- **Starting a new research paper** from an existing codebase or idea53- **Designing and running experiments** to support paper claims54- **Writing or revising** any section of a research paper55- **Preparing for submission** to a specific conference or workshop56- **Responding to reviews** with additional experiments or revisions57- **Converting** a paper between conference formats58- **Writing non-empirical papers** — theory, survey, benchmark, or position papers (see [Paper Types Beyond Empirical ML](#paper-types-beyond-empirical-ml))59- **Designing human evaluations** for NLP, HCI, or alignment research60- **Preparing post-acceptance deliverables** — posters, talks, code releases61 62## Core Philosophy63 641. **Be proactive.** Deliver complete drafts, not questions. Scientists are busy — produce something concrete they can react to, then iterate.652. **Never hallucinate citations.** AI-generated citations have ~40% error rate. Always fetch programmatically. Mark unverifiable citations as `[CITATION NEEDED]`.663. **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.674. **Experiments serve claims.** Every experiment must explicitly state which claim it supports. Never run experiments that don't connect to the paper's narrative.685. **Commit early, commit often.** Every completed experiment batch, every paper draft update — commit with descriptive messages. Git log is the experiment history.69 70### Proactivity and Collaboration71 72**Default: Be proactive. Draft first, ask with the draft.**73 74| Confidence Level | Action |75|-----------------|--------|76| **High** (clear repo, obvious contribution) | Write full draft, deliver, iterate on feedback |77| **Medium** (some ambiguity) | Write draft with flagged uncertainties, continue |78| **Low** (major unknowns) | Ask 1-2 targeted questions via `clarify`, then draft |79 80| Section | Draft Autonomously? | Flag With Draft |81|---------|-------------------|-----------------|82| Abstract | Yes | "Framed contribution as X — adjust if needed" |83| Introduction | Yes | "Emphasized problem Y — correct if wrong" |84| Methods | Yes | "Included details A, B, C — add missing pieces" |85| Experiments | Yes | "Highlighted results 1, 2, 3 — reorder if needed" |86| Related Work | Yes | "Cited papers X, Y, Z — add any I missed" |87 88**Block for input only when**: target venue unclear, multiple contradictory framings, results seem incomplete, explicit request to review first.89 90---91 92## Phase 0: Project Setup93 94**Goal**: Establish the workspace, understand existing work, identify the contribution.95 96### Step 0.1: Explore the Repository97 98```bash99# Understand project structure100ls -la101find . -name "*.py" | head -30102find . -name "*.md" -o -name "*.txt" | xargs grep -l -i "result\|conclusion\|finding"103```104 105Look for:106- `README.md` — project overview and claims107- `results/`, `outputs/`, `experiments/` — existing findings108- `configs/` — experimental settings109- `.bib` files — existing citations110- Draft documents or notes111 112### Step 0.2: Organize the Workspace113 114Establish a consistent workspace structure:115 116```117workspace/118 paper/ # LaTeX source, figures, compiled PDFs119 experiments/ # Experiment runner scripts120 code/ # Core method implementation121 results/ # Raw experiment results (auto-generated)122 tasks/ # Task/benchmark definitions123 human_eval/ # Human evaluation materials (if needed)124```125 126### Step 0.3: Set Up Version Control127 128```bash129git init # if not already130git remote add origin <repo-url>131git checkout -b paper-draft # or main132```133 134**Git discipline**: Every completed experiment batch gets committed with a descriptive message. Example:135```136Add Monte Carlo constrained results (5 runs, Sonnet 4.6, policy memo task)137Add Haiku baseline comparison: autoreason vs refinement baselines at cheap model tier138```139 140### Step 0.4: Identify the Contribution141 142Before writing anything, articulate:143- **The What**: What is the single thing this paper contributes?144- **The Why**: What evidence supports it?145- **The So What**: Why should readers care?146 147> 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?"148 149### Step 0.5: Create a TODO List150 151Use the `todo` tool to create a structured project plan:152 153```154Research Paper TODO:155- [ ] Define one-sentence contribution156- [ ] Literature review (related work + baselines)157- [ ] Design core experiments158- [ ] Run experiments159- [ ] Analyze results160- [ ] Write first draft161- [ ] Self-review (simulate reviewers)162- [ ] Revise based on review163- [ ] Submission prep164```165 166Update this throughout the project. It serves as the persistent state across sessions.167 168### Step 0.6: Estimate Compute Budget169 170Before running experiments, estimate total cost and time:171 172```173Compute Budget Checklist:174- [ ] API costs: (model price per token) × (estimated tokens per run) × (number of runs)175- [ ] GPU hours: (time per experiment) × (number of experiments) × (number of seeds)176- [ ] Human evaluation costs: (annotators) × (hours) × (hourly rate)177- [ ] Total budget ceiling and contingency (add 30-50% for reruns)178```179 180Track actual spend as experiments run:181```python182# Simple cost tracker pattern183import json, os184from datetime import datetime185 186COST_LOG = "results/cost_log.jsonl"187 188def log_cost(experiment: str, model: str, input_tokens: int, output_tokens: int, cost_usd: float):189 entry = {190 "timestamp": datetime.now().isoformat(),191 "experiment": experiment,192 "model": model,193 "input_tokens": input_tokens,194 "output_tokens": output_tokens,195 "cost_usd": cost_usd,196 }197 with open(COST_LOG, "a") as f:198 f.write(json.dumps(entry) + "\n")199```200 201**When budget is tight**: Run pilot experiments (1-2 seeds, subset of tasks) before committing to full sweeps. Use cheaper models for debugging pipelines, then switch to target models for final runs.202 203### Step 0.7: Multi-Author Coordination204 205Most papers have 3-10 authors. Establish workflows early:206 207| Workflow | Tool | When to Use |208|----------|------|-------------|209| **Overleaf** | Browser-based | Multiple authors editing simultaneously, no git experience |210| **Git + LaTeX** | `git` with `.gitignore` for aux files | Technical teams, need branch-based review |211| **Overleaf + Git sync** | Overleaf premium | Best of both — live collab with version history |212 213**Section ownership**: Assign each section to one primary author. Others comment but don't edit directly. Prevents merge conflicts and style inconsistency.214 215```216Author Coordination Checklist:217- [ ] Agree on section ownership (who writes what)218- [ ] Set up shared workspace (Overleaf or git repo)219- [ ] Establish notation conventions (before anyone writes)220- [ ] Schedule internal review rounds (not just at the end)221- [ ] Designate one person for final formatting pass222- [ ] Agree on figure style (colors, fonts, sizes) before creating figures223```224 225**LaTeX conventions to agree on early**:226- `\method{}` macro for consistent method naming227- Citation style: `\citet{}` vs `\citep{}` usage228- Math notation: lowercase bold for vectors, uppercase bold for matrices, etc.229- British vs American spelling230 231---232 233## Phase 1: Literature Review234 235**Goal**: Find related work, identify baselines, gather citations.236 237### Step 1.1: Identify Seed Papers238 239Start from papers already referenced in the codebase:240 241```bash242# Via terminal:243grep -r "arxiv\|doi\|cite" --include="*.md" --include="*.bib" --include="*.py"244find . -name "*.bib"245```246 247### Step 1.2: Search for Related Work248 249**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.250 251Use `web_search` for broad discovery, `web_extract` for fetching specific papers:252 253```254# Via web_search:255web_search("[main technique] + [application domain] site:arxiv.org")256web_search("[baseline method] comparison ICML NeurIPS 2024")257 258# Via web_extract (for specific papers):259web_extract("https://arxiv.org/abs/2303.17651")260```261 262Additional search queries to try:263 264```265Search queries:266- "[main technique] + [application domain]"267- "[baseline method] comparison"268- "[problem name] state-of-the-art"269- Author names from existing citations270```271 272**Recommended**: Install **Exa MCP** for real-time academic search:273```bash274claude mcp add exa -- npx -y mcp-remote "https://mcp.exa.ai/mcp"275```276 277### Step 1.2b: Deepen the Search (Breadth-First, Then Depth)278 279A flat search (one round of queries) typically misses important related work. Use an iterative **breadth-then-depth** pattern inspired by deep research pipelines:280 281```282Iterative Literature Search:283 284Round 1 (Breadth): 4-6 parallel queries covering different angles285 - "[method] + [domain]"286 - "[problem name] state-of-the-art 2024 2025"287 - "[baseline method] comparison"288 - "[alternative approach] vs [your approach]"289 → Collect papers, extract key concepts and terminology290 291Round 2 (Depth): Generate follow-up queries from Round 1 learnings292 - New terminology discovered in Round 1 papers293 - Papers cited by the most relevant Round 1 results294 - Contradictory findings that need investigation295 → Collect papers, identify remaining gaps296 297Round 3 (Targeted): Fill specific gaps298 - Missing baselines identified in Rounds 1-2299 - Concurrent work (last 6 months, same problem)300 - Key negative results or failed approaches301 → Stop when new queries return mostly papers you've already seen302```303 304**When to stop**: If a round returns >80% papers already in your collection, the search is saturated. Typically 2-3 rounds suffice. For survey papers, expect 4-5 rounds.305 306**For agent-based workflows**: Delegate each round's queries in parallel via `delegate_task`. Collect results, deduplicate, then generate the next round's queries from the combined learnings.307 308### Step 1.3: Verify Every Citation309 310**NEVER generate BibTeX from memory. ALWAYS fetch programmatically.**311 312For each citation, follow the mandatory 5-step process:313 314```315Citation Verification (MANDATORY per citation):3161. SEARCH → Query Semantic Scholar or Exa MCP with specific keywords3172. VERIFY → Confirm paper exists in 2+ sources (Semantic Scholar + arXiv/CrossRef)3183. RETRIEVE → Get BibTeX via DOI content negotiation (programmatically, not from memory)3194. VALIDATE → Confirm the claim you're citing actually appears in the paper3205. ADD → Add verified BibTeX to bibliography321If ANY step fails → mark as [CITATION NEEDED], inform scientist322```323 324```python325# Fetch BibTeX via DOI326import requests327 328def doi_to_bibtex(doi: str) -> str:329 response = requests.get(330 f"https://doi.org/{doi}",331 headers={"Accept": "application/x-bibtex"}332 )333 response.raise_for_status()334 return response.text335```336 337If you cannot verify a citation:338 339```latex340\cite{PLACEHOLDER_author2024_verify_this} % TODO: Verify this citation exists341```342 343**Always tell the scientist**: "I've marked [X] citations as placeholders that need verification."344 345See [references/citation-workflow.md](references/citation-workflow.md) for complete API documentation and the full `CitationManager` class.346 347### Step 1.4: Organize Related Work348 349Group papers by methodology, not paper-by-paper:350 351**Good**: "One line of work uses X's assumption [refs] whereas we use Y's assumption because..."352**Bad**: "Smith et al. introduced X. Jones et al. introduced Y. We combine both."353 354---355 356## Phase 2: Experiment Design357 358**Goal**: Design experiments that directly support paper claims. Every experiment must answer a specific question.359 360### Step 2.1: Map Claims to Experiments361 362Create an explicit mapping:363 364| Claim | Experiment | Expected Evidence |365|-------|-----------|-------------------|366| "Our method outperforms baselines" | Main comparison (Table 1) | Win rate, statistical significance |367| "Effect is larger for weaker models" | Model scaling study | Monotonic improvement curve |368| "Convergence requires scope constraints" | Constrained vs unconstrained | Convergence rate comparison |369 370**Rule**: If an experiment doesn't map to a claim, don't run it.371 372### Step 2.2: Design Baselines373 374Strong baselines are what separates accepted papers from rejected ones. Reviewers will ask: "Did they compare against X?"375 376Standard baseline categories:377- **Naive baseline**: Simplest possible approach378- **Strong baseline**: Best known existing method379- **Ablation baselines**: Your method minus one component380- **Compute-matched baselines**: Same compute budget, different allocation381 382### Step 2.3: Define Evaluation Protocol383 384Before running anything, specify:385- **Metrics**: What you're measuring, direction symbols (higher/lower better)386- **Aggregation**: How results are combined across runs/tasks387- **Statistical tests**: What tests will establish significance388- **Sample sizes**: How many runs/problems/tasks389 390### Step 2.4: Write Experiment Scripts391 392Follow these patterns from successful research pipelines:393 394**Incremental saving** — save results after each step for crash recovery:395```python396# Save after each problem/task397result_path = f"results/{task}/{strategy}/result.json"398if os.path.exists(result_path):399 continue # Skip already-completed work400# ... run experiment ...401with open(result_path, 'w') as f:402 json.dump(result, f, indent=2)403```404 405**Artifact preservation** — save all intermediate outputs:406```407results/<experiment>/408 <task>/409 <strategy>/410 final_output.md # Final result411 history.json # Full trajectory412 pass_01/ # Per-iteration artifacts413 version_a.md414 version_b.md415 critic.md416```417 418**Separation of concerns** — keep generation, evaluation, and visualization separate:419```420run_experiment.py # Core experiment runner421run_baselines.py # Baseline comparison422run_comparison_judge.py # Blind evaluation423analyze_results.py # Statistical analysis424make_charts.py # Visualization425```426 427See [references/experiment-patterns.md](references/experiment-patterns.md) for complete design patterns, cron monitoring, and error recovery.428 429### Step 2.5: Design Human Evaluation (If Applicable)430 431Many NLP, HCI, and alignment papers require human evaluation as primary or complementary evidence. Design this before running automated experiments — human eval often has longer lead times (IRB approval, annotator recruitment).432 433**When human evaluation is needed:**434- Automated metrics don't capture what you care about (fluency, helpfulness, safety)435- Your contribution is about human-facing qualities (readability, preference, trust)436- Reviewers at NLP venues (ACL, EMNLP) expect it for generation tasks437 438**Key design decisions:**439 440| Decision | Options | Guidance |441|----------|---------|----------|442| **Annotator type** | Expert, crowdworker, end-user | Match to what your claims require |443| **Scale** | Likert (1-5), pairwise comparison, ranking | Pairwise is more reliable than Likert for LLM outputs |444| **Sample size** | Per annotator and total items | Power analysis or minimum 100 items, 3+ annotators |445| **Agreement metric** | Cohen's kappa, Krippendorff's alpha, ICC | Krippendorff's alpha for >2 annotators; report raw agreement too |446| **Platform** | Prolific, MTurk, internal team | Prolific for quality; MTurk for scale; internal for domain expertise |447 448**Annotation guideline checklist:**449```450- [ ] Clear task description with examples (good AND bad)451- [ ] Decision criteria for ambiguous cases452- [ ] At least 2 worked examples per category453- [ ] Attention checks / gold standard items (10-15% of total)454- [ ] Qualification task or screening round455- [ ] Estimated time per item and fair compensation (>= local minimum wage)456- [ ] IRB/ethics review if required by your institution457```458 459**Reporting requirements** (reviewers check all of these):460- Number of annotators and their qualifications461- Inter-annotator agreement with specific metric and value462- Compensation details (amount, estimated hourly rate)463- Annotation interface description or screenshot (appendix)464- Total annotation time465 466See [references/human-evaluation.md](references/human-evaluation.md) for complete guide including statistical tests for human eval data, crowdsourcing quality control patterns, and IRB guidance.467 468---469 470## Phase 3: Experiment Execution & Monitoring471 472**Goal**: Run experiments reliably, monitor progress, recover from failures.473 474### Step 3.1: Launch Experiments475 476Use `nohup` for long-running experiments:477 478```bash479nohup python run_experiment.py --config config.yaml > logs/experiment_01.log 2>&1 &480echo $! # Record the PID481```482 483**Parallel execution**: Run independent experiments simultaneously, but be aware of API rate limits. 4+ concurrent experiments on the same API will slow each down.484 485### Step 3.2: Set Up Monitoring (Cron Pattern)486 487For long-running experiments, set up periodic status checks. The cron prompt should follow this template:488 489```490Monitor Prompt Template:4911. Check if process is still running: ps aux | grep <pattern>4922. Read last 30 lines of log: tail -30 <logfile>4933. Check for completed results: ls <result_dir>4944. If results exist, read and report: cat <result_file>4955. If all done, commit: git add -A && git commit -m "<descriptive message>" && git push4966. Report in structured format (tables with key metrics)4977. Answer the key analytical question for this experiment498```499 500**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.501 502### Step 3.3: Handle Failures503 504Common failure modes and recovery:505 506| Failure | Detection | Recovery |507|---------|-----------|----------|508| API rate limit / credit exhaustion | 402/429 errors in logs | Wait, then re-run (scripts skip completed work) |509| Process crash | PID gone, incomplete results | Re-run from last checkpoint |510| Timeout on hard problems | Process stuck, no log progress | Kill and skip, note in results |511| Wrong model ID | Errors referencing model name | Fix ID and re-run |512 513**Key**: Scripts should always check for existing results and skip completed work. This makes re-runs safe and efficient.514 515### Step 3.4: Commit Completed Results516 517After each experiment batch completes:518 519```bash520git add -A521git commit -m "Add <experiment name>: <key finding in 1 line>"522git push523```524 525### Step 3.5: Maintain an Experiment Journal526 527Git commits track what happened, but not the **exploration tree** — the decisions about what to try next based on what you learned. Maintain a structured experiment journal that captures this tree:528 529```json530// experiment_journal.jsonl — append one entry per experiment attempt531{532 "id": "exp_003",533 "parent": "exp_001",534 "timestamp": "2025-05-10T14:30:00Z",535 "hypothesis": "Adding scope constraints will fix convergence failure from exp_001",536 "plan": "Re-run autoreason with max_tokens=2000 and fixed structure template",537 "config": {"model": "haiku", "strategy": "autoreason", "max_tokens": 2000},538 "status": "completed",539 "result_path": "results/exp_003/",540 "key_metrics": {"win_rate": 0.85, "convergence_rounds": 3},541 "analysis": "Scope constraints fixed convergence. Win rate jumped from 0.42 to 0.85.",542 "next_steps": ["Try same constraints on Sonnet", "Test without structure template"],543 "figures": ["figures/exp003_convergence.pdf"]544}545```546 547**Why a journal, not just git?** Git tracks file changes. The journal tracks the reasoning: why you tried X, what you learned, and what that implies for the next experiment. When writing the paper, this tree is invaluable for the Methods section ("we observed X, which motivated Y") and for honest failure reporting.548 549**Selecting the best path**: When the journal shows a branching tree (exp_001 → exp_002a, exp_002b, exp_003), identify the path that best supports the paper's claims. Document dead-end branches in the appendix as ablations or negative results.550 551**Snapshot code per experiment**: Copy the experiment script after each run:552```bash553cp experiment.py results/exp_003/experiment_snapshot.py554```555This enables exact reproduction even after subsequent code changes.556 557---558 559## Phase 4: Result Analysis560 561**Goal**: Extract findings, compute statistics, identify the story.562 563### Step 4.1: Aggregate Results564 565Write analysis scripts that:5661. Load all result files from a batch5672. Compute per-task and aggregate metrics5683. Generate summary tables569 570```python571# Standard analysis pattern572import json, os573from pathlib import Path574 575results = {}576for result_file in Path("results/").rglob("result.json"):577 data = json.loads(result_file.read_text())578 strategy = result_file.parent.name579 task = result_file.parent.parent.name580 results.setdefault(strategy, {})[task] = data581 582# Compute aggregate metrics583for strategy, tasks in results.items():584 scores = [t["score"] for t in tasks.values()]585 print(f"{strategy}: mean={np.mean(scores):.1f}, std={np.std(scores):.1f}")586```587 588### Step 4.2: Statistical Significance589 590Always compute:591- **Error bars**: Standard deviation or standard error, specify which592- **Confidence intervals**: 95% CI for key results593- **Pairwise tests**: McNemar's test for comparing two methods594- **Effect sizes**: Cohen's d or h for practical significance595 596See [references/experiment-patterns.md](references/experiment-patterns.md) for complete implementations of McNemar's test, bootstrapped CIs, and Cohen's h.597 598### Step 4.3: Identify the Story599 600After analysis, explicitly answer:6011. **What is the main finding?** State it in one sentence.6022. **What surprised you?** Unexpected results often make the best papers.6033. **What failed?** Failed experiments can be the most informative. Honest reporting of failures strengthens the paper.6044. **What follow-up experiments are needed?** Results often raise new questions.605 606#### Handling Negative or Null Results607 608When your hypothesis was wrong or results are inconclusive, you have three options:609 610| Situation | Action | Venue Fit |611|-----------|--------|-----------|612| Hypothesis wrong but **why** is informative | Frame paper around the analysis of why | NeurIPS, ICML (if analysis is rigorous) |613| Method doesn't beat baselines but **reveals something new** | Reframe contribution as understanding/analysis | ICLR (values understanding), workshop papers |614| Clean negative result on popular claim | Write it up — the field needs to know | NeurIPS Datasets & Benchmarks, TMLR, workshops |615| Results inconclusive, no clear story | Pivot — run different experiments or reframe | Don't force a paper that isn't there |616 617**How to write a negative results paper:**618- Lead with what the community believes and why it matters to test it619- Describe your rigorous methodology (must be airtight — reviewers will scrutinize harder)620- Present the null result clearly with statistical evidence621- Analyze **why** the expected result didn't materialize622- Discuss implications for the field623 624**Venues that explicitly welcome negative results**: NeurIPS (Datasets & Benchmarks track), TMLR, ML Reproducibility Challenge, workshops at major conferences. Some workshops specifically call for negative results.625 626### Step 4.4: Create Figures and Tables627 628**Figures**:629- Use vector graphics (PDF) for all plots: `plt.savefig('fig.pdf')`630- Colorblind-safe palettes (Okabe-Ito or Paul Tol)631- Self-contained captions — reader should understand without main text632- No title inside figure — the caption serves this function633 634**Tables**:635- Use `booktabs` LaTeX package636- Bold best value per metric637- Include direction symbols (higher/lower better)638- Consistent decimal precision639 640```latex641\usepackage{booktabs}642\begin{tabular}{lcc}643\toprule644Method & Accuracy $\uparrow$ & Latency $\downarrow$ \\645\midrule646Baseline & 85.2 & 45ms \\647\textbf{Ours} & \textbf{92.1} & 38ms \\648\bottomrule649\end{tabular}650```651 652### Step 4.5: Decide: More Experiments or Write?653 654| Situation | Action |655|-----------|--------|656| Core claims supported, results significant | Move to Phase 5 (writing) |657| Results inconclusive, need more data | Back to Phase 2 (design) |658| Unexpected finding suggests new direction | Back to Phase 2 (design) |659| Missing one ablation reviewers will ask for | Run it, then Phase 5 |660| All experiments done but some failed | Note failures, move to Phase 5 |661 662### Step 4.6: Write the Experiment Log (Bridge to Writeup)663 664Before moving to paper writing, create a structured experiment log that bridges results to prose. This is the single most important connective tissue between experiments and the writeup — without it, the writing agent has to re-derive the story from raw result files.665 666**Create `experiment_log.md`** with the following structure:667 668```markdown669# Experiment Log670 671## Contribution (one sentence)672[The paper's main claim]673 674## Experiments Run675 676### Experiment 1: [Name]677- **Claim tested**: [Which paper claim this supports]678- **Setup**: [Model, dataset, config, number of runs]679- **Key result**: [One sentence with the number]680- **Result files**: results/exp1/final_info.json681- **Figures generated**: figures/exp1_comparison.pdf682- **Surprising findings**: [Anything unexpected]683 684### Experiment 2: [Name]685...686 687## Figures688| Filename | Description | Which section it belongs in |689|----------|-------------|---------------------------|690| figures/main_comparison.pdf | Bar chart comparing all methods on benchmark X | Results, Figure 2 |691| figures/ablation.pdf | Ablation removing components A, B, C | Results, Figure 3 |692...693 694## Failed Experiments (document for honesty)695- [What was tried, why it failed, what it tells us]696 697## Open Questions698- [Anything the results raised that the paper should address]699```700 701**Why this matters**: When drafting, the agent (or a delegated sub-agent) can load `experiment_log.md` alongside the LaTeX template and produce a first draft grounded in actual results. Without this bridge, the writing agent must parse raw JSON/CSV files and infer the story — a common source of hallucinated or misreported numbers.702 703**Git discipline**: Commit this log alongside the results it describes.704 705---706 707## Iterative Refinement: Strategy Selection708 709Any 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.710 711### Quick Decision Table712 713| Your Situation | Strategy | Why |714|---------------|----------|-----|715| Mid-tier model + constrained task | **Autoreason** | Sweet spot. Generation-evaluation gap is widest. Baselines actively destroy weak model outputs. |716| Mid-tier model + open task | **Autoreason** with scope constraints added | Add fixed facts, structure, or deliverable to bound the improvement space. |717| Frontier model + constrained task | **Autoreason** | Wins 2/3 constrained tasks even at frontier. |718| Frontier model + unconstrained task | **Critique-and-revise** or **single pass** | Autoreason comes last. Model self-evaluates well enough. |719| Concrete technical task (system design) | **Critique-and-revise** | Direct find-and-fix loop is more efficient. |720| Template-filling task (one correct structure) | **Single pass** or **conservative** | Minimal decision space. Iteration adds no value. |721| Code with test cases | **Autoreason (code variant)** | Structured analysis of *why* it failed before fixing. Recovery rate 62% vs 43%. |722| Very weak model (Llama 8B class) | **Single pass** | Model too weak for diverse candidates. Invest in generation quality. |723 724### The Generation-Evaluation Gap725 726**Core insight**: Autoreason's value depends on the gap between a model's generation capability and its self-evaluation capability.727 728```729Model Tier │ Generation │ Self-Eval │ Gap │ Autoreason Value730──────────────────┼────────────┼───────────┼────────┼─────────────────731Weak (Llama 8B) │ Poor │ Poor │ Small │ None — can't generate diverse candidates732Mid (Haiku 3.5) │ Decent │ Poor │ LARGE │ MAXIMUM — 42/42 perfect Borda733Mid (Gemini Flash)│ Decent │ Moderate │ Large │ High — wins 2/3734Strong (Sonnet 4) │ Good │ Decent │ Medium │ Moderate — wins 3/5735Frontier (S4.6) │ Excellent │ Good │ Small │ Only with constraints736```737 738This gap is structural, not temporary. As costs drop, today's frontier becomes tomorrow's mid-tier. The sweet spot moves but never disappears.739 740### Autoreason Loop (Summary)741 742Each pass produces three candidates from fresh, isolated agents:743 7441. **Critic** → finds problems in incumbent A (no fixes)7452. **Author B** → revises A based on critique7463. **Synthesizer** → merges A and B (randomized labels)7474. **Judge Panel** → 3 blind CoT judges rank A, B, AB via Borda count7485. **Convergence** → A wins k=2 consecutive passes → done749 750**Key parameters:**751- k=2 convergence (k=1 premature, k=3 too expensive, no quality gain)752- CoT judges always (3x faster convergence)753- Temperature 0.8 authors, 0.3 judges754- Conservative tiebreak: incumbent wins ties755- Every role is a fresh agent with no shared context756 757### Applying to Paper Drafts758 759When refining the paper itself through autoreason:760- **Provide ground truth to the critic**: actual experimental data, result JSONs, statistical outputs. Without this, models hallucinate fabricated ablation studies and fake confidence intervals.761- **Use 3 working judges minimum**: A broken judge parser doesn't add noise — it prevents equilibrium entirely.762- **Scope constrain the revision**: "Address these specific weaknesses" not "improve the paper."763 764### Failure Modes765 766| Failure | Detection | Fix |767|---------|-----------|-----|768| No convergence (A never wins) | A wins <15% over 20+ passes | Add scope constraints to the task |769| Synthesis drift | Word counts grow unboundedly | Constrain structure and deliverable |770| Degradation below single pass | Baselines score higher than iterated output | Switch to single pass; model may be too weak |771| Overfitting (code) | High public-test pass, low private-test pass | Use structured analysis, not just test feedback |772| Broken judges | Parsing failures reduce panel below 3 | Fix parser before continuing |773 774See [references/autoreason-methodology.md](references/autoreason-methodology.md) for complete prompts, Borda scoring details, model selection guide, scope constraint design patterns, and compute budget reference.775 776---777 778## Phase 5: Paper Drafting779 780The complete drafting procedure (section-by-section order, LaTeX scaffolding, figure/table781conventions, abstract and intro formulas, related-work positioning) lives in782`references/phase5-paper-drafting.md` — load it with `read_file` when you reach this phase.783Pair it with `references/writing-guide.md` for prose-level style rules.784 785## Phase 6: Self-Review & Revision786 787**Goal**: Simulate the review process before submission. Catch weaknesses early.788 789### Step 6.1: Simulate Reviews (Ensemble Pattern)790 791Generate reviews from multiple perspectives. The key insight from automated research pipelines (notably SakanaAI's AI-Scientist): **ensemble reviewing with a meta-reviewer produces far more calibrated feedback than a single review pass.**792 793**Step 1: Generate N independent reviews** (N=3-5)794 795Use different models or temperature settings. Each reviewer sees only the paper, not other reviews. **Default to negative bias** — LLMs have well-documented positivity bias in evaluation.796 797```798You are an expert reviewer for [VENUE]. You are critical and thorough.799If a paper has weaknesses or you are unsure about a claim, flag it clearly800and reflect that in your scores. Do not give the benefit of the doubt.801 802Review this paper according to the official reviewer guidelines. Evaluate:803 8041. Soundness (are claims well-supported? are baselines fair and strong?)8052. Clarity (is the paper well-written? could an expert reproduce it?)8063. Significance (does this matter to the community?)8074. Originality (new insights, not just incremental combination?)808 809Provide your review as structured JSON:810{811 "summary": "2-3 sentence summary",812 "strengths": ["strength 1", "strength 2", ...],813 "weaknesses": ["weakness 1 (most critical)", "weakness 2", ...],814 "questions": ["question for authors 1", ...],815 "missing_references": ["paper that should be cited", ...],816 "soundness": 1-4,817 "presentation": 1-4,818 "contribution": 1-4,819 "overall": 1-10,820 "confidence": 1-5821}822```823 824**Step 2: Meta-review (Area Chair aggregation)**825 826Feed all N reviews to a meta-reviewer:827 828```829You are an Area Chair at [VENUE]. You have received [N] independent reviews830of a paper. Your job is to:831 8321. Identify consensus strengths and weaknesses across reviewers8332. Resolve disagreements by examining the paper directly8343. Produce a meta-review that represents the aggregate judgment8354. Use AVERAGED numerical scores across all reviews836 837Be conservative: if reviewers disagree on whether a weakness is serious,838treat it as serious until the authors address it.839 840Reviews:841[review_1]842[review_2]843...844```845 846**Step 3: Reflection loop** (optional, 2-3 rounds)847 848Each reviewer can refine their review after seeing the meta-review. Use an early termination sentinel: if the reviewer responds "I am done" (no changes), stop iterating.849 850**Model selection for reviewing**: Reviewing is best done with the strongest available model, even if you wrote the paper with a cheaper one. The reviewer model should be chosen independently from the writing model.851 852**Few-shot calibration**: If available, include 1-2 real published reviews from the target venue as examples. This dramatically improves score calibration. See [references/reviewer-guidelines.md](references/reviewer-guidelines.md) for example reviews.853 854### Step 6.1b: Visual Review Pass (VLM)855 856Text-only review misses an entire class of problems: figure quality, layout issues, visual consistency. If you have access to a vision-capable model, run a separate **visual review** on the compiled PDF:857 858```859You are reviewing the visual presentation of this research paper PDF.860Check for:8611. Figure quality: Are plots readable? Labels legible? Colors distinguishable?8622. Figure-caption alignment: Does each caption accurately describe its figure?8633. Layout issues: Orphaned section headers, awkward page breaks, figures far from their references8644. Table formatting: Aligned columns, consistent decimal precision, bold for best results8655. Visual consistency: Same color scheme across all figures, consistent font sizes8666. Grayscale readability: Would the figures be understandable if printed in B&W?867 868For each issue, specify the page number and exact location.869```870 871This catches problems that text-based review cannot: a plot with illegible axis labels, a figure placed 3 pages from its first reference, inconsistent color palettes between Figure 2 and Figure 5, or a table that's clearly wider than the column width.872 873### Step 6.1c: Claim Verification Pass874 875After simulated reviews, run a separate verification pass. This catches factual errors that reviewers might miss:876 877```878Claim Verification Protocol:8791. Extract every factual claim from the paper (numbers, comparisons, trends)8802. For each claim, trace it to the specific experiment/result that supports it8813. Verify the number in the paper matches the actual result file8824. Flag any claim without a traceable source as [VERIFY]883```884 885For agent-based workflows: delegate verification to a **fresh sub-agent** that receives only the paper text and the raw result files. The fresh context prevents confirmation bias — the verifier doesn't "remember" what the results were supposed to be.886 887### Step 6.2: Prioritize Feedback888 889After collecting reviews, categorize:890 891| Priority | Action |892|----------|--------|893| **Critical** (technical flaw, missing baseline) | Must fix. May require new experiments → back to Phase 2 |894| **High** (clarity issue, missing ablation) | Should fix in this revision |895| **Medium** (minor writing issues, extra experiments) | Fix if time allows |896| **Low** (style preferences, tangential suggestions) | Note for future work |897 898### Step 6.3: Revision Cycle899 900For each critical/high issue:9011. Identify the specific section(s) affected9022. Draft the fix9033. Verify the fix doesn't break other claims9044. Update the paper9055. Re-check against the reviewer's concern906 907### Step 6.4: Rebuttal Writing908 909When responding to actual reviews (post-submission), rebuttals are a distinct skill from revision:910 911**Format**: Point-by-point. For each reviewer concern:912```913> R1-W1: "The paper lacks comparison with Method X."914 915We thank the reviewer for this suggestion. We have added a comparison with 916Method X in Table 3 (revised). Our method outperforms X by 3.2pp on [metric] 917(p<0.05). We note that X requires 2x our compute budget.918```919 920**Rules**:921- Address every concern — reviewers notice if you skip one922- Lead with the strongest responses923- Be concise and direct — reviewers read dozens of rebuttals924- Include new results if you ran experiments during the rebuttal period925- Never be defensive or dismissive, even of weak criticisms926- Use `latexdiff` to generate a marked-up PDF showing changes (see Professional LaTeX Tooling section)927- Thank reviewers for specific, actionable feedback (not generic praise)928 929**What NOT to do**: "We respectfully disagree" without evidence. "This is out of scope" without explanation. Ignoring a weakness by only responding to strengths.930 931### Step 6.5: Paper Evolution Tracking932 933Save snapshots at key milestones:934```935paper/936 paper.tex # Current working version937 paper_v1_first_draft.tex # First complete draft938 paper_v2_post_review.tex # After simulated review939 paper_v3_pre_submission.tex # Final before submission940 paper_v4_camera_ready.tex # Post-acceptance final941```942 943---944 945## Phase 7: Submission Preparation946 947**Goal**: Final checks, formatting, and submission.948 949### Step 7.1: Conference Checklist950 951Every venue has mandatory checklists. Complete them carefully — incomplete checklists can result in desk rejection.952 953See [references/checklists.md](references/checklists.md) for:954- NeurIPS 16-item paper checklist955- ICML broader impact + reproducibility956- ICLR LLM disclosure policy957- ACL mandatory limitations section958- Universal pre-submission checklist959 960### Step 7.2: Anonymization Checklist961 962Double-blind review means reviewers cannot know who wrote the paper. Check ALL of these:963 964```965Anonymization Checklist:966- [ ] No author names or affiliations anywhere in the PDF967- [ ] No acknowledgments section (add after acceptance)968- [ ] Self-citations written in third person: "Smith et al. [1] showed..." not "We previously showed [1]..."969- [ ] No GitHub/GitLab URLs pointing to your personal repos970- [ ] Use Anonymous GitHub (https://anonymous.4open.science/) for code links971- [ ] No institutional logos or identifiers in figures972- [ ] No file metadata containing author names (check PDF properties)973- [ ] No "our previous work" or "in our earlier paper" phrasing974- [ ] Dataset names don't reveal institution (rename if needed)975- [ ] Supplementary materials don't contain identifying information976```977 978**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.979 980### Step 7.3: Formatting Verification981 982```983Pre-Submission Format Check:984- [ ] Page limit respected (excluding references and appendix)985- [ ] All figures are vector (PDF) or high-res raster (600 DPI PNG)986- [ ] All figures readable in grayscale987- [ ] All tables use booktabs988- [ ] References compile correctly (no "?" in citations)989- [ ] No overfull hboxes in critical areas990- [ ] Appendix clearly labeled and separated991- [ ] Required sections present (limitations, broader impact, etc.)992```993 994### Step 7.4: Pre-Compilation Validation995 996Run these automated checks **before** attempting `pdflatex`. Catching errors here is faster than debugging compiler output.997 998```bash999# 1. Lint with chktex (catches common LaTeX mistakes)1000# Suppress noisy warnings: -n2 (sentence end), -n24 (parens), -n13 (intersentence), -n1 (command terminated)1001chktex main.tex -q -n2 -n24 -n13 -n11002 1003# 2. Verify all citations exist in .bib1004# Extract \cite{...} from .tex, check each against .bib1005python3 -c "1006import re1007tex = open('main.tex').read()1008bib = open('references.bib').read()1009cites = set(re.findall(r'\\\\cite[tp]?{([^}]+)}', tex))1010for cite_group in cites:1011 for cite in cite_group.split(','):1012 cite = cite.strip()1013 if cite and cite not in bib:1014 print(f'WARNING: \\\\cite{{{cite}}} not found in references.bib')1015"1016 1017# 3. Verify all referenced figures exist on disk1018python3 -c "1019import re, os1020tex = open('main.tex').read()1021figs = re.findall(r'\\\\includegraphics(?:\[.*?\])?{([^}]+)}', tex)1022for fig in figs:1023 if not os.path.exists(fig):1024 print(f'WARNING: Figure file not found: {fig}')1025"1026 1027# 4. Check for duplicate \label definitions1028python3 -c "1029import re1030from collections import Counter1031tex = open('main.tex').read()1032labels = re.findall(r'\\\\label{([^}]+)}', tex)1033dupes = {k: v for k, v in Counter(labels).items() if v > 1}1034for label, count in dupes.items():1035 print(f'WARNING: Duplicate label: {label} (appears {count} times)')1036"1037```1038 1039Fix any warnings before proceeding. For agent-based workflows: feed chktex output back to the agent with instructions to make minimal fixes.1040 1041### Step 7.5: Final Compilation1042 1043```bash1044# Clean build1045rm -f *.aux *.bbl *.blg *.log *.out *.pdf1046latexmk -pdf main.tex1047 1048# Or manual (triple pdflatex + bibtex for cross-references)1049pdflatex -interaction=nonstopmode main.tex1050bibtex main1051pdflatex -interaction=nonstopmode main.tex1052pdflatex -interaction=nonstopmode main.tex1053 1054# Verify output exists and has content1055ls -la main.pdf1056```1057 1058**If compilation fails**: Parse the `.log` file for the first error. Common fixes:1059- "Undefined control sequence" → missing package or typo in command name1060- "Missing $ inserted" → math symbol outside math mode1061- "File not found" → wrong figure path or missing .sty file1062- "Citation undefined" → .bib entry missing or bibtex not run1063 1064### Step 7.6: Conference-Specific Requirements1065 1066| Venue | Special Requirements |1067|-------|---------------------|1068| **NeurIPS** | Paper checklist in appendix, lay summary if accepted |1069| **ICML** | Broader Impact Statement (after conclusion, doesn't count toward limit) |1070| **ICLR** | LLM disclosure required, reciprocal reviewing agreement |1071| **ACL** | Mandatory Limitations section, Responsible NLP checklist |1072| **AAAI** | Strict style file — no modifications whatsoever |1073| **COLM** | Frame contribution for language model community |1074 1075### Step 7.7: Conference Resubmission & Format Conversion1076 1077When converting between venues, **never copy LaTeX preambles between templates**:1078 1079```bash1080# 1. Start fresh with target template1081cp -r templates/icml2026/ new_submission/1082 1083# 2. Copy ONLY content sections (not preamble)1084# - Abstract text, section content, figures, tables, bib entries1085 1086# 3. Adjust for page limits1087# 4. Add venue-specific required sections1088# 5. Update references1089```1090 1091| From → To | Page Change | Key Adjustments |1092|-----------|-------------|-----------------|1093| NeurIPS → ICML | 9 → 8 | Cut 1 page, add Broader Impact |1094| ICML → ICLR | 8 → 9 | Expand experiments, add LLM disclosure |1095| NeurIPS → ACL | 9 → 8 | Restructure for NLP conventions, add Limitations |1096| ICLR → AAAI | 9 → 7 | Significant cuts, strict style adherence |1097| Any → COLM | varies → 9 | Reframe for language model focus |1098 1099When cutting pages: move proofs to appendix, condense related work, combine tables, use subfigures.1100When expanding: add ablations, expand limitations, include additional baselines, add qualitative examples.1101 1102**After rejection**: Address reviewer concerns in the new version, but don't include a "changes" section or reference the previous submission (blind review).1103 1104### Step 7.8: Camera-Ready Preparation (Post-Acceptance)1105 1106After acceptance, prepare the camera-ready version:1107 1108```1109Camera-Ready Checklist:1110- [ ] De-anonymize: add author names, affiliations, email addresses1111- [ ] Add Acknowledgments section (funding, compute grants, helpful reviewers)1112- [ ] Add public code/data URL (real GitHub, not anonymous)1113- [ ] Address any mandatory revisions from meta-reviewer1114- [ ] Switch template to camera-ready mode (if applicable — e.g., AAAI \anon → \camera)1115- [ ] Add copyright notice if required by venue1116- [ ] Update any "anonymous" placeholders in text1117- [ ] Verify final PDF compiles cleanly1118- [ ] Check page limit for camera-ready (sometimes differs from submission)1119- [ ] Upload supplementary materials (code, data, appendix) to venue portal1120```1121 1122### Step 7.9: arXiv & Preprint Strategy1123 1124Posting to arXiv is standard practice in ML but has important timing and anonymity considerations.1125 1126**Timing decision tree:**1127 1128| Situation | Recommendation |1129|-----------|---------------|1130| Submitting to double-blind venue (NeurIPS, ICML, ACL) | Post to arXiv **after** submission deadline, not before. Posting before can technically violate anonymity policies, though enforcement varies. |1131| Submitting to ICLR | ICLR explicitly allows arXiv posting before submission. But don't put author names in the submission itself. |1132| Paper already on arXiv, submitting to new venue | Acceptable at most venues. Do NOT update arXiv version during review with changes that reference reviews. |1133| Workshop paper | arXiv is fine at any time — workshops are typically not double-blind. |1134| Want to establish priority | Post immediately if scooping is a concern — but accept the anonymity tradeoff. |1135 1136**arXiv category selection** (ML/AI papers):1137 1138| Category | Code | Best For |1139|----------|------|----------|1140| Machine Learning | `cs.LG` | General ML methods |1141| Computation and Language | `cs.CL` | NLP, language models |1142| Artificial Intelligence | `cs.AI` | Reasoning, planning, agents |1143| Computer Vision | `cs.CV` | Vision models |1144| Information Retrieval | `cs.IR` | Search, recommendation |1145 1146**List primary + 1-2 cross-listed categories.** More categories = more visibility, but only cross-list where genuinely relevant.1147 1148**Versioning strategy:**1149- **v1**: Initial submission (matches conference submission)1150- **v2**: Post-acceptance with camera-ready corrections (add "accepted at [Venue]" to abstract)1151- Don't post v2 during the review period with changes that clearly respond to reviewer feedback1152 1153```bash1154# Check if your paper's title is already taken on arXiv1155# (before choosing a title)1156pip install arxiv1157python -c "1158import arxiv1159results = list(arxiv.Search(query='ti:\"Your Exact Title\"', max_results=5).results())1160print(f'Found {len(results)} matches')1161for r in results: print(f' {r.title} ({r.published.year})')1162"1163```1164 1165### Step 7.10: Research Code Packaging1166 1167Releasing clean, runnable code significantly increases citations and reviewer trust. Package code alongside the camera-ready submission.1168 1169**Repository structure:**1170 1171```1172your-method/1173 README.md # Setup, usage, reproduction instructions1174 requirements.txt # Or environment.yml for conda1175 setup.py # For pip-installable packages1176 LICENSE # MIT or Apache 2.0 recommended for research1177 configs/ # Experiment configurations1178 src/ # Core method implementation1179 scripts/ # Training, evaluation, analysis scripts1180 train.py1181 evaluate.py1182 reproduce_table1.sh # One script per main result1183 data/ # Small data or download scripts1184 download_data.sh1185 results/ # Expected outputs for verification1186```1187 1188**README template for research code:**1189 1190```markdown1191# [Paper Title]1192 1193Official implementation of "[Paper Title]" (Venue Year).1194 1195## Setup1196[Exact commands to set up environment]1197 1198## Reproduction1199To reproduce Table 1: `bash scripts/reproduce_table1.sh`1200To reproduce Figure 2: `python scripts/make_figure2.py`1201 1202## Citation1203[BibTeX entry]1204```1205 1206**Pre-release checklist:**1207```1208- [ ] Code runs from a clean clone (test on fresh machine or Docker)1209- [ ] All dependencies pinned to specific versions1210- [ ] No hardcoded absolute paths1211- [ ] No API keys, credentials, or personal data in repo1212- [ ] README covers setup, reproduction, and citation1213- [ ] LICENSE file present (MIT or Apache 2.0 for max reuse)1214- [ ] Results are reproducible within expected variance1215- [ ] .gitignore excludes data files, checkpoints, logs1216```1217 1218**Anonymous code for submission** (before acceptance):1219```bash1220# Use Anonymous GitHub for double-blind review1221# https://anonymous.4open.science/1222# Upload your repo → get an anonymous URL → put in paper1223```1224 1225---1226 1227## Phase 8: Post-Acceptance Deliverables1228 1229**Goal**: Maximize the impact of your accepted paper through presentation materials and community engagement.1230 1231### Step 8.1: Conference Poster1232 1233Most conferences require a poster session. Poster design principles:1234 1235| Element | Guideline |1236|---------|-----------|1237| **Size** | Check venue requirements (typically 24"x36" or A0 portrait/landscape) |1238| **Content** | Title, authors, 1-sentence contribution, method figure, 2-3 key results, conclusion |1239| **Flow** | Top-left to bottom-right (Z-pattern) or columnar |1240| **Text** | Title readable at 3m, body at 1m. No full paragraphs — bullet points only. |1241| **Figures** | Reuse paper figures at higher resolution. Enlarge key result. |1242 1243**Tools**: LaTeX (`beamerposter` package), PowerPoint/Keynote, Figma, Canva.1244 1245**Production**: Order 2+ weeks before the conference. Fabric posters are lighter for travel. Many conferences now support virtual/digital posters too.1246 1247### Step 8.2: Conference Talk / Spotlight1248 1249If awarded an oral or spotlight presentation:1250 1251| Talk Type | Duration | Content |1252|-----------|----------|---------|1253| **Spotlight** | 5 min | Problem, approach, one key result. Rehearse to exactly 5 minutes. |1254| **Oral** | 15-20 min | Full story: problem, approach, key results, ablations, limitations. |1255| **Workshop talk** | 10-15 min | Adapt based on workshop audience — may need more background. |1256 1257**Slide design rules:**1258- One idea per slide1259- Minimize text — speak the details, don't project them1260- Animate key figures to build understanding step-by-step1261- Include a "takeaway" slide at the end (single sentence contribution)1262- Prepare backup slides for anticipated questions1263 1264### Step 8.3: Blog Post / Social Media1265 1266An accessible summary significantly increases impact:1267 1268- **Twitter/X thread**: 5-8 tweets. Lead with the result, not the method. Include Figure 1 and key result figure.1269- **Blog post**: 800-1500 words. Written for ML practitioners, not reviewers. Skip formalism, emphasize intuition and practical implications.1270- **Project page**: HTML page with abstract, figures, demo, code link, BibTeX. Use GitHub Pages.1271 1272**Timing**: Post within 1-2 days of paper appearing on proceedings or arXiv camera-ready.1273 1274---1275 1276## Workshop & Short Papers1277 1278Workshop papers and short papers (e.g., ACL short papers, Findings papers) follow the same pipeline but with different constraints and expectations.1279 1280### Workshop Papers1281 1282| Property | Workshop | Main Conference |1283|----------|----------|-----------------|1284| **Page limit** | 4-6 pages (typically) | 7-9 pages |1285| **Review standard** | Lower bar for completeness | Must be complete, thorough |1286| **Review process** | Usually single-blind or light review | Double-blind, rigorous |1287| **What's valued** | Interesting ideas, preliminary results, position pieces | Complete empirical story with strong baselines |1288| **arXiv** | Post anytime | Timing matters (see arXiv strategy) |1289| **Contribution bar** | Novel direction, interesting negative result, work-in-progress | Significant advance with strong evidence |1290 1291**When to target a workshop:**1292- Early-stage idea you want feedback on before a full paper1293- Negative result that doesn't justify 8+ pages1294- Position piece or opinion on a timely topic1295- Replication study or reproducibility report1296 1297### ACL Short Papers & Findings1298 1299ACL venues have distinct submission types:1300 1301| Type | Pages | What's Expected |1302|------|-------|-----------------|1303| **Long paper** | 8 | Complete study, strong baselines, ablations |1304| **Short paper** | 4 | Focused contribution: one clear point with evidence |1305| **Findings** | 8 | Solid work that narrowly missed main conference |1306 1307**Short paper strategy**: Pick ONE claim and support it thoroughly. Don't try to compress a long paper into 4 pages — write a different, more focused paper.1308 1309---1310 1311## Paper Types Beyond Empirical ML1312 1313The main pipeline above targets empirical ML papers. Other paper types require different structures and evidence standards. See [references/paper-types.md](references/paper-types.md) for detailed guidance on each type.1314 1315### Theory Papers1316 1317**Structure**: Introduction → Preliminaries (definitions, notation) → Main Results (theorems) → Proof Sketches → Discussion → Full Proofs (appendix)1318 1319**Key differences from empirical papers:**1320- Contribution is a theorem, bound, or impossibility result — not experimental numbers1321- Methods section replaced by "Preliminaries" and "Main Results"1322- Proofs are the evidence, not experiments (though empirical validation of theory is welcome)1323- Proof sketches in main text, full proofs in appendix is standard practice1324- Experimental section is optional but strengthens the paper if it validates theoretical predictions1325 1326**Proof writing principles:**1327- State theorems formally with all assumptions explicit1328- Provide intuition before formal proof ("The key insight is...")1329- Proof sketches should convey the main idea in 0.5-1 page1330- Use `\begin{proof}...\end{proof}` environments1331- Number assumptions and reference them in theorems: "Under Assumptions 1-3, ..."1332 1333### Survey / Tutorial Papers1334 1335**Structure**: Introduction → Taxonomy / Organization → Detailed Coverage → Open Problems → Conclusion1336 1337**Key differences:**1338- Contribution is the organization, synthesis, and identification of open problems — not new methods1339- Must be comprehensive within scope (reviewers will check for missing references)1340- Requires a clear taxonomy or organizational framework1341- Value comes from connections between works that individual papers don't make1342- Best venues: TMLR (survey track), JMLR, Foundations and Trends in ML, ACM Computing Surveys1343 1344### Benchmark Papers1345 1346**Structure**: Introduction → Task Definition → Dataset Construction → Baseline Evaluation → Analysis → Intended Use & Limitations1347 1348**Key differences:**1349- Contribution is the benchmark itself — it must fill a genuine evaluation gap1350- Dataset documentation is mandatory, not optional (see Datasheets, Step 5.11)1351- Must demonstrate the benchmark is challenging (baselines don't saturate it)1352- Must demonstrate the benchmark measures what you claim it measures (construct validity)1353- Best venues: NeurIPS Datasets & Benchmarks track, ACL (resource papers), LREC-COLING1354 1355### Position Papers1356 1357**Structure**: Introduction → Background → Thesis / Argument → Supporting Evidence → Counterarguments → Implications1358 1359**Key differences:**1360- Contribution is an argument, not a result1361- Must engage seriously with counterarguments1362- Evidence can be empirical, theoretical, or logical analysis1363- Best venues: ICML (position track), workshops, TMLR1364 1365---1366 1367## Hermes Agent Integration1368 1369This skill is designed for the Hermes agent. It uses Hermes tools, delegation, scheduling, and memory for the full research lifecycle.1370 1371### Related Skills1372 1373Compose this skill with other Hermes skills for specific phases:1374 1375| Skill | When to Use | How to Load |1376|-------|-------------|-------------|1377| **arxiv** | Phase 1 (Literature Review): searching arXiv, generating BibTeX, finding related papers via Semantic Scholar | `skill_view("arxiv")` |1378| **subagent-driven-development** | Phase 5 (Drafting): parallel section writing with 2-stage review (spec compliance then quality) | `skill_view("subagent-driven-development")` |1379| **plan** | Phase 0 (Setup): creating structured plans before execution. Writes to `.hermes/plans/` | `skill_view("plan")` |1380| **qmd** | Phase 1 (Literature): searching local knowledge bases (notes, transcripts, docs) via hybrid BM25+vector search | Install: `skill_manage("install", "qmd")` |1381| **diagramming** | Phase 4-5: creating Excalidraw-based figures and architecture diagrams | `skill_view("diagramming")` |1382| **data-science** | Phase 4 (Analysis): Jupyter live kernel for interactive analysis and visualization | `skill_view("data-science")` |1383 1384**This skill supersedes `ml-paper-writing`** — it contains all of ml-paper-writing's content plus the full experiment/analysis pipeline and autoreason methodology.1385 1386### Hermes Tools Reference1387 1388| Tool | Usage in This Pipeline |1389|------|----------------------|1390| **`terminal`** | LaTeX compilation (`latexmk -pdf`), git operations, launching experiments (`nohup python run.py &`), process checks |1391| **`process`** | Background experiment management: `process("start", ...)`, `process("poll", pid)`, `process("log", pid)`, `process("kill", pid)` |1392| **`execute_code`** | Run Python for citation verification, statistical analysis, data aggregation. Has tool access via RPC. |1393| **`read_file`** / **`write_file`** / **`patch`** | Paper editing, experiment scripts, result files. Use `patch` for targeted edits to large .tex files. |1394| **`web_search`** | Literature discovery: `web_search("transformer attention mechanism 2024")` |1395| **`web_extract`** | Fetch paper content, verify citations: `web_extract("https://arxiv.org/abs/2303.17651")` |1396| **`delegate_task`** | **Parallel section drafting** — spawn isolated subagents for each section. Also for concurrent citation verification. |1397| **`todo`** | Primary state tracker across sessions. Update after every phase transition. |1398| **`memory`** | Persist key decisions across sessions: contribution framing, venue choice, reviewer feedback. |1399| **`cronjob`** | Schedule experiment monitoring, deadline countdowns, automated arXiv checks. |1400| **`clarify`** | Ask the user targeted questions when blocked (venue choice, contribution framing). |1401| **cron `deliver:`** | Notify the user when experiments complete or drafts are ready even if they're not in chat — schedule the check as a cron job with a messaging `deliver:` target (the agent no longer has a `send_message` tool; outbound delivery is handled by cron/`hermes send`). |1402 1403### Tool Usage Patterns1404 1405**Experiment monitoring** (most common):1406```1407terminal("ps aux | grep <pattern>")1408→ terminal("tail -30 <logfile>")1409→ terminal("ls results/")1410→ execute_code("analyze results JSON, compute metrics")1411→ terminal("git add -A && git commit -m '<descriptive message>' && git push")1412→ (final response auto-delivers "Experiment complete: <summary>"; for unattended runs, schedule via cron with a deliver: target)1413```1414 1415**Parallel section drafting** (using delegation):1416```1417delegate_task("Draft the Methods section based on these experiment scripts and configs. 1418 Include: pseudocode, all hyperparameters, architectural details sufficient for 1419 reproduction. Write in LaTeX using the neurips2025 template conventions.")1420 1421delegate_task("Draft the Related Work section. Use web_search and web_extract to 1422 find papers. Verify every citation via Semantic Scholar. Group by methodology.")1423 1424delegate_task("Draft the Experiments section. Read all result files in results/. 1425 State which claim each experiment supports. Include error bars and significance.")1426```1427 1428Each delegate runs as a **fresh subagent** with no shared context — provide all necessary information in the prompt. Collect outputs and integrate.1429 1430**Citation verification** (using execute_code):1431```python1432# In execute_code:1433from semanticscholar import SemanticScholar1434import requests1435 1436sch = SemanticScholar()1437results = sch.search_paper("attention mechanism transformers", limit=5)1438for paper in results:1439 doi = paper.externalIds.get('DOI', 'N/A')1440 if doi != 'N/A':1441 bibtex = requests.get(f"https://doi.org/{doi}", 1442 headers={"Accept": "application/x-bibtex"}).text1443 print(bibtex)1444```1445 1446### State Management with `memory` and `todo`1447 1448**`memory` tool** — persist key decisions (bounded: ~2200 chars for MEMORY.md):1449 1450```1451memory("add", "Paper: autoreason. Venue: NeurIPS 2025 (9 pages). 1452 Contribution: structured refinement works when generation-evaluation gap is wide.1453 Key results: Haiku 42/42, Sonnet 3/5, S4.6 constrained 2/3.1454 Status: Phase 5 — drafting Methods section.")1455```1456 1457Update memory after major decisions or phase transitions. This persists across sessions.1458 1459**`todo` tool** — track granular progress:1460 1461```1462todo("add", "Design constrained task experiments for Sonnet 4.6")1463todo("add", "Run Haiku baseline comparison")1464todo("add", "Draft Methods section")1465todo("update", id=3, status="in_progress")1466todo("update", id=1, status="completed")1467```1468 1469**Session startup protocol:**1470```14711. todo("list") # Check current task list14722. memory("read") # Recall key decisions14733. terminal("git log --oneline -10") # Check recent commits14744. terminal("ps aux | grep python") # Check running experiments14755. terminal("ls results/ | tail -20") # Check for new results14766. Report status to user, ask for direction1477```1478 1479### Cron Monitoring with `cronjob`1480 1481Use the `cronjob` tool to schedule periodic experiment checks:1482 1483```1484cronjob("create", {1485 "schedule": "*/30 * * * *", # Every 30 minutes1486 "prompt": "Check experiment status:1487 1. ps aux | grep run_experiment1488 2. tail -30 logs/experiment_haiku.log1489 3. ls results/haiku_baselines/1490 4. If complete: read results, compute Borda scores, 1491 git add -A && git commit -m 'Add Haiku results' && git push1492 5. Report: table of results, key finding, next step1493 6. If nothing changed: respond with [SILENT]"1494})1495```1496 1497**[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.1498 1499**Deadline tracking**:1500```1501cronjob("create", {1502 "schedule": "0 9 * * *", # Daily at 9am1503 "prompt": "NeurIPS 2025 deadline: May 22. Today is {date}. 1504 Days remaining: {compute}. 1505 Check todo list — are we on track? 1506 If <7 days: warn user about remaining tasks."1507})1508```1509 1510### Communication Patterns1511 1512**When to notify the user** (via your direct/final response, or a cron `deliver:` target for unattended runs):1513- Experiment batch completed (with results table)1514- Unexpected finding or failure requiring decision1515- Draft section ready for review1516- Deadline approaching with incomplete tasks1517 1518**When NOT to notify:**1519- Experiment still running, no new results → `[SILENT]`1520- Routine monitoring with no changes → `[SILENT]`1521- Intermediate steps that don't need attention1522 1523**Report format** — always include structured data:1524```1525## Experiment: <name>1526Status: Complete / Running / Failed1527 1528| Task | Method A | Method B | Method C |1529|------|---------|---------|---------|1530| Task 1 | 85.2 | 82.1 | **89.4** |1531 1532Key finding: <one sentence>1533Next step: <what happens next>1534```1535 1536### Decision Points Requiring Human Input1537 1538Use `clarify` for targeted questions when genuinely blocked:1539 1540| Decision | When to Ask |1541|----------|-------------|1542| Target venue | Before starting paper (affects page limits, framing) |1543| Contribution framing | When multiple valid framings exist |1544| Experiment priority | When TODO list has more experiments than time allows |1545| Submission readiness | Before final submission |1546 1547**Do NOT ask about** (be proactive, make a choice, flag it):1548- Word choice, section ordering1549- Which specific results to highlight1550- Citation completeness (draft with what you find, note gaps)1551 1552---1553 1554## Reviewer Evaluation Criteria1555 1556Understanding what reviewers look for helps focus effort:1557 1558| Criterion | What They Check |1559|-----------|----------------|1560| **Quality** | Technical soundness, well-supported claims, fair baselines |1561| **Clarity** | Clear writing, reproducible by experts, consistent notation |1562| **Significance** | Community impact, advances understanding |1563| **Originality** | New insights (doesn't require new method) |1564 1565**Scoring (NeurIPS 6-point scale):**1566- 6: Strong Accept — groundbreaking, flawless1567- 5: Accept — technically solid, high impact1568- 4: Borderline Accept — solid, limited evaluation1569- 3: Borderline Reject — weaknesses outweigh1570- 2: Reject — technical flaws1571- 1: Strong Reject — known results or ethics issues1572 1573See [references/reviewer-guidelines.md](references/reviewer-guidelines.md) for detailed guidelines, common concerns, and rebuttal strategies.1574 1575---1576 1577## Common Issues and Solutions1578 1579| Issue | Solution |1580|-------|----------|1581| Abstract too generic | Delete first sentence if it could prepend any ML paper. Start with your specific contribution. |1582| Introduction exceeds 1.5 pages | Split background into Related Work. Front-load contribution bullets. |1583| Experiments lack explicit claims | Add: "This experiment tests whether [specific claim]..." before each one. |1584| Reviewers find paper hard to follow | Add signposting, use consistent terminology, make figure captions self-contained. |1585| Missing statistical significance | Add error bars, number of runs, statistical tests, confidence intervals. |1586| Scope creep in experiments | Every experiment must map to a specific claim. Cut experiments that don't. |1587| Paper rejected, need to resubmit | See Conference Resubmission in Phase 7. Address reviewer concerns without referencing reviews. |1588| Missing broader impact statement | See Step 5.10. Most venues require it. "No negative impacts" is almost never credible. |1589| Human eval criticized as weak | See Step 2.5 and [references/human-evaluation.md](references/human-evaluation.md). Report agreement metrics, annotator details, compensation. |1590| Reviewers question reproducibility | Release code (Step 7.9), document all hyperparameters, include seeds and compute details. |1591| Theory paper lacks intuition | Add proof sketches with plain-language explanations before formal proofs. See [references/paper-types.md](references/paper-types.md). |1592| Results are negative/null | See Phase 4.3 on handling negative results. Consider workshops, TMLR, or reframing as analysis. |1593 1594---1595 1596## Reference Documents1597 1598| Document | Contents |1599|----------|----------|1600| [references/writing-guide.md](references/writing-guide.md) | Gopen & Swan 7 principles, Perez micro-tips, Lipton word choice, Steinhardt precision, figure design |1601| [references/citation-workflow.md](references/citation-workflow.md) | Citation APIs, Python code, CitationManager class, BibTeX management |1602| [references/checklists.md](references/checklists.md) | NeurIPS 16-item, ICML, ICLR, ACL requirements, universal pre-submission checklist |1603| [references/reviewer-guidelines.md](references/reviewer-guidelines.md) | Evaluation criteria, scoring, common concerns, rebuttal template |1604| [references/sources.md](references/sources.md) | Complete bibliography of all writing guides, conference guidelines, APIs |1605| [references/experiment-patterns.md](references/experiment-patterns.md) | Experiment design patterns, evaluation protocols, monitoring, error recovery |1606| [references/autoreason-methodology.md](references/autoreason-methodology.md) | Autoreason loop, strategy selection, model guide, prompts, scope constraints, Borda scoring |1607| [references/human-evaluation.md](references/human-evaluation.md) | Human evaluation design, annotation guidelines, agreement metrics, crowdsourcing QC, IRB guidance |1608| [references/paper-types.md](references/paper-types.md) | Theory papers (proof writing, theorem structure), survey papers, benchmark papers, position papers |1609 1610### LaTeX Templates1611 1612Templates in `templates/` for: **NeurIPS 2025**, **ICML 2026**, **ICLR 2026**, **ACL**, **AAAI 2026**, **COLM 2025**.1613 1614See [templates/README.md](templates/README.md) for compilation instructions.1615 1616### Key External Sources1617 1618**Writing Philosophy:**1619- [Neel Nanda: How to Write ML Papers](https://www.alignmentforum.org/posts/eJGptPbbFPZGLpjsp/highly-opinionated-advice-on-how-to-write-ml-papers)1620- [Sebastian Farquhar: How to Write ML Papers](https://sebastianfarquhar.com/on-research/2024/11/04/how_to_write_ml_papers/)1621- [Gopen & Swan: Science of Scientific Writing](https://cseweb.ucsd.edu/~swanson/papers/science-of-writing.pdf)1622- [Lipton: Heuristics for Scientific Writing](https://www.approximatelycorrect.com/2018/01/29/heuristics-technical-scientific-writing-machine-learning-perspective/)1623- [Perez: Easy Paper Writing Tips](https://ethanperez.net/easy-paper-writing-tips/)1624 1625**APIs:** [Semantic Scholar](https://api.semanticscholar.org/api-docs/) | [CrossRef](https://www.crossref.org/documentation/retrieve-metadata/rest-api/) | [arXiv](https://info.arxiv.org/help/api/basics.html)1626 1627**Venues:** [NeurIPS](https://neurips.cc/Conferences/2025/PaperInformation/StyleFiles) | [ICML](https://icml.cc/Conferences/2025/AuthorInstructions) | [ICLR](https://iclr.cc/Conferences/2026/AuthorGuide) | [ACL](https://github.com/acl-org/acl-style-files)1628 Discovery context
Discovered by repository scan. No exact path reference found in the snapshot’s root AGENTS.md.