skills/copywriting/SKILL.md
Writes and edits short product and marketing copy using persuasion frameworks, and removes AI writing patterns. Writing mode gathers context, locks a brief, discovers brand voice, picks a framework, and outputs 2-3 alternatives. Editing mode audits against frameworks, strips AI-isms, runs seven sweeps, and outputs a before/after diff. Use when writing landing pages, hero copy, CTAs, product descriptions, onboarding strings, or email subjects. Also use for "this is a bad sell", "write copy for", "rewrite from first principles", "use Simon Sinek", "show don't tell", "make this shorter", "fix the copy", "write a headline", "improve the CTA", "edit existing copy", "remove AI-isms", "clean up AI writing", "make this sound less like AI", "flag AI patterns", or "scan for AI tells". For long-form articles use blog-post; for slide copy use presentation-creator; for API or product docs use docs-writing.
npx skillsauth add mblode/agent-skills copywritingInstall 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.
blog-post), slide or deck copy (use presentation-creator), or API/product/reference documentation (use docs-writing).Two modes. Auto-detect, do not ask:
| File | Read when |
|------|-----------|
| references/frameworks.md | Picking a framework (Write Step 4) or auditing copy against the nine persuasion frameworks (Edit Step 3) |
| references/page-types.md | Choosing structure and copy norms for a known page type (Write Step 4) |
| references/word-lists.md | Flagging Tier 1/2/3 AI vocabulary (Edit Step 4) |
| references/ai-patterns.md | Flagging structural and sentence-level AI tells and triaging by P0/P1/P2 severity (Edit Step 4) |
| references/sweeps.md | Running the seven line-level sweeps (Edit Step 5) |
Writing progress:
- [ ] Step 1: Gather context
- [ ] Step 2: Lock the brief (hard gate)
- [ ] Step 3: Discover brand voice
- [ ] Step 4: Choose framework and load references
- [ ] Step 5: Write 2-3 alternatives
- [ ] Step 6: Recommend and explain
Ask these four questions before writing a single word. Do not proceed until all four are answered.
Traffic source determines temperature. Cold traffic needs more Why. Warm traffic can lead with How or What. Skip a question only if the answer is already unambiguous in the files; never invent an audience or a goal.
Before writing, state the brief back to the user and get explicit confirmation:
Brief:
- Page: [page type]
- Goal: [single action]
- Reader: [specific audience]
- Core outcome: [what changes for the reader]
- Tone: [inferred from brand voice or user-stated]
- Traffic temperature: [cold / warm / hot]
Confirm this is correct before I write.
Do not write copy until the user confirms. If they push back on any point, update the brief and re-confirm.
Look for brand voice signals before inventing one:
Note the inferred voice in the brief. Never default to generic corporate warmth.
Load references/frameworks.md and references/page-types.md.
Choose the primary framework for this copy based on the brief:
| Situation | Lead framework | |-----------|---------------| | Cold traffic, unfamiliar product | Why/How/What (Simon Sinek) | | Feature-heavy product | Benefit Not Feature | | High-trust audience, low awareness | Show Don't Tell | | Transactional page, known intent | CTA Clarity | | Long-form sales page | Problem → Agitate → Solution (PAS) |
You can layer frameworks. Why/How/What almost always applies to hero copy regardless of the primary choice.
Write exactly 2-3 distinct alternatives. Each must:
Label each: Option A, Option B, Option C.
Pick one option and state clearly which and why in one sentence. Give the user a specific edit note for each alternative they did not pick: what it would take to make it stronger.
Editing progress:
- [ ] Step 1: Read all copy-bearing files
- [ ] Step 2: Set the north star
- [ ] Step 3: Audit against persuasion frameworks
- [ ] Step 4: Remove AI writing patterns
- [ ] Step 5: Run seven sweeps
- [ ] Step 6: Flag weakest elements with labels
- [ ] Step 7: Rewrite flagged sections
- [ ] Step 8: Output before/after diff
Scan for all reader-facing text: README headers, landing page components, hero text, CTAs, product descriptions, feature lists, onboarding strings, meta descriptions, email subjects.
Ask which files to target if unclear. Never audit copy you haven't read in full context.
Write one sentence before auditing anything: "[User] can now [do X] without [old pain]."
Every flagged line and rewrite must serve this sentence. If you cannot write it confidently, ask the user; the copy will be unfixable until the value proposition is clear.
Load references/frameworks.md. Check every major copy block against each framework. Mark candidates for flagging. Do not flag everything: identify the 3-7 highest-impact problems only.
Load references/word-lists.md and references/ai-patterns.md.
Scan for AI-isms and flag each with [AI-ISM] plus the specific pattern type:
word-lists.md): always flag and replace (delve, leverage, robust, seamless, paradigm, holistic, and more)word-lists.md): flag when 2+ appear in the same paragraph (harness, empower, streamline, elevate, and more)ai-patterns.md): formulaic openings, chatbot artefacts, "let's" transitions, significance inflation, copula avoidance, em dashes used as ordinary punctuationThe literal em dash (and its -- substitute) is itself a Tier 1 AI tell. Cap it at 1 per 1,000 words, zero is better. See ai-patterns.md section 1 for the rule and ai-patterns.md section 7 for the P0/P1/P2 triage order when time is limited.
If the user asked for persuasion-only editing, skip this step. If the user asked specifically for AI pattern removal, run this step first, before the sweeps.
Load references/sweeps.md and run all seven sweeps in order. Do not skip sweeps because the copy "looks fine": each sweep targets a distinct failure mode.
Attach a label inline to every weak line. Use exactly these labels:
| Label | Meaning |
|-------|---------|
| [WHAT-NOT-WHY] | Leads with the product or feature, not the user's motivation |
| [FEATURE-NOT-BENEFIT] | Describes what the product has, not what changes for the user |
| [TELL-NOT-SHOW] | Adjective claim without proof ("powerful", "seamless", "easy") |
| [VAGUE] | Generic; could describe any product in this category |
| [PASSIVE] | Subject is acted upon instead of acting |
| [DEAD-WEIGHT] | Adds no information not already conveyed; safe to cut |
| [JARGON] | Technical term that obscures meaning for a non-expert reader |
| [NO-PROOF] | Claim that needs a number, example, or testimonial to be credible |
| [WEAK-CTA] | CTA describes the action, not the outcome |
| [AI-ISM] | AI writing pattern: Tier 1 word, Tier 2 cluster, or structural tell |
Flag the 3-7 weakest elements. Prioritise by impact on conversion or comprehension.
Rewrite each flagged block:
## Copy Audit: [file or component name]
**North star:** [one-sentence value prop]
---
### [Section name]
**Before:**
> [original text]
**Issues:** `[LABEL]`, `[LABEL]`
**After:**
> [rewritten text]
**Why:** [one sentence explaining the change]
---
### Summary
- N issues flagged across N sections
- Top pattern: [most common label]
- Confidence: [high / medium; note if copy context was limited]
Before handing the diff back, verify each "After" line yourself: it leads with Why, names a concrete outcome, carries no banned word, and contains no em dash used as ordinary punctuation. A diff that reintroduces an AI tell in the rewrite is a regression, not an edit.
Never write these. Flag them immediately in edit mode. Full replacement list in references/word-lists.md.
delve, leverage (verb), robust, seamless, holistic, paradigm, game-changing, cutting-edge, innovative, synergy, revolutionary, effortless, world-class, powerful
Also ban "simple" used as a claim ("our simple onboarding"): never earned upfront, always reads as a promise not yet kept.
[WHAT-NOT-WHY].[TELL-NOT-SHOW]: they are never earned upfront.| When | Run |
|------|-----|
| After rewrite, audit prose quality | docs-writing |
| To optimise meta descriptions and page titles | optimise-seo |
| To review the full UI including copy in context | ui-audit |
| For landing page visual design, CRO strategy, and conversion benchmarks | ui-design (marketing track) |
development
Designs and builds UI end to end, from visual direction (palettes, type scales, design tokens, layout systems, landing-page CRO strategy, brand kits) to Tailwind implementation with the ui.sh design guideline system, including multiple variants with an in-browser picker, semantic markup scaffolds from screenshots, retrofitting dark mode or responsive behavior, and componentizing or canonicalizing Tailwind code. Use when asked to "build a landing page", "create a dashboard", "make this look good", "make this look premium", "pick a visual style", "design the UI for", "show me 3 hero options", "improve conversions", "create a brand kit", "turn this screenshot into markup", "add dark mode", "make a dark version of this image", "make this responsive", "fix this on mobile", "componentize this page", "clean up the Tailwind", or any prompt that designs, creates, or refines UI code. For auditing existing UI use ui-audit; for motion use ui-animation; for landing page copy use copywriting.
development
Collaborative interrogation that produces an implementation plan before any code is written. Explores the codebase and relevant docs first, asks one question at a time with a concrete recommended answer, grills the rationale behind documented decisions, flags fuzzy terminology, and walks a decision tree until shared understanding is reached, then writes a plan file. First step of the shipping pipeline; it creates plans, plan-reviewer stress-tests them, pr-creator opens the PR. Use when asked to "create a plan", "help me think through this", "plan this feature", "I want to build X", "grill me", "grill with docs", "understand the docs", "unpack the decisions", "brainstorm a spec", "what should the plan be", "think this through with me", or before starting any non-trivial implementation.
development
--- name: pr-reviewer description: Reviews the current local diff or branch and returns a read-only, severity-tiered findings report. It never edits files. Four modes: standard bug and compliance review, structural quality, AI slop detection, and whole-codebase security audit. Use when asked to run /pr-reviewer, "review my changes", or "code review" before commit, push, or handoff. "Thermo-nuclear review", "structural review", "deep code quality audit", "harsh maintainability review", and "code
development
--- name: ux-audit description: Feature-level UX audit for React/Next.js code, diff-aware by default. Catches what Lighthouse, axe, ESLint, and Storybook miss: state-coverage gaps (missing loading/empty/error), form data loss on validation, double-submit, broken focus management, optimistic UI without rollback, stale async responses, skeleton-induced layout shift, and vague microcopy. 33 modern failure-mode rules plus 30 Laws of UX rules across 12 feature playbooks. Produces a 3-tier ship-readin