ml-paper-writing by zechenzhangagi/ai-research-skills
npx skills add https://github.com/zechenzhangagi/ai-research-skills --skill ml-paper-writing针对 NeurIPS、ICML、ICLR、ACL、AAAI、COLM(机器学习/人工智能会议)和 OSDI、NSDI、ASPLOS、SOSP(系统会议)撰写符合发表要求的论文,提供专家级指导。本技能结合了顶尖研究者(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——添加我遗漏的任何论文" |
仅在以下情况阻塞等待输入:
不要为以下情况阻塞:
最关键的一点洞察:你的论文不是一系列实验的集合——它是一个有明确贡献并由证据支持的故事。
每一篇成功的机器学习论文都围绕 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。
本节提炼了顶尖机器学习研究者最重要的写作原则。 这些不是可选的风格建议——它们是区分被接受论文和被拒稿论文的关键。
"一篇论文是一个简短、严谨、基于证据的技术故事,其要点是读者所关心的。" —— 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 | 关注语言模型 |
| 会议 | 页数限制 | 定稿可增加页数 | 关键要求 | 模板 |
|---|---|---|---|---|
| OSDI 2026 | 12 页 | +2 (14 页) | 研究 + 运行系统轨道 | USENIX |
| NSDI 2027 | 12 页 | 可变 | 通过引言进行预筛选;3 个轨道 | USENIX |
| ASPLOS 2027 | 12 页 (ACM) | 可变 | 前 2 页快速评审;双周期 | ACM SIGPLAN |
| SOSP 2026 | 12 页 | 可变 | 可选工件评估;作者回应 | ACM SIGPLAN |
详细的系统会议信息:参见 references/systems-conferences.md 了解截止日期、轨道描述、投稿规则和格式转换指南。
通用要求:
.sty;ACM 使用 acmart.clsLaTeX 模板: 参见 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 |
| 会议 | 主文件 | 关键样式文件 | 备注 |
|---|---|---|---|
| OSDI 2026 | main.tex | usenix-2020-09.sty | USENIX 格式,12 页,双栏,10pt |
| NSDI 2027 | main.tex | usenix-2020-09.sty | 与 OSDI 相同的 USENIX 格式 |
| ASPLOS 2027 | main.tex | acmart.cls (sigplan) | ACM SIGPLAN 格式,12 页 |
| SOSP 2026 | main.tex | acmart.cls (sigplan) | ACM SIGPLAN,与 ASPLOS 相同 |
当一篇论文被某个会议拒稿或撤回并重新投稿到另一个会议时,需要进行格式转换。这是机器学习研究中的常见工作流程。
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 | 重新构建以关注语言模型 |
| 从 → 到 | 关键调整 |
|---|---|
| ML → OSDI/NSDI | USENIX 模板;添加系统设计 + 实现部分 |
| ML → ASPLOS/SOSP | ACM SIGPLAN 模板;重新构建以突出系统贡献 |
| OSDI ↔ SOSP | USENIX ↔ ACM SIGPLAN;页数限制相似,样式文件不同 |
完整转换指南:参见 references/systems-conferences.md 获取详细指导。
步骤 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 | 论文检查清单(附录),如果被接受则需通俗摘要 |
| 目标会议 | 关键必需添加项 |
|---|---|
| OSDI 2026 | 选择研究或运行系统轨道;匿名化系统名称 |
| NSDI 2027 | 强有力的引言(预筛选);选择轨道 |
| ASPLOS 2027 | 前 2 页自成一体(快速评审);重新投稿说明 |
| SOSP 2026 | ACM SIGPLAN 格式;可选工件评估 |
完整要求:参见 references/systems-conferences.md 了解详情。
步骤 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
\
Expert-level guidance for writing publication-ready papers targeting NeurIPS, ICML, ICLR, ACL, AAAI, COLM (ML/AI venues) and OSDI, NSDI, ASPLOS, SOSP (Systems venues). 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 |
| Conference | Page Limit | Extra for Camera-Ready | Key Requirement | Template |
|---|---|---|---|---|
| OSDI 2026 | 12 pages | +2 (14 pages) | Research + Operational Systems tracks | USENIX |
| NSDI 2027 | 12 pages | varies | Prescreening via Introduction; 3 tracks | USENIX |
| ASPLOS 2027 | 12 pages (ACM) | varies | Rapid review on first 2 pages; dual cycles | ACM SIGPLAN |
| SOSP 2026 | 12 pages | varies | Optional artifact evaluation; author response | ACM SIGPLAN |
Detailed Systems conference info : See references/systems-conferences.md for deadlines, track descriptions, submission rules, and format conversion guides.
Universal Requirements:
.sty; ACM uses acmart.clsLaTeX 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 |
| Conference | Main File | Key Style File | Notes |
|---|---|---|---|
| OSDI 2026 | main.tex | usenix-2020-09.sty | USENIX format, 12pp, two-column, 10pt |
| NSDI 2027 | main.tex | usenix-2020-09.sty | Same USENIX format as OSDI |
| ASPLOS 2027 | main.tex | acmart.cls () |
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 |
| From → To | Key Adjustments |
|---|---|
| ML → OSDI/NSDI | USENIX template; add system design + implementation sections |
| ML → ASPLOS/SOSP | ACM SIGPLAN template; reframe for systems contribution |
| OSDI ↔ SOSP | USENIX ↔ ACM SIGPLAN; similar page limits, different style files |
Full conversion guide : See references/systems-conferences.md for detailed guidance.
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 |
| Target Venue | Key Required Additions |
|---|---|
| OSDI 2026 | Choose Research or Operational Systems track; anonymize system name |
| NSDI 2027 | Strong Introduction (prescreening); choose track |
| ASPLOS 2027 | Self-contained first 2 pages (rapid review); resubmission note |
| SOSP 2026 | ACM SIGPLAN format; optional Artifact Evaluation |
Full requirements : See references/systems-conferences.md for details.
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 |
| systems-conferences.md | OSDI/NSDI/ASPLOS/SOSP deadlines, tracks, rules |
| sources.md | Complete bibliography of all sources |
Templates in templates/ directory:
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
ML/AI Venues: NeurIPS | ICML | ICLR | ACL
Systems Venues: OSDI 2026 | NSDI 2027 | ASPLOS 2027 | SOSP 2026
Weekly Installs
440
Repository
GitHub Stars
5.6K
First Seen
Jan 23, 2026
Security Audits
Gen Agent Trust HubPassSocketPassSnykWarn
Installed on
opencode401
gemini-cli376
codex374
cursor356
github-copilot343
kimi-cli306
超能力技能使用指南:AI助手技能调用优先级与工作流程详解
39,200 周安装
| 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 |
sigplan| ACM SIGPLAN format, 12pp |
| SOSP 2026 | main.tex | acmart.cls (sigplan) | ACM SIGPLAN, same as ASPLOS |