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.
npx skills add social-media-skills/skills --skill hook-writer -a claude-codeWhat 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-code2Manually: put the files in place
~/.claude/skills/hook-writer/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/hook-writer/
1Skills CLI (Vercel)
npx skills add social-media-skills/skills --skill hook-writer -a codex2Manually: put the files in place
.agents/skills/hook-writer/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add social-media-skills/skills --skill hook-writer -a cursor2Manually: put the files in place
.cursor/skills/hook-writer/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install social-media-skills/skills hook-writer2Manually: put the files in place
.github/skills/hook-writer/SKILL.md1Skills CLI (Vercel)
npx skills add social-media-skills/skills --skill hook-writer -a gemini-cli2Platform CLI
gemini skills install https://github.com/social-media-skills/skills --path skills/hook-writerManually: put the files in place
.devin/skills/hook-writer/SKILL.mdThe legacy .windsurf/skills/ path still works
Skills CLI (Vercel)
npx skills add social-media-skills/skills --skill hook-writer -a opencodeClaude.ai
Zip the folder and upload it in Settings → Capabilities → Skills
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