ml-paper-writing by davila7/claude-code-templates
npx skills add https://github.com/davila7/claude-code-templates --skill ml-paper-writing针对 NeurIPS、ICML、ICLR、ACL、AAAI 和 COLM 撰写可发表论文的专家级指导。本技能结合了顶尖研究者(Nanda、Farquhar、Karpathy、Lipton、Steinhardt)的写作理念与实用工具:LaTeX 模板、引文验证 API 和会议清单。
论文写作是协作性的,但 Claude 应主动交付草稿。
典型的工作流程始于一个包含代码、结果和实验产物的研究仓库。Claude 的角色是:
关键原则:积极主动。如果仓库和结果清晰,就交付完整草稿。不要因为等待每个部分的反馈而停滞不前——科学家们很忙。提供一些具体的东西让他们可以回应,然后根据他们的反馈进行迭代。
这是 AI 辅助学术写作中最重要的规则。
AI 生成的引文有 约 40% 的错误率。捏造的参考文献——不存在的论文、错误的作者、不正确的年份、伪造的 DOI——是一种严重的学术不端行为,可能导致直接拒稿或撤稿。
切勿凭记忆生成 BibTeX 条目。务必通过编程方式获取。
| 操作 | ✅ 正确 | ❌ 错误 |
|---|---|---|
| 添加引文 |
广告位招租
在这里展示您的产品或服务
触达数万 AI 开发者,精准高效
| 搜索 API → 验证 → 获取 BibTeX |
| 凭记忆编写 BibTeX |
| 不确定某篇论文 | 标记为 [CITATION NEEDED] | 猜测参考文献 |
| 找不到确切的论文 | 注明:"placeholder - verify" | 编造听起来相似的论文 |
如果无法通过编程方式验证引文,则必须:
% EXPLICIT PLACEHOLDER - requires human verification
\cite{PLACEHOLDER_author2024_verify_this} % TODO: Verify this citation exists
务必告知科学家:"我已将 [X] 条引文标记为需要验证的占位符。我无法确认这些论文是否存在。"
为了获得最佳的论文搜索体验,请安装 Exa MCP,它提供实时学术搜索:
Claude Code:
claude mcp add exa -- npx -y mcp-remote "https://mcp.exa.ai/mcp"
Cursor / VS Code (添加到 MCP 设置):
{
"mcpServers": {
"exa": {
"type": "http",
"url": "https://mcp.exa.ai/mcp"
}
}
}
Exa MCP 支持如下搜索:
然后使用 Semantic Scholar API 验证结果并通过 DOI 获取 BibTeX。
开始论文写作时,首先要理解项目:
Project Understanding:
- [ ] Step 1: Explore the repository structure
- [ ] Step 2: Read README, existing docs, and key results
- [ ] Step 3: Identify the main contribution with the scientist
- [ ] Step 4: Find papers already cited in the codebase
- [ ] Step 5: Search for additional relevant literature
- [ ] Step 6: Outline the paper structure together
- [ ] Step 7: Draft sections iteratively with feedback
步骤 1:探索仓库
# Understand project structure
ls -la
find . -name "*.py" | head -20
find . -name "*.md" -o -name "*.txt" | xargs grep -l -i "result\|conclusion\|finding"
寻找:
README.md - 项目概述和主张results/, outputs/, experiments/ - 关键发现configs/ - 实验设置.bib 文件或引文参考步骤 2:识别现有引文
检查代码库中已引用的论文:
# Find existing citations
grep -r "arxiv\|doi\|cite" --include="*.md" --include="*.bib" --include="*.py"
find . -name "*.bib"
这些是"相关工作"部分的高价值起点——科学家已经认为它们相关。
步骤 3:明确贡献
在写作之前,与科学家明确确认:
"根据我对仓库的理解,主要贡献似乎是 [X]。关键结果显示 [Y]。这是您希望论文采用的框架吗,还是我们应该强调不同的方面?"
切勿假设叙述——务必与人类验证。
步骤 4:搜索额外文献
使用网络搜索查找相关论文:
Search queries to try:
- "[main technique] + [application domain]"
- "[baseline method] comparison"
- "[problem name] state-of-the-art"
- Author names from existing citations
然后使用下面的引文工作流程验证并获取 BibTeX。
步骤 5:交付初稿
积极主动——交付完整草稿,而不是为每个部分请求许可。
如果仓库提供了清晰的结果且贡献显而易见:
如果对框架或主要主张确实不确定:
随草稿附上的问题(而不是之前):
在以下情况使用此技能:
始终记住:初稿是讨论的起点,不是最终成果。
默认:积极主动。交付草稿,然后迭代。
| 置信度 | 行动 |
|---|---|
| 高(仓库清晰,贡献明显) | 撰写完整草稿,交付,根据反馈迭代 |
| 中(有些模糊) | 撰写草稿并标记不确定性,继续 |
| 低(主要未知) | 提出 1-2 个有针对性的问题,然后起草 |
先起草,随草稿提问(而不是之前):
| 部分 | 自主起草 | 随草稿标记 |
|---|---|---|
| 摘要 | 是 | "将贡献构建为 X——如果需要请调整" |
| 引言 | 是 | "强调了问题 Y——如果错误请纠正" |
| 方法 | 是 | "包含了细节 A, B, C——添加缺失部分" |
| 实验 | 是 | "突出了结果 1, 2, 3——如果需要请重新排序" |
| 相关工作 | 是 | "引用了论文 X, Y, Z——添加我遗漏的任何论文" |
仅在以下情况阻塞等待输入:
不要为以下情况阻塞:
最关键的一点:你的论文不是一系列实验的集合——它是一个有明确贡献、由证据支持的故事。
每一篇成功的 ML 论文都围绕 Neel Nanda 所称的"叙述"展开:一个简短、严谨、基于证据的技术故事,其要点是读者关心的。
三大支柱(必须在引言结束时清晰明了):
| 支柱 | 描述 | 示例 |
|---|---|---|
| 是什么 | 1-3 个在连贯主题内的具体新颖主张 | "我们证明在条件 Z 下 X 实现了 Y" |
| 为什么 | 支持主张的严谨实证证据 | 强基线,区分假设的实验 |
| 所以呢 | 为什么读者应该关心 | 与公认的社区问题的联系 |
如果你不能用一句话陈述你的贡献,那么你还没有一篇论文。
复制此清单并跟踪进度。每个步骤都涉及起草 → 反馈 → 修订:
Paper Writing Progress:
- [ ] Step 1: Define the one-sentence contribution (with scientist)
- [ ] Step 2: Draft Figure 1 → get feedback → revise
- [ ] Step 3: Draft abstract → get feedback → revise
- [ ] Step 4: Draft introduction → get feedback → revise
- [ ] Step 5: Draft methods → get feedback → revise
- [ ] Step 6: Draft experiments → get feedback → revise
- [ ] Step 7: Draft related work → get feedback → revise
- [ ] Step 8: Draft limitations → get feedback → revise
- [ ] Step 9: Complete paper checklist (required)
- [ ] Step 10: Final review cycle and submission
步骤 1:定义一句话贡献
此步骤需要科学家的明确确认。
在撰写任何内容之前,阐明并验证:
"我建议将贡献构建为:'[一句话]'。这抓住了您认为的主要要点吗?我们应该调整重点吗?"
步骤 2:起草图 1
图 1 值得特别关注——许多读者会直接跳到它。
步骤 3:撰写摘要(5 句话公式)
来自 Sebastian Farquhar (DeepMind):
1. What you achieved: "We introduce...", "We prove...", "We demonstrate..."
2. Why this is hard and important
3. How you do it (with specialist keywords for discoverability)
4. What evidence you have
5. Your most remarkable number/result
删除 通用开头,如 "Large language models have achieved remarkable success..."
步骤 4:撰写引言(最多 1-1.5 页)
必须包括:
步骤 5:方法部分
确保可复现:
步骤 6:实验部分
对于每个实验,明确说明:
要求:
步骤 7:相关工作
按方法论组织,而不是逐篇论文:
好:"One line of work uses Floogledoodle's assumption [refs] whereas we use Doobersnoddle's assumption because..."
差:"Snap et al. introduced X while Crackle et al. introduced Y."
慷慨引用——审稿人很可能撰写了相关论文。
步骤 8:局限性部分(必需)
所有主要会议都要求此部分。反直觉的是,诚实有助于:
步骤 9:论文清单
NeurIPS、ICML 和 ICLR 都要求论文清单。参见 references/checklists.md。
本节提炼了顶尖 ML 研究者最重要的写作原则。 这些不是可选的风格建议——它们是区分被接受论文和被拒绝论文的关键。
"一篇论文是一个简短、严谨、基于证据的技术故事,其要点是读者关心的。" — Neel Nanda
本技能综合了在顶级会议上广泛发表的研究者的写作哲学:
| 来源 | 关键贡献 | 链接 |
|---|---|---|
| Neel Nanda (Google DeepMind) | 叙述原则,是什么/为什么/所以呢框架 | How to Write ML Papers |
| Sebastian Farquhar (DeepMind) | 5 句话摘要公式 | How to Write ML Papers |
| Gopen & Swan | 读者期望的 7 条原则 | Science of Scientific Writing |
| Zachary Lipton | 措辞选择,消除模糊表达 | Heuristics for Scientific Writing |
| Jacob Steinhardt (UC Berkeley) | 精确性,一致的术语 | Writing Tips |
| Ethan Perez (Anthropic) | 微观层面的清晰度技巧 | Easy Paper Writing Tips |
| Andrej Karpathy | 单一贡献焦点 | 各种讲座 |
如需深入了解任何内容,请参见:
大致在以下各项上花费相等的时间:
为什么? 大多数审稿人在阅读你的方法部分之前就已经形成了判断。读者接触你的论文的顺序是:标题 → 摘要 → 引言 → 图表 → 可能阅读其余部分。
这些原则基于读者实际处理文本的方式。违反这些原则会迫使读者在结构而非内容上花费认知努力。
| 原则 | 规则 | 示例 |
|---|---|---|
| 主语-动词邻近性 | 保持主语和动词接近 | ❌ "The model, which was trained on..., achieves" → ✅ "The model achieves... after training on..." |
| 强调位置 | 将重点放在句子末尾 | ❌ "Accuracy improves by 15% when using attention" → ✅ "When using attention, accuracy improves by 15% " |
| 主题位置 | 先放上下文,后放新信息 | ✅ "Given these constraints, we propose..." |
| 旧信息先于新信息 | 熟悉的信息 → 不熟悉的信息 | 向后链接,然后引入新信息 |
| 一个单元,一个功能 | 每个段落阐述一个要点 | 拆分多要点段落 |
| 动作在动词中 | 使用动词,而不是名词化 | ❌ "We performed an analysis" → ✅ "We analyzed" |
| 上下文先于新信息 | 在呈现之前设置场景 | 在展示方程之前先解释 |
完整的 7 条原则及详细示例: 参见 references/writing-guide.md
这些微小的改变会累积成显著更清晰的文本:
完整的微观技巧及示例: 参见 references/writing-guide.md
了解审稿人的行为有助于优先分配精力:
| 论文部分 | 阅读的审稿人百分比 | 启示 |
|---|---|---|
| 摘要 | 100% | 必须完美 |
| 引言 | 90%+(略读) | 前置贡献 |
| 图表 | 在方法部分之前检查 | 图 1 至关重要 |
| 方法 | 仅当感兴趣时 | 不要埋没重点 |
| 附录 | 很少 | 仅放置补充细节 |
底线:如果你的摘要和引言没有吸引审稿人,他们可能永远不会阅读你精彩的方法部分。
| 会议 | 页数限制 | 最终版额外页数 | 关键要求 |
|---|---|---|---|
| NeurIPS 2025 | 9 页 | +0 | 强制性清单,录用后需提供通俗摘要 |
| ICML 2026 | 8 页 | +1 | 需要更广泛影响声明 |
| ICLR 2026 | 9 页 | +1 | 需要 LLM 使用披露,互惠评审协议 |
| ACL 2025 | 8 页(长文) | 可变 | 强制性局限性部分 |
| AAAI 2026 | 7 页 | +1 | 严格遵守样式文件 |
| COLM 2025 | 9 页 | +1 | 专注于语言模型 |
通用要求:
LaTeX 模板: 参见 templates/ 目录获取所有会议模板。
始终先复制整个模板目录,然后在其中写作。
Template Setup Checklist:
- [ ] Step 1: Copy entire template directory to new project
- [ ] Step 2: Verify template compiles as-is (before any changes)
- [ ] Step 3: Read the template's example content to understand structure
- [ ] Step 4: Replace example content section by section
- [ ] Step 5: Keep template comments/examples as reference until done
- [ ] Step 6: Clean up template artifacts only at the end
步骤 1:复制完整模板
# Create your paper directory with the complete template
cp -r templates/neurips2025/ ~/papers/my-new-paper/
cd ~/papers/my-new-paper/
# Verify structure is complete
ls -la
# Should see: main.tex, neurips.sty, Makefile, etc.
⚠️ 重要:复制整个目录,而不仅仅是 main.tex。模板包括:
.sty) - 编译所需.bst) - 参考文献所需步骤 2:首先验证模板编译
在进行任何更改之前,按原样编译模板:
# Using latexmk (recommended)
latexmk -pdf main.tex
# Or manual compilation
pdflatex main.tex
bibtex main
pdflatex main.tex
pdflatex main.tex
如果未修改的模板无法编译,请先修复此问题。常见问题:
tlmgr install <package> 安装步骤 3:保留模板内容作为参考
不要立即删除所有示例内容。而是:
% KEEP template examples commented out as you write
% This shows you the expected format
% Template example (keep for reference):
% \begin{figure}[t]
% \centering
% \includegraphics[width=0.8\linewidth]{example-image}
% \caption{Template shows caption style}
% \end{figure}
% Your actual figure:
\begin{figure}[t]
\centering
\includegraphics[width=0.8\linewidth]{your-figure.pdf}
\caption{Your caption following the same style.}
\end{figure}
步骤 4:逐节替换内容
系统地完成论文:
Replacement Order:
1. Title and authors (anonymize for submission)
2. Abstract
3. Introduction
4. Methods
5. Experiments
6. Related Work
7. Conclusion
8. References (your .bib file)
9. Appendix
对于每个部分:
步骤 5:使用模板宏
模板通常定义有用的宏。检查序言部分:
% Common template macros to use:
\newcommand{\method}{YourMethodName} % Consistent method naming
\newcommand{\eg}{e.g.,\xspace} % Proper abbreviations
\newcommand{\ie}{i.e.,\xspace}
\newcommand{\etal}{\textit{et al.}\xspace}
步骤 6:仅在最后清理
仅在论文接近完成时移除模板工件:
% BEFORE SUBMISSION - remove these:
% - Commented-out template examples
% - Unused packages
% - Template's example figures/tables
% - Lorem ipsum or placeholder text
% KEEP these:
% - All style files (.sty)
% - Bibliography style (.bst)
% - Required packages from template
% - Any custom macros you're using
| 陷阱 | 问题 | 解决方案 |
|---|---|---|
仅复制 main.tex | 缺少 .sty,无法编译 | 复制整个目录 |
修改 .sty 文件 | 破坏会议格式 | 切勿编辑样式文件 |
| 添加随机包 | 冲突,破坏模板 | 仅在必要时添加 |
| 过早删除模板内容 | 失去格式参考 | 保留为注释直到完成 |
| 不频繁编译 | 错误累积 | 每节后编译 |
| 会议 | 主文件 | 关键样式文件 | 备注 |
|---|---|---|---|
| NeurIPS 2025 | main.tex | neurips.sty | 有 Makefile |
| ICML 2026 | example_paper.tex | icml2026.sty | 包含算法包 |
| ICLR 2026 | iclr2026_conference.tex | iclr2026_conference.sty | 有 math_commands.tex |
| ACL | acl_latex.tex | acl.sty | 严格的格式 |
| AAAI 2026 | aaai2026-unified-template.tex | aaai2026.sty | 非常严格的合规性 |
| COLM 2025 | colm2025_conference.tex | colm2025_conference.sty | 类似于 ICLR |
当一篇论文被某个会议拒绝或撤回并重新投稿到另一个会议时,需要进行格式转换。这是 ML 研究中常见的工作流程。
Format Conversion Checklist:
- [ ] Step 1: Identify source and target template differences
- [ ] Step 2: Create new project with target template
- [ ] Step 3: Copy content sections (not preamble)
- [ ] Step 4: Adjust page limits and content
- [ ] Step 5: Update conference-specific requirements
- [ ] Step 6: Verify compilation and formatting
步骤 1:关键模板差异
| 从 → 到 | 页数变化 | 关键调整 |
|---|---|---|
| NeurIPS → ICML | 9 → 8 页 | 删减 1 页,添加缺失的更广泛影响声明 |
| ICML → ICLR | 8 → 9 页 | 可以扩展实验,添加 LLM 披露 |
| NeurIPS → ACL | 9 → 8 页 | 为 NLP 惯例重构,添加局限性部分 |
| ICLR → AAAI | 9 → 7 页 | 需要大幅删减,严格遵守样式 |
| 任何 → COLM | 可变 → 9 | 重构以专注于语言模型 |
步骤 2:内容迁移(非模板合并)
切勿在模板之间复制 LaTeX 序言。 而是:
# 1. Start fresh with target template
cp -r templates/icml2026/ new_submission/
# 2. Copy ONLY content sections from old paper
# - Abstract text
# - Section content (between \section{} commands)
# - Figures and tables
# - Bibliography entries
# 3. Paste into target template structure
步骤 3:调整页数限制
当删减页数时(例如,NeurIPS 9 → AAAI 7):
当增加页数时(例如,ICML 8 → ICLR 9):
步骤 4:会议特定调整
| 目标会议 | 必需添加项 |
|---|---|
| ICML | 更广泛影响声明(结论之后) |
| ICLR | LLM 使用披露,互惠评审协议 |
| ACL/EMNLP | 局限性部分(强制),伦理声明 |
| AAAI | 严格遵守样式文件(无修改) |
| NeurIPS | 论文清单(附录),录用后需提供通俗摘要 |
步骤 5:更新参考文献
% Remove self-citations that reveal identity (for blind review)
% Update any "under review" citations to published versions
% Add new relevant work published since last submission
步骤 6:处理之前的审稿意见
在拒稿后重新投稿时:
常见转换陷阱:
\usepackage 命令(导致冲突)\bibliography{} 路径⚠️ 关键:AI 生成的引文有约 40% 的错误率。切勿凭记忆编写 BibTeX。
IF you cannot programmatically fetch a citation:
→ Mark it as [CITATION NEEDED] or [PLACEHOLDER - VERIFY]
→ Tell the scientist explicitly
→ NEVER invent a plausible-sounding reference
Citation Verification (MANDATORY for every citation):
- [ ] Step 1: Search using Exa MCP or Semantic Scholar API
- [ ] Step 2: Verify paper exists in 2+ sources (Semantic Scholar + arXiv/CrossRef)
- [ ] Step 3: Retrieve BibTeX via DOI (programmatically, not from memory)
- [ ] Step 4: Verify the claim you're citing actually appears in the paper
- [ ] Step 5: Add verified BibTeX to bibliography
- [ ] Step 6: If ANY step fails → mark as placeholder, inform scientist
步骤 0:使用 Exa MCP 进行初始搜索(推荐)
如果安装了 Exa MCP,使用它查找相关论文:
Search: "RLHF language model alignment 2023"
Search: "sparse autoencoders interpretability"
Search: "attention mechanism transformers Vaswani"
然后使用 Semantic Scholar 验证每个结果并通过 DOI 获取 BibTeX。
步骤 1:搜索 Semantic Scholar
from semanticscholar import SemanticScholar
sch = SemanticScholar()
results = sch.search_paper("attention mechanism transformers", limit=5)
for paper in results:
print(f"{paper.title} - {paper.paperId}")
print(f" DOI: {paper.externalIds.get('DOI', 'N/A')}")
步骤 2:验证存在性
确认论文至少出现在两个来源中(Semantic Scholar + CrossRef/arXiv)。
步骤 3:通过 DOI 检索 BibTeX
import requests
def doi_to_bibtex(doi: str) -> str:
"""Get verified BibTeX from DOI via CrossRef."""
response = requests.get(
f"https://doi.org/{doi}",
headers={"Accept": "application/x-bibtex"}
)
response.raise_for_status()
return response.text
# Example
bibtex = doi_to_bibtex("10.48550/arXiv.1706.03762")
print(bibtex)
步骤 4:验证主张
在引用特定主张之前,访问论文并确认所归因的主张确实出现。
步骤 5:明确处理失败情况
如果在任何步骤都无法验证引文:
% Option 1: Explicit placeholder
\cite{PLACEHOLDER_smith2023_verify} % TODO: Could not verify - scientist must confirm
% Option 2: Note in text
... as shown in prior work [CITATION NEEDED - could not verify Smith et al. 2023].
务必告知科学家:
"我无法验证以下引文,已将其标记为占位符:
- Smith et al. 2023 on reward hacking - 在 Semantic Scholar 中找不到
- Jones 2022 on scaling laws - 找到类似论文但作者不同 请在提交前验证这些引文。"
| 情况 | 行动 |
|---|---|
| 找到论文,获得 DOI,获取 BibTeX | ✅ 使用该引文 |
| 找到论文,无 DOI | ✅ 使用 arXiv BibTeX 或从论文手动录入 |
| 论文存在但无法获取 BibTeX | ⚠️ 标记占位符,告知科学家 |
| 不确定论文是否存在 | ❌ 标记 [CITATION NEEDED],告知科学家 |
| "我认为有一篇关于 X 的论文" | ❌ 切勿引用 - 先搜索或标记占位符 |
🚨 切勿凭记忆生成 BibTeX——务必通过编程方式获取。🚨
完整的 API 文档请参见 references/citation-workflow.md。
问题:摘要太泛泛
如果第一句话可以加在任何 ML 论文前面,就删除它。从你的具体贡献开始。
问题:引言超过 1.5 页
将背景知识拆分到相关工作中。前置贡献要点。方法部分最晚应在第 2-3 页开始。
问题:实验缺乏明确主张
在每个实验前添加句子:"This experiment tests whether [specific claim]..."
问题:审稿人觉得论文难以理解
问题:缺少统计显著性
始终包括:
审稿人从四个维度评估论文:
| 标准 | 审稿人寻找什么 |
|---|---|
| 质量 | 技术正确性,有充分支持的主张 |
| 清晰度 | 清晰的写作,专家可复现 |
| 重要性 | 社区影响,增进理解 |
| 原创性 | 新的见解(不需要新方法) |
评分(NeurIPS 6 分制):
详细的审稿人说明请参见 [references/reviewer-guidelines.md](https://github.com/davila7/claude-code-templates/blob/HEAD/cli-tool/components/skills/ai-research/ml-paper-writing/re
Expert-level guidance for writing publication-ready papers targeting NeurIPS, ICML, ICLR, ACL, AAAI, and COLM. This skill combines writing philosophy from top researchers (Nanda, Farquhar, Karpathy, Lipton, Steinhardt) with practical tools: LaTeX templates, citation verification APIs, and conference checklists.
Paper writing is collaborative, but Claude should be proactive in delivering drafts.
The typical workflow starts with a research repository containing code, results, and experimental artifacts. Claude's role is to:
Key Principle : Be proactive. If the repo and results are clear, deliver a full draft. Don't block waiting for feedback on every section—scientists are busy. Produce something concrete they can react to, then iterate based on their response.
This is the most important rule in academic writing with AI assistance.
AI-generated citations have a ~40% error rate. Hallucinated references—papers that don't exist, wrong authors, incorrect years, fabricated DOIs—are a serious form of academic misconduct that can result in desk rejection or retraction.
NEVER generate BibTeX entries from memory. ALWAYS fetch programmatically.
| Action | ✅ Correct | ❌ Wrong |
|---|---|---|
| Adding a citation | Search API → verify → fetch BibTeX | Write BibTeX from memory |
| Uncertain about a paper | Mark as [CITATION NEEDED] | Guess the reference |
| Can't find exact paper | Note: "placeholder - verify" | Invent similar-sounding paper |
If you cannot programmatically verify a citation, you MUST:
% EXPLICIT PLACEHOLDER - requires human verification
\cite{PLACEHOLDER_author2024_verify_this} % TODO: Verify this citation exists
Always tell the scientist : "I've marked [X] citations as placeholders that need verification. I could not confirm these papers exist."
For the best paper search experience, install Exa MCP which provides real-time academic search:
Claude Code:
claude mcp add exa -- npx -y mcp-remote "https://mcp.exa.ai/mcp"
Cursor / VS Code (add to MCP settings):
{
"mcpServers": {
"exa": {
"type": "http",
"url": "https://mcp.exa.ai/mcp"
}
}
}
Exa MCP enables searches like:
Then verify results with Semantic Scholar API and fetch BibTeX via DOI.
When beginning paper writing, start by understanding the project:
Project Understanding:
- [ ] Step 1: Explore the repository structure
- [ ] Step 2: Read README, existing docs, and key results
- [ ] Step 3: Identify the main contribution with the scientist
- [ ] Step 4: Find papers already cited in the codebase
- [ ] Step 5: Search for additional relevant literature
- [ ] Step 6: Outline the paper structure together
- [ ] Step 7: Draft sections iteratively with feedback
Step 1: Explore the Repository
# Understand project structure
ls -la
find . -name "*.py" | head -20
find . -name "*.md" -o -name "*.txt" | xargs grep -l -i "result\|conclusion\|finding"
Look for:
README.md - Project overview and claimsresults/, outputs/, experiments/ - Key findingsconfigs/ - Experimental settings.bib files or citation referencesStep 2: Identify Existing Citations
Check for papers already referenced in the codebase:
# Find existing citations
grep -r "arxiv\|doi\|cite" --include="*.md" --include="*.bib" --include="*.py"
find . -name "*.bib"
These are high-signal starting points for Related Work—the scientist has already deemed them relevant.
Step 3: Clarify the Contribution
Before writing, explicitly confirm with the scientist:
"Based on my understanding of the repo, the main contribution appears to be [X]. The key results show [Y]. Is this the framing you want for the paper, or should we emphasize different aspects?"
Never assume the narrative—always verify with the human.
Step 4: Search for Additional Literature
Use web search to find relevant papers:
Search queries to try:
- "[main technique] + [application domain]"
- "[baseline method] comparison"
- "[problem name] state-of-the-art"
- Author names from existing citations
Then verify and retrieve BibTeX using the citation workflow below.
Step 5: Deliver a First Draft
Be proactive—deliver a complete draft rather than asking permission for each section.
If the repo provides clear results and the contribution is apparent:
If genuinely uncertain about framing or major claims:
Questions to include with the draft (not before):
Use this skill when:
Always remember : First drafts are starting points for discussion, not final outputs.
Default: Be proactive. Deliver drafts, then iterate.
| Confidence Level | Action |
|---|---|
| High (clear repo, obvious contribution) | Write full draft, deliver, iterate on feedback |
| Medium (some ambiguity) | Write draft with flagged uncertainties, continue |
| Low (major unknowns) | Ask 1-2 targeted questions, then draft |
Draft first, ask with the draft (not before):
| Section | Draft Autonomously | Flag With Draft |
|---|---|---|
| Abstract | Yes | "Framed contribution as X—adjust if needed" |
| Introduction | Yes | "Emphasized problem Y—correct if wrong" |
| Methods | Yes | "Included details A, B, C—add missing pieces" |
| Experiments | Yes | "Highlighted results 1, 2, 3—reorder if needed" |
| Related Work | Yes | "Cited papers X, Y, Z—add any I missed" |
Only block for input when:
Don't block for:
The single most critical insight : Your paper is not a collection of experiments—it's a story with one clear contribution supported by evidence.
Every successful ML paper centers on what Neel Nanda calls "the narrative": a short, rigorous, evidence-based technical story with a takeaway readers care about.
Three Pillars (must be crystal clear by end of introduction):
| Pillar | Description | Example |
|---|---|---|
| The What | 1-3 specific novel claims within cohesive theme | "We prove that X achieves Y under condition Z" |
| The Why | Rigorous empirical evidence supporting claims | Strong baselines, experiments distinguishing hypotheses |
| The So What | Why readers should care | Connection to recognized community problems |
If you cannot state your contribution in one sentence, you don't yet have a paper.
Copy this checklist and track progress. Each step involves drafting → feedback → revision:
Paper Writing Progress:
- [ ] Step 1: Define the one-sentence contribution (with scientist)
- [ ] Step 2: Draft Figure 1 → get feedback → revise
- [ ] Step 3: Draft abstract → get feedback → revise
- [ ] Step 4: Draft introduction → get feedback → revise
- [ ] Step 5: Draft methods → get feedback → revise
- [ ] Step 6: Draft experiments → get feedback → revise
- [ ] Step 7: Draft related work → get feedback → revise
- [ ] Step 8: Draft limitations → get feedback → revise
- [ ] Step 9: Complete paper checklist (required)
- [ ] Step 10: Final review cycle and submission
Step 1: Define the One-Sentence Contribution
This step requires explicit confirmation from the scientist.
Before writing anything, articulate and verify:
"I propose framing the contribution as: '[one sentence]'. Does this capture what you see as the main takeaway? Should we adjust the emphasis?"
Step 2: Draft Figure 1
Figure 1 deserves special attention—many readers skip directly to it.
Step 3: Write Abstract (5-Sentence Formula)
From Sebastian Farquhar (DeepMind):
1. What you achieved: "We introduce...", "We prove...", "We demonstrate..."
2. Why this is hard and important
3. How you do it (with specialist keywords for discoverability)
4. What evidence you have
5. Your most remarkable number/result
Delete generic openings like "Large language models have achieved remarkable success..."
Step 4: Write Introduction (1-1.5 pages max)
Must include:
Step 5: Methods Section
Enable reimplementation:
Step 6: Experiments Section
For each experiment, explicitly state:
Requirements:
Step 7: Related Work
Organize methodologically, not paper-by-paper:
Good: "One line of work uses Floogledoodle's assumption [refs] whereas we use Doobersnoddle's assumption because..."
Bad: "Snap et al. introduced X while Crackle et al. introduced Y."
Cite generously—reviewers likely authored relevant papers.
Step 8: Limitations Section (REQUIRED)
All major conferences require this. Counter-intuitively, honesty helps:
Step 9: Paper Checklist
NeurIPS, ICML, and ICLR all require paper checklists. See references/checklists.md.
This section distills the most important writing principles from leading ML researchers. These aren't optional style suggestions—they're what separates accepted papers from rejected ones.
"A paper is a short, rigorous, evidence-based technical story with a takeaway readers care about." — Neel Nanda
This skill synthesizes writing philosophy from researchers who have published extensively at top venues:
| Source | Key Contribution | Link |
|---|---|---|
| Neel Nanda (Google DeepMind) | The Narrative Principle, What/Why/So What framework | How to Write ML Papers |
| Sebastian Farquhar (DeepMind) | 5-sentence abstract formula | How to Write ML Papers |
| Gopen & Swan | 7 principles of reader expectations | Science of Scientific Writing |
| Zachary Lipton | Word choice, eliminating hedging | Heuristics for Scientific Writing |
| Jacob Steinhardt (UC Berkeley) | Precision, consistent terminology |
For deeper dives into any of these, see:
Spend approximately equal time on each of:
Why? Most reviewers form judgments before reaching your methods. Readers encounter your paper as: title → abstract → introduction → figures → maybe the rest.
These principles are based on how readers actually process prose. Violating them forces readers to spend cognitive effort on structure rather than content.
| Principle | Rule | Example |
|---|---|---|
| Subject-verb proximity | Keep subject and verb close | ❌ "The model, which was trained on..., achieves" → ✅ "The model achieves... after training on..." |
| Stress position | Place emphasis at sentence ends | ❌ "Accuracy improves by 15% when using attention" → ✅ "When using attention, accuracy improves by 15% " |
| Topic position | Put context first, new info after | ✅ "Given these constraints, we propose..." |
| Old before new | Familiar info → unfamiliar info | Link backward, then introduce new |
| One unit, one function | Each paragraph makes one point | Split multi-point paragraphs |
| Action in verb | Use verbs, not nominalizations | ❌ "We performed an analysis" → ✅ "We analyzed" |
| Context before new |
Full 7 principles with detailed examples: See references/writing-guide.md
These small changes accumulate into significantly clearer prose:
Full micro-tips with examples: See references/writing-guide.md
Understanding reviewer behavior helps prioritize your effort:
| Paper Section | % Reviewers Who Read | Implication |
|---|---|---|
| Abstract | 100% | Must be perfect |
| Introduction | 90%+ (skimmed) | Front-load contribution |
| Figures | Examined before methods | Figure 1 is critical |
| Methods | Only if interested | Don't bury the lede |
| Appendix | Rarely | Put only supplementary details |
Bottom line : If your abstract and intro don't hook reviewers, they may never read your brilliant methods section.
| Conference | Page Limit | Extra for Camera-Ready | Key Requirement |
|---|---|---|---|
| NeurIPS 2025 | 9 pages | +0 | Mandatory checklist, lay summary for accepted |
| ICML 2026 | 8 pages | +1 | Broader Impact Statement required |
| ICLR 2026 | 9 pages | +1 | LLM disclosure required, reciprocal reviewing |
| ACL 2025 | 8 pages (long) | varies | Limitations section mandatory |
| AAAI 2026 | 7 pages | +1 | Strict style file adherence |
| COLM 2025 | 9 pages | +1 |
Universal Requirements:
LaTeX Templates: See templates/ directory for all conference templates.
Always copy the entire template directory first, then write within it.
Template Setup Checklist:
- [ ] Step 1: Copy entire template directory to new project
- [ ] Step 2: Verify template compiles as-is (before any changes)
- [ ] Step 3: Read the template's example content to understand structure
- [ ] Step 4: Replace example content section by section
- [ ] Step 5: Keep template comments/examples as reference until done
- [ ] Step 6: Clean up template artifacts only at the end
Step 1: Copy the Full Template
# Create your paper directory with the complete template
cp -r templates/neurips2025/ ~/papers/my-new-paper/
cd ~/papers/my-new-paper/
# Verify structure is complete
ls -la
# Should see: main.tex, neurips.sty, Makefile, etc.
⚠️ IMPORTANT : Copy the ENTIRE directory, not just main.tex. Templates include:
.sty) - required for compilation.bst) - required for referencesStep 2: Verify Template Compiles First
Before making ANY changes, compile the template as-is:
# Using latexmk (recommended)
latexmk -pdf main.tex
# Or manual compilation
pdflatex main.tex
bibtex main
pdflatex main.tex
pdflatex main.tex
If the unmodified template doesn't compile, fix that first. Common issues:
tlmgr install <package>Step 3: Keep Template Content as Reference
Don't immediately delete all example content. Instead:
% KEEP template examples commented out as you write
% This shows you the expected format
% Template example (keep for reference):
% \begin{figure}[t]
% \centering
% \includegraphics[width=0.8\linewidth]{example-image}
% \caption{Template shows caption style}
% \end{figure}
% Your actual figure:
\begin{figure}[t]
\centering
\includegraphics[width=0.8\linewidth]{your-figure.pdf}
\caption{Your caption following the same style.}
\end{figure}
Step 4: Replace Content Section by Section
Work through the paper systematically:
Replacement Order:
1. Title and authors (anonymize for submission)
2. Abstract
3. Introduction
4. Methods
5. Experiments
6. Related Work
7. Conclusion
8. References (your .bib file)
9. Appendix
For each section:
Step 5: Use Template Macros
Templates often define useful macros. Check the preamble for:
% Common template macros to use:
\newcommand{\method}{YourMethodName} % Consistent method naming
\newcommand{\eg}{e.g.,\xspace} % Proper abbreviations
\newcommand{\ie}{i.e.,\xspace}
\newcommand{\etal}{\textit{et al.}\xspace}
Step 6: Clean Up Only at the End
Only remove template artifacts when paper is nearly complete:
% BEFORE SUBMISSION - remove these:
% - Commented-out template examples
% - Unused packages
% - Template's example figures/tables
% - Lorem ipsum or placeholder text
% KEEP these:
% - All style files (.sty)
% - Bibliography style (.bst)
% - Required packages from template
% - Any custom macros you're using
| Pitfall | Problem | Solution |
|---|---|---|
Copying only main.tex | Missing .sty, won't compile | Copy entire directory |
Modifying .sty files | Breaks conference formatting | Never edit style files |
| Adding random packages | Conflicts, breaks template | Only add if necessary |
| Deleting template content too early | Lose formatting reference | Keep as comments until done |
| Not compiling frequently | Errors accumulate | Compile after each section |
| Conference | Main File | Key Style File | Notes |
|---|---|---|---|
| NeurIPS 2025 | main.tex | neurips.sty | Has Makefile |
| ICML 2026 | example_paper.tex | icml2026.sty | Includes algorithm packages |
| ICLR 2026 | iclr2026_conference.tex | iclr2026_conference.sty |
When a paper is rejected or withdrawn from one venue and resubmitted to another, format conversion is required. This is a common workflow in ML research.
Format Conversion Checklist:
- [ ] Step 1: Identify source and target template differences
- [ ] Step 2: Create new project with target template
- [ ] Step 3: Copy content sections (not preamble)
- [ ] Step 4: Adjust page limits and content
- [ ] Step 5: Update conference-specific requirements
- [ ] Step 6: Verify compilation and formatting
Step 1: Key Template Differences
| From → To | Page Change | Key Adjustments |
|---|---|---|
| NeurIPS → ICML | 9 → 8 pages | Cut 1 page, add Broader Impact if missing |
| ICML → ICLR | 8 → 9 pages | Can expand experiments, add LLM disclosure |
| NeurIPS → ACL | 9 → 8 pages | Restructure for NLP conventions, add Limitations |
| ICLR → AAAI | 9 → 7 pages | Significant cuts needed, strict style adherence |
| Any → COLM | varies → 9 | Reframe for language model focus |
Step 2: Content Migration (NOT Template Merge)
Never copy LaTeX preambles between templates. Instead:
# 1. Start fresh with target template
cp -r templates/icml2026/ new_submission/
# 2. Copy ONLY content sections from old paper
# - Abstract text
# - Section content (between \section{} commands)
# - Figures and tables
# - Bibliography entries
# 3. Paste into target template structure
Step 3: Adjusting for Page Limits
When cutting pages (e.g., NeurIPS 9 → AAAI 7):
When expanding (e.g., ICML 8 → ICLR 9):
Step 4: Conference-Specific Adjustments
| Target Venue | Required Additions |
|---|---|
| ICML | Broader Impact Statement (after conclusion) |
| ICLR | LLM usage disclosure, reciprocal reviewing agreement |
| ACL/EMNLP | Limitations section (mandatory), Ethics Statement |
| AAAI | Strict adherence to style file (no modifications) |
| NeurIPS | Paper checklist (appendix), lay summary if accepted |
Step 5: Update References
% Remove self-citations that reveal identity (for blind review)
% Update any "under review" citations to published versions
% Add new relevant work published since last submission
Step 6: Addressing Previous Reviews
When resubmitting after rejection:
Common Conversion Pitfalls:
\usepackage commands (causes conflicts)\bibliography{} path⚠️ CRITICAL : AI-generated citations have ~40% error rate. Never write BibTeX from memory.
IF you cannot programmatically fetch a citation:
→ Mark it as [CITATION NEEDED] or [PLACEHOLDER - VERIFY]
→ Tell the scientist explicitly
→ NEVER invent a plausible-sounding reference
Citation Verification (MANDATORY for every citation):
- [ ] Step 1: Search using Exa MCP or Semantic Scholar API
- [ ] Step 2: Verify paper exists in 2+ sources (Semantic Scholar + arXiv/CrossRef)
- [ ] Step 3: Retrieve BibTeX via DOI (programmatically, not from memory)
- [ ] Step 4: Verify the claim you're citing actually appears in the paper
- [ ] Step 5: Add verified BibTeX to bibliography
- [ ] Step 6: If ANY step fails → mark as placeholder, inform scientist
Step 0: Use Exa MCP for Initial Search (Recommended)
If Exa MCP is installed, use it to find relevant papers:
Search: "RLHF language model alignment 2023"
Search: "sparse autoencoders interpretability"
Search: "attention mechanism transformers Vaswani"
Then verify each result with Semantic Scholar and fetch BibTeX via DOI.
Step 1: Search Semantic Scholar
from semanticscholar import SemanticScholar
sch = SemanticScholar()
results = sch.search_paper("attention mechanism transformers", limit=5)
for paper in results:
print(f"{paper.title} - {paper.paperId}")
print(f" DOI: {paper.externalIds.get('DOI', 'N/A')}")
Step 2: Verify Existence
Confirm paper appears in at least two sources (Semantic Scholar + CrossRef/arXiv).
Step 3: Retrieve BibTeX via DOI
import requests
def doi_to_bibtex(doi: str) -> str:
"""Get verified BibTeX from DOI via CrossRef."""
response = requests.get(
f"https://doi.org/{doi}",
headers={"Accept": "application/x-bibtex"}
)
response.raise_for_status()
return response.text
# Example
bibtex = doi_to_bibtex("10.48550/arXiv.1706.03762")
print(bibtex)
Step 4: Verify Claims
Before citing for a specific claim, access the paper and confirm the attributed claim actually appears.
Step 5: Handle Failures Explicitly
If you cannot verify a citation at ANY step:
% Option 1: Explicit placeholder
\cite{PLACEHOLDER_smith2023_verify} % TODO: Could not verify - scientist must confirm
% Option 2: Note in text
... as shown in prior work [CITATION NEEDED - could not verify Smith et al. 2023].
Always inform the scientist:
"I could not verify the following citations and have marked them as placeholders:
- Smith et al. 2023 on reward hacking - could not find in Semantic Scholar
- Jones 2022 on scaling laws - found similar paper but different authors Please verify these before submission."
| Situation | Action |
|---|---|
| Found paper, got DOI, fetched BibTeX | ✅ Use the citation |
| Found paper, no DOI | ✅ Use arXiv BibTeX or manual entry from paper |
| Paper exists but can't fetch BibTeX | ⚠️ Mark placeholder, inform scientist |
| Uncertain if paper exists | ❌ Mark [CITATION NEEDED], inform scientist |
| "I think there's a paper about X" | ❌ NEVER cite - search first or mark placeholder |
🚨 NEVER generate BibTeX from memory—always fetch programmatically. 🚨
See references/citation-workflow.md for complete API documentation.
Issue: Abstract too generic
Delete first sentence if it could be prepended to any ML paper. Start with your specific contribution.
Issue: Introduction exceeds 1.5 pages
Split background into Related Work. Front-load contribution bullets. Methods should start by page 2-3.
Issue: Experiments lack explicit claims
Add sentence before each experiment: "This experiment tests whether [specific claim]..."
Issue: Reviewers find paper hard to follow
Issue: Missing statistical significance
Always include:
Reviewers assess papers on four dimensions:
| Criterion | What Reviewers Look For |
|---|---|
| Quality | Technical soundness, well-supported claims |
| Clarity | Clear writing, reproducible by experts |
| Significance | Community impact, advances understanding |
| Originality | New insights (doesn't require new method) |
Scoring (NeurIPS 6-point scale):
See references/reviewer-guidelines.md for detailed reviewer instructions.
Use booktabs LaTeX package for professional tables:
\usepackage{booktabs}
\begin{tabular}{lcc}
\toprule
Method & Accuracy ↑ & Latency ↓ \\
\midrule
Baseline & 85.2 & 45ms \\
\textbf{Ours} & \textbf{92.1} & 38ms \\
\bottomrule
\end{tabular}
Rules:
| Document | Contents |
|---|---|
| writing-guide.md | Gopen & Swan 7 principles, Ethan Perez micro-tips, word choice |
| citation-workflow.md | Citation APIs, Python code, BibTeX management |
| checklists.md | NeurIPS 16-item, ICML, ICLR, ACL requirements |
| reviewer-guidelines.md | Evaluation criteria, scoring, rebuttals |
| sources.md | Complete bibliography of all sources |
Templates in templates/ directory: ICML 2026 , ICLR 2026 , NeurIPS 2025 , ACL/EMNLP , AAAI 2026 , COLM 2025.
Compiling to PDF:
latexmk -pdf main.tex or pdflatex + bibtex workflowSee templates/README.md for detailed setup instructions.
Writing Philosophy:
APIs: Semantic Scholar | CrossRef | arXiv
Venues: NeurIPS | ICML | ICLR | ACL
Weekly Installs
122
Repository
GitHub Stars
22.6K
First Seen
Jan 29, 2026
Security Audits
Gen Agent Trust HubWarnSocketPassSnykWarn
Installed on
opencode114
codex108
github-copilot107
gemini-cli106
kimi-cli99
amp98
AI 代码实施计划编写技能 | 自动化开发任务分解与 TDD 流程规划工具
49,000 周安装
| Ethan Perez (Anthropic) | Micro-level clarity tips | Easy Paper Writing Tips |
| Andrej Karpathy | Single contribution focus | Various lectures |
| Set stage before presenting |
| Explain before showing equation |
| Focus on language models |
| Has math_commands.tex |
| ACL | acl_latex.tex | acl.sty | Strict formatting |
| AAAI 2026 | aaai2026-unified-template.tex | aaai2026.sty | Very strict compliance |
| COLM 2025 | colm2025_conference.tex | colm2025_conference.sty | Similar to ICLR |