jeffabailey/skills-writing

write-copy

Writes marketing copy grounded in the product's own facts, for landing pages, sales pages, CTAs, button labels, short emails, ads, and taglines.

View source

How to use

  1. Copy the installation command and review the source package before installing it in your own agent environment.
  2. Check the source document for required tools, credentials and supported hosts.
  3. Describe your input and desired deliverable; review the output against the source material.
npx skills add https://github.com/jeffabailey/skills-writing --skill write-copy

Before you start

  • Installation does not include a model subscription, API allowance or permission to access your files.
  • Repository stars and installation counts describe activity, not an independent quality or security test.
Original skill document

Rendered from the source repository. Headings, examples, code, tables, links, and referenced images are preserved.

Marketing Copy

Also invoked as /write:landing-page-copy (that skill was merged into this one).

Copy persuades only if readers believe it, and one invented testimonial or fake deadline costs that belief. So this skill gets the facts first, writes only from them, and lists what is missing instead of filling the gap.

Prompts

PromptUse forFile
Landing pageLanding, sales, or product pages: headline, hook, body sections, CTA. Uses ideas from the "48 Laws of Power" behind the scenesreferences/landing-page-copy.md
Short copyButton label, CTA line, headline, tagline, email, ad, social postreferences/short-copy.md

Pick by format. A request for a button and an email is short copy even if it says "CTA"; do not run the landing-page prompt for it. If the user wants both a page and a short piece, run each prompt.

Workflow

  1. Collect the facts -- Before drafting anything, read the fact sources: the README, docs, or site pages the user names; otherwise the repo in the working directory (README, package or plugin manifest, LICENSE) or the user's brief. Write a short fact sheet: product, what it does, price or license, audience, the exact action (install command, URL, signup step), and any real proof (quotes the user supplied, published numbers) or real limits (dates, seat caps). Each item notes where it came from. Copy may state only what is on this sheet or in the user's message.
  1. Fill the prompt fields -- The prompts use bare {{field}} placeholders. Pre-fill each from the fact sheet and the request, then apply these defaults:
FieldDefault when not given
price_pointfrom the license or site; else [NEEDS FACT: price]
competitor_analysis, social_proof, urgency_factornone
brand_voiceplain and direct, matching the source's tone
researchno
length_limit (short copy)default (limits are in the prompt)
format (short copy)what the user asked for

Ask once, in a single message, only for what you cannot find or infer, usually the audience or the action. Accept "none", "unknown", or "skip" for anything. Never block on proof, price, or urgency: missing facts become [NEEDS FACT: ...] markers and go on the needs list.

  1. Draft -- Follow the prompt with the filled values. Research (web search, competitor pages, reviews) stays off unless the user asks for it and web tools are available; when on, every researched claim gets a link in the appendix. The persona in the landing-page appendix is a writing aid and is labeled that way.
  1. Remove AI tells -- Run the ai-sanitize skill (jbb-skills:ai-sanitize when installed as a plugin, from jeffabailey/skills) in edit mode on the paste-ready copy only. Persuasive copy collects tells: "elevate", "seamless", "supercharge", "The future of...", contrast framing, triads, eyebrow labels, emoji. Replace each with a claim from the fact sheet; if none fits, delete it or flag it, never invent one. If ai-sanitize is not installed, say so in the delivery note and rely on step 5.
  1. Check before delivery -- Save the copy to a file and run:
bash
   python3 <skill-dir>/scripts/check_copy.py copy.md --source README.md [--limit Body=80w] [--limit Button=5w]

It checks only the paste-ready part (text before the "Needs from you" or appendix heading) for emdashes, law names, buzzwords, scarcity phrases, testimonial-like quotes, numbers not found in the sources, and per-part lengths. Fix every flag, or explain in the delivery note why a flag is a false positive (for example, a number the user gave in chat). Pass the user's limits with --limit; without them, use the short-copy defaults.

  1. Deliver -- Three parts, in this order:
  • Paste-ready copy: only what goes on the page or in the email. No law names, technique labels, editor notes, or brackets other than [NEEDS FACT: ...]. For a landing page that becomes a page on jeffbaileyblog, set front matter per hugo/content/prompts/seo-front-matter.md in the blog repo.
  • Needs from you: a checklist of every [NEEDS FACT] plus proof worth collecting (testimonials, usage numbers, screenshots). Write "none" if empty.
  • Strategy appendix (landing page only; one or two lines for short copy): approach, persona, laws used and where, proof and urgency plans, sources.

Voice

Plain and specific. Use the product's own terms and the exact command or URL from the source. Use "we" when the source speaks as a company and "you" for the reader. No emdashes. Keep profanity or slang the user's own material uses; do not add any.

Reference

Copy prompts are also published at https://jeffbailey.us/prompts/; the files in references/ are the source of truth for this skill.

Related by task

from this repository

More skills

All skills
jeffabailey
Community

write-ideate

Brainstorms article ideas for a blog, checks each idea against what is already written (published posts and draft stubs), and hands back ready-to-write ideas with slug, section, categories, closest existing post, and the write-article framework to use. Use when the user says /write:ideate or /write:idea-storm, wants to brainstorm topics, generate article ideas, find gaps in what they have written, explore content angles, or asks "what should I write about". Triggers on "brainstorm", "idea storm"

installs
1
GitHub stars
0
Updated
Oct 25
jeffabailey
Community

write-review

Reviews an article against one of 17 bundled writing framework rubrics (including X vs Y comparisons) without editing it, plus a blog-post checklist score shared with write-article. Detects the framework from front matter, directory, and structure, or takes it as an argument. Use when the user says /write:review, asks to review an article, evaluate writing quality, check an article against a framework, or get feedback on a draft, and when another skill (such as write-article-revision) needs a fr

installs
1
GitHub stars
0
Updated
Oct 25
jeffabailey
Community

write-status

Quick check of which writing skills have already run on a jeffbaileyblog article and which are missing or stale (write-review, write-review-apply, write-seo, write-validate-article, write-check-links, write-run-markdown-lint, hugo-agents-compliance, generate-cover-image), then asks y/N before running write-review if the article has never been reviewed. Use when the user says /write:status, asks "has this been reviewed?", "what's left on this article?", "which checks haven't run?", "is this ready

installs
1
GitHub stars
0
Updated
Oct 25
jeffabailey
Community

write-strategy

Runs evidence-tagged strategic analysis in three modes, each with a bundled prompt. Content strategy plans a blog or publication from a measured inventory (published vs draft, pace, pillars, 90-day calendar). Competitor analysis maps 3-5 competitors plus disruptors for businesses, blogs, or open-source projects and scores the gaps. Growth audit (McKinsey-style) scores a business or project, finds bottlenecks, and lays out quick wins and a 90-day roadmap toward a revenue or non-revenue goal. Use

installs
1
GitHub stars
0
Updated
Oct 25