← MotionCONTENT HISTORY

Update to Motion

Snapshot Sep 30, 2026 · 23:08 UTC · version 1.0.0

Collection source: not recorded for this historical snapshot.

WHAT CHANGED · RULE-BASED ANALYSIS

First saved snapshot

No earlier snapshot is available to establish a change.

Compare saved observations

Download comparison JSON
Full technical diff · 0 changed fields
Full snapshot data
{
  "name": "write-hooks",
  "description": "Generate psychologically-driven hooks for paid social ads. Uses Schwartz's 5 awareness stages and 8 psychological triggers, grounded in the workspace's actual top-performing hooks from Motion. Activate when users ask to \"write hooks\", \"generate hooks\", \"hook ideas\", \"scroll-stopping openings\", \"attention grabbers\", or need opening lines for ads. Pairs with write-hooks/references for tactic and template libraries.\n",
  "included_files": [
    {
      "relative_path": "references/hook-eval-judge.md",
      "size_in_bytes": 7705
    },
    {
      "relative_path": "references/hook-sources.md",
      "size_in_bytes": 5099
    },
    {
      "relative_path": "references/hook-tactics.md",
      "size_in_bytes": 10836
    },
    {
      "relative_path": "references/hook-voice-patterns.md",
      "size_in_bytes": 9010
    }
  ],
  "skill_md_contents": "---\nname: write-hooks\ndescription: >\n  Generate psychologically-driven hooks for paid social ads. Uses Schwartz's 5 awareness\n  stages and 8 psychological triggers, grounded in the workspace's actual top-performing\n  hooks from Motion. Activate when users ask to \"write hooks\", \"generate hooks\",\n  \"hook ideas\", \"scroll-stopping openings\", \"attention grabbers\", or need opening lines\n  for ads. Pairs with write-hooks/references for tactic and template libraries.\nargument-hint: \"[product] [pain/desire] [persona] [--stage problem-aware] [--format video] [--count 10]\"\nallowed-tools:\n  - Read\n  - \"mcp__ruimotion__get_auth_context\"\n  - \"mcp__ruimotion__get_workspace_brand\"\n  - \"mcp__ruimotion__get_creative_insights\"\n  - \"mcp__ruimotion__get_creative_transcript\"\n  - \"mcp__ruimotion__get_glossary_values\"\n  - AskUserQuestion\nmodel: opus\n---\n\n# Hook Writing Engine\n\nGenerate 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.\n\n## Phase 0: Orient\n\n1. **Acknowledge**: \"I'll generate hooks grounded in what's actually converting in your account.\"\n2. **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.\n3. **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.\n4. **Connected workflow**: After hooks, you can brief the full ad (`/build-brief`) or analyze how existing hooks perform (`/analyze-ad`).\n\nIf the user provided product, persona, and pain point clearly, skip questions.\n\n## Core Principle\n\nA 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.\n\n---\n\n## Hook Sources\n\nPain points are the most reliable hook source. Start here before trying other angles. See `references/hook-sources.md` for the full breakdown.\n\n6 categories of pain-based hook material:\n1. **Emotional pain points** (start here) — what keeps them stuck, worried, or frustrated\n2. **Daily annoyances** — small friction the audience lives with every day\n3. **Embarrassing habits** — what they do but don't talk about\n4. **Silent frustrations** — what they tolerate because they think it's just normal\n5. **Protective beliefs** — what they tell themselves to avoid having to change\n6. **Self-awareness moments** — the truth they already half-know but haven't admitted\n\nWhen generating a set of hooks, mine at least 2-3 different source categories to ensure emotional variety.\n\n---\n\n## Phase 1: Gather Inputs\n\n### 1a. Parse Arguments\n\nExtract from `$ARGUMENTS`:\n- **Product**: What does it do?\n- **Pain or Desire**: What specific need does it address?\n- **Persona**: Who are you targeting? (life context, not just demographics)\n- **`--stage`**: Awareness stage (unaware, problem-aware, solution-aware, product-aware, most-aware). Default: generate across all stages.\n- **`--format`**: Video or static. Default: video.\n- **`--count`**: How many hooks. Default: 10.\n\nIf any required input is missing, ask the user before proceeding.\n\n### 1b. Load Context\n\n1. 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`:\n   - `primary_kpi`: use goalMetric from first `get_creative_insights` response\n   - `default_date_preset`: LAST_30_DAYS\n   - Brand guidelines: pull from `get_workspace_brand`\n2. Read `${CLAUDE_SKILL_DIR}/../creative-strategist/SKILL.md` for methodology.\n3. Use `default_date_preset` from settings as the datePreset for all calls unless the user specified a date range.\n3. Read `${CLAUDE_SKILL_DIR}/references/hook-tactics.md` for the 35+ tactic library.\n4. Read `${CLAUDE_SKILL_DIR}/references/hook-voice-patterns.md` for proven template clusters.\n5. 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.\n6. Read `${CLAUDE_SKILL_DIR}/references/hook-eval-judge.md` for the 5-test quality bar and calibrated examples.\n\n### 1c. Pull Performance Data (Parallel)\n\nDispatch all in parallel:\n1. `get_auth_context()` — resolve workspace\n2. `get_workspace_brand(workspaceId)` — brand voice, positioning, creative do's/don'ts\n3. `get_creative_insights(workspaceId, insightType=\"HOOK\", datePreset=\"LAST_30_DAYS\", limit=10)` — top hooks in the account\n4. `get_glossary_values(workspaceId, includeCreativeIds=true)` — hook taxonomy tags\n\nThen for the top 3-5 video creatives from hook results:\n5. `get_creative_transcript(creativeEntityId, creativeOrigin)` — extract the actual hooks word-for-word\n\n---\n\n## Phase 2: Analyze What's Working\n\nBefore generating new hooks, understand the workspace's proven patterns:\n\n### 2a. Extract Existing Hooks\nFrom transcripts, pull the first 1-3 seconds of each top performer. Identify:\n- What psychological trigger does each use?\n- What awareness stage does each target?\n- What makes each hook specific (names a moment, uses a number, calls out an identity)?\n\n### 2b. Map Taxonomy Patterns\nFrom glossary values, check which hook-related categories exist:\n- Which hook tactics are over-represented in top performers?\n- Which are absent (untested opportunities)?\n- What messaging angles pair with the best hooks?\n\n### 2c. Identify Brand Constraints\nFrom workspace brand + settings:\n- What tone must hooks match?\n- What claims are off-limits (Creative Don'ts)?\n- What language or framing does the brand avoid?\n\n---\n\n## Phase 3: Generate Hooks\n\n### Awareness Stages & Psychological Triggers\n\nReference 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).\n\n### Generation Rules\n\nFor each hook:\n1. **Select awareness stage** (from args or cycle through all 5)\n2. **Select 1-2 psychological triggers** (vary across the set)\n3. **Apply a specific tactic** from `references/hook-tactics.md`\n4. **Consider voice patterns** from `references/hook-voice-patterns.md` for natural phrasing\n5. **Ground in data** — reference what's working in the account if relevant\n6. **Check against brand constraints** — no violations of Creative Don'ts\n\n### Hook Quality Standards\n\nStrong hooks:\n- Mirror the reader's voice — sounds like something they'd think or say\n- Include specific details (numbers, moments, sensory details)\n- Lead with pain or curiosity, never with the product\n- Feel personally targeted, not broadcast\n- Create tension that demands resolution\n\nWeak hooks (never generate these):\n- \"Introducing...\" or \"Discover...\" openings\n- Corporate or marketing language\n- Generic category claims (\"The best X for Y\")\n- Product-first messaging at early awareness stages\n- Hooks that could apply to any competitor's product\n\n### Common Hook Mistakes\n\n**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.\n\n**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.\n\n**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.\n\n**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.\n\n**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.\n\n**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.\n\n### Video vs. Static\n\n**Video hooks** (first 3 seconds spoken):\n- Conversational. Would sound natural said to a friend.\n- Build into a narrative. The hook is a door, not a destination.\n- Read it aloud — if it sounds scripted, rewrite it.\n\n**Static hooks** (headline):\n- 5-8 words max. Scannable instantly.\n- Complete thought on its own — no context needed.\n- Creates visual tension with the image.\n\n### Refining Existing Hooks\n\nWhen the user provides existing hooks to improve or iterate on:\n\n1. **Identify what's working** before changing anything — don't lose strong elements\n2. **Identify what the user wants**: variations (same angle, different tactic), improvements (same tactic, sharper execution), or iterations (evolve the concept)\n3. **Lead with the improved version**. Note what changed in one line. Don't include the original unless asked.\n\n---\n\n## Phase 4: Output\n\n### Format\n\nPresent hooks organized by awareness stage, with the psychological trigger labeled:\n\n```\n## [Awareness Stage]\n\n1. \"[Hook text]\"\n   Trigger: [Primary trigger] + [Secondary trigger]\n   Tactic: [From hook-tactics library]\n   Psychological trigger: [Name the specific trigger mechanism]\n   Why: [One sentence — what makes this stop the scroll for this audience]\n\n2. \"[Hook text]\"\n   ...\n```\n\n### Video Hook Components\n\nWhen `--format video`, label each hook with three distinct layers:\n\n- **Spoken**: The first words said on camera. Must work even without visuals.\n- **Visual**: What happens in the first frame — the action, scene, or visual element that stops the scroll before a word is spoken.\n- **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.\n\nThe three should work together — not repeat each other. Label each component clearly in the output.\n\n### Grounding Note\n\nOpen 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.\n\n### Close\n\nEnd 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`.\"\n\n---\n\n## Phase 5: Self-Eval Loop\n\nBefore returning hooks to the user, evaluate every hook against the quality bar in `references/hook-eval-judge.md`.\n\n1. **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.\n2. **Discard failures.** Do not try to fix a failing hook — generate a replacement from a different tactic and source.\n3. **Generate replacements** until you hit the requested `--count` with all-passing hooks.\n4. **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.\n\n### Output per hook after self-eval:\n\nEach hook in the final output should include:\n- Hook text\n- Tactic used\n- Psychological trigger\n- One sentence on why it stops the scroll\n\nCross-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.\n\n---\n\n## Error Handling\n\nRead `${CLAUDE_SKILL_DIR}/../creative-strategist/references/error-handling.md` for degraded mode and error handling guidance.\n"
}

SHA-256: 22a3c4810cbca1e2caa0bb176bbd834d22dc777d688b495787ec568c4cf8ecdb