Skip to main content
skill CX Codex

hook-writer — Claude Code skill: openings that earn attention

Writes the hook: a caption's first line, a video's first three seconds, an email subject. Useful when good content keeps getting scrolled past.

Install into Claude Code · Skills CLI (Vercel) All methods and platforms ↓
npx skills add social-media-skills/skills --skill hook-writer -a claude-code
Open on GitHub

What hook-writer does

The skill handles the opening line for any format: a caption's first line, a video's first seconds, a carousel cover slide, a thread opener, a YouTube title, an email subject. It works from mechanisms rather than templates — curiosity gap, stakes, specificity, contrarian angle — so it avoids dead lines like the secret nobody tells you.

Here is the flow. It loads brand-profile.md and voice.md first; if neither exists, it points you to run brand-profile, because a hook in the wrong voice fails anyway. Then it pins the format and its cutoff: roughly 125 characters before the more cutoff for a caption, the first 1–3 seconds for video across screen, spoken words and on-screen text, so it works muted. It mines the actual material for the strongest element — the most surprising fact, the highest stakes, a specific number. It generates 5–10 candidates across different mechanisms, scores them, and keeps the best 1–2. You get 2–3 distinct hooks plus a recommendation with a one-line reason.

The constraint is built in: the hook has to be true to what follows. If the content cannot pay off the promise, the skill changes the hook, not the facts. On thin material it asks what the most surprising element is instead of inventing tension. That is worth checking before you post — a weak hook often means a weak post, not bad packaging.

What it helps with

  • write a caption's first line that stops the scroll
  • draft on-screen text for the first seconds of a muted video
  • build a YouTube title together with a thumbnail idea
  • shape an email subject and preview text for mobile truncation
  • pick the strongest of several hooks by rubric instead of by feel

Example prompts for the agent

  • write a hook for this caption, the brand profile is ready
  • I need the first three seconds for a video, sound off
  • give me three hook options for the carousel cover and explain the pick

How to install hook-writer

1Skills CLI (Vercel)

npx skills add social-media-skills/skills --skill hook-writer -a claude-code

2Manually: put the files in place

~/.claude/skills/hook-writer/SKILL.md

Copy the whole skill folder; for one project use .claude/skills/hook-writer/

Step by step, with commands for each platform: How to install skills in Claude Code: five ways

Questions about hook-writer

How do I install hook-writer in Claude?

Run npx skills add social-media-skills/skills --skill hook-writer -a claude-code. The skill lands at ~/.claude/skills/hook-writer/SKILL.md.

What does hook-writer do?

It writes the opening for a caption, video, carousel, thread, YouTube title or email subject. It reads brand-profile.md and voice.md first, then extracts the hook from the strongest element of the content itself.

How is hook-writer different from caption-writer?

hook-writer writes only the opening line; caption-writer writes the full caption. Video scripts belong to separate skills such as reels-script and tiktok-script.

Source text

SKILL.md · MIT
---
name: hook-writer
description: >-
  Use to write the hook — the opening that earns attention — for any social content: a
  caption's first line, a video's first three seconds, a carousel cover slide, a thread opener,
  a YouTube title, or an email subject. Run when the user says "write a hook," "hook for this,"
  "opening line," "first three seconds," "cover slide," "make this scroll-stopping," or when
  good content keeps getting ignored. Reads brand-profile and voice first so hooks sound like
  the brand, not viral-bait templates. Hooks must be TRUE to the content that follows — this
  skill extracts the hook from the post's strongest element and never overpromises. For full
  captions use caption-writer; for full video scripts use the video skills. This writes the
  opening itself.
metadata:
  version: 1.0.0
license: MIT
---

# Hook Writer

The hook is the highest-leverage line in any piece of content. On a feed, attention is the
scarce resource and the hook is the only thing competing for it — if the opening fails,
nothing else you made gets seen. A great hook can carry mediocre content; a weak hook buries
great content.

Two ideas run through everything here:

1. **A hook works by opening a gap.** Curiosity, tension, stakes, dissonance, self-relevance —
   the hook creates something the reader *needs to resolve*, and the only way to resolve it is
   to keep going. Hooks are about the **mechanism**, not the template. "The secret to X nobody
   tells you" is a dead template because it names a mechanism (curiosity) without earning it.
2. **A hook is a promise, and the content must pay it off.** A hook that overpromises wins the
   tap and loses the trust — and platforms punish the bounce that follows. The strongest hooks
   are *extracted from the truth of the content*, not bolted on top of it.

## Step 0 — Read the foundation first

Load `brand-profile.md` and `voice.md`. A hook in the wrong voice still fails; the fingerprint
and "never" list apply to the opening line as much as the body. If neither exists, run
`brand-profile` (and `voice-builder` if samples exist) first.

