An Agent Skill that reviews scientific and engineering manuscripts for writing quality, applying the methodology from Dr. Kristin Sainani's Writing in the Sciences course at Stanford.
Clear writing is not a cosmetic concern in science; it determines whether reviewers and readers can follow your argument. Yet most graduate students receive little formal training in scientific writing, and self-editing for clarity is difficult because you already know what you meant to say.
This skill encodes a systematic editorial review distilled from 30 video lectures on scientific writing, extended with Nature's guidance on structuring a summary paragraph. It works on anything from a whole manuscript to a single sentence, in six audit passes:
- Clutter. Dead-weight phrases, empty openers ("There are several studies that…"), redundancies, and negative constructions, with concise replacements.
- Voice and verbs. Passive constructions that hide who did what, and smothered verbs ("performed an analysis of" → "analyzed").
- Sentence and paragraph architecture. Buried verbs, overloaded sentences, dangling modifiers, paragraphs without a clear main idea or topic sentence, and transitions that don't fit the logic. In full reviews, it also checks what each section must do: an Introduction that states the gap, Results that lead with findings, a Discussion that opens with the answer and states limitations.
- Terminology. Key terms, group names and acronyms used consistently, so the reader never wonders whether "heavier participants" are the "obese group".
- Numbers and citations. Values that disagree between text and tables, and statistics cited only to a review.
- Summary paragraph structure. An abstract checked against the sequence of moves Nature prescribes, from field context to "Here we show" to broader significance, with sentence budgets and word count.
You can ask for a full review, a single section, a single pass ("check for passive voice"), an abstract review, or an interactive walk-through, paragraph by paragraph. Reports group repeated problems, tag each finding CRITICAL, MAJOR or MINOR, give its location, and show a concrete revision.
The skill does not alter scientific content, data, or claims, and it never makes a claim stronger or weaker on its own. It improves how your claims are delivered. It is not a substitute for technical peer review.
A skill is a folder (skills/sciwrite/) holding SKILL.md and two reference files the skill reads when it needs them. Most tools install the whole folder from the release ZIP or from this repository.
| Where you use AI | How to install |
|---|---|
| Claude (web, desktop, Cowork) | Upload the release ZIP under Customize → Skills |
| Claude Code | /plugin install sciwrite --marketplace labarba/sciwrite |
| ChatGPT | Upload the release ZIP under Skills (workspace plans) |
| Gemini app | Upload the release ZIP under Customize → Skills |
| Codex, Copilot, Cursor, Gemini CLI and other coding agents | gh skill install labarba/sciwrite sciwrite or npx skills add labarba/sciwrite |
| Any other tool | Paste the three skill files into its custom instructions |
The release ZIP is sciwrite-<version>.zip, attached to the latest release. It holds the sciwrite/ folder and nothing else. Don't use GitHub's green Code → Download ZIP button: that archive contains the whole repository. If Safari unzips the download into a folder, compress the sciwrite folder again (right-click → Compress) before uploading.
Steps and menus below were checked in October 2026. These products change often; if a menu has moved, the links to each vendor's help page have the current steps.
Upgrading from version 0.1? The skill was renamed from
manuscript-writing-reviewtosciwrite. Remove the old skill first, so the two don't compete.
- Make sure code execution is on: Settings → Capabilities → Code execution and file creation. On Enterprise plans, an owner must also enable skills for the organization.
- Go to Customize → Skills, click +, then Create skill → Upload a skill, and upload the release ZIP.
- Check that the skill's toggle is on.
The skill is then available in every chat and in Cowork, and it syncs to Claude Code when you're signed in with the same account. Skills are available on Free, Pro, Max, Team and Enterprise plans. See Use skills in Claude.
This repository is a Claude Code plugin marketplace. In a session, run:
/plugin install sciwrite --marketplace labarba/sciwrite
From your shell, the same works as claude plugin install sciwrite --marketplace labarba/sciwrite. These one-step commands need Claude Code 2.1.275 or later in a session, 2.1.292 or later in the shell; on older versions, run /plugin marketplace add labarba/sciwrite and then /plugin install sciwrite@sciwrite. Third-party marketplaces don't auto-update by default: to get a new version, run /plugin marketplace update sciwrite, or turn on auto-update for it in the Marketplaces tab of /plugin.
To install without the plugin system, copy the folder into your personal or project skills directory:
git clone https://github.com/labarba/sciwrite.git
cp -r sciwrite/skills/sciwrite ~/.claude/skills/- Open the Skills page (in recent versions it sits under Plugins), click Create, then Upload from your computer, and select the release ZIP.
- ChatGPT scans uploaded skills before they become available.
At the time of writing, OpenAI documents skills for workspace plans (Business, Enterprise, Edu, Healthcare), where an admin must allow skill uploads. Availability on personal plans was unclear, so check whether Skills appears in your account. Without it, use the "any other tool" method below in a Project's instructions. See Skills in ChatGPT.
Skills replace Gems in the Gemini app (announcement).
- At gemini.google.com, click Customize in the sidebar (under More if you don't see it), then Skills.
- Click Create → Upload, select the release ZIP, review the skill, and click Create.
- Gemini uses the skill when your request matches it; you can also call it by typing
/(or@) in a chat.
Uploading works on the web and in the Mac app. You must be 18 or over, signed in, with Keep Activity on. To update to a new version, open the skill, choose More → Replace skill, and upload the new ZIP. Skills in Google Workspace apps are created separately from the Gemini app's and don't sync with them. See Create and manage skills for Gemini Apps.
Two command-line installers work across dozens of agents. With the GitHub CLI:
gh skill install labarba/sciwrite sciwrite --agent codex --scope userReplace codex with your agent (github-copilot, cursor, gemini-cli, claude-code, …). Without --scope user, the skill installs into the current repository only.
Or with the skills CLI, which asks which agents to install for:
npx skills add labarba/sciwriteIf your tool has no skill support, paste the skill into whatever holds persistent instructions (a custom assistant, a project, a system prompt). Paste all three files, in this order: SKILL.md, references/section-guidance.md, and references/summary-paragraph.md. SKILL.md alone works for most reviews, but abstract reviews and section-level checks depend on the reference files.
Before installing any skill, read it. A skill is instructions that your AI tool will follow, and some skills include scripts. This one is plain Markdown with no scripts.
Ask in plain language, and paste your text or point to a file. For example:
Review the writing quality of draft.tex. I'm submitting to the Journal of Fluid Mechanics.Review the writing in my Introduction (sections/introduction.tex)Check my Results and Discussion for keyword consistency with MethodsIs my abstract too long for Nature? [paste abstract]Can you make this sentence less clunky? "[sentence]"Walk me through improving my Introduction, paragraph by paragraph
In a coding agent, the skill can also apply the revisions you accept (Apply the CRITICAL and MAJOR revisions to draft.tex); for LaTeX, it can suggest latexdiff to produce a marked-up copy for coauthors.
Tips
- Name your target journal, especially for abstracts. Nature caps a summary paragraph at about 200 words and requires citations in it; most journals allow more words and forbid citations in the abstract. Without a journal, the skill applies Nature's defaults and says so.
- Give enough text for the check you want. Terminology and number checks need the whole manuscript; a sentence is enough for clutter and verbs.
- Use the interactive mode to learn. The paragraph-by-paragraph walk-through explains each change, which builds habits rather than fixing one draft.
- Review the output critically. Your domain expertise is the final check. A flagged term may be standard in your field, and whether a number belongs in your abstract depends on what your result is. If a revision changes your meaning, say so and ask again.
The skill encodes general principles. You can add conventions for your field or target journal as a new section in your copy of SKILL.md, for example:
## Journal-specific conventions
Target journal: Journal of Fluid Mechanics (JFM)
- Use "figure" (lowercase) in running text; "Figure" only at the start of a sentence.
- Equations are referenced as (1), not Eq. (1), unless at the start of a sentence.
- Use Oxford commas.You can also edit the clutter and smothered-verb tables, the severity definitions, or the section guidance.
skills/sciwrite/
├── SKILL.md # the skill: modes, gotchas, the six passes, report format
├── references/
│ ├── summary-paragraph.md # Pass 6 and abstract-only rules, read when an abstract is reviewed
│ └── section-guidance.md # what each section must do, read in full and section reviews
└── evals/ # tests: output cases, answer key, trigger queries, baseline results
.claude-plugin/ # Claude Code plugin and marketplace manifests
tools/ # scripts that run and grade the tests
The tests run each case with and without the skill and grade the output against checkable assertions; see evals/README.md. For how the skill was made and revised, see HISTORY.md; for what changed in each version, the CHANGELOG.
If you find an edge case the skill handles poorly—a field-specific convention it misjudges, a clutter pattern it misses, or a false positive that keeps coming up—open an issue describing it, or submit a pull request. A new test case in evals/ that shows the problem is the most useful contribution of all.
If you use this skill in your work or teaching, please cite it using the information in CITATION.cff (GitHub's Cite this repository button formats it for you).
The software is archived on Zenodo. The DOI 10.5281/zenodo.23728600 always resolves to the latest version; version 1.0.0 is 10.5281/zenodo.23728601.
The skill, its reference files, the documentation and the test passages are licensed under CC BY 4.0: you are free to use, adapt, and share them, with attribution. The code (the Python scripts in tools/ and the GitHub Actions workflow) is licensed under the BSD 3-Clause License. Each code file says so in an SPDX-License-Identifier line at the top.
Developed as part of the course MAE 6291: Generative AI for Engineering Research at the George Washington University School of Engineering and Applied Science, and shared through the GW Engineering AI Academy. Pass 6 was contributed by Kyle Niemeyer.
The writing methodology is drawn from Dr. Kristin Sainani's Writing in the Sciences course at Stanford University. The original video lectures are available on YouTube under a CC BY license.
The summary paragraph structure in Pass 6 follows Nature's guide to authors, "How to construct a Nature summary paragraph" (September 2019). That document is the property of Springer Nature and is referenced here, not reproduced.