Hook Writing Engine skill

Generate psychologically-driven hooks for paid social ads.

by Motion-Creative·MIT license·GitHub ↗

★ 22 Stars on the repo·Checked

npx degit Motion-Creative/motion-creative-plugin/Plugin/skills/write-hooks#main ~/.claude/skills/write-hooks

SKILL.md · 12.1 KB · installs the whole folder to ~/.claude/skills/write-hooks

Files of Hook Writing Engine

Files 1 file
Show the full text251 lines

Hook Writing Engine

Generate psychologically-driven hooks that capture attention in the first 1-3 seconds of paid social ads. Every hook is grounded in workspace performance data from Motion.

Phase 0: Orient

  1. Acknowledge: "I'll generate hooks grounded in what's actually converting in your account."
  2. Ask if missing: "Product, target persona, and pain point? Or should I pull these from your workspace data?" If any required input is ambiguous, ask — don't assume.
  3. Important distinction: Hooks that stop the scroll and hooks that convert are often different. After generating, note which hooks optimize for attention vs. which optimize for action.
  4. Connected workflow: After hooks, you can brief the full ad (/build-brief) or analyze how existing hooks perform (/analyze-ad).

If the user provided product, persona, and pain point clearly, skip questions.

Core Principle

A hook is the tactical expression of a messaging angle at a specific awareness stage. Before writing hooks, understand what the audience already knows and feels.


Hook Sources

Pain points are the most reliable hook source. Start here before trying other angles. See references/hook-sources.md for the full breakdown.

6 categories of pain-based hook material:

  1. Emotional pain points (start here) — what keeps them stuck, worried, or frustrated
  2. Daily annoyances — small friction the audience lives with every day
  3. Embarrassing habits — what they do but don't talk about
  4. Silent frustrations — what they tolerate because they think it's just normal
  5. Protective beliefs — what they tell themselves to avoid having to change
  6. Self-awareness moments — the truth they already half-know but haven't admitted

When generating a set of hooks, mine at least 2-3 different source categories to ensure emotional variety.


Phase 1: Gather Inputs

1a. Parse Arguments

Extract from $ARGUMENTS:

  • Product: What does it do?
  • Pain or Desire: What specific need does it address?
  • Persona: Who are you targeting? (life context, not just demographics)
  • --stage: Awareness stage (unaware, problem-aware, solution-aware, product-aware, most-aware). Default: generate across all stages.
  • --format: Video or static. Default: video.
  • --count: How many hooks. Default: 10.

If any required input is missing, ask the user before proceeding.

1b. Load Context
  1. Read ${CLAUDE_PLUGIN_ROOT}/motion-creative.config.md for brand guidelines, primary KPI, target demographics. If the file does not exist, use these defaults and suggest the user run /customize:
    • primary_kpi: use goalMetric from first get_creative_insights response
    • default_date_preset: LAST_30_DAYS
    • Brand guidelines: pull from get_workspace_brand
  2. Read ${CLAUDE_SKILL_DIR}/../creative-strategist/SKILL.md for methodology.
  3. Use default_date_preset from settings as the datePreset for all calls unless the user specified a date range.
  4. Read ${CLAUDE_SKILL_DIR}/references/hook-tactics.md for the 35+ tactic library.
  5. Read ${CLAUDE_SKILL_DIR}/references/hook-voice-patterns.md for proven template clusters.
  6. Read ${CLAUDE_SKILL_DIR}/references/hook-sources.md for pain-based hook material. Pain points are the most reliable hook source — start here before trying other angles.
  7. Read ${CLAUDE_SKILL_DIR}/references/hook-eval-judge.md for the 5-test quality bar and calibrated examples.
1c. Pull Performance Data (Parallel)

