A Claude Code skill that encodes a research-paper writing methodology: a five-stage pipeline, section-by-section rhetorical moves, a style audit that runs on every edit, an independent red-team, and a figure-synthesis workflow for non-data figures.
$ npx -y skills add SNL-UCSB/paper-writing-skill --agent claude-code
What's inside
A Claude Code skill that encodes a research-paper writing methodology: a five-stage pipeline, section-by-section rhetorical moves, a style audit that runs on every edit, an independent red-team, and a figure-synthesis workflow for non-data figures. The rules are empirical — distilled from forensic analysis of real paper revisions (7,600+ Overleaf edits, 100+ tex versions, 5 peer-review cycles across systems and ML venues). See DESIGN.md for the rationale and evidence behind each rule.
It offloads the scaffolding — section structure, cross-section coherence, page-limit compression, voice consistency, figure generation — so the writer keeps the hard parts: what the paper claims, whether the evidence supports it, and how to position the work.
Who it's for: PhD students and researchers writing conference or journal papers. Tuned for systems/networking (SIGCOMM, NSDI, CoNEXT, IMC) and ML (NeurIPS, ICLR, ICML); adaptable to any field (see Customize).
git clone https://github.com/SNL-UCSB/paper-writing-skill.git
cd paper-writing-skill
./setup # installs to ~/.claude/skills/paper-writing/
Then, in your paper's directory: run claude, and type /paper-writing. If a project_context.md
exists, Claude loads it and continues; if not, it runs a structured brainstorming session (34
questions across 6 phases) to create one.
Requires Claude Code installed and signed in (https://docs.claude.com).
Three layers: a fixed pipeline, customizable rules (defaults provided), and a per-paper project context.
The pipeline (five stages):
project_context.md (the binding
contract for every later session).The style audit. Every tex edit passes a mandatory gate. The style layer is three files, split by mechanism:
| File | Role |
|---|---|
author_profile/gate_mechanical.md | The single grep gate (M1–M18): em-dashes, antithesis, filler/pompous/fancy words, passive voice (zero tolerance), wordiness, term-drift. Runs on every edit. |
author_profile/gate_semantic.md | The single reader-judgment gate (S1–S31): define-before-use, followability, coherence, consistency, rigor/grounding, honest positioning, figures, closure. Runs in the red-team/loop pass. |
author_profile/craft_reference.md | How to write (the positive layer): sentence-level style and three registers (base/terse, conceptual/position, warm/narrative). |
The red-team. After the author's audit, an independent reviewer that did not write the text
re-runs the greps and applies the semantic gate with a fresh-reader lens, returning findings — not a
yes/no. Run it iteratively via /loop (loop_mode.md), which keeps a disk-backed ledger and stops
itself when every section is clean. See red_team_protocol.md.
Figure synthesis (figure_synthesis_guide.md). A three-mode workflow (spec → generate →
critique) for non-data figures — architecture diagrams, pipeline flows, concept illustrations — with
venue-specific styling. Data figures (plots) go through the separate /viz skill.
/loop red-team cycle.paper-writing-skill/
├── SKILL.md # Main skill file (Claude reads this)
├── brainstorming_guide.md # 34 questions across 6 phases
├── figure_synthesis_guide.md # Non-data figure workflow
├── red_team_protocol.md # Independent, evidence-gated review
├── loop_mode.md # Resumable /loop audit-and-fix
├── setup # One-command installer
├── DESIGN.md # Rationale + evidence behind the rules
├── author_profile/ # Editorial rules (defaults, customizable)
│ ├── editorial_principles.md # 14 principles with evidence
│ ├── craft_reference.md # how to write (three registers)
│ ├── gate_mechanical.md # the grep gate (M1–M18)
│ ├── gate_semantic.md # the reader-judgment gate (S1–S31)
│ ├── compression_patterns.md # 7 compression operations
│ ├── rhetorical_moves.md # cross-section move sequences
│ └── intervention_types.md # 7 advisor intervention types
├── writing_checklists/ # Post-draft structural checklists
├── section_rhetorical_moves/ # Per-section move sequences + examples
├── figure_templates/ # Venue styles, prompts, TikZ skeletons
└── examples/ # project_context template + a real example
The rules, checklists, and move guides also work without Claude Code — print them for a lab workshop, or use the checklists for self-review before sending a draft to an advisor.
Defaults ship for systems/networking and ML venues. Edit files in author_profile/:
craft_reference.md — sentence-length targets, tone, and the three registers.gate_mechanical.md / gate_semantic.md — add or relax specific checks (keep the term-drift
list current per paper).editorial_principles.md — add or reprioritize principles (keep introduction-twice and
named-over-vague; they are venue-agnostic).compression_patterns.md, section_rhetorical_moves/, figure_templates/ — tune
compression intensity, add move examples from your field, adjust figure styling per venue.For advisors: fork the repo, encode your standards in author_profile/, and have students clone
your fork — they get your group's conventions immediately. Students can further customize; the
pipeline stays consistent.
/paper-writing not recognized — re-run ./setup; check ls ~/.claude/skills/paper-writing/SKILL.md./paper-writing explicitly at the start; the skill only
activates when invoked.project_context.md and invoke /paper-writing again../setup again after git pull.Always edit files in this repo, not in ~/.claude/skills/; ./setup copies them into place.
MIT. If you use this in your research workflow, cite:
@misc{paper-writing-skill,
author = {Gupta, Arpit},
title = {paper-writing-skill: A Claude Code skill for research paper writing},
year = {2026},
publisher = {GitHub},
url = {https://github.com/SNL-UCSB/paper-writing-skill}
}
FAQ
paper-writing-skill is a Claude Code plugin with 1 hand-picked skill for writing work, indexed on Flowy. Install it with the command on its page. It includes paper-writing-skill. Its skills do not fire on their own yet. Request auto-invocation to have Flowy route them as you prompt. Free and open source.
Is this plugin yours?
Claim it with GitHubSubmit a pluginPromote it