| name | paper-writing |
| description | Generic-purpose writing guide for ML/NLP/DL papers targeting ACL/ICLR/ICML/AAAI/NeurIPS/EMNLP. Distills Widom, Shwartz, SNL-UCSB, and Pengsida into a four-stage pipeline. Use whenever drafting or revising any section. Always run a cohort-research pass against the target venue before drafting. |
Paper Writing — A Workflow + Section Guide for ML/NLP Papers
When to use
Trigger on any of:
- "write/draft the X section" (X = abstract / introduction / related work / method / experiments / conclusion)
- "polish/revise/tighten/compress the X section"
- "我想写论文的 X 节" / "帮我改 X 这一节"
- "review my draft" / "审一遍我的写作"
- "我要投 ACL/ICLR/ICML/AAAI/NeurIPS/EMNLP" — any time a target venue is named
Do NOT open LaTeX and start drafting before running the cohort-research pass (Section 2). Generic writing checklists yield generic prose. Venue conventions live in the published cohort, not in this skill.
Section 1 — Pipeline at a glance
This skill enforces a four-stage pipeline. Compress freely, but do not skip:
| Stage | Output | When | Key references |
|---|
| 1. Cohort Research | 1-page distillation of target-venue writing conventions | Once per paper, before architecture | Section 2 below; references/cohort-example/distillation.md |
| 2. Architecture | Section outline + claim list + figure/table plan | After cohort research, before drafting | references/workflow.md |
| 3. Drafting | Section drafts in enforced order: Draft 0 Intro → Method → Experiments → Related Work → Final Intro → Abstract → Conclusion | Once architecture is locked | references/sections/<section>.md |
| 4. Compression | 30–50% shorter draft | After all sections drafted, before submission | references/compression.md |
Cross-stage concerns (style, claim-evidence alignment, conflict resolution) are addressed inline at each stage.
Section 2 — Cohort Research (the first stage)
This is the single highest-leverage step.
Why cohort first. What counts as a "Method" vs an "Experiment", what level of abstraction is expected, how modules are named, whether Related Work goes before or after Experiments — these are unwritten conventions of the target subfield. They are NOT in any generic checklist; they live only in the published cohort.
Workflow
-
Identify cohort: 3-5 papers in the target venue / subfield. Must include at least one paper accepted at the EXACT target venue (or its sister venue from the same series — ACL ↔ EMNLP ↔ NAACL; ICLR ↔ ICML ↔ NeurIPS).
-
Add 1 cross-field exemplar: a paper outside the immediate subfield whose section is admired by the user. Prevents cohort tunnel-vision.
-
Pull arxiv LaTeX e-print (NOT PDF):
curl -sSL https://arxiv.org/e-print/<id> -o paper.tar.gz
mkdir <name> && tar -xzf paper.tar.gz -C <name>
PDF table-reading is unreliable; always go to source. Cited numbers, table contents, and notation conventions should all be verified against the .tex.
-
Locate the target section in each paper — single-file papers need grep -nE '^\\?section'; multi-file papers usually have sections/<name>.tex.
-
Read across the cohort with a fixed lens. Default lens (extend per section):
| Lens | What to capture |
|---|
| Opening sentence | Framing device (analogy / unifying concept)? Or dive straight to a definition / problem? |
| Subsection naming | Engineering label vs role-name vs design-signal name? |
| First sentence of each subsection | Problem statement / role assertion / direct definition? |
| Number placement | Where do raw values appear? Where are symbols used? Where is each kind of detail isolated? |
| Equation density | Sparse (system style) vs heavy (algorithm style)? |
| Justification placement | Separate "Advantages" paragraph vs embedded in design prose? |
| Implementation Details | In Method body? End of Method? Experiments? Appendix? |
| Voice | Present-tense declarative ("we design") vs procedural ("we configured")? |
-
Distill the writing 思路 — qualitative, ≤1 page, plain text. Capture what this section is for in this subfield, not "language patterns".
-
Then draft.
Where to store cohort papers
One cohort folder per paper, not one global cache:
- Default location:
<paper-repo-root>/cohort/. For example, if your paper repo lives at ~/my-paper/, your cohort folder should be ~/my-paper/cohort/.
- Layout: one extracted arxiv tarball per subdirectory, e.g.,
cohort/<paper-name>/. Save the 1-page distillation at the root as cohort/distillation.md.
Why one-per-paper, not one global:
- Prevents cross-domain pollution — observations from one subfield's cohort should not bias a follow-up paper in a different subfield.
- Survives within-domain reuse — the same paper, revisited weeks later, lands in the same folder; no re-downloading.
- Travels with the repo — when the paper is git-tracked or shared, its cohort travels along.
If the user prefers a different location (e.g., outside the repo to keep it untracked), ask once at the start of cohort research and use it consistently for that paper.
What "good distillation" looks like
A worked example is provided at references/cohort-example/distillation.md, with the corresponding raw .tex files in references/cohort-example/method_sections/. This example is from one specific subfield; treat it as a format reference only — do not assume any of its observations transfer to your subfield. Open it, see the structure (per-paper notes + cross-cohort patterns, lensed via Section 2 step 5), then build a fresh distillation from scratch for your own target.
Cohort wins over generic advice
When this skill's generic rules conflict with what the target-venue cohort actually does, the cohort wins. The same principle applies to baseline choice — anchor numbers to what the venue cohort has published, not vendor blog posts or this-month's leaderboard. Writing decisions (Related Work placement, equation density, named-module conventions) follow the same rule.
Section 3 — Per-section dispatch
After cohort research, load the relevant section file. Each file contains three pieces (matching the structure validated on Method in the legacy skill):
- Rhetorical moves — what the section is doing, paragraph by paragraph
- Pre-writing template — to fill in plain text before opening LaTeX
- Self-check checklist — to run after drafting, before declaring done
| Section | File | Primary template |
|---|
| Title + Abstract | references/sections/title-abstract.md | Widom abstract rules + Shwartz NLP-paper conventions |
| Introduction | references/sections/introduction.md | Widom five-point as main spine; SNL-UCSB 6-move as cohort variant |
| Related Work | references/sections/related-work.md | 3-move category-cluster sequence; placement decision rule |
| Method | references/sections/method.md | Framing device + named-module triad + Symbol-Value-Argument boundary |
| Experiments | references/sections/experiments.md | 6-move setup→head-to-head→deep-dive→takeaway→ablation→robustness |
| Conclusion | references/sections/conclusion.md | Restate-contribution + future-work-marks-territory |
Cross-section concerns live in:
references/workflow.md — writing order, why Intro is written twice, Abstract last, draft-zero principles
references/style.md — sentence-level + LaTeX/citation conventions (Shwartz + Widom + ML/NLP idioms)
references/compression.md — SNL-UCSB's 7 compression operations, used in Stage 4
Section 4 — Writing order and "Intro twice"
Detailed in references/workflow.md. Key rules:
- Draft 0 Introduction is written before Experiments, as a framing scaffold. It establishes the contribution claims that constrain what Experiments must prove. It is explicitly disposable.
- Final Introduction is rewritten from scratch after Experiments are finalized, constrained by actual evidence. Results Preview (Move 5/6) now contains real numbers.
- Abstract is written last, after Final Introduction. Abstract is a compression of Introduction, not a separate composition.
- Conclusion is written after Abstract — same idea, different audience (the reader who finished vs. the reader deciding to read).
- Related Work in ML/NLP goes after Method/Experiments by default (cohort convention). Override only if your cohort places it earlier.
Source crosswalk:
- SNL-UCSB enforces this ordering explicitly ("Draft 0 Introduction → Evaluation → Design → Background → Related Work → Final Introduction → Abstract").
- Shwartz: "Write introductions last."
- Widom: notes Introduction structure but is silent on ordering. No conflict.
Section 5 — Conflict resolution rules
When two sources (Widom / Shwartz / SNL-UCSB / Pengsida / this skill) disagree, apply in order:
- Cohort wins. If the target-venue cohort (≥3 of 5 recent accepted papers) does X, do X — even if a source says Y.
- Venue priors. Within ML/NLP top venues, default to:
- Related Work after main body (not before).
- First-person plural ("we").
- Active voice; present tense for method, past tense for experimental procedure.
- "Large language models" lowercased.
\citep for parenthetical, \citet for in-text (NLP) / \cite{} (default; some ICML/NeurIPS templates differ).
- Number-first contributions in Introduction.
- Sources rank: Shwartz > Widom > SNL-UCSB > Pengsida for ML/NLP-specific style; Widom > Shwartz > others for structural Introduction guidance (her five-point predates and grounds the others).
- Skill convention. This skill's defaults below.
Recurring conflicts pre-resolved:
| Question | Decision | Why |
|---|
| Where does Related Work go? | After Method/Experiments | ML/NLP cohort default; SNL-UCSB also recommends post-eval; overrides Widom's "depends on length" |
| When write Introduction? | Twice (Draft 0 then Final) | SNL-UCSB; aligns with Shwartz "write intro last" via the Final pass |
| Intro structure | Widom five-point | Predates and grounds 6-move; simpler; ML/NLP-canonical |
| Method opening | Framing device / unifying concept | Cohort-consensus (legacy skill's Section 3 Principle 1); never open with implementation |
| Numbers in Method | Symbols only, values isolated to Implementation Details / Experiments | Symbol-Value-Argument rule from legacy skill |
| Capitalization | "large language models" not "Large Language Models" | Shwartz; ACL convention |
| Hedging | None ("We show", not "We believe") | SNL-UCSB voice rule; ML/NLP cohort default |
| Revision posture | Forward positive claims, not defensive negation | Reviewer concerns should sharpen what the method is and proves, not make the paper sound apologetic |
Section 6 — Pre-flight before every drafting session
Before opening LaTeX, confirm:
If any box is unchecked, fix it before continuing.
Section 7 — Common pitfalls (ML/NLP-specific)
Drawn from cohort observation and lessons from past submissions. Pause and check before submitting.
- Claim-evidence misalignment — Abstract / Intro promise X, Experiments only show X′ ⊊ X. Every claim in Intro must map to a specific Experiments subsection. Maintain a claim-to-subsection table while drafting; if a claim has no home in Experiments, narrow the claim.
- Vendor leaderboard comparisons — anchor baselines to venue-cohort published numbers, not current-month blog posts. A vendor's reported number on a benchmark is not the same as the venue's cited number for the same model.
- Below-noise-floor A/B claims — single-run differences on noisy benchmarks (memory, long-context, RAG) are unreliable. State seed protocol; use mean±std or paired bootstrap.
- Per-benchmark hyperparameter assumptions — what works on benchmark A may not transfer to B. Either show transfer or scope your claims to the benchmarks you actually tuned on.
- PDF-based reference checking — when verifying a number you cite, pull arxiv
e-print LaTeX source and grep the .tex. Do NOT trust PDF table extraction; column alignment and merged cells routinely produce silent misreads.
- Mis-cited baselines — vendor blog numbers ≠ paper numbers; reproductions ≠ published numbers. Decide once which you cite and stay consistent across the main table, Abstract, and Introduction.
- Defensive negation after reviews — revision prose often drifts into "our method is not merely X / does not suffer from Y / is not ad hoc" because it is reacting to reviewer criticism. Rewrite from the positive mechanism forward: "Our method models X via Y, which enables Z." Use negation only after the positive claim is established and only to mark a precise boundary or structural contrast.
Section 8 — Source provenance
This skill distills four sources and resolves their conflicts via Section 5.
- Jennifer Widom — "Tips for Writing Technical Papers" (Stanford InfoLab, 2006). https://cs.stanford.edu/people/widom/paper-writing.html. Source of the Introduction five-point structure (Problem / Why important / Why hard / Why not solved / Approach + results) and the Contributions-as-bullet-list convention.
- Vered Shwartz — "Tips for Writing NLP Papers" (Medium, 2023). Source of ML/NLP-specific style: minimalism, "intro answers Why before How", concrete recurring example, capitalization, ACL Anthology citation,
\citep vs \citet.
- SNL-UCSB paper-writing-skill (UC Santa Barbara Systems & Networking Lab). https://github.com/SNL-UCSB/paper-writing-skill. Source of: five-stage pipeline, write-Intro-twice, 6-move Intro and 6-move Evaluation sequences, 7 compression operations, voice rules, claim-first headings.
- Pengsida (彭思达) —
learning_research, via Master-cai's adaptation (https://github.com/Master-cai/Research-Paper-Writing-Skills). Source of: three-piece module structure (problem → design → advantage), three-level clarity check (logic / paragraph / sentence), sentence skeletons.
The legacy skill paper-writing-legacy retains the memory-systems-specific cohort distillation (LightMem / MemGPT / A-Mem / MemoryOS / Self-RAG / SeCom / LongMemEval / MemAgent / MemoryT1 / BEAM / MemGAS) for reference. The cohort .tex files and distillation are duplicated under references/cohort-example/ here for use as a format example only — do not assume those conventions transfer to other subfields.
Section 9 — Update path
- When working on a paper in a new subfield: run Section 2 cohort research, save the new distillation at
references/cohort-<subfield>/distillation.md for reuse.
- When a generic rule in this skill is contradicted by a strong cohort: revise the rule in Section 5 with the cohort evidence, rather than overriding silently.
- When a section file in
references/sections/ is found wanting (e.g., draft kept failing checklist), update both the move list and the checklist in the same file — keep the three pieces synchronized.
- Carry-over principles worth re-loading at the start of each drafting session (see also Sections 2, 5, 7):
- Pull arxiv LaTeX
e-print, not PDF, when verifying any cited number.
- Anchor baselines to the venue cohort, not vendor leaderboards.
- Once a paper's framing is locked (its claim list and target venue), do not silently widen claims mid-draft — adjust the locked framing first, then the prose.