Copy Editing skill for Codex

Tighter text that still sounds like the author. Codex agrees an edit level before touching text, builds a style sheet of terms, spelling and number conventions, then makes separate passes for clarity, concision, consistency and correctness. Code, identifiers and quotations stay untouched, anything that could change technical meaning becomes an author query, and changes come back as a word-level diff you can review.

  • Writing & Docs
  • $copy-editing
  • 160 lines
  • 2 files
  • ~1,850 tokens
  • MIT
  • Updated

Install

curl -fsSL codexskills.dev/install.sh \  | sh -s -- copy-editing

Installs to ~/.agents/skills/copy-editing/ for every project on this machine.

104-line POSIX script. No sudo, no telemetry. Read install.sh

Use it in Codex

Start a prompt with $copy-editing, or pick it from /skills. You can also just describe the task: Codex reads the description below and loads the playbook when your request matches.

What Codex reads before loading it

Copy-edits existing prose - docs, READMEs, blog drafts, UI text, reports - for clarity, concision, consistency and correctness while preserving the author's meaning and voice. Works in agreed edit levels (light, standard, heavy), builds a style sheet of terms and conventions, runs focused passes, returns a reviewable diff, and raises author queries instead of guessing. Can enforce rules with Vale. Use when asked to proofread, tighten, polish, clean up, make consistent, or cut the length of written text without rewriting what it says.

Use it when

  • Finished text needs proofreading, tightening or consistency fixes
  • Several authors used different names and spellings for the same thing
  • A document must be shortened without changing what it says

Use something else when

How to check the result

Five sampled changes keep the original meaning, style sheet terms are applied everywhere, code blocks are byte-identical, and Vale shows no new alerts.

The mistake it prevents

Tightening a sentence in a way that quietly changes a technical claim, such as turning 'at least' into 'exactly' or 'must' into 'should'.

~/.agents/skills/copy-editing/SKILL.md

--- name: copy-editing description: Copy-edits existing prose - docs, READMEs, blog drafts, UI text, reports - for clarity, concision, consistency and correctness while preserving the… license: MIT ---

A copy edit is done when the text says exactly what the author meant in fewer, clearer words, the same thing is named the same way everywhere, there are no errors of grammar, spelling, fact or formatting, and every change can be reviewed and reverted. The author should recognise their own voice.

Agree the edit level first

LevelChangesDoes not changeTypical length cut
Light (proofread)Spelling, grammar, punctuation, typos, broken formattingWording that is correct, structure0-5%
Standard (copy edit)Above + wordiness, unclear sentences, terminology, consistency, house styleOrder of sections, argument, voice10-20%
Heavy (line edit)Above + sentence restructuring, paragraph order within sections, cuts of redundant passagesThe overall argument, facts, conclusions20-40%

If the user just says “polish this”, default to standard and say so. Restructuring a whole document or changing its argument is not copy editing; propose it as a separate step (see $technical-writing).

Inspect first

  • Read AGENTS.md, any STYLE.md, docs/style-guide.md, .vale.ini and Vale styles in the repo. The house style wins over your preferences.
  • Determine the spelling variant (US or UK) and heading case from the existing text if no guide says so. Do not switch it.
  • Read the whole piece once before changing anything. Note the purpose, reader and voice.

Workflow

- [ ] 1. Confirm the edit level and any house style
- [ ] 2. Read the full text once without editing; note purpose and voice
- [ ] 3. Build the style sheet (terms, spelling, capitalisation, numbers, formatting)
- [ ] 4. Pass 1: clarity (sentences a reader would misread or reread)
- [ ] 5. Pass 2: concision (cut words that carry no meaning)
- [ ] 6. Pass 3: consistency (apply the style sheet everywhere)
- [ ] 7. Pass 4: correctness (grammar, spelling, punctuation, links, numbers, code refs)
- [ ] 8. Produce the diff, the change summary and author queries

Separate passes catch more than one combined read, because each pass looks for one kind of problem.

Style sheet

Build it as you go and include it in the output; it is how consistency survives later edits.

| Item | Decision | Notes |
|---|---|---|
| Spelling | US (color, canceled) | matches 90% of existing text |
| Product name | Acme Cloud (not AcmeCloud, ACME cloud) | per website footer |
| "sign in" / "log in" | sign in (verb), sign-in (noun/adj) | UI uses Sign in |
| Headings | Sentence case | |
| Numbers | Numerals for 10+, units with a space (5 MB) | |
| Code terms | `config.yaml`, `--dry-run` in code format | |
| Lists | No terminal periods unless items are full sentences | |
| Oxford comma | Yes | |

Clarity and concision fixes

