An Agent Skill that turns Claude into an end-to-end academic writing assistant: argument setup and paper structure, a script-backed related-work engine (multi-source literature search, snowballing, citation verification), reviewer-style critique of drafts, rebuttal and response-letter writing, statistics reporting, and a prose-quality pass tuned for academic register.
Built around one conviction: most weak papers fail at the argument and literature layers, not the prose. The skill works top-down, claim and gap first, positioning against verified prior work second, evidence reporting third, sentence polish last.
skills/academic-writing/
├── SKILL.md # entry point: modes, workflows, non-negotiables, quality gate
├── references/
│ ├── argument-structure.md # contribution statements, gap types, CARS intros, hedging, titles
│ ├── related-work.md # sweep → snowball → extraction → synthesis → gap-coverage check
│ ├── review-mode.md # three-pass internal review (claims / methods / adversary)
│ ├── rebuttal-mode.md # parsing reviews, response letters, revision plans
│ ├── results-reporting.md # reporting shapes, scale scoring, consistency audits
│ └── prose-quality.md # de-boilerplating catalogue, academic register rules
└── scripts/
├── litsearch.py # multi-source search (OpenAlex, Semantic Scholar, arXiv), dedup, sweep log
├── snowball.py # backward/forward snowballing with saturation tracking
└── check_refs.py # verify a reference list against Crossref + OpenAlex
The scripts are stdlib-only Python 3. No dependencies to install. They print stage counts at every step and keep an append-only sweep log, so a literature search becomes an auditable record ("saturation after 7 queries and two snowball rounds") rather than a vibe.
| Mode | Use it for |
|---|---|
| DRAFT | outlining, writing, or restructuring a paper, chapter, or thesis |
| POSITION | literature review, related-work sections, "has anyone done X?", concurrent-work checks |
| REVIEW | pre-submission critique — three passes ending in the strongest honest rejection rationale |
| REBUTTAL | responses to reviewers, revision plans, meta-reviewer summaries |
| REPORT | results sections, statistics write-ups, questionnaire scale scoring |
| POLISH | tightening existing academic text without breaking terminology or calibrated hedging |
The skill enforces a few hard rules regardless of what it's asked to do: no fabricated or unverified citations (everything is checked against Crossref/OpenAlex or explicitly marked [VERIFY]), no invented statistics, one term per defined concept, calibrated hedging, and no authorship laundering.
Don't do something silly with this. Use at your own descretion and responsibility.
Claude Code: copy skills/academic-writing/ into .claude/skills/ in your project (or ~/.claude/skills/ for all projects).
Claude.ai / Claude Desktop: zip the academic-writing folder and upload it as a skill under Settings → Capabilities (or use the packaged .skill file from the releases page if one is provided).
Claude Agent SDK: place the folder in your configured skills directory.
The scripts also work standalone, outside any agent:
python skills/academic-writing/scripts/litsearch.py "your query" --out sweep --mailto you@example.com
python skills/academic-writing/scripts/snowball.py 10.1145/xxxxx --direction both --out sweep
python skills/academic-writing/scripts/check_refs.py refs.bib --out refcheck.csvPassing --mailto puts you in OpenAlex/Crossref's polite pool (faster, more reliable); it is sent only to those APIs.
MIT — see LICENSE.