Dispatch all in parallel:

  1. get_auth_context() — resolve workspace
  2. get_workspace_brand(workspaceId) — brand voice, positioning, creative do's/don'ts
  3. get_creative_insights(workspaceId, insightType="SPEND", datePreset="LAST_30_DAYS", limit=20, insightGroups=["defaultKpiMetrics", "motion"]) — top creatives by spend. We pull SPEND (not HOOK) because the HOOK insightType returns the same ranking as SCALING and misses proven high-spend performers. After receiving results, filter to video creatives and sort by thumbstop_ratio to find the actual best hook performers.
  4. get_glossary_values(workspaceId, includeCreativeIds=true) — hook taxonomy tags

Then sort the video creatives by thumbstop_ratio descending and take the top 5: 5. get_creative_transcript(creativeEntityId, creativeOrigin) — extract the actual hooks word-for-word from the top 5 by thumbstop rate


Phase 2: Analyze What's Working

Before generating new hooks, understand the workspace's proven patterns:

2a. Extract Existing Hooks

From transcripts of the top 5 video creatives by thumbstop rate (hook rate), pull the first 1-3 seconds of each. Identify:

  • What psychological trigger does each use?
  • What awareness stage does each target?
  • What makes each hook specific (names a moment, uses a number, calls out an identity)?
2b. Map Taxonomy Patterns

From glossary values, check which hook-related categories exist:

  • Which hook tactics are over-represented in top performers?
  • Which are absent (untested opportunities)?
  • What messaging angles pair with the best hooks?
2c. Identify Brand Constraints

