Copywriting: Install, Source and Security | FunnelSlayer

Copywriting

Published by hungv47 in marketing-skills

No known issues29 installs

What this skill does

Writes and evaluates persuasive copy — headlines, hooks, CTAs, taglines, and full-page section copy with rubric scoring, annotations, and ranked alternatives. Produces inline annotations or `.agents/skill-artifacts/mkt/content/[slug].copy.md`. Not for editing AI-sounding text (use humanize). For brand voice guidelines, see brand-system. For landing-page architecture, see lp-brief.

Add Copywriting to your agent

Review the source and files first. When you are ready, copy the prompt instruction or use the CLI command supported by your environment.

Install with a prompt

Paste this into a compatible coding agent:

add this skill "copywriting" from https://github.com/hungv47/marketing-skills

Install with the CLI

Run this command in a controlled environment after reviewing the repository:

npx skills add https://github.com/hungv47/marketing-skills --skill copywriting

Skill instructions

Copywriting — Orchestrator

Communication — Horizontal. Coordinates specialized sub-agents to produce craft-quality copy with annotations, alternatives, and quantitative evaluation.

Core Question: "Is every key line visual, falsifiable, and uniquely ours?"

Philosophy

Copy frameworks (PAS, 3-Question Test, CTA formula) are proven tools — not mandatory templates. A skilled agent may combine frameworks or break a guideline when the extra words earn their place. Construction starts with Argument Engineering: define the belief sequence, proof burden, Unique Mechanism, and competitor contrast before choosing words. The test is: does this stop the scroll and move the reader? This orchestrator dispatches specialist agents for each concern, then a critic agent ensures every key line meets the bar.

Inputs Required

  • Brief: what to write (headline, hook, CTA, tagline, subject line, or full-page copy)
  • Context: audience, product, awareness stage (from research/icp-research.md, research/product-context.md, or user-provided)

Output

  • Inline annotations + alternatives on key lines (when called by another skill)
  • .agents/skill-artifacts/mkt/content/[slug].copy.md (for standalone full-page copy tasks)

Quality Gate

Before delivering, the critic agent verifies:

  • Every key line passes the Three-Question Test: visual? falsifiable? uniquely ours?
  • Hook and body choices form an airtight argument: the reader can see the old belief, new belief, proof, Unique Mechanism, and next action without a logical gap
  • Rubric score averages ≥3.5 across V/F/U for all key lines
  • Every key line passes the Competitor Swap Test (swap in competitor name — if it still works, rewrite)
  • 3-5 variations generated per key line, best selected with top 2-3 presented as alternatives
  • Every key line annotated: rule that drove the choice, cut alternative, rubric score
  • CTA follows formula: [action verb] + [what they get] (not "Learn More" or "Click Here")
  • Every headline/hook contains concrete nouns or specific numbers (no abstract "better," "innovative," "leading")

Chain Position

Horizontal — called by campaign-plan, lp-brief. Can run standalone. Re-run triggers: When brand voice changes, when A/B test results suggest a different angle, or when key lines need fresh variations.

Skill Deference

  • Content reads as AI-generated? → Run humanize after
  • Optimizing for search/AI citations? → Coordinate with seo

Agent Manifest

AgentLayerFileFocus
Hook Agent1 (parallel)agents/hook-agent.mdHeadlines, hooks, taglines, subject lines — Argument Engineering lead plus 3-5 variations with 3Q scoring
Body Agent1 (parallel)agents/body-agent.mdProblem/Solution/How It Works or 6 Necessary Beliefs architecture
CTA Agent1 (parallel)agents/cta-agent.mdCTA variations per placement with risk reversal
Social Proof Agent1 (parallel)agents/social-proof-agent.mdTestimonials, stats, logos, credibility signals, Discovery Story
Variant Agent1.5 (post-merge)agents/variant-agent.mdA/B alternatives for key sections
Voice Agent2 (sequential)agents/voice-agent.mdClarity + brand voice consistency, AI slop removal
Psychology Agent2 (sequential)agents/psychology-agent.mdSo What, Prove It, Specificity, Emotion passes
Zero-Risk Agent2 (sequential)agents/zero-risk-agent.mdBarrier removal, guarantees, exit grace
Critic Agent2 (final)agents/critic-agent.mdRubric scoring, 3Q test, annotation, PASS/FAIL

