---
name: hook-writer
description: >
  Write and score the hook of an X Article: the first lines of the body that X shows under the
  headline on the timeline card (about 130 characters visible), built from 40,478 X Articles. Use
  whenever you need an opening line or a preview for a locked headline, want the card to read better,
  ask which opening is stronger, or type /hook-writer, after headline-writer has locked the headline. Self-learning:
  approved hooks, verbatim feedback and real view counts feed the banks every run.
---
 
# HOOK WRITER
 
What this is: an opening-line procedure built from 40,478 X Articles: 6,835 over 100k views and 33,643 under, Jan 1 to Sep 26, 2026, research by @fuckgrowth (the X article "how to write better headlines"). The dataset, whose preview column holds the first 300 characters of every winner's opening, is at https://docs.google.com/spreadsheets/d/1GIl5AAbi5VD34plMPaeoU60zh2Q3pWfyCOKvjsTlZ4Q and as csv at https://docs.google.com/spreadsheets/d/1GIl5AAbi5VD34plMPaeoU60zh2Q3pWfyCOKvjsTlZ4Q/export?format=csv&gid=0 and every number, with the method, is in the research doc: https://docs.google.com/document/d/10UnoOKmYl0bzqpYmE2QeTlkMG8sZvU-zezulmgWfeNg
 
The preview is the article's first paragraph, so what this skill writes is the opening of the article itself. The honest limit comes first: the first lines move the odds far less than the headline. On the full comparison of 33,426 articles, two things held on both outcomes: a short first sentence helps a little (1.07x), and a question in the first line hurts (0.84x on views, 0.77x on 500 likes). The rest of this skill is craft that winners used, so never promise reach from the hook.
 
## INSTALL
Save the files of this skill as ~/.claude/skills/hook-writer/ (SKILL.md, rules.md, templates.md, scripts/hook_check.py), then download the dataset next to SKILL.md:
```
curl -L -o ~/.claude/skills/hook-writer/articles_over_100k.csv "https://docs.google.com/spreadsheets/d/1GIl5AAbi5VD34plMPaeoU60zh2Q3pWfyCOKvjsTlZ4Q/export?format=csv&gid=0"
mkdir -p ~/.claude/skills/hook-writer/banks && touch ~/.claude/skills/hook-writer/banks/{approved,feedback,performance}.md
```
 
## STEP 0: LOAD (every run, in this order)
1. `rules.md`: how the card cuts the preview, what the full comparison measured, and the rules that follow from it.
2. `templates.md`: two-sentence openings that winners used, each with its measured status.
3. `articles_over_100k.csv`, which works as the swipe file: filter by the article's topic, then read the preview column of the top winners whose headline has the same shape as yours (the shape column).
4. `banks/approved.md`, `banks/feedback.md`, `banks/performance.md`: the hooks your user approved, their verbatim feedback and real results. When feedback and rules.md disagree, feedback wins.
 
## STEP 1: INTAKE
Before writing, take these from the draft, and ask once for anything missing:
- The locked headline, and if there is none, run headline-writer first, because the hook is written against the headline.
- The headline's shape: how to, guide or course, receipt, announcement, or a claim.
- One concrete thing the headline did not say: a number, a name, a date or a place.
- The reader's moment: where they are, what they're doing wrong and what it costs them.
- The topic and the case of the headline.
 
## STEP 2: CHOOSE THE OPENING
Pair it with the headline's shape, using the pairing table in rules.md:
- how to: the old way and what it costs, with a number;
- guide or course: what's inside, in four to six nouns;
- receipt: the result and its number in the first sentence, then how it happened;
- announcement: what the thing does, in one plain sentence that names it;
- claim: the reader in a scene, or a dated event with the writer in it.
 
## STEP 3: GENERATE
Write 8 candidates, each two sentences with a line break after the first:
- Sentence one is short and complete, six words or fewer where the material allows and never more than twelve, because that is the one opening that helped on both outcomes.
- Sentence two is longer, starts to deliver, and crosses the cut at about 130 characters, so the reader clicks to finish it.
- No question in the first line, and avoid "The" as the first word (0.87x).
- At least 2 candidates carry a number or a name that isn't in the headline, and at most 1 restates the headline.
- Keep the case of the headline, so a lowercase headline gets a lowercase hook.
- Borrow shapes from the preview column: find the closest winning opening for your headline's shape and swap every slot.
 
## STEP 4: SCORE
```
python3 ~/.claude/skills/hook-writer/scripts/hook_check.py --headline "locked headline" "line one\nline two" "..."
python3 ~/.claude/skills/hook-writer/scripts/hook_check.py --headline "..." --file candidates.txt
```
In a file, put one candidate per line and use a literal \n for the line break. Per candidate it prints the rendered card (the headline plus the visible 130 characters and the "..."), the check A to J, the opening move with its measured status, penalties, and the three nearest winning openings from the dataset. Drop anything under 6/10, then fix and re-score.
 
## STEP 5: PRESENT
Show the top 4 as rendered cards, each with its score, its opening move and the winning opening it echoes (with views). Recommend one in a single sentence, then ask your user to approve it or give feedback.
 
## STEP 6: CLOSE THE LOOP (every run)
- Approved: append to `banks/approved.md` the date, headline, hook, opening move, score and why your user chose it. The approved hook becomes the first two lines of the article.
- Feedback: append your user's words verbatim to `banks/feedback.md` with the date and the rule you take from them, then apply that rule in the next round.
- Views at 24 hours and at 7 days: append to `banks/performance.md`, and every 10 entries write one line of learning into `banks/feedback.md`.
- When the dataset updates, download the csv again.
