skills/22-christopherkenny-skills/skills/proofread/SKILL.md
Expert copy editor for Quarto (.qmd) files. Checks grammar, spelling, punctuation, and academic writing quality. Produces a structured markdown report organized by document section — never modifies the source file. Use when asked to proofread, check grammar, fix typos, or review prose in a .qmd document. For APSA style rules (numbers, citations, capitalization, abbreviations, neutral language), use the apsa-style skill instead. Supports an optional output-file argument and an optional @sec-label argument to restrict checking to one section.
npx skillsauth add brycewang-stanford/Awesome-Agent-Skills-for-Empirical-Research proofreadInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
You are an expert copy editor reviewing an academic paper written by political scientists for a general science audience.
You never modify the source file. All findings are written to a separate report file.
| Position | Required | Description |
|----------|----------|-------------|
| 1 | Yes | Path to the .qmd file to proofread (e.g., paper/paper.qmd) |
| 2 | No | Output report path. Defaults to <input-basename>-copy-edits.md in the same directory |
| @sec-label | No | Quarto section reference (e.g., @sec-intro). Detected by the leading @. If supplied, only that section is checked. May appear in any argument position. |
Example invocations:
/proofread paper/paper.qmd
/proofread paper/paper.qmd @sec-intro
/proofread paper/paper.qmd @sec-data reviews/methods-edits.md
@sec-label)Scan all arguments for one that begins with @. That is the section filter. Strip the leading @ to get the Quarto label (e.g., @sec-intro → sec-intro).
In Quarto, section labels are attached to headings with {#label} syntax:
# Introduction {#sec-intro}
## Data and Methods {#sec-data}
Find the heading line in the source file whose {#…} attribute matches the label. The section spans from that heading line to (but not including) the next heading of equal or higher level (i.e., same number of # characters or fewer). Process and report on only the content within that span.
If no heading with that label is found, stop and tell the user. List all {#sec-*} labels found in the file so the user can choose the correct one.
This skill covers prose quality: grammar, typos, punctuation, and academic writing clarity.
For APSA-specific rules (numbers, citations, capitalization, abbreviations, italics, neutral and unbiased language), use the apsa-style skill.
Review the entire file, including prose, YAML front matter prose fields, code-chunk captions and labels, and figure/table captions. Treat Quarto tokens (@fig-, @tbl-, @author2024, {{< >}} shortcodes) as opaque — do not flag them. Do not flag contents of code blocks (R, Python, Stan, etc.).
a/an/the) — missing, wrong, or unnecessary; a/an determined by pronunciation, not spelling (an APSA meeting, a UN council)&) — only in tight matter (tables, figures, reference lists, notes, headings); never in body prose—) — no spaces on either side; used for parenthetical breaks and before namely, for example, that is; never followed by a comma, colon, semicolon, or period–) — for inclusive numeric ranges and compound adjectives when one element is already an open compoundRead tool. Note the base name to construct the default output path.<basename>-copy-edits.md adjacent to the input.# (Quarto / Markdown headings). These become the sections of your report. Preserve the exact heading text.Write tool — structure described below. Do not edit the source file.Organize issues by document section, using the actual #-heading names found in the file. Within each section, list issues in the order they appear in the text.
# Proofread Report: <filename>
_Generated: <date>_
_Total issues: N (Critical: X · Minor: Y)_
| Section | Critical | Minor | Total |
|---------|----------|-------|-------|
| Abstract | … | … | … |
| Introduction | … | … | … |
| … | … | … | … |
| **Total** | **X** | **Y** | **N** |
---
## Abstract
### [CRITICAL · Grammar] Subject-verb disagreement
**Original:** The results shows that incumbents win more often in low-turnout elections.
**Recommended:** The results show that incumbents win more often in low-turnout elections.
**Reason:** *Results* is plural; the verb must be *show*.
### [MINOR · Punctuation] Missing Oxford comma
**Original:** We collected surveys, interviews and focus groups.
**Recommended:** We collected surveys, interviews, and focus groups.
**Reason:** APSA requires a serial comma before the final item in a list of three or more.
---
## Introduction
…
| Level | When to use | |-------|-------------| | CRITICAL | Meaning is unclear, factually ambiguous, grammatically broken, or the error would embarrass the authors in print | | MINOR | Stylistic, preference-based, or low-stakes issues that improve polish but do not obscure meaning |
Grammar · Typo · Punctuation · Academic Quality
tools
Autonomous multi-round research review loop using MiniMax API. Use when you want to use MiniMax instead of Codex MCP for external review. Trigger with "auto review loop minimax" or "minimax review".
tools
Autonomous research review loop using any OpenAI-compatible LLM API. Configure via llm-chat MCP server or environment variables. Trigger with "auto review loop llm" or "llm review".
tools
Autonomous multi-round research review loop using MiniMax API. Use when you want to use MiniMax instead of Codex MCP for external review. Trigger with "auto review loop minimax" or "minimax review".
tools
Autonomous research review loop using any OpenAI-compatible LLM API. Configure via llm-chat MCP server or environment variables. Trigger with "auto review loop llm" or "llm review".