Routing Logic

Classify the task, then follow the matching route.

Route A: Single Key Line

When: Brief asks for a headline, hook, CTA, tagline, or subject line — not a full page.

1. Pre-dispatch: Gather context (Step 0 below)
2. Dispatch ONE agent:
   - Hook/headline/tagline/subject line → hook-agent
   - CTA → cta-agent
3. Dispatch: critic-agent (on the single agent's output)
4. If critic returns FAIL → re-dispatch the original agent with feedback (max 2 cycles)
5. Deliver annotated key lines

Note: Route A skips variant-agent. Hook-agent and cta-agent already generate 3-5 variations internally with rubric scoring. Variant-agent is designed for full-page copy where cross-section A/B alternatives are needed.

Route B: Full-Page Copy

When: Brief asks for landing page copy, full-page copy, or multiple sections.

1. Pre-dispatch: Gather context (Step 0 below)
2. LAYER 1 — Dispatch IN PARALLEL:
   - hook-agent
   - body-agent
   - cta-agent
   - social-proof-agent
3. MERGE: Assemble Layer 1 outputs into page structure
4. Dispatch: variant-agent (on merged output)
5. LAYER 2 — Dispatch SEQUENTIALLY:
   - voice-agent (receives merged + varianted output)
   - psychology-agent (receives voice-agent output)
   - zero-risk-agent (receives psychology-agent output)
6. Dispatch: critic-agent (receives zero-risk-agent output)
7. If critic returns FAIL → re-dispatch named agent(s) with feedback (max 2 cycles)
8. Deliver final artifact

Route C: Called by Another Skill

When: Invoked by campaign-plan or lp-brief for inline copy work.

1. Pre-dispatch: Read context from calling skill's artifacts
2. Dispatch the relevant Layer 1 agent(s) based on what the caller needs:
   - Headline/hook → hook-agent
   - Body sections → body-agent
   - CTAs → cta-agent
   - Social proof → social-proof-agent
3. Dispatch: critic-agent
4. Return annotated output to the calling skill

Pre-Dispatch

Run the Pre-Dispatch protocol (references/_shared/pre-dispatch-protocol.md).

Needed dimensions: surface (page / email / social / headline / CTA / etc.), audience, the one shift (what should reader believe after?), unique proof (what can you say nobody else can?), Unique Mechanism (the proprietary "how" that makes the offer different and better), belief sequence (what the reader must accept before the CTA feels obvious), traffic source (if applicable).

Read order:

  1. Method: references/research-workflow.md for the Research Doc -> Avatar & Offer Brief -> Belief Engineering -> Unique Mechanism SOP. Use it to identify missing upstream context before dispatch.
  2. Pipeline: research/icp-research.md for VoC + pain language. research/product-context.md for product details and voice adjectives. .agents/skill-artifacts/mkt/campaign-plan.md for angle + awareness stage.
  3. Experience: .agents/experience/{audience,product,goals}.md.

If research/icp-research.md or product-context.md date fields >30 days old, warn and recommend re-running icp-research. Soft gate — proceed if user confirms, note "stale ICP" in artifact header.

Language: default English. If another language specified, note in pre-writing — agent instructions are optimized for English copy; other languages may need adapted idioms and cultural references.

Warm Start (icp-research + product-context + campaign-plan exist):

Found:
- audience → "[VoC summary from icp-research.md]"
- product/voice → "[adjectives from product-context.md]"
- campaign angle → "[from campaign-plan.md if present]"
- Unique Mechanism → "[proprietary mechanism from product-context.md or campaign-plan.md if present]"

Need before dispatching: surface (page/email/headline/CTA/etc.) + the
one shift this copy should produce + confirmation that the Unique Mechanism
above is the mechanism to anchor the argument on. If the surface is a
direct-response page or persuasion-heavy email, also confirm the belief
sequence or let Body Agent derive it from the research workflow.

Cold Start (no upstream artifacts):

copywriting writes for a specific surface, a specific audience, with a
specific shift in mind. Generic prompts produce generic copy. Before I dispatch:

1. **Surface** — landing page (full) / homepage section / email / social post
   / headline only / CTA only / tagline / subject line / other?
2. **Audience** — primary buyer (role + situation + 1-2 pains they articulate).
   Or point me at `research/icp-research.md` if it exists.
3. **The one shift** — what should the reader believe after reading this
   that they don't believe now? One sentence.
4. **Unique proof** — what can you say that nobody else can? Specific
   client + number, named feature with results, or domain credentials.
5. **Unique Mechanism** — what proprietary "how" makes the offer different
   and better than the old way or commodity alternative? Name it in one
   sentence. If none exists yet, say "unknown" and the copy must surface that
   as a concern.
6. **Belief sequence** — what 3-6 beliefs must the reader accept before the
   CTA feels like the logical next step? If unknown, say "derive from brief."
7. **Traffic source** (only if Q1 is page or email) — ad / search / email /
   social / direct? Determines what the reader already knows and expects.

Answer 1-7 (or 1-6 if no traffic source) in one response. I'll dispatch.

Write-back:

QFileKey
2. Audienceaudience.mdAudience — primary persona (only if novel; pre-existing icp-research takes precedence)
3. The one shiftgoals.mdGoals — copy shift: [surface]
4. Unique proofproduct.mdProduct — proof points
5. Unique Mechanismproduct.mdProduct — unique mechanism
6. Belief sequencegoals.mdGoals — copy belief sequence: [surface]
1, 7. Surface + traffic source(routing only)

Dispatch Protocol

How to spawn a sub-agent

For each agent dispatched below, use the Agent tool with a prompt constructed as follows:

  1. Read the agent instruction file (e.g., agents/hook-agent.md) — include its FULL content in the Agent prompt
  2. Append the brief and pre-writing context after the instructions
  3. Resolve file paths to absolute: replace relative paths with absolute paths rooted at this skill's directory. Example: if this skill is at /Users/you/skills/copywriting/, then references/headline-formulas.md becomes /Users/you/skills/copywriting/references/headline-formulas.md. Tell the agent: "Read the reference file at [absolute path] for domain knowledge."
  4. Pass upstream artifacts by content, not path: the orchestrator reads research/product-context.md and research/icp-research.md FIRST, then includes relevant excerpts (VoC quotes, voice adjectives, pain language) in the pre-writing object. Sub-agents should NOT read artifact files directly — the orchestrator curates what they need.
  5. If feedback exists (from a critic FAIL cycle), append it at the end of the prompt with the header "## Critic Feedback — Address Every Point"

Single-agent fallback

If multi-agent dispatch is unavailable (no Agent tool, single-agent runtime, or context constraints), execute each agent's instructions sequentially in-context:

  • Layer 1: run each agent's domain instructions one at a time, writing each section
  • Layer 2: apply each refinement pass to the full document in order
  • Critic: self-evaluate using the critic-agent's rubric and quality gate

The output quality should be equivalent — the multi-agent pattern optimizes for parallelism and focus, not capability.


Layer 1: Parallel Section Writers

Spawn the following agents IN PARALLEL (multiple Agent tool calls in a single message). For each agent, follow the Dispatch Protocol above.

AgentInstruction FilePass These InputsReference Files to Resolve
Hook Agentagents/hook-agent.mdbrief + pre-writingreferences/headline-formulas.md, references/research-workflow.md, references/emotional-triggers.md (TOF/lead-magnet hooks), references/belief-disruption.md (problem-unaware audience), references/lead-magnet-stack.md (lead-magnet posts)
Body Agentagents/body-agent.mdbrief + pre-writingreferences/page-sections.md, references/research-workflow.md
CTA Agentagents/cta-agent.mdbrief + pre-writingreferences/lead-magnet-stack.md (lead-magnet CTAs only)
Social Proof Agentagents/social-proof-agent.mdbrief + pre-writing + available proof pointsreferences/page-sections.md, references/discovery-story.md, references/lead-magnet-stack.md (FOMO layer 1-2 social-proof patterns)

For single key line tasks (Route A): Dispatch only the relevant agent, not all four.


Merge Step

After all Layer 1 agents return, assemble their outputs into the page structure.

Section Order (full-page copy)

Awareness-building narrative (Body Agent chose Problem -> Solution -> How It Works):

  1. Hero — Hook agent's recommended headline + subheadline + CTA agent's hero CTA
  2. Social Proof Bar — Social proof agent's bar element
  3. Problem — Body agent's Problem section
  4. Solution — Body agent's Solution section
  5. How It Works — Body agent's How It Works section
  6. Testimonials — Social proof agent's testimonials
  7. Key Stats — Social proof agent's stats (if applicable)
  8. Final CTA — CTA agent's final CTA + risk reversal

Direct-response narrative (Body Agent chose 6 Necessary Beliefs):

  1. Hero — Hook agent's recommended headline + subheadline + CTA agent's hero CTA
  2. Social Proof Bar — Social proof agent's bar element
  3. Necessary Beliefs — Body agent's belief sequence, preserving the Problem / Mechanism / Superiority / Proof / Fit / Opportunity order
  4. Mechanism Close — Body agent's Unique Mechanism close
  5. Testimonials — Social proof agent's testimonials
  6. Key Stats — Social proof agent's stats (if applicable)
  7. Final CTA — CTA agent's final CTA + risk reversal

Assembly Rules

The merge is deterministic assembly, not creative synthesis. Slot each agent's output into the template by ownership:

Awareness-building narrative:

SectionOwner AgentContent Source
Headline + SubheadlineHook AgentRecommended hook + subheadline from hook-agent output
Hero CTACTA AgentHero CTA from cta-agent output
Social Proof BarSocial Proof AgentBar element from social-proof-agent output
ProblemBody AgentProblem section from body-agent output
SolutionBody AgentSolution section from body-agent output
How It WorksBody AgentHow It Works section from body-agent output
TestimonialsSocial Proof AgentTestimonials from social-proof-agent output
Mid-Page CTACTA AgentMid-page CTA from cta-agent output
Key StatsSocial Proof AgentStats from social-proof-agent output
Final CTA + Risk ReversalCTA AgentFinal CTA + risk reversal from cta-agent output

Direct-response narrative:

SectionOwner AgentContent Source
Headline + SubheadlineHook AgentRecommended hook + subheadline from hook-agent output
Hero CTACTA AgentHero CTA from cta-agent output
Social Proof BarSocial Proof AgentBar element from social-proof-agent output
Necessary BeliefsBody AgentNecessary Beliefs section from body-agent output
Mechanism CloseBody AgentMechanism Close from body-agent output
TestimonialsSocial Proof AgentTestimonials from social-proof-agent output
Key StatsSocial Proof AgentStats from social-proof-agent output
Final CTA + Risk ReversalCTA AgentFinal CTA + risk reversal from cta-agent output

If the Body Agent chose Direct-Response 6 Necessary Beliefs, do not force its output back into Problem / Solution / How It Works slots. Preserve the belief sequence as the persuasive body architecture.

Conflict Resolution

  • Each agent owns specific sections (table above). If two agents mention the same fact (e.g., both hook and social-proof reference "12,000 users"), keep the version from the section owner.
  • If hook-agent's headline contradicts body-agent's problem framing, the orchestrator adjusts the body to align with the hook — the hook is the anchor because it's what the reader sees first.

After Merge: Variant Agent

Dispatch the variant-agent with the assembled document as upstream. It returns A/B alternatives for key sections. Variant alternatives are appended to the artifact (not replacing originals) — they're testable options, not replacements.


Layer 2: Sequential Craft Refiners

Dispatch these agents ONE AT A TIME, IN ORDER using the Dispatch Protocol above. Each receives the previous agent's full output as the upstream field.

voice-agent → psychology-agent → zero-risk-agent → critic-agent
StepAgentInstruction FileReceivesReference Files to Resolve
1Voice Agentagents/voice-agent.mdMerged + varianted document—
2Psychology Agentagents/psychology-agent.mdVoice agent's outputreferences/emotional-triggers.md, references/belief-disruption.md (TOF copy only)
3Zero-Risk Agentagents/zero-risk-agent.mdPsychology agent's output—
4Critic Agentagents/critic-agent.mdZero-risk agent's outputreferences/emotional-triggers.md (trigger density gate)

Each agent returns the full document with their edits applied + a change log.


Critic Gate

The critic agent returns one of two verdicts:

PASS

The copy meets all quality standards. Deliver the critic's annotated output as the final artifact.

FAIL

The critic returns specific failures with:

  • Which lines failed and on which dimension
  • Specific fix instructions
  • Which agent to re-dispatch

Rewrite loop:

  1. Read the critic's failure report
  2. Re-dispatch ONLY the named agent(s) with the critic's feedback attached as the feedback input
  3. Run the modified output back through the critic
  4. Maximum 2 rewrite cycles. After 2 failures, deliver the copy with the critic's annotations and flag to the user: "Copy scored [X] — manual review recommended on [specific lines]."

Artifact Template

---
skill: copywriting
version: 1
date: [today's date]
status: done | done_with_concerns | blocked | needs_context
---

# Copy: [Title / Brief Description]

**Date:** [today]
**Skill:** copywriting
**Audience:** [who]
**Awareness Stage:** [stage]
**Traffic Source:** [where they're coming from]

## Pre-Writing

1. **Talking to:** [audience + current belief]
2. **Shift to:** [desired belief after reading]
3. **Only we can say:** [unique proof/angle]
4. **Unique Mechanism:** [proprietary how that makes the offer different and better]
5. **Traffic context:** [what they already know]

## Key Lines

### [Line Type: Headline / Hook / CTA / Tagline / Subject Line]

**Selected:** "[winning line]"
  Rule: [which principle]. Score: V:[n] F:[n] U:[n].
  Cut alternative: "[runner-up]" — [why cut].

**Alternative A:** "[second option]"
  Rule: [principle]. Score: V:[n] F:[n] U:[n].

**Alternative B:** "[third option]"
  Rule: [principle]. Score: V:[n] F:[n] U:[n].

## [Additional sections for full-page copy — Hero, Problem, Solution, etc.]

## A/B Variants
[Variant agent's alternatives with hypotheses and test priority]

> On re-run: rename existing artifact to `[slug].copy.v[N].md` and create new with incremented version.

Next Step

Run humanize to refine voice and compress.


Worked Example — Full-Page Copy (Route B)

Brief: Landing page for StatusZero, a tool that replaces standups with async status updates. Audience: Engineering managers at 50-200 person companies, problem aware. Traffic: LinkedIn ads (cold).

Step 0: Pre-Dispatch

  1. Talking to: EMs who feel buried in status overhead but think it's part of managing.
  2. Shift to: Status updates are a solvable problem, not a cost of doing business.
  3. Only we can say: Internal data shows 12 hrs/week lost to status theater.
  4. Traffic: LinkedIn ad click — cold, haven't searched, hook must interrupt.

Layer 1: Parallel Dispatch

→ Hook agent returns 5 headline variations, recommends: "Your team loses 12 hours a week to status updates nobody reads." (V:5 F:5 U:4) → Body agent returns Problem (status theater pain), Solution (async updates), How It Works (3 steps) → CTA agent returns hero CTA ("See how teams ship without status theater →"), mid-page, and final CTAs with risk reversal → Social proof agent returns logo bar (4 tech companies), 2 testimonials with metrics, key stat

Merge (orchestrator assembles)

Slots Layer 1 outputs into template: Hero → Social Proof Bar → Problem → Solution → How It Works → Testimonials → Final CTA

Dispatch: Variant Agent

Receives merged document. Returns A/B alternatives: → Hero variant B: "I cut meetings 80%. Output doubled." (tests story hook vs. data hook) → Final CTA variant B: "Try StatusZero free — no credit card, cancel anytime" (tests specificity vs. risk-first)

Layer 2: Sequential Dispatch

→ Voice agent receives merged + varianted doc. Fixes 3 AI patterns, adjusts tone to "direct, technical." Returns modified doc + change log. → Psychology agent receives voice output. Adds "which means..." bridges to 2 features, strengthens emotion in problem section. Returns modified doc + change log. → Zero-risk agent receives psychology output. Adds "No credit card required" near hero CTA, "Cancel anytime" near final CTA. Returns modified doc + change log.

Dispatch: Critic Agent → PASS

Receives zero-risk output. Scores all key lines. All average ≥3.5. Annotated and delivered.


Agent Files

Sub-Agent Instructions (agents/)

Shared References (references/)

Page-Specific Guidance

PageKey Principle
HomepageWhat you do in one sentence. Primary use case, not every feature.
Landing PageOne goal, one CTA. Match headline to traffic source. Remove nav.
PricingLead with value, not price. Anchor with most popular plan.
FeatureLead with outcome ("Track time in one click"), not feature name.
AboutFounding story. What you believe. Team photos + real context.

Anti-Patterns

Skipping the pre-writing — Dispatching agents without answering the 4 pre-writing questions. Every agent needs this context to write relevant copy.

Dispatching all agents for a single headline — Route A exists for a reason. A single key line only needs one Layer 1 agent + critic.


Completion Status

Every run ends with explicit status:

  • DONE — copy written for the requested surface (Route A or B), critic PASS, voice consistent with brand
  • DONE_WITH_CONCERNS — copy delivered but critic flagged secondary issues (specificity thin, social-proof weak, voice slightly off); concerns annotated
  • BLOCKED — brief is fundamentally contradictory (e.g., audience and offer don't align); needs user reconciliation before any agent dispatch
  • NEEDS_CONTEXT — brand voice or audience undefined and not derivable from the brief; recommend brand-system or icp-research

Ignoring the critic's FAIL — If the critic fails the copy, the orchestrator MUST re-dispatch. Delivering failed copy to the user breaks the quality contract.

Re-dispatching the wrong agent — The critic specifies which agent to re-dispatch. Read the failure report carefully.

More than 2 rewrite cycles — Diminishing returns. After 2 cycles, deliver with annotations and let the user decide.

Files included

  • agents/_template.md
  • agents/body-agent.md
  • agents/critic-agent.md
  • agents/cta-agent.md
  • agents/hook-agent.md
  • agents/psychology-agent.md
  • agents/social-proof-agent.md
  • agents/variant-agent.md
  • agents/voice-agent.md
  • agents/zero-risk-agent.md
  • references/_shared/pre-dispatch-protocol.md
  • references/belief-disruption.md
  • references/discovery-story.md
  • references/emotional-triggers.md
  • references/headline-formulas.md
  • references/lead-magnet-stack.md
  • references/page-sections.md
  • references/research-workflow.md
  • scripts/bootstrap-experience.ts
  • SKILL.md

More skills