CONTENT SKILL

Seven-sweep copy editing

Seven sequential editing passes over copy you already have: clarity, voice, so-what, prove-it, specificity, emotion, zero-risk, each looping back to check the earlier sweeps, plus an expert-panel scoring gate for high-stakes pages.

No key, no account neededClaude CodeCursorCodexWindsurfany agent that reads SKILL.md

Install this skill
npx skills add addition-labs/skills --skill copy-editing

Run this in a terminal inside your project folder. Claude Code, Cursor and Codex then read the skill from where it lands.

  1. Step 01Open a terminal in your project folder
  2. Step 02Paste the command and press Enter
  3. Step 03Pick the agents to install to
  4. Step 04Ask the agent for the job; it reads the skill

copy-editingaddition-labs/skillsMIT licencev2.0.0updated 2026-09-05

The premise is that editing everything at once catches nothing. Each sweep asks one question of every sentence: can the reader understand it, does it sound like the brand, so what, where is the proof, can it be more specific, does it make the reader feel something, is there any reason left to hesitate.

Then a second gate for launch copy: three to five expert personas score it 1 to 10 with specific critiques, revise the lowest first, repeat until everyone is at 7 and the average at 8. The rubric is written out.

A quick-pass section carries the word-level cuts (very, really, just, in order to), the replacements (utilise to use, leverage to use, seamless to smooth), and the sentence and paragraph limits. A content-refresh reference handles pages that have decayed.

When to use it

The phrases that trigger it

Say any of these and an agent that has the skill installed will usually load it; you can also call it by name. The phrases are the skill’s own, from its description.

  • edit this copy
  • review my copy
  • proofread
  • polish this
  • tighten this up
  • too wordy
  • sharpen the messaging
  • refresh this content
  • content audit

What’s inside

The playbook, section by section

  • Sweep 1, clarity

    Mark unclear parts first, correct second, then confirm one idea per section and that the copy speaks to the reader.

  • Sweep 3, so what

    Every claim must answer "so what" with a deeper benefit: "AI-powered analytics" fails until it says what the reader can now do.

  • Sweep 4, prove it

    "Trusted by thousands" (which thousands), "industry-leading" (says who); add proof or soften the claim.

  • Sweep 5, specificity

    Save time becomes save 4 hours a week; many customers becomes 2,847 teams; and what cannot be made specific is probably filler.

  • Sweep 7, zero risk

    Everything near the CTA: guarantees, no-card trials, what happens next, privacy, social proof.

  • Expert panel

    Personas per copy type (conversion copywriter, UX writer, the target customer, brand strategist for a landing page), a 1 to 10 rubric, iterate to 7 minimum and 8 average.

Reference files the agent loads on demand

3 files in the skill folder, read only when an instruction calls for one.

checklist.md
The seven sweeps as a checklist: clarity, voice, so what, prove it, specificity, emotion, zero risk, then final checks.
content-refresh.md
Editing existing pages that have decayed: stale figures, drifted voice, missed search opportunities.
plain-english-alternatives.md
Plain replacements for pompous words, from the Plain English Campaign and plainlanguage.gov.

See it in action

One real run, in full

The request on the left went to the skill as installed. On the right is everything it returned, unedited; scroll inside the box to read it all.

You ask

Fetch https://addition-labs.com/resources/guides/seo-audit and run the Seven Sweeps on its opening (the first three paragraphs after the H1). Show the findings per sweep and the edited version.

The skill delivers

Copy edit: Seven Sweeps on the opening of "How to run an ecommerce SEO audit"

Source: https://addition-labs.com/resources/guides/seo-audit (fetched 11 September 2026, HTTP 200) Product marketing context: no .agents/product-marketing.md, .claude/product-marketing.md or product-marketing-context.md was present, so brand voice is inferred from the page itself: short declarative sentences, proof-first, British spelling, no em dashes anywhere on the page.

Scope: the copy under review

