Awesome-Agent-Skills-for-Empirical-Research paper-write
Draft LaTeX paper section by section from an outline. Use when user says \"写论文\", \"write paper\", \"draft LaTeX\", \"开始写\", or wants to generate LaTeX content from a paper plan.
git clone https://github.com/brycewang-stanford/Awesome-Agent-Skills-for-Empirical-Research
T=$(mktemp -d) && git clone --depth=1 https://github.com/brycewang-stanford/Awesome-Agent-Skills-for-Empirical-Research "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/42-wanshuiyin-ARIS/skills/paper-write" ~/.claude/skills/brycewang-stanford-awesome-agent-skills-for-empirical-research-paper-write && rm -rf "$T"
skills/42-wanshuiyin-ARIS/skills/paper-write/SKILL.mdPaper Write: Section-by-Section LaTeX Generation
Draft a LaTeX paper based on: $ARGUMENTS
Constants
- REVIEWER_MODEL =
— Model used via Codex MCP for section review. Must be an OpenAI model.gpt-5.4 - TARGET_VENUE =
— Default venue. Supported:ICLR
,ICLR
,NeurIPS
,ICML
(also ICCV/ECCV),CVPR
(also EMNLP/NAACL),ACL
,AAAI
(ACM MM, SIGIR, KDD, CHI, etc.),ACM
(IEEE Transactions / Letters, e.g., T-PAMI, JSAC, TWC, TCOM, TSP, TIP),IEEE_JOURNAL
(IEEE conferences, e.g., ICC, GLOBECOM, INFOCOM, ICASSP). Determines style file and formatting.IEEE_CONF - ANONYMOUS = true — If true, use anonymous author block. Set
for camera-ready. Note: most IEEE venues do NOT use anonymous submission — setfalse
for IEEE.false - MAX_PAGES = 9 — Main body page limit. For ML conferences: counts from first page to end of Conclusion section, references and appendix NOT counted. For IEEE venues: references ARE counted toward the page limit. Typical limits: IEEE journal = no strict limit (but 12-14 pages typical for Transactions, 4-5 for Letters), IEEE conference = 5-8 pages including references.
- DBLP_BIBTEX = true — Fetch real BibTeX from DBLP/CrossRef instead of LLM-generated entries. Eliminates hallucinated citations. Zero install required. Set
to use legacy behavior (LLM search +false
markers).[VERIFY]
Inputs
- PAPER_PLAN.md — outline with claims-evidence matrix, section plan, figure plan (from
)/paper-plan - NARRATIVE_REPORT.md — the research narrative (primary source of content)
- Generated figures — PDF/PNG files in
(fromfigures/
)/paper-figure - LaTeX includes —
(fromfigures/latex_includes.tex
)/paper-figure - Bibliography — existing
file, or will create one.bib
If no PAPER_PLAN.md exists, ask the user to run
/paper-plan first or provide a brief outline.
Orchestra-Guided Writing Overlay
Keep the existing
insleep workflow, file layout, and defaults. Use the shared references below only when they improve writing quality:
- Read
before drafting the Abstract, Introduction, Related Work, or when prose feels generic.../shared-references/writing-principles.md - Read
during the final write-up and submission-readiness pass.../shared-references/venue-checklists.md - Read
only when the built-in DBLP/CrossRef workflow is insufficient.../shared-references/citation-discipline.md
These references are support material, not extra workflow phases.
Templates
Venue-Specific Setup
The skill includes conference templates in
templates/. Select based on TARGET_VENUE:
ICLR:
\documentclass{article} \usepackage{iclr2026_conference,times} % \iclrfinalcopy % Uncomment for camera-ready
NeurIPS:
\documentclass{article} \usepackage[preprint]{neurips_2025} % \usepackage[final]{neurips_2025} % Camera-ready
ICML:
\documentclass[accepted]{icml2025} % Use [accepted] for camera-ready
IEEE Journal (Transactions, Letters):
\documentclass[journal]{IEEEtran} \usepackage{cite} % IEEE uses \cite{}, NOT natbib % Author block uses \author{Name~\IEEEmembership{Member,~IEEE}}
IEEE Conference (ICC, GLOBECOM, INFOCOM, ICASSP, etc.):
\documentclass[conference]{IEEEtran} \usepackage{cite} % IEEE uses \cite{}, NOT natbib % Author block uses \IEEEauthorblockN / \IEEEauthorblockA
Project Structure
Generate this file structure:
paper/ ├── main.tex # master file (includes sections) ├── iclr2026_conference.sty # or neurips_2025.sty / icml2025.sty / IEEEtran.cls + IEEEtran.bst ├── math_commands.tex # shared math macros ├── references.bib # bibliography (filtered — only cited entries) ├── sections/ │ ├── 0_abstract.tex │ ├── 1_introduction.tex │ ├── 2_related_work.tex │ ├── 3_method.tex # or preliminaries, setup, etc. │ ├── 4_experiments.tex │ ├── 5_conclusion.tex │ └── A_appendix.tex # proof details, extra experiments └── figures/ # symlink or copy from project figures/
Section files are FLEXIBLE: If the paper plan has 6-8 sections, create corresponding files (e.g.,
4_theory.tex, 5_experiments.tex, 6_analysis.tex, 7_conclusion.tex).
Workflow
Step 0: Backup and Clean
If
paper/ already exists, back up to paper-backup-{timestamp}/ before overwriting. Never silently destroy existing work.
CRITICAL: Clean stale files. When changing section structure (e.g., 5 sections → 7 sections), delete section files that are no longer referenced by
main.tex. Stale files (e.g., old 5_conclusion.tex left behind when conclusion moved to 7_conclusion.tex) cause confusion and waste space.
Step 1: Initialize Project
- Create
directorypaper/ - Copy venue template from
— the template already includes:templates/- All standard packages (amsmath, hyperref, cleveref, booktabs, etc.)
- Theorem environments with
fix\crefname{assumption} - Anonymous author block
- Generate
with paper-specific notationmath_commands.tex - Create section files matching PAPER_PLAN structure
Author block (anonymous mode):
\author{Anonymous Authors}
Step 2: Generate math_commands.tex
Create shared math macros based on the paper's notation:
% math_commands.tex — shared notation \newcommand{\R}{\mathbb{R}} \newcommand{\E}{\mathbb{E}} \DeclareMathOperator*{\argmin}{arg\,min} \DeclareMathOperator*{\argmax}{arg\,max} % Add paper-specific notation here
Step 3: Write Each Section
Process sections in order. For each section:
- Read the plan — what claims, evidence, citations belong here
- Read NARRATIVE_REPORT.md — extract relevant content, findings, and quantitative results
- Draft content — write complete LaTeX (not placeholders)
- Insert figures/tables — use snippets from
figures/latex_includes.tex - Add citations — for ML conferences (ICLR/NeurIPS/ICML/CVPR/ACL/AAAI): use
/\citep{}
(natbib). For IEEE venues: use\citet{}
(numeric style via\cite{}
package). Never mix natbib and cite commands.cite
Before drafting the front matter, re-read the one-sentence contribution from
PAPER_PLAN.md. The Abstract and Introduction should make that takeaway obvious before the reader reaches the full method.
Section-Specific Guidelines
§0 Abstract:
- Use the 5-part flow from
: what, why hard, how, evidence, strongest result../shared-references/writing-principles.md - Must be self-contained (understandable without reading the paper)
- Start with the paper's specific contribution, not generic field-level background
- Include one concrete quantitative result
- 150-250 words (check venue limit)
- No citations, no undefined acronyms
- No
— that's in main.tex\begin{abstract}
§1 Introduction:
- Open with a compelling hook (1-2 sentences, problem motivation)
- State the gap clearly ("However, ...")
- Give a brief approach overview before the reader gets lost in details
- List 2-4 specific, falsifiable contributions as a numbered or bulleted list
- Preview the strongest result early instead of saving it for the experiments section
- End with a brief roadmap ("The rest of this paper is organized as...")
- Include the main result figure if space allows
- Target: 1-1.5 pages
- Methods should begin by page 2-3 at the latest
§2 Related Work:
- MINIMUM 1 full page (3-4 substantive paragraphs). Short related work sections are a common reviewer complaint.
- Organize by category using
\paragraph{Category Name.} - Organize methodologically, by assumption class, or by research question; do not write paper-by-paper mini-summaries
- Each category: 1 paragraph summarizing the line of work + 1-2 sentences positioning this paper
- Do NOT just list papers — synthesize and compare
- End each paragraph with how this paper relates/differs
§3 Method / Preliminaries / Setup:
- Define notation early (reference math_commands.tex)
- Use
,\begin{definition}
environments for formal statements\begin{theorem} - For theory papers: include proof sketches of key results in main body, full proofs in appendix
- For theory papers: include a comparison table of prior bounds vs. this paper
- Include algorithm pseudocode if applicable (
oralgorithm2e
)algorithmic - Target: 1.5-2 pages
§4 Experiments:
- Start with experimental setup (datasets, baselines, metrics, implementation details)
- Main results table/figure first
- Then ablations and analysis
- Every claim from the introduction must have supporting evidence here
- For each major experiment, make explicit what claim it supports and what the reader should notice
- Target: 2.5-3 pages
§5 Conclusion:
- Summarize contributions (NOT copy-paste from intro — rephrase)
- Limitations (be honest — reviewers appreciate this)
- Future work (1-2 concrete directions)
- Ethics statement and reproducibility statement (if venue requires)
- Target: 0.5 pages
Appendix:
- Proof details (full proofs of main-body theorems)
- Additional experiments, ablations
- Implementation details, hyperparameter tables
- Additional visualizations
Step 4: Build Bibliography
CRITICAL: Only include entries that are actually cited in the paper.
- Scan all citation references in the drafted sections (
/\citep{}
for ML conferences,\citet{}
for IEEE venues)\cite{} - Build a citation key list
- For each citation key:
- Check existing
files in the project/narrative docs.bib - If not found and DBLP_BIBTEX = true, use the verified fetch chain below
- If not found and DBLP_BIBTEX = false, search arXiv/Scholar for correct BibTeX
- NEVER fabricate BibTeX entries — mark unknown ones with
comment[VERIFY]
- Check existing
- Write
containing ONLY cited entries (no bloat)references.bib
Verified BibTeX Fetch (when DBLP_BIBTEX = true)
Three-step fallback chain — zero install, zero auth, all real BibTeX:
Step A: DBLP (best quality — full venue, pages, editors)
# 1. Search by title + first author curl -s "https://dblp.org/search/publ/api?q=TITLE+AUTHOR&format=json&h=3" # 2. Extract DBLP key from result (e.g., conf/nips/VaswaniSPUJGKP17) # 3. Fetch real BibTeX curl -s "https://dblp.org/rec/{key}.bib"
Step B: CrossRef DOI (fallback — works for arXiv preprints)
# If paper has a DOI or arXiv ID (arXiv DOI = 10.48550/arXiv.{id}) curl -sLH "Accept: application/x-bibtex" "https://doi.org/{doi}"
Step C: Mark
(last resort)
If both DBLP and CrossRef return nothing, mark the entry with [VERIFY]
% [VERIFY] comment. Do NOT fabricate.
Why this matters: LLM-generated BibTeX frequently hallucinates venue names, page numbers, or even co-authors. DBLP and CrossRef return publisher-verified metadata. Upstream skills (
/research-lit, /novelty-check) may mention papers from LLM memory — this fetch chain is the gate that prevents hallucinated citations from entering the final .bib.
If the DBLP/CrossRef flow is not enough, load
../shared-references/citation-discipline.md for stricter fallback rules before adding placeholders.
Automated bib cleaning — use this Python pattern to extract only cited entries:
import re # 1. Grep all \citep{...}, \citet{...}, and \cite{...} from all .tex files # 2. Extract unique keys (handle multi-cite like \citep{a,b,c} or \cite{a,b,c}) # 3. Parse the full .bib file, keep only entries whose key is in the cited set # 4. Write the filtered bib
This prevents bib bloat (e.g., 948 lines → 215 lines in testing).
Citation verification rules (from claude-scholar + Imbad0202):
- Every BibTeX entry must have: author, title, year, venue/journal
- Prefer published venue versions over arXiv preprints (if published)
- Use consistent key format:
(e.g.,{firstauthor}{year}{keyword}
)ho2020denoising - Double-check year and venue for every entry
- Remove duplicate entries (same paper with different keys)
Step 5: De-AI Polish and Clarity Pass
After drafting all sections, scan for common AI writing patterns and fix them:
First apply the sentence-level clarity rules from
../shared-references/writing-principles.md:
- keep subject and verb close together,
- put familiar context first and new information later,
- place the most important information near the end of the sentence,
- let each paragraph do one job,
- use verbs for actions instead of nominalized nouns.
Then fix the common content patterns below:
- Significance inflation ("groundbreaking", "revolutionary" → use measured language)
- Formulaic transitions ("In this section, we..." → remove or vary)
- Generic conclusions ("This work opens exciting new avenues" → be specific)
Language patterns to fix (watch words):
- Replace: delve, pivotal, landscape, tapestry, underscore, noteworthy, intriguingly
- Remove filler: "It is worth noting that", "Importantly,", "Notably,"
- Avoid rule-of-three lists ("X, Y, and Z" appearing repeatedly)
- Don't start consecutive sentences with "This" or "We"
- Replace vague nouns with concrete ones when ambiguity is possible ("this result", "this ablation", "this theorem")
Step 6: Cross-Review with REVIEWER_MODEL
Send the complete draft to GPT-5.4 xhigh:
mcp__codex__codex: model: gpt-5.4 config: {"model_reasoning_effort": "xhigh"} prompt: | Review this [VENUE] paper draft (main body, excluding appendix). Focus on: 1. Does each claim from the intro have supporting evidence? 2. Is the writing clear, concise, and free of AI-isms? 3. Any logical gaps or unclear explanations? 4. Does it fit within [MAX_PAGES] pages (to end of Conclusion)? 5. Is related work sufficiently comprehensive (≥1 page)? 6. For theory papers: are proof sketches adequate? 7. Are figures/tables clearly described and properly referenced? 8. Would a skim reader understand the contribution from the title, abstract, introduction, and Figure 1? For each issue, specify: severity (CRITICAL/MAJOR/MINOR), location, and fix. [paste full draft text]
Apply CRITICAL and MAJOR fixes. Document MINOR issues for the user.
Step 7: Reverse Outline Test (from Research-Paper-Writing-Skills)
After drafting all sections:
- Extract topic sentences — pull the first sentence of every paragraph
- Read them in sequence — they should form a coherent narrative on their own
- Check claim coverage — every claim from the Claims-Evidence Matrix must appear
- Check evidence mapping — every experiment/figure must support a stated claim
- Fix gaps — if a topic sentence doesn't advance the story, rewrite the paragraph
Step 8: Final Checks
Before declaring done:
- All
and\ref{}
match (no undefined references)\label{} - All citation commands (
/\citep{}
for ML conferences,\citet{}
for IEEE) have corresponding BibTeX entries\cite{} - No author information in anonymous mode
- Figure/table numbering is correct
- Page count within MAX_PAGES (main body to Conclusion end)
- No TODO/FIXME/XXX markers left in the text
- No
markers left unchecked[VERIFY] - Abstract is self-contained (understandable without reading the paper)
- Title is specific and informative (not generic)
- Related work is ≥1 full page
- references.bib contains ONLY cited entries (no bloat)
- No stale section files — every .tex in
issections/
ed by\inputmain.tex - Section files match main.tex — file numbering and
paths are consistent\input - Venue-specific required sections/checklists satisfied (read
if needed)../shared-references/venue-checklists.md - A skim reader can recover the main claim from the title, abstract, introduction, and Figure 1/captions
Key Rules
- Large file handling: If the Write tool fails due to file size, immediately retry using Bash (
) to write in chunks. Do NOT ask the user for permission — just do it silently.cat << 'EOF' > file - Do NOT generate author names, emails, or affiliations — use anonymous block or placeholder
- Write complete sections, not outlines — the output should be compilable LaTeX
- One file per section — modular structure for easy editing
- Every claim must cite evidence — cross-reference the Claims-Evidence Matrix
- Compile-ready — the output should compile with
without errors (modulo missing figures)latexmk - No over-claiming — use hedging language ("suggests", "indicates") for weak evidence
- Venue style matters — ML conferences (ICLR/NeurIPS/ICML) use
(natbib
/\citep
); IEEE venues use\citet
package (cite
, numeric). Never mix.\cite{} - Page limit rules differ by venue — ML conferences: main body to Conclusion, references/appendix NOT counted. IEEE: references ARE counted toward the page limit.
- Clean bib — references.bib must only contain entries that are actually
d\cite - Section count is flexible — match PAPER_PLAN structure, don't force into 5 sections
- Backup before overwrite — never destroy existing
directory without backing uppaper/ - Front-load the contribution — do not hide the payoff until the experiments or appendix
Writing Quality Reference
— story framing, abstract/introduction patterns, sentence-level clarity, reviewer reading order../shared-references/writing-principles.md
— ICLR/NeurIPS/ICML/IEEE submission requirements to check before declaring done../shared-references/venue-checklists.md
— stricter fallback for ambiguous citations../shared-references/citation-discipline.md
Keep using the reverse-outline test and anti-inflation polish from the main workflow above; the shared references are there to improve quality without adding a new phase.
Acknowledgements
Writing methodology adapted from Research-Paper-Writing-Skills (CCF award-winning methodology). Citation verification from claude-scholar and Imbad0202/academic-research-skills. This hybrid pack's writing-guidance overlay is adapted from Orchestra Research's paper-writing materials.