PatternBeforeAfter
Wordy phrasein order to, due to the fact that, at this point in timeto, because, now
Hidden verb (nominalisation)perform an installation ofinstall
Empty openerIt should be noted that the cache…The cache…
Weak there-isThere are three flags that control…Three flags control…
Redundant paireach and every, final outcome, completely eliminateeach, outcome, eliminate
Unnamed actorThe file is then parsed.The loader then parses the file.
Vague intensifiervery important, really fast, quite largeDelete, or quantify
Stacked nounsuser account permission error message textthe text of the error shown when a user lacks permission
Ambiguous pronounIt fails when it is empty.The import fails when the CSV is empty.
Long sentence (>30 words) with two ideas…and also…Split into two sentences
Hedge pilemay possibly help to somewhat reducereduces (if true)

Delete on sight in technical text: “simply”, “just”, “easily”, “obviously”, “of course”, “basically”, “actually”. They add nothing or imply the reader is slow.

What not to touch

  • Code blocks, commands, identifiers, error strings, quoted output and API names. Fix surrounding prose only; if code looks wrong, raise a query.
  • Technical meaning. If tightening a sentence could change what it claims (“must” vs “should”, “all” vs “most”, “at least” vs “exactly”), keep it and query.
  • Direct quotations, legal text, and text the author marked as fixed.
  • Deliberate voice: humour, first person, short punchy fragments in a blog post.
  • Correct but different-from-your-taste choices (serial comma, “data is” vs “data are”) that the house style already settles.

Author queries

When the fix depends on knowledge you do not have, do not guess. Add a query:

Q1 (line 42): "requests time out after 30 seconds" but the table on line 88 says 60. Which is correct?
Q2 (line 57): "the old endpoint" - which endpoint? Suggest naming it: `/v1/export`.
Q3 (line 103): sentence can read as "all users" or "all admin users". Intended scope?

Tooling

Vale enforces style rules mechanically and is worth running before and after:

vale --output=line docs/page.md          # one alert per line
vale --minAlertLevel=warning docs/       # skip suggestions

If the repo has no Vale setup and the user wants one, start from a packaged style (Packages = Google or Microsoft in .vale.ini, then vale sync, which needs network) plus a project vocabulary file. Treat Vale output as hints; it cannot judge meaning.

Spelling: npx cspell "docs/**/*.md" if the project uses cspell; add real project terms to its dictionary instead of ignoring them inline.

Output

Return changes in a reviewable form, never a silently rewritten file:

  • For files in a repo: edit in place and show git diff --word-diff so the user reviews word-level changes. Keep unrelated formatting (line wrapping) unchanged to keep the diff small.
  • For pasted text: return the edited text, then a change summary.
**Edit level:** standard (confirmed)
**Length:** 1,920 -> 1,540 words (-20%)
**Main changes:** cut 14 wordy phrases; unified "workspace" (was also "project", "space"); split 9 sentences over 35 words; fixed 6 typos and 2 broken links
**Style sheet:** attached (12 entries)
**Untouched by design:** code blocks, CLI output, quoted error messages
**Author queries:** 3 (timeout value conflict, unnamed endpoint, scope of "all users")

Gotchas

  • Rewrapping every line of a Markdown file so the diff becomes unreviewable.
  • “Fixing” a technical term into a common word (a “lease” is not a “lock”).
  • Changing spelling variant halfway through because one paragraph used the other.
  • Cutting the only sentence that explains why, because it looked like filler.
  • Applying title case or sentence case to product and UI labels that must match the interface exactly.
  • Editing text inside screenshots’ captions so it no longer matches the screenshot.

Verification

  • Reread the edited text in full once, start to finish, for flow; passes can create choppy transitions.
  • Spot-check five changes against the original: meaning unchanged in each.
  • Style sheet decisions applied everywhere: rg -n -i "log in|login|log-in" docs/ etc.
  • Vale (if configured) shows no new alerts compared with the original.
  • Links and anchors still resolve; code blocks byte-identical to the original (compare with git diff limited to fenced regions, or eyeball the diff).

What the zip contains

SKILL.md plus the interface file below. Nothing runs on install.

agents/openai.yamlgenerated from this page

Gives the Codex app a display name, a one-line description and a starter prompt for this skill.

interface:
  display_name: "Copy Editing"
  short_description: "Tighter text that still sounds like the author"
  default_prompt: "$copy-editing Proofread this README and fix typos without changing the wording"

About this skill

Written and maintained by the Codex Skills editors to the same editorial standard as every skill here: a selective description, a real workflow, known pitfalls and a way to verify the work. First published , last updated . MIT licensed. Something wrong or out of date? Tell us.

esc
New

Introducing Codex Skills Pro

79 professional skills that take Codex through complete engagements, each with its own scripts, references and a report that verifies the result.

All-AccessOne-time payment, no subscription
$49
Get All-AccessOr browse individual skills from $2.99 →

Secure checkout by Creem