"First three paragraphs after the H1" was read as the first three prose paragraphs. The byline (By the Addition team · Updated 7 September 2026 · 12 min read) is a <p> but it is metadata, not copy, so it was skipped. The H2 "How much of a checklist has a pass mark" sits between P1 and P2.

P1 (the answer block, directly under the H1): > An ecommerce SEO audit checks whether search engines can crawl, index and rank your store. Google publishes a numeric pass mark for exactly one group, the Core Web Vitals thresholds of 2.5 seconds, 200 milliseconds and 0.1 (web.dev). Below that sit mechanisms Google documents without setting a number, then convention. The ecommerce-specific work lives in that middle tier.

P2 (first paragraph of the first section): > Open any SEO audit template and every row carries the same weight. A few are measured against a number Google published. Most are measured against what the person writing the template believes.

P3: > A checklist row is not evidence.

Core message to preserve: only one group on an audit checklist comes with a Google-published pass mark; everything else is documented mechanism or convention, and the reader should sort the checklist that way before working through it.

Sweep 1: Clarity

Findings

  1. P1, "for exactly one group." Group of what? The paragraph has not yet said that an audit checklist can be sorted into groups. The reader meets the frame before the frame is introduced.
  2. P1, "Below that sit mechanisms … then convention" and "that middle tier." "Below that" and "tier" assume a ranking the reader has not been shown. The three-tier table appears further down the page; the answer block leans on it as if it were already read.
  3. P1, "2.5 seconds, 200 milliseconds and 0.1." Three numbers with no metric names. A reader who does not already know Core Web Vitals cannot map them to LCP, INP and CLS, and "0.1" of what is unanswerable without the label.
  4. P1, sentence 1 vs the rest. The paragraph carries two ideas: what an audit is, and the three-tier argument. Rule of One is strained. Acceptable for an answer block that has to define the term first, but the join between the two ideas is abrupt.
  5. P2, "every row carries the same weight." Understandable, but "weight" is doing metaphorical work. It means the template presents every item as equally important; a reader could also read it as "every row is equally hard."
  6. P3, "A checklist row is not evidence." Evidence of what? That the finding matters, or that the fix will move anything. The line works as a punch, but the object is missing.

You Rule check: "your store" appears once (P1). P2 and P3 speak about templates and rows, not to the reader. Fine for an argumentative opening, but the reader disappears for two paragraphs.

Recommended edits

  • Introduce the sorting frame in one clause before "one group" (e.g. "Of everything on a typical audit checklist, Google publishes a pass mark for one group only").
  • Label the three thresholds: LCP, INP, CLS.
  • Replace "Below that" with the tier language so the three tiers are named in order in one sentence.
  • Give P3 its object: evidence of *what*.

Sweep 2: Voice and Tone

Findings

  1. Voice is consistent: clipped, confident, editorial, unhedged. No corporate vocabulary, no filler. Nothing to cut on the Quick-Pass word list except "exactly" in P1 (an intensifier; the claim is stronger without it, and see Sweep 4 on whether it is even safe).
  2. Register shift between P1 and P2. P1 is encyclopedic ("An ecommerce SEO audit checks whether…"), P2 and P3 are argumentative. The shift is structural (answer block, then essay) rather than accidental, and the H2 between them cushions it. Recommendation: keep it, but let P1's last sentence turn towards the reader so the handoff into the argument is smoother.
  3. Two passives in P2 ("are measured against … are measured against"). Deliberate parallelism; keep.
  4. P3 as a one-line paragraph. Matches the house rhythm (the page does this again later with "The short version"). Keep.

Loop back to Clarity: no voice edit proposed conflicts with the clarity fixes.

Sweep 3: So What

Each claim, asked "so what?":

