---
name: hook-writer
description: Writes five opening lines for a post, scores each on specificity, tension, and clarity, and uses a script to validate length and rank them. Use when the user says "write hooks," "give me hooks," "better opening line," "scroll-stopper," "first line for this post," "score these hooks," "which hook is best," or when the content-engine runs Step 4. Does not edit the body or write channel versions.
---

# Hook Writer

One job: write the first line people actually stop for.

On LinkedIn, the feed cuts off around 140 characters. If the hook fails, nothing else gets read.

## STEP 1 (REQUIRED): Load inputs

1. Read `edited.md` (or the text the user pasted).
2. Read `learnings.md` if present. Hook rules from past retros override this skill.
3. Pull the 3 strongest raw materials from the piece: the biggest number, the most surprising moment, the opinion people would argue with.

## STEP 2 (REQUIRED): Write 5 hooks, each a different type

| Type | Pattern | Example |
|---|---|---|
| Number | Lead with the hard stat | "4 years, $8M, 26 people. Then 6 months, solo." |
| Moment | Drop into the scene | "My SDR opened the account brief and laughed." |
| Opinion | A take someone will argue with | "Your AI agent is bad because it has six jobs." |
| Mistake | Admit what went wrong | "I built 11 AI skills last month. 9 made my work worse." |
| Stakes | What's changing and who's at risk | "Teams without a research agent are 37 minutes behind on every account." |

Rules:
- Under 140 characters
- Do not start with "I" as the first word unless it's a Mistake hook
- No question that can be answered "no"
- No em dashes
- Every number must come from the piece. Never invent a stat for a hook.

## STEP 3 (REQUIRED): Score and validate

Score each hook 1 to 10 on:
- **Specificity:** holds a number, name, or concrete image
- **Tension:** opens a gap the reader needs closed
- **Clarity:** understood in 3 seconds on a phone

Write the table to `hooks.md` in this exact format, then run the script:

```markdown
| # | Type | Hook | Spec | Tension | Clarity |
|---|---|---|---|---|---|
| 1 | Number | 4 years, $8M, 26 people. Then 6 months, solo. | 9 | 9 | 8 |
```

```bash
python scripts/check_hooks.py hooks.md
```

The script checks length, first word, dashes, and whether a digit is present, then totals and ranks the hooks. Rewrite any hook that FAILs and re-run until PASS.

## Output: `hooks.md`

The scored table, the script's ranked output, and one line:
"Recommended: #1 (26/30). Runner-up for A/B test: #3 (24/30)."

## Edge cases

- **Piece has no numbers:** skip the Number type and write two Moment hooks. The script will warn; that's fine.
- **User rejects all five:** ask what they liked in past top posts, then write five more of that type.
- **Two hooks tie:** recommend both for an A/B test across two posting days.