## Step 1 — Pin the format and its cutoff

A hook for a caption first line is not a hook for a video's first three seconds. Identify the
format and the constraint it imposes (see `references/formats.md`):

- **Caption** — one line before the "…more" cutoff (~125 chars on Instagram).
- **Video** — the first 1–3 seconds, across *three channels at once*: what's on screen, the
  first spoken words, and on-screen text. Must work muted.
- **Carousel cover** — slide 1 is the hook; it must promise the swipe.
- **Thread opener** — the first post must promise the thread's payoff.
- **YouTube** — title + thumbnail together.
- **Email** — subject + preview text, mobile-truncated.

## Step 2 — Find the hook *in the content*

Don't invent a hook and hope the content matches. Mine the actual material for its strongest
raw element:

- the most **surprising** fact or result,
- the highest **stakes** or cost,
- the most **specific** number or detail,
- the sharpest **point of view**,
- the most **relatable** moment.

That element is the hook's raw material. This is what keeps hooks truthful and makes them feel
earned rather than baited.

## Step 3 — Generate many, across different mechanisms

Write **5–10 candidate hooks**, deliberately using *different mechanisms* from
`references/mechanisms.md` (curiosity gap, contrarian, stakes, specificity, identity, story,
mistake, transformation, question, timeliness, authority). Variety is the point — the goal is
to find the strongest angle, not to reword one idea ten times.

## Step 4 — Score and select

Run the candidates through the rubric in `references/scoring.md` and keep the best 1–2. The
rubric checks: does it open a real gap? is it specific? is it true to the content? does it fit
the format's cutoff? does it sound like them? would a stranger *need* the next beat? Discard
the rest without sentiment — most hooks you write should die.

## Step 5 — Tune to format and voice; confirm the payoff

Polish the winner for the format (cut to the caption cutoff; add the visual + on-screen text
for video; make the carousel cover legible at a glance). Re-check it sounds like the brand. And
confirm the content actually delivers what the hook promises — if it doesn't, change the hook,
not the truth.

## Deliver options, recommend one

Give the user **2–3 distinct hooks** built on different mechanisms, then recommend one with a
one-line reason tied to the goal/format. Real alternatives beat a single take, and seeing
different mechanisms helps the user feel why one lands hardest.

## Quality bar — self-check

- Does the hook open a **gap** a stranger needs to close?
- Is it **specific** (a real number, detail, or claim), not vague?
- Is it **true** — does the content pay it off without a bait-and-switch?
- Does it land **inside the format's cutoff** (chars, or the first 3 seconds)?
- Does it **sound like them** (fingerprint hit, "never" list respected)?
- Did you generate several mechanisms and pick the strongest, not settle for the first?

If it doesn't pass "would a stranger need the next beat?", it isn't a hook yet.

## Edge cases

- **Thin or vague content:** ask what the single most surprising / highest-stakes element is.
  Don't fabricate a hook the content can't support.
- **Nothing surprising in the content:** that's a content problem, not a hook problem — say so,
  and either find the relatable angle or suggest sharpening the post itself.
- **Sensitive/regulated topics:** no fear-mongering, no overstated claims; respect the brand's
  compliance guardrails even in the opening line.
- **Video, muted-first:** the on-screen text and the visual must hook on their own; assume sound
  off.
- **Tempted to overpromise for reach:** don't. A truthful, slightly less sensational hook that
  the content delivers beats a viral-bait line that burns trust and bounces.

## Related skills

- `brand-profile`, `voice-builder` — read first; supply voice and guardrails.
- `caption-writer` — uses this for the first line; this skill is the deep version.
- `reels-script`, `tiktok-script`, `short-form-video-script` — use this for the opening seconds.
- `thread-writer` — uses this for the thread opener.
- `experimentation-and-ab-testing` — when the stakes justify it, test the top 2–3 hooks on a real
  audience (YouTube's native thumbnail Test & Compare; rotating hooks across similar posts).
  The rubric picks your best guess; audience data outranks the rubric.

## References

- `references/mechanisms.md` — the hook mechanism taxonomy (why each one works).
- `references/formats.md` — hook craft by format and the cutoffs that govern each.
- `references/scoring.md` — the scoring rubric, the generate-and-select method, anti-patterns.
- `references/examples.md` — content → many hooks → scored → chosen, worked end to end.

© social-media-skills · MIT · social-media-skills/skills

Similar skills

Everything for Marketing and content →

From the same set67

Project sponsors

Companies that keep this analytics open
Gold sponsor

Impressions, clicks and code copies — open statistics. We keep the numbers public for the same reason NeBlask itself is public. Become a sponsor