ClaimDoes the copy answer "so what"?
An audit checks crawl, index, rankNo, and it does not need to; it is the definition.
Google publishes a pass mark for one groupPartly. The consequence (for everything else, *you* decide what finished looks like) is implied, never stated.
The ecommerce-specific work lives in the middle tierNo. This is the most important line in P1 and it stops one clause short. The so-what is: the part of the audit that is specific to a store is exactly the part with no pass mark.
Every template row carries the same weightConsequence appears in P4 ("a hundred red rows and no order of attack"), outside the three paragraphs. Inside them, the reader is left to infer it.
A checklist row is not evidenceNo bridge. The "which means" is missing.

Recommended edits

  • Add the bridge to P1's last sentence: "…which means for most of what matters to a store, you decide what finished looks like, not Google."
  • Add the bridge to P3: a count of red rows is not an order of attack. (This pulls P4's consequence forward; if adopted, trim the repeat in P4.)

Loop back: the bridges are in the same clipped voice. Clarity holds.

Sweep 4: Prove It

Findings

  1. Core Web Vitals thresholds (2.5 s, 200 ms, 0.1), attributed to web.dev. Verified against https://web.dev/articles/vitals on 11 September 2026: LCP "within 2.5 seconds," INP "200 milliseconds or less," CLS "0.1 or less." Supported. The page also screenshots and links web.dev further down. Nothing to add.
  2. "Google publishes a numeric pass mark for exactly one group." An absolute. It is defensible if "pass mark" means a good/needs-improvement/poor threshold, but Google does publish other hard numbers that an auditor might call a pass mark (sitemap size and URL limits, robots.txt size limit, Googlebot fetch size limit). "Exactly" invites the counter-example. Soften to "one group only" scoped to "a typical audit checklist," which is what the page's own meta description already does ("one thing Google publishes a threshold for with fifty things it does not").
  3. "Open any SEO audit template and every row carries the same weight." A generalisation across every template, unsupported. "Almost any" or "most" is the honest version. If the author has a specific template in mind (the page's meta description mentions "fifty things"), naming it or its row count would turn the claim into evidence.
  4. "A few … Most …" Unsupported proportions. The page's three-tier table supports the *shape* of the claim but gives no count. Keep the words, or attach a count only if the author has one. Do not invent one.
  5. "The ecommerce-specific work lives in that middle tier." Supported in kind by the page's own table (faceted navigation is listed in the middle tier). Fine as stated.
  6. P3 is a thesis, not a factual claim. No proof required, but it needs the bridge from Sweep 3 to avoid reading as a bare assertion.

Loop back: softening "exactly one" to "one group only" and "any" to "almost any" does not weaken the so-what; it removes the two hooks a sceptical reader would pull on.

Sweep 5: Specificity

Findings

  1. P1, the three numbers are specific but unlabeled (already flagged in Sweep 1). Labelled, they become the most specific thing in the opening.
  2. P1, "mechanisms Google documents without setting a number." Vague. The page's own table names them: crawling, indexing, canonicals, faceted navigation. Pull two or three forward.
  3. P1, "then convention." Vague. The page's P4 gives the example (one H1, a clean canonical). Pull one forward.
  4. P1, "The ecommerce-specific work." What work? The table says faceted navigation; the guide's later section is titled "Where a store leaks." One concrete noun would anchor it.
  5. P2, "every row carries the same weight." Concrete enough, but a single example of two rows that plainly do not deserve equal weight would make it visible. Any example here is the author's call; the page does not supply one in these three paragraphs.
  6. "A few / Most" cannot be made specific without data the page does not provide. Left as is (Sweep 4).

Filler check: nothing to remove. Every sentence carries a claim.

Loop back: naming the mechanisms and the convention adds nouns, not length beyond a few words, and each is already on the page, so Prove It holds.

Sweep 6: Heightened Emotion

Findings

  1. The opening is deliberately cool, and the brand voice on this page is proof-first. Adding drama would break voice (Sweep 2), so the aim is texture, not heat.
  2. The pain the page is actually about is the reader facing a template full of red rows with no idea which one matters. That image appears in P4 ("a hundred red rows and no order of attack"), not in the opening. P2 states the cause of the pain ("every row carries the same weight") without letting the reader see it.
  3. P3 is the one emotional beat in scope: blunt, a little confrontational. It works. The page immediately follows it with "That is not an accusation," which shows the author knows it lands. Keep it, but give it the bridge so the bluntness resolves into a consequence rather than hanging.
  4. Relief (the desire the reader has: an order of work that is not a matter of taste) is not hinted at in the three paragraphs. One clause in P1's close does it without sales language.

Recommended edit: one concrete "what the reader sees" image in P2, and the relief clause in P1. No adjectives, no urgency.

Loop back: the image in P2 is illustrative copy, not a fact claim, so Prove It is unaffected; it is flagged as illustrative in the edited version so the author can swap in a real pair of rows.

Sweep 7: Zero Risk

Findings

  1. There is no CTA in the first three paragraphs, and none anywhere in the opening. This is an educational guide, not a sales page, so the "action" here is to keep reading and then sort the checklist. Nothing to de-risk in the commercial sense.
  2. Next step is not stated. The opening argues that checklists need sorting but does not tell the reader that this guide will hand them the sorted order. P5 ("So sort the checklist before you work through it") does it, outside scope. Bringing a promise of *what you get from reading on* into P1's close is the equivalent of "clear expectations of what happens next."
  3. Trust signals present: byline ("By the Addition team"), update date (7 September 2026), a source citation (web.dev) in the first four sentences. Good. A named author would be stronger than "the Addition team"; that is a content decision I cannot make from here.
  4. Objections: the one a sceptical reader raises at P3 ("so are you saying conventions are worthless?") is answered in P4. Fine.

Final loop back through all sweeps: the edited version below was re-read against each sweep in order. The only tension found: pulling "order of attack" forward into P3 duplicates P4's line. Noted as a follow-on trim.

Edited version

P1 > An ecommerce SEO audit checks whether search engines can crawl, index and rank your store. Of everything on a typical audit checklist, Google publishes a numeric pass mark for one group only: the Core Web Vitals, where good means LCP within 2.5 seconds, INP of 200 milliseconds or less and CLS of 0.1 or less (web.dev). One tier down are the mechanisms Google documents without a number: crawling, indexing, canonicals, faceted navigation. Below that is convention, such as one H1 per page. The ecommerce-specific work lives in that middle tier, which means for most of what matters to a store, you decide what finished looks like, not Google.

P2 > Open almost any SEO audit template and every row carries the same weight. [Illustrative, swap for a real pair from the template you have in mind: a missing alt attribute sits next to a category page blocked from crawling, with the same red badge.] A few rows are measured against a number Google published. Most are measured against what the person writing the template believes.

P3 > A checklist row is not evidence that anything is wrong, and a count of red rows is not an order of attack.

Edit log (each change and its reason)
ChangeSweepReason
"for exactly one group" → "Of everything on a typical audit checklist … one group only"1, 4Introduces the frame before using it; drops the absolute a sceptic can counter-example.
Added LCP / INP / CLS labels and "within / or less"1, 5Numbers had no metric names; wording now matches web.dev's phrasing.
"Below that sit mechanisms … then convention" → "One tier down … Below that is convention"1Names the tiers in order so "middle tier" has a referent.
Named the mechanisms and one convention5Pulled from the page's own table and P4; no new facts.
"…lives in that middle tier" + "which means…" clause3, 6, 7Supplies the so-what, the relief, and what the reader gets from reading on.
"any" → "almost any"4Unsupported generalisation softened.
Optional illustrative row pair in P26Lets the reader see the "same weight" problem. Marked illustrative; not a claim.
P3 gains its object and its consequence1, 3"Evidence" now has an object; the "which means" bridge is present.

Follow-on outside scope: if the P3 edit is adopted, trim "and no order of attack" from P4 to avoid saying it twice.

Word count: original 96 words across the three paragraphs; edited 164 (182 with the optional illustrative sentence). The growth is all labels, named examples and the two bridges; if that is too long for an answer block, split P1's second sentence after "(web.dev)".

Quick-pass word check

  • Weak intensifier: "exactly" (P1). Removed.
  • Filler ("just," "actually," "very," "in order to"): none present.
  • Corporate words (utilize, leverage, seamless, robust): none present.
  • Sentence length: longest edited sentence is 41 words (P1, sentence 2, because it now carries three labelled thresholds). Over the 25-word guide; acceptable for a list sentence, or split after "(web.dev)" if the author prefers.
  • Em dashes: none in the original, none added.

Expert Panel Scoring

Skipped. The skill marks the panel optional for blog and guide content and "skip" for minor edits; this is a three-paragraph opening of an educational guide.

Checklist (references/checklist.md) final pass

  • Clarity: pronouns and tiers now have referents; jargon (LCP, INP, CLS) is named. ✓
  • Voice: formality consistent; reads aloud in the same clipped rhythm. ✓
  • So What: both flagged claims now bridge to a consequence. ✓
  • Prove It: thresholds verified against web.dev; two generalisations softened; no numbers invented. ✓
  • Specificity: vague nouns replaced with the page's own examples. ✓
  • Emotion: one image, one relief clause, no manufactured urgency. ✓
  • Zero Risk: no CTA in scope; next step (what reading on gives you) now stated. ✓
  • Final: no typos found; links not in scope; core message preserved. ✓

Open questions (the skill's task-specific questions, not answered by the request)

  1. Goal of this copy: assumed awareness plus search/answer-engine visibility (P1 is an answer block).
  2. Desired reader action: assumed "read on and sort your checklist"; no CTA in scope.
  3. Known concerns: none given.
  4. Proof available: only what the page cites (web.dev). If you have a template row count or a named template, it would firm up P2.
  5. New or refresh: treated as a refresh of live copy (updated 7 September 2026).

What this run could not do

No product-marketing context file existed (the skill reads one first), the five task-specific questions had no answers, and no template row count or template name existed to make "a few" or "most" specific, so those were left as written rather than invented. The assumptions are listed.

Method behind it

Where we would differ, and why

Our B2B content marketing guide carries the editing rules we apply after a draft, including the ones this skill does not have: the source must be the subject of the sentence, a limit is stated not argued, and no filler words. The skill’s seven sweeps and our rules overlap on specificity and proof; read both before a launch page.

Sweep 6, heightened emotion, lists "fear of missing out" among the dimensions to add. Our copy rules ban manufactured urgency and drama; we run six sweeps and treat the seventh’s FOMO line as a defect to remove, not a texture to add.

The specificity examples use made-up figures as illustrations (2,847 teams). Fine as a pattern; a real edit may only insert a number that exists.

B2B Content Marketing: How Long Before It Works

Drawing: Of 1M random URLs seen in September 2023, only 1.74% made it to the top 10 within a year.
Our drawing of Ahrefs, how long it takes to rank in Google, read 6 September 2026.From B2B Content Marketing: How Long Before It Works

SKILL.md

The file the agent reads

Written by Corey Haines and published under the MIT licence. Read the full file (2,296 words) on GitHub, at the commit we reviewed: coreyhaines31/marketingskills/skills/copy-editing/SKILL.md. The reference files are in the same folder.

Questions

Questions people ask before installing

Does it rewrite my copy or mark it up?

Both, sweep by sweep: it presents findings, proposes specific edits, and asks for the updated copy so you keep ownership. You can ask for the edited version directly.

How long does a full pass take?

Seven sweeps with loop-backs on a landing page is a substantial session. The quick-pass checks exist for shorter edits.

Is the expert panel real people?

No, personas the model plays. It is a structured self-review, useful for catching what one perspective misses, not a substitute for a human editor.