---
name: cover-writer
description: >
  Decide whether an X Article needs a cover image (the 1200 x 480 card image), and if so brief it:
  pick one of ten proven briefs, write the cover sentence, produce an image-generation prompt and
  the specifications, and score the plan against 14 rules from a study of 1,391 covers of X Articles
  over 300k views. Use for any X Article cover, card image or thumbnail, after the headline and the
  hook are locked. "No cover" is a valid and common recommendation.
  Model-neutral canonical edition: the plan-mode script is standard library only; image
  measurement is an optional utility.
version: 1.0.0
source: "research and original skill by @fuckgrowth (Sep 2026); see SOURCES.md"
toolkit: x-article-toolkit
---

# COVER WRITER

What this is: a procedure built from a study of X Article covers (research by @fuckgrowth, Sep 2026). It turns the study into a decision: whether the article needs a cover at all, which of ten briefs fits, what the cover sentence says, what an image model should be told, and how the plan scores before anyone draws anything. The study looked at 1,391 covers of X Articles over 300k views in the core topics, posted January to September 2026, so every number in it compares articles that did well with articles that did great. The dataset (with a `cover_image` column) and the research are linked in `SOURCES.md`. The skill runs after headline-writer and hook-writer, because the cover repeats the headline.

This is the canonical, model-neutral edition. Generating the image, reading words off a finished image and counting faces are NOT part of the core: they live in `optional/cover-image-analysis/` and in whatever image tool the runtime has. The core produces a brief that any designer, image model or the user can execute.

## WHAT YOU NEED

Required (in this folder): `rules.md` (the 14 rules), `briefs.md` (briefs A to J), a LOCKED HEADLINE and a LOCKED HOOK.
Optional accelerators:
- `scripts/cover_check.py` in text mode scores the plan (Python 3, standard library). Without code execution, apply checks A to J from the list at the end of this file by hand.
- The public dataset (`shared/data/`) to look at the `cover_image` links of the top rows in your topic.
- Image mode of the same script (Pillow) and the Apple Vision helper (macOS) to measure a finished image: see `optional/cover-image-analysis/README.md`. Not required.
- A state store (`state/README.md`) for approved covers, feedback and results. Only when connected.

House style from the source: no em dashes on the cover, no hype and no author headshots.

## STEP 0: LOAD (every run, in this order)
1. `rules.md`, the 14 rules with their numbers, which every brief has to follow.
2. `briefs.md`, the 10 cover briefs (A to J) with specs, prompt templates and the proven covers behind each one.
3. If a state store is connected: the user's approved covers, feedback and results; when their feedback and a general rule disagree, their feedback wins.
4. The locked headline and hook of this article, since the cover repeats the headline and cannot be briefed without it. If there is no locked headline, say so and run headline-writer (and hook-writer) first, or ask the user for them.
For more examples, when the dataset is available, filter by topic, sort by views and look at the `cover_image` links of the top rows.

## STEP 1: INTAKE (ask only for what is missing, in one message)
Take from the draft, the locked headline and the locked hook:
- The locked headline (Rule 4 needs its nouns) and the topic.
- The article's shape, which picks the brief: steps, parts of one thing, a system or operation, a combination with a result, a dataset or an idea piece.
- Named things and exact numbers that appear in the headline or hook (a name, a $ figure, a count).
Ask the user, once, only for what the draft cannot tell you:
- What real material exists: collected data for a chart, a real dashboard with a legible number for a proof screenshot, a brand logo and colour.
- Who posts it, because the voice decides handwriting against clean type and lowercase against sentence case.
- Time and tools available: hand-drawn, Figma, an image model or none, and "none" is a valid answer (Rule 1).

## STEP 2: DECIDE COVER OR NO COVER (Rule 1)
If none of the four winning formats (diagram, sentence text card, drawn illustration, chart) or a proof screenshot can be made, recommend posting without a cover and stop there. Say it plainly: articles without a cover passed 1M 42% of the time against 39% for articles with one, and a doodle, a render or a stock photo does worse than no cover. "No cover" is a complete, valid output of this skill; record it as the decision and move on to the publishing package.

## STEP 3: PICK THE BRIEF
Map the article's shape to `briefs.md`:
- steps or a setup -> A Numbered flow
- a combination with a result -> B Equation
- parts of one thing -> C Anatomy
- how a system or operation works -> D System map (the default for breakdowns of a company's marketing)
- one tool with many jobs -> E Hub and spokes
- no visual and no time -> F Sentence card
- a build with parts and costs -> G Annotated infographic
- real collected numbers -> H One-shape chart
- proof that is a number inside a real UI -> I Proof screenshot
- ideas or self-improvement -> J Engraving
Pick one primary brief and one alternate, and in Marketing never default to a screenshot (Rule 12).

## STEP 4: WRITE THE COVER TEXT (Rules 3, 4, 5, 6)
Write one sentence of 8 to 20 words that restates the headline: keep the name and the number, and drop the verb and the completeness tag. Aim for 50 to 80% word overlap with the headline, name the tool or company in words, and put the $ figure or the count on the cover in large type. Score the plan before any image exists:
```
python3 skills/cover-writer/scripts/cover_check.py --headline "..." --text "cover sentence" --type diagram
python3 skills/cover-writer/scripts/cover_check.py --headline "..." --text "cover sentence" --type diagram --json
```
Values for `--type`: diagram, text_card, illustration, chart, meme_collage and screenshot_proof are winning formats; screenshot and logo_brand are neutral; ai_art, photo, sketch, product_shot and other are losing formats. Without code execution, score checks A to J by hand (list at the end of this file). A score of 8 or more is ready, 6 or 7 means fixing the failing checks first, and under 6 means fixing it or posting without a cover.

## STEP 5: WRITE THE IMAGE BRIEF (the portable output)
Produce the brief any runtime can execute. Specifications: exactly 1200 x 480 pixels (5:2). A white, off-white or paper background, charcoal lines and type, and one accent colour in one place (Rule 7). Use the prompt template of the chosen brief in `briefs.md` and instruct that the image be generated WITHOUT text; the cover sentence is set afterwards in a real type tool, because image models misspell and mis-kern. Never use doodles, mascots, lightbulbs, rockets, brains, glows, purple-cyan gradients, headshots, desks, laptops or stock photos (Rules 7 to 11).

If the runtime has an image tool and the user wants the image made now, generate it from this brief, then run the optional measurement (`optional/cover-image-analysis/README.md`) when the tools exist. If it does not, hand the brief over; the brief is the deliverable.

## STEP 6: PRESENT
Show, in this order:
1. The decision: use cover or no cover, with the Rule 1 numbers.
2. The recommended brief and its alternate, and in one sentence why this brief wins.
3. The cover sentence with its overlap percentage.
4. The exact cover text (large type) and any secondary labels.
5. The image-generation prompt, the "no text in image" instruction, and the specifications (1200 x 480, palette, accent).
6. The check score with any fails and the rule behind each.
7. The two closest proven covers from `briefs.md` or the dataset.
Then ask for approval or feedback.

## STEP 7: LOCK AND RECORD
- When the user approves, the cover decision and brief are LOCKED. Label them `Locked cover:` (or `Locked cover: none`).
- If a state store is connected, record the date, topic, headline, brief letter, cover text, score, image location if any, and why it was chosen, following `shared/schemas/`. Record feedback verbatim. Record views at 24 hours and 7 days when supplied.
- If no state store is connected, skip silently.

## THE COVER CHECK (what scripts/cover_check.py scores, one point each)
A the planned format is a winning one (diagram, text card, illustration, chart, meme collage or proof screenshot) · B the cover text is 8 to 20 words (an illustration may carry none) · C the cover text shares 50 to 80% of the headline's words · D a tool or company is named in words · E when the headline has a number, the number is on the cover · F palette: gray share over 55%, saturation under 120, at most one accent colour (checked on the image; passes in plan mode) · G no doodle, glow or gradient planned · H drawn, not generated art · I no photo and no faces · J exactly 1200 x 480 (checked on the image; passes in plan mode).

## AFTER THE COVER IS LOCKED
Assemble the publishing package (`workflows/x-article-publishing.md`): headline, hook, cover decision, cover concept, cover text, image prompt, the untouched article, and the methodology reference.