From workspace brand + settings:

  • What tone must hooks match?
  • What claims are off-limits (Creative Don'ts)?
  • What language or framing does the brand avoid?

Phase 3: Generate Hooks

Awareness Stages & Psychological Triggers

Reference the 5 Awareness Stages and 8 Psychological Triggers from ${CLAUDE_SKILL_DIR}/../concept-engine/references/creative-strategy-engine.md. Each awareness stage demands a different hook strategy; each hook leverages one or two psychological triggers. The strongest hooks combine two triggers (e.g., Identity Call-Out + Pain Agitation).

Generation Rules

For each hook:

  1. Select awareness stage (from args or cycle through all 5)
  2. Select 1-2 psychological triggers (vary across the set)
  3. Apply a specific tactic from references/hook-tactics.md
  4. Consider voice patterns from references/hook-voice-patterns.md for natural phrasing
  5. Ground in data — reference what's working in the account if relevant
  6. Check against brand constraints — no violations of Creative Don'ts
Hook Quality Standards

Strong hooks:

  • Mirror the reader's voice — sounds like something they'd think or say
  • Include specific details (numbers, moments, sensory details)
  • Lead with pain or curiosity, never with the product
  • Feel personally targeted, not broadcast
  • Create tension that demands resolution

Weak hooks (never generate these):

  • "Introducing..." or "Discover..." openings
  • Corporate or marketing language
  • Generic category claims ("The best X for Y")
  • Product-first messaging at early awareness stages
  • Hooks that could apply to any competitor's product
Common Hook Mistakes

Describing instead of hitting. Feature statements, product claims, and benefit summaries are not hooks. Nobody stops scrolling for facts. If the line is about the product rather than the viewer's life, it's a description, not a hook.

Being too generic. If every competitor in the category could run the same line, it's not a hook. Hooks should feel like they're talking to one specific person in one specific situation.

Telegraphing that it's an ad. "Introducing," "discover," "learn how," "have you tried" — these phrases sound like ads and trigger the urge to skip. Hooks should sound like something a real person might think or say.

Curiosity without stakes. Teaser-style hooks that promise something surprising without explaining why it matters to the viewer are just noise. The viewer needs to feel why this is relevant to them.

Benefits without tension. The tension — the gap between where the viewer is now and where they want to be — is what makes people stop. Benefits alone describe the destination; tension makes the viewer feel the distance from where they currently are.

Not hitting a pain point. If the hook doesn't connect to something the viewer is actually struggling with, frustrated by, or worried about, it has no grip. Pain points are the most reliable way to make someone feel seen.

Video vs. Static

Video hooks (first 3 seconds spoken):

  • Conversational. Would sound natural said to a friend.
  • Build into a narrative. The hook is a door, not a destination.
  • Read it aloud — if it sounds scripted, rewrite it.

Static hooks (headline):

  • 5-8 words max. Scannable instantly.
  • Complete thought on its own — no context needed.
  • Creates visual tension with the image.
Refining Existing Hooks

When the user provides existing hooks to improve or iterate on:

  1. Identify what's working before changing anything — don't lose strong elements
  2. Identify what the user wants: variations (same angle, different tactic), improvements (same tactic, sharper execution), or iterations (evolve the concept)
  3. Lead with the improved version. Note what changed in one line. Don't include the original unless asked.

Phase 4: Output

Format

Present hooks organized by awareness stage, with the psychological trigger labeled:

## [Awareness Stage]

1. "[Hook text]"
   Trigger: [Primary trigger] + [Secondary trigger]
   Tactic: [From hook-tactics library]
   Psychological trigger: [Name the specific trigger mechanism]
   Why: [One sentence — what makes this stop the scroll for this audience]

2. "[Hook text]"
   ...
Video Hook Components

When --format video, label each hook with three distinct layers:

  • Spoken: The first words said on camera. Must work even without visuals.
  • Visual: What happens in the first frame — the action, scene, or visual element that stops the scroll before a word is spoken.
  • Text overlay: On-screen text that appears over the visual. Can reinforce the spoken hook, add a second layer, or carry the hook entirely for silent viewers.

The three should work together — not repeat each other. Label each component clearly in the output.

Grounding Note

Open with 2-3 sentences about what you found in the workspace's top hooks — what patterns are proven, what's missing. This grounds the output in data, not generic advice.

Close

End with: "Want me to develop any of these into full ad concepts? Run /create-concepts with the hooks you like, or I can build a brief with /build-brief."


Phase 5: Self-Eval Loop

Before returning hooks to the user, evaluate every hook against the quality bar in references/hook-eval-judge.md.

  1. Run the 5-test check on each hook: genuine cognitive friction, strong psychological trigger, complete thought, authentic voice, personal stakes. A hook must pass all 5 tests.
  2. Discard failures. Do not try to fix a failing hook — generate a replacement from a different tactic and source.
  3. Generate replacements until you hit the requested --count with all-passing hooks.
  4. Be ruthless. About 35% of hooks typically pass this bar. If the first draft yields 10 hooks, expect to keep 3-4 and replace the rest.
Output per hook after self-eval:

Each hook in the final output should include:

  • Hook text
  • Tactic used
  • Psychological trigger
  • One sentence on why it stops the scroll

Cross-reference the "What ALWAYS Fails" list and calibrated examples in references/hook-eval-judge.md. If a hook matches any anti-pattern, discard it immediately.


Error Handling

Read ${CLAUDE_SKILL_DIR}/../creative-strategist/references/error-handling.md for degraded mode and error handling guidance.

1---
2name: write-hooks
3description: >
4 Generate psychologically-driven hooks for paid social ads. Uses Schwartz's 5 awareness
5 stages and 8 psychological triggers, grounded in the workspace's actual top-performing
6 hooks from Motion. Activate when users ask to "write hooks", "generate hooks",
7 "hook ideas", "scroll-stopping openings", "attention grabbers", or need opening lines
8 for ads. Pairs with write-hooks/references for tactic and template libraries.
9argument-hint: "[product] [pain/desire] [persona] [--stage problem-aware] [--format video] [--count 10]"
10allowed-tools:
11 - Read
12 - "mcp__motion__get_auth_context"
13 - "mcp__motion__get_workspace_brand"
14 - "mcp__motion__get_creative_insights"
15 - "mcp__motion__get_creative_transcript"
16 - "mcp__motion__get_glossary_values"
17 - AskUserQuestion
18model: opus
19---
20 
21# Hook Writing Engine
22 
23Generate psychologically-driven hooks that capture attention in the first 1-3 seconds of paid social ads. Every hook is grounded in workspace performance data from Motion.
24 
25## Phase 0: Orient
26 
271. **Acknowledge**: "I'll generate hooks grounded in what's actually converting in your account."
282. **Ask if missing**: "Product, target persona, and pain point? Or should I pull these from your workspace data?" If any required input is ambiguous, ask — don't assume.
293. **Important distinction**: Hooks that stop the scroll and hooks that convert are often different. After generating, note which hooks optimize for attention vs. which optimize for action.
304. **Connected workflow**: After hooks, you can brief the full ad (`/build-brief`) or analyze how existing hooks perform (`/analyze-ad`).
31 
32If the user provided product, persona, and pain point clearly, skip questions.
33 
34## Core Principle
35 
36A hook is the tactical expression of a messaging angle at a specific awareness stage. Before writing hooks, understand what the audience already knows and feels.
37 
38---
39 
40## Hook Sources
41 
42Pain points are the most reliable hook source. Start here before trying other angles. See `references/hook-sources.md` for the full breakdown.
43 
446 categories of pain-based hook material:
451. **Emotional pain points** (start here) — what keeps them stuck, worried, or frustrated
462. **Daily annoyances** — small friction the audience lives with every day
473. **Embarrassing habits** — what they do but don't talk about
484. **Silent frustrations** — what they tolerate because they think it's just normal
495. **Protective beliefs** — what they tell themselves to avoid having to change
506. **Self-awareness moments** — the truth they already half-know but haven't admitted
51 
52When generating a set of hooks, mine at least 2-3 different source categories to ensure emotional variety.
53 
54---
55 
56## Phase 1: Gather Inputs
57 
58### 1a. Parse Arguments
59 
60Extract from `$ARGUMENTS`:
61- **Product**: What does it do?
62- **Pain or Desire**: What specific need does it address?
63- **Persona**: Who are you targeting? (life context, not just demographics)
64- **`--stage`**: Awareness stage (unaware, problem-aware, solution-aware, product-aware, most-aware). Default: generate across all stages.
65- **`--format`**: Video or static. Default: video.
66- **`--count`**: How many hooks. Default: 10.
67 
68If any required input is missing, ask the user before proceeding.
69 
70### 1b. Load Context
71 
721. Read `${CLAUDE_PLUGIN_ROOT}/motion-creative.config.md` for brand guidelines, primary KPI, target demographics. If the file does not exist, use these defaults and suggest the user run `/customize`:
73 - `primary_kpi`: use goalMetric from first `get_creative_insights` response
74 - `default_date_preset`: LAST_30_DAYS
75 - Brand guidelines: pull from `get_workspace_brand`
762. Read `${CLAUDE_SKILL_DIR}/../creative-strategist/SKILL.md` for methodology.
773. Use `default_date_preset` from settings as the datePreset for all calls unless the user specified a date range.
784. Read `${CLAUDE_SKILL_DIR}/references/hook-tactics.md` for the 35+ tactic library.
795. Read `${CLAUDE_SKILL_DIR}/references/hook-voice-patterns.md` for proven template clusters.
806. Read `${CLAUDE_SKILL_DIR}/references/hook-sources.md` for pain-based hook material. Pain points are the most reliable hook source — start here before trying other angles.
817. Read `${CLAUDE_SKILL_DIR}/references/hook-eval-judge.md` for the 5-test quality bar and calibrated examples.
82 
83### 1c. Pull Performance Data (Parallel)
84 
85Dispatch all in parallel:
861. `get_auth_context()` — resolve workspace
872. `get_workspace_brand(workspaceId)` — brand voice, positioning, creative do's/don'ts
883. `get_creative_insights(workspaceId, insightType="SPEND", datePreset="LAST_30_DAYS", limit=20, insightGroups=["defaultKpiMetrics", "motion"])` — top creatives by spend. We pull SPEND (not HOOK) because the HOOK insightType returns the same ranking as SCALING and misses proven high-spend performers. After receiving results, filter to video creatives and sort by `thumbstop_ratio` to find the actual best hook performers.
894. `get_glossary_values(workspaceId, includeCreativeIds=true)` — hook taxonomy tags
90 
91Then sort the video creatives by `thumbstop_ratio` descending and take the top 5:
925. `get_creative_transcript(creativeEntityId, creativeOrigin)` — extract the actual hooks word-for-word from the top 5 by thumbstop rate
93 
94---
95 
96## Phase 2: Analyze What's Working
97 
98Before generating new hooks, understand the workspace's proven patterns:
99 
100### 2a. Extract Existing Hooks
101From transcripts of the top 5 video creatives by thumbstop rate (hook rate), pull the first 1-3 seconds of each. Identify:
102- What psychological trigger does each use?
103- What awareness stage does each target?
104- What makes each hook specific (names a moment, uses a number, calls out an identity)?
105 
106### 2b. Map Taxonomy Patterns
107From glossary values, check which hook-related categories exist:
108- Which hook tactics are over-represented in top performers?
109- Which are absent (untested opportunities)?
110- What messaging angles pair with the best hooks?
111 
112### 2c. Identify Brand Constraints
113From workspace brand + settings:
114- What tone must hooks match?
115- What claims are off-limits (Creative Don'ts)?
116- What language or framing does the brand avoid?
117 
118---
119 
120## Phase 3: Generate Hooks
121 
122### Awareness Stages & Psychological Triggers
123 
124Reference the 5 Awareness Stages and 8 Psychological Triggers from `${CLAUDE_SKILL_DIR}/../concept-engine/references/creative-strategy-engine.md`. Each awareness stage demands a different hook strategy; each hook leverages one or two psychological triggers. The strongest hooks combine two triggers (e.g., Identity Call-Out + Pain Agitation).
125 
126### Generation Rules
127 
128For each hook:
1291. **Select awareness stage** (from args or cycle through all 5)
1302. **Select 1-2 psychological triggers** (vary across the set)
1313. **Apply a specific tactic** from `references/hook-tactics.md`
1324. **Consider voice patterns** from `references/hook-voice-patterns.md` for natural phrasing
1335. **Ground in data** — reference what's working in the account if relevant
1346. **Check against brand constraints** — no violations of Creative Don'ts
135 
136### Hook Quality Standards
137 
138Strong hooks:
139- Mirror the reader's voice — sounds like something they'd think or say
140- Include specific details (numbers, moments, sensory details)
141- Lead with pain or curiosity, never with the product
142- Feel personally targeted, not broadcast
143- Create tension that demands resolution
144 
145Weak hooks (never generate these):
146- "Introducing..." or "Discover..." openings
147- Corporate or marketing language
148- Generic category claims ("The best X for Y")
149- Product-first messaging at early awareness stages
150- Hooks that could apply to any competitor's product
151 
152### Common Hook Mistakes
153 
154**Describing instead of hitting.** Feature statements, product claims, and benefit summaries are not hooks. Nobody stops scrolling for facts. If the line is about the product rather than the viewer's life, it's a description, not a hook.
155 
156**Being too generic.** If every competitor in the category could run the same line, it's not a hook. Hooks should feel like they're talking to one specific person in one specific situation.
157 
158**Telegraphing that it's an ad.** "Introducing," "discover," "learn how," "have you tried" — these phrases sound like ads and trigger the urge to skip. Hooks should sound like something a real person might think or say.
159 
160**Curiosity without stakes.** Teaser-style hooks that promise something surprising without explaining why it matters to the viewer are just noise. The viewer needs to feel why this is relevant to them.
161 
162**Benefits without tension.** The tension — the gap between where the viewer is now and where they want to be — is what makes people stop. Benefits alone describe the destination; tension makes the viewer feel the distance from where they currently are.
163 
164**Not hitting a pain point.** If the hook doesn't connect to something the viewer is actually struggling with, frustrated by, or worried about, it has no grip. Pain points are the most reliable way to make someone feel seen.
165 
166### Video vs. Static
167 
168**Video hooks** (first 3 seconds spoken):
169- Conversational. Would sound natural said to a friend.
170- Build into a narrative. The hook is a door, not a destination.
171- Read it aloud — if it sounds scripted, rewrite it.
172 
173**Static hooks** (headline):
174- 5-8 words max. Scannable instantly.
175- Complete thought on its own — no context needed.
176- Creates visual tension with the image.
177 
178### Refining Existing Hooks
179 
180When the user provides existing hooks to improve or iterate on:
181 
1821. **Identify what's working** before changing anything — don't lose strong elements
1832. **Identify what the user wants**: variations (same angle, different tactic), improvements (same tactic, sharper execution), or iterations (evolve the concept)
1843. **Lead with the improved version**. Note what changed in one line. Don't include the original unless asked.
185 
186---
187 
188## Phase 4: Output
189 
190### Format
191 
192Present hooks organized by awareness stage, with the psychological trigger labeled:
193 
194```
195## [Awareness Stage]
196 
1971. "[Hook text]"
198 Trigger: [Primary trigger] + [Secondary trigger]
199 Tactic: [From hook-tactics library]
200 Psychological trigger: [Name the specific trigger mechanism]
201 Why: [One sentence — what makes this stop the scroll for this audience]
202 
2032. "[Hook text]"
204 ...
205```
206 
207### Video Hook Components
208 
209When `--format video`, label each hook with three distinct layers:
210 
211- **Spoken**: The first words said on camera. Must work even without visuals.
212- **Visual**: What happens in the first frame — the action, scene, or visual element that stops the scroll before a word is spoken.
213- **Text overlay**: On-screen text that appears over the visual. Can reinforce the spoken hook, add a second layer, or carry the hook entirely for silent viewers.
214 
215The three should work together — not repeat each other. Label each component clearly in the output.
216 
217### Grounding Note
218 
219Open with 2-3 sentences about what you found in the workspace's top hooks — what patterns are proven, what's missing. This grounds the output in data, not generic advice.
220 
221### Close
222 
223End with: "Want me to develop any of these into full ad concepts? Run `/create-concepts` with the hooks you like, or I can build a brief with `/build-brief`."
224 
225---
226 
227## Phase 5: Self-Eval Loop
228 
229Before returning hooks to the user, evaluate every hook against the quality bar in `references/hook-eval-judge.md`.
230 
2311. **Run the 5-test check** on each hook: genuine cognitive friction, strong psychological trigger, complete thought, authentic voice, personal stakes. A hook must pass all 5 tests.
2322. **Discard failures.** Do not try to fix a failing hook — generate a replacement from a different tactic and source.
2333. **Generate replacements** until you hit the requested `--count` with all-passing hooks.
2344. **Be ruthless.** About 35% of hooks typically pass this bar. If the first draft yields 10 hooks, expect to keep 3-4 and replace the rest.
235 
236### Output per hook after self-eval:
237 
238Each hook in the final output should include:
239- Hook text
240- Tactic used
241- Psychological trigger
242- One sentence on why it stops the scroll
243 
244Cross-reference the "What ALWAYS Fails" list and calibrated examples in `references/hook-eval-judge.md`. If a hook matches any anti-pattern, discard it immediately.
245 
246---
247 
248## Error Handling
249 
250Read `${CLAUDE_SKILL_DIR}/../creative-strategist/references/error-handling.md` for degraded mode and error handling guidance.
251 

Discussion

Alternatives

Also in Short scripts & hooksSee all 325 in Content creator →