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.
- Skill ID
- wanshuiyin/auto-claude-code-research-in-sleep/paper-write
- Publisher
- wanshuiyin
- Repository
- auto-claude-code-research-in-sleep
- Installs
- 0
- Files
- 9
- Synced
- Sep 23, 2026
Open any RiverX project, open the Skills panel in the chat, and search for this identifier. The files are fetched from the source repository at install time.
wanshuiyin/auto-claude-code-research-in-sleep/paper-writeInstalls these files- SKILL.md
- templates/IEEEtran.bst
- templates/IEEEtran.cls
- templates/iclr2026.tex
- templates/icml2025.tex
- templates/ieee_conference.tex
- templates/ieee_journal.tex
- templates/math_commands.tex
- templates/neurips2025.tex
What this skill tells the agent
Paper Write: Section-by-Section LaTeX Generation
Draft a LaTeX paper based on: $ARGUMENTS
Constants
- REVIEWER_MODEL = `gpt-6-astra` — Model used via Codex MCP for section review. Must be an OpenAI model.
- TARGET_VENUE = `ICLR` — Default venue. Supported:
ICLR,NeurIPS,ICML,CVPR(also ICCV/ECCV),ACL(also EMNLP/NAACL),AAAI,ACM(ACM MM, SIGIR, KDD, CHI, etc.),IEEE_JOURNAL(IEEE Transactions / Letters, e.g., T-PAMI, JSAC, TWC, TCOM, TSP, TIP),IEEE_CONF(IEEE conferences, e.g., ICC, GLOBECOM, INFOCOM, ICASSP). Determines style file and formatting. - ANONYMOUS = true — If true, use anonymous author block. Set
falsefor camera-ready. Note: most IEEE venues do NOT use anonymous submission — setfalsefor IEEE. - 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
falseto use legacy behavior (LLM search +[VERIFY]markers).
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
figures/(from/paper-figure) - LaTeX includes —
figures/latex_includes.tex(from/paper-figure) - Bibliography — existing
.bibfile, or will create one
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
../shared-references/writing-principles.mdbefore drafting the Abstract, Introduction, Related Work, or when prose feels generic. - Read
../shared-references/venue-checklists.mdduring the final write-up and submission-readiness pass. - Read
../shared-references/citation-discipline.mdonly when the built-in DBLP/CrossRef workflow is insufficient.
These references are support material, not extra workflow phases.
Optional: Style reference (— style-ref: <source>, opt-in)
Lets the user steer structural style (section ordering, theorem density, sentence cadence, figure density, bibliography style) toward a reference paper. Default OFF — when the user does not pass `— style-ref`, do nothing differently from before.
Only when — style-ref: <source> appears in $ARGUMENTS, run the helper FIRST, before drafting:
# Resolve $STYLE_HELPER via the canonical strict-safe chain (see
# shared-references/integration-contract.md §2). Policy A — gate:
# unresolved helper means --style-ref cannot be satisfied, so abort.
cd "$(git rev-parse --show-toplevel 2>/dev/null || pwd)" || exit 1
if [ -z "${ARIS_REPO:-}" ] && [ -f .aris/installed-skills.txt ]; then
ARIS_REPO=$(awk -F'\t' '$1=="repo_root"{print $2; exit}' .aris/installed-skills.txt 2>/dev/null) || true
fi
if [ -z "${ARIS_REPO:-}" ] && [ -f "$HOME/.aris/repo" ]; then
ARIS_REPO=$(cat "$HOME/.aris/repo" 2>/dev/null) || true
fi
STYLE_HELPER=".aris/tools/extract_paper_style.py"
[ -f "$STYLE_HELPER" ] || STYLE_HELPER="tools/extract_paper_style.py"
[ -f "$STYLE_HELPER" ] || { [ -n "${ARIS_REPO:-}" ] && STYLE_HELPER="$ARIS_REPO/tools/extract_paper_style.py"; }
[ -f "$STYLE_HELPER" ] || {
echo "ERROR: extract_paper_style.py not resolved at .aris/tools/, tools/, \$ARIS_REPO/tools/, or via ~/.aris/repo." >&2
echo " Fix: rerun bash tools/install_aris.sh or smart_update.sh (refreshes ~/.aris/repo), export ARIS_REPO, or copy the helper to tools/." >&2
echo " --style-ref cannot be satisfied; aborting." >&2
exit 1
}
STYLE_STATUS=0
CACHE=$(python3 "$STYLE_HELPER" --source "<source>") || STYLE_STATUS=$?
case "$STYLE_STATUS" in
0) ;; # use $CACHE/style_profile.md as structural guidance
2) echo "warning: style-ref skipped (missing optional dep)" >&2 ;;
3) echo "error: --style-ref source failed; aborting draft" >&2 ; exit 1 ;;
*) echo "error: helper failed unexpectedly; aborting draft" >&2 ; exit 1 ;;
esacSources accepted: local TeX dir / file, local PDF, arXiv id (2501.12345 or arxiv:2501.12345), http(s) URL. Overleaf URLs and project IDs are rejected — clone via /overleaf-sync setup <id> first and pass the local clone path.
Strict rules (full contract in tools/extract_paper_style.py docstring):
- Use
style_profile.mdas structural guidance only. Match section count, section ordering tendency, theorem-environment density, caption-length distribution, sentence cadence, math display ratio, citation style. - Never copy prose, claims, examples, or terminology from anything reachable through the cache. The profile is intentionally aggregate; if you need substance, use the user's own outline.
- Never pass `— style-ref` (or the cache contents) to reviewer / auditor sub-agents. Cross-model review independence (
../shared-references/reviewer-independence.md) requires reviewers see only the artifact and the user's prompt, not the author's stylistic context.
<!-- DATA_NEEDED --> markers (when GAP_REPORT.md exists)
If /paper-plan ran with — style-ref: it will have emitted GAP_REPORT.md alongside PAPER_PLAN.md. This file lists structural slots (ablation tables, scaling experiments, failure-case analyses, …) the exemplar implies but the user has no evidence to fill.
When GAP_REPORT.md is present and a section slot is classified as status: missing:
- Do not fabricate numerical results, figure references, or qualitative claims to fill that slot.
- Emit an HTML-comment placeholder at the exact location the missing content would go:
<!-- DATA_NEEDED: GAP_S5_ABLATION — ablation table comparing X across the 3 axes implied by exemplar -->- Slot ID and one-line description come straight from
GAP_REPORT.md. Never invent Slot IDs. Never reword the description to be more confident than the report. - The marker is intentionally an HTML comment so it is invisible in the rendered PDF but searchable via `grep -r "DATA_NEEDED" sec/` for human triage /
/experiment-bridgefollow-up. - For
status: partial, write what the user has and emit<!-- DATA_NEEDED: <Slot ID> — <what specifically is short> -->at the gap point in the same paragraph (do not split the section).
Carve-out from "no placeholder" rule. The default /paper-write discipline (no placeholders such as "see supplementary" or "TBD") still applies for everything except GAP_REPORT-listed missing slots. The marker is the principled way to surface genuine evidence deficits without compromising claim integrity.
Original idea: @zhangpelf in #217.
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-readyNeurIPS:
\documentclass{article}
\usepackage[preprint]{neurips_2025}
% \usepackage[final]{neurips_2025} % Camera-readyICML:
\documentclass[accepted]{icml2025}
% Use [accepted] for camera-readyIEEE Journal (Transactions, Letters):
\documentclass[journal]{IEEEtran}
\usepackage{cite} % IEEE uses \cite{}, NOT natbib
% Author block uses \author{Name~\IEEEmembership{Member,~IEEE}}More from wanshuiyin
Use this skill in a project
Open any RiverX project, search the Skills panel for wanshuiyin/auto-claude-code-research-in-sleep/paper-write, and install it in one click.
