X Post Writer
Ship a single tweet, or a tight 2-3 tweet micro-thread, using hook shapes that
actually travel on X in 2026. Single-tweet formulas land a complete punch in
the first line, because X has no "see more" fold.
When to use
- User says "write me a tweet about X"
- User has a topic or a rough one-liner and wants a sharper hook
- User wants to pick a proven single-tweet shape and fill in their voice
- User wants a quick draft that auto-publishes on approval
Formulas this skill uses (single-tweet shapes)
| Code |
Formula |
Primary goal |
Best for |
| X1 |
One-Liner Contrarian |
reposts |
a sharp, defensible against-the-grain take |
| X2 |
Data-Point Hook |
bookmarks |
one odd-precision number that reframes a thing |
| X3 |
Build-in-Public Confession |
replies |
a real metric from your own work, ugly ones included |
| X4 |
Quote-Tweet Dunk-with-Value |
reposts |
adding a layer to someone else's take (quote tweet) |
| X5 |
Mini-List Tweet |
bookmarks |
a scannable list that fits in one tweet |
| X6 |
Relatable Cold-Open |
likes |
a specific shared moment, no setup |
| X11 |
Third-Person Case-Study Flex |
reposts |
someone else's absurd, specific result as anyone-could-copy bait |
Full skeletons in ../../references/hook-formulas.md. For long-form tweetstorms
(X7-X10), use x-thread-builder. X11 was validated as the top-recurring winning
shape in a ~450-tweet corpus (July 2026); prefer it over a first-person "How I"
when the result you are citing is someone else's.
Pick by goal first
| Goal |
Reach for |
| Replies |
X3, X1 |
| Reposts |
X1, X4, X11 |
| Likes |
X6 |
| Bookmarks |
X2, X5, X11 |
Steps
Voice profile first (all drafts). If ../../references/voice-profile.md has filled: yes, load it and match the user's voice fingerprint, hard rules, and CTA/link style throughout. If it is not filled, mention once that x-humanizer --mode profile can learn their voice from a few posts, then proceed with the generic voice rules.
- Gather inputs. Topic, angle, any rough draft, target audience (builders /
founders / a niche), and the goal (replies / reposts / likes / bookmarks).
- Pick the container. If the idea is one claim, one number, or one moment,
it is a single tweet. If it is a scannable one-line-per-item list, still a
single tweet (X5). If items need teaching or the idea has a build, hand off
to
x-thread-builder.
- Pick the formula. Use the goal table to shortlist, then suggest 2-3 that
also fit the topic and let the user choose.
- Draft the tweet. Fill the skeleton in the user's voice. Respect the 2026
X rules:
- First line carries the whole load (no fold).
- Under 280 chars on a standard account (emoji count as 2 chars). Confirm the
user's tier; only go long if they are on Premium and the length earns it.
- One idea per tweet. Line breaks as beats.
- 0-1 hashtag at the end, 0-1 emoji, none on a serious take.
- No external link in the tweet (offer to put it in a reply).
- Humanizer pass. Scrub 2026 AI vocab by density, cap em dashes (at
most one per tweet, never swap one for a period), break stacked triads,
generic openers and reveal bridges. Leave a single tweet's rhythm alone
(uniform rhythm wins on short posts; never insert a fragment for punch).
Add an odd-precision number with a named referent or a named entity where
the claim allows it. Canonical rules:
x-humanizer V3.
- Optional audit. Invoke
x-humanizer --mode audit for a pass-fail check.
- Approval card. Show: formula used, full draft, char count (note if emoji
push it over 280), suggested posting window, primary goal.
- On approval. Call
lib.publish(kind="post", draft_text=<approved>, target_url="https://x.com/compose/tweet", platforms=[<X_PLATFORM_ID>], scheduled_time=<iso_or_None>). The wrapper handles Publora / manual / diy
routing. If the content runs long, Publora auto-splits it into a numbered
thread.
Hard rules
Global voice rules: see root SKILL.md Voice rules. Additional skill-specific
rules:
- The first line must stop the scroll on its own. Rewrite any opener that needs
line 2 to make sense.
- Keep a standard-account tweet inside 280 chars. If it does not fit, tighten it
or escalate to a thread, never ship a truncated thought.
- One specific number where the claim allows it. 2.4x beats "way better".
- Do not hard-sell the user's product. One natural mention max.
Anti-patterns (skill will refuse)
- ALL CAPS first line for intensity. Carry intensity with word choice.
- Em dashes above the cap (more than one in a tweet), or an em dash swapped for a period.
- "Here's what / here's how" or "Stop X, start Y" as the opener; "The result?" as a reveal.
- Announced candor ("Let me be honest", "not gonna lie") with no dated fact behind it.
- "Unpopular opinion:" on a take that is actually popular.
- Padding a one-line idea with filler to look substantial.
- Rule-of-three lists without specifics.
- "leverage", "fundamentally", "game-changer", "deep dive".
- External link in the tweet body.
- Engagement bait ("RT if you agree", "reply YES").
Resources
../../references/hook-formulas.md - all 11 X formula skeletons (X1-X6 and X11 are single-tweet)
../../references/algorithm-heuristics.md - 2026 X ranking rules (signals, timing, limits)
references/single-tweet-checklist.md - the per-tweet scrub and fit list
Optional illustration
Offer a generated image when a visual would lift reach. Draft a prompt and call
lib.illustrate(prompt, kind="wide"), pulling brand handle/color from Voice &
Brand Profile section 6 for a pixel-exact overlay. Show the returned url + cost,
then attach on publish via media_urls=[url]. Full workflow (incl. quote-cards):
../x-humanizer/sub-skills/illustration.md. No Pixfaro key -> it drafts the prompt for you to generate manually.
Related skills
x-thread-builder - when the idea needs more than a tweet
x-humanizer - aggressive AI-tell scrubber, plus --mode audit for review
x-hook-extractor - reverse-engineer a hook from a tweet you admire
1---2name: x-post-writer3description: Draft a single tweet or short auto-thread for X (Twitter) using a 2026 X hook formula (one-liner contrarian, data-point, build-in-public, mini-list, relatable cold-open), picked by goal (replies, reposts, likes, bookmarks). Respects the 280-char limit (25,000 on Premium), runs the humanizer pass, and publishes via Publora on approval. Use to write a tweet from notes. Not for long threads (use x-thread-builder) or auditing a draft (use x-humanizer --mode audit).4---56# X Post Writer78Ship a single tweet, or a tight 2-3 tweet micro-thread, using hook shapes that9actually travel on X in 2026. Single-tweet formulas land a complete punch in10the first line, because X has no "see more" fold.1112## When to use1314- User says "write me a tweet about X"15- User has a topic or a rough one-liner and wants a sharper hook16- User wants to pick a proven single-tweet shape and fill in their voice17- User wants a quick draft that auto-publishes on approval1819## Formulas this skill uses (single-tweet shapes)2021| Code | Formula | Primary goal | Best for |22|---|---|---|---|23| X1 | One-Liner Contrarian | reposts | a sharp, defensible against-the-grain take |24| X2 | Data-Point Hook | bookmarks | one odd-precision number that reframes a thing |25| X3 | Build-in-Public Confession | replies | a real metric from your own work, ugly ones included |26| X4 | Quote-Tweet Dunk-with-Value | reposts | adding a layer to someone else's take (quote tweet) |27| X5 | Mini-List Tweet | bookmarks | a scannable list that fits in one tweet |28| X6 | Relatable Cold-Open | likes | a specific shared moment, no setup |29| X11 | Third-Person Case-Study Flex | reposts | someone else's absurd, specific result as anyone-could-copy bait |3031Full skeletons in `../../references/hook-formulas.md`. For long-form tweetstorms32(X7-X10), use `x-thread-builder`. X11 was validated as the top-recurring winning33shape in a ~450-tweet corpus (July 2026); prefer it over a first-person "How I"34when the result you are citing is someone else's.3536### Pick by goal first3738| Goal | Reach for |39|---|---|40| Replies | X3, X1 |41| Reposts | X1, X4, X11 |42| Likes | X6 |43| Bookmarks | X2, X5, X11 |4445## Steps4647**Voice profile first (all drafts).** If `../../references/voice-profile.md` has `filled: yes`, load it and match the user's voice fingerprint, hard rules, and CTA/link style throughout. If it is not filled, mention once that `x-humanizer --mode profile` can learn their voice from a few posts, then proceed with the generic voice rules.48491. **Gather inputs.** Topic, angle, any rough draft, target audience (builders /50 founders / a niche), and the goal (replies / reposts / likes / bookmarks).512. **Pick the container.** If the idea is one claim, one number, or one moment,52 it is a single tweet. If it is a scannable one-line-per-item list, still a53 single tweet (X5). If items need teaching or the idea has a build, hand off54 to `x-thread-builder`.553. **Pick the formula.** Use the goal table to shortlist, then suggest 2-3 that56 also fit the topic and let the user choose.574. **Draft the tweet.** Fill the skeleton in the user's voice. Respect the 202658 X rules:59 - First line carries the whole load (no fold).60 - Under 280 chars on a standard account (emoji count as 2 chars). Confirm the61 user's tier; only go long if they are on Premium and the length earns it.62 - One idea per tweet. Line breaks as beats.63 - 0-1 hashtag at the end, 0-1 emoji, none on a serious take.64 - No external link in the tweet (offer to put it in a reply).655. **Humanizer pass.** Scrub 2026 AI vocab by density, cap em dashes (at66 most one per tweet, never swap one for a period), break stacked triads,67 generic openers and reveal bridges. Leave a single tweet's rhythm alone68 (uniform rhythm wins on short posts; never insert a fragment for punch).69 Add an odd-precision number with a named referent or a named entity where70 the claim allows it. Canonical rules: `x-humanizer` V3.716. **Optional audit.** Invoke `x-humanizer --mode audit` for a pass-fail check.727. **Approval card.** Show: formula used, full draft, char count (note if emoji73 push it over 280), suggested posting window, primary goal.748. **On approval.** Call `lib.publish(kind="post", draft_text=<approved>,75 target_url="https://x.com/compose/tweet", platforms=[<X_PLATFORM_ID>],76 scheduled_time=<iso_or_None>)`. The wrapper handles Publora / manual / diy77 routing. If the content runs long, Publora auto-splits it into a numbered78 thread.7980## Hard rules8182Global voice rules: see root `SKILL.md` Voice rules. Additional skill-specific83rules:8485- The first line must stop the scroll on its own. Rewrite any opener that needs86 line 2 to make sense.87- Keep a standard-account tweet inside 280 chars. If it does not fit, tighten it88 or escalate to a thread, never ship a truncated thought.89- One specific number where the claim allows it. 2.4x beats "way better".90- Do not hard-sell the user's product. One natural mention max.9192## Anti-patterns (skill will refuse)9394- ALL CAPS first line for intensity. Carry intensity with word choice.95- Em dashes above the cap (more than one in a tweet), or an em dash swapped for a period.96- "Here's what / here's how" or "Stop X, start Y" as the opener; "The result?" as a reveal.97- Announced candor ("Let me be honest", "not gonna lie") with no dated fact behind it.98- "Unpopular opinion:" on a take that is actually popular.99- Padding a one-line idea with filler to look substantial.100- Rule-of-three lists without specifics.101- "leverage", "fundamentally", "game-changer", "deep dive".102- External link in the tweet body.103- Engagement bait ("RT if you agree", "reply YES").104105## Resources106107- `../../references/hook-formulas.md` - all 11 X formula skeletons (X1-X6 and X11 are single-tweet)108- `../../references/algorithm-heuristics.md` - 2026 X ranking rules (signals, timing, limits)109- `references/single-tweet-checklist.md` - the per-tweet scrub and fit list110111## Optional illustration112113Offer a generated image when a visual would lift reach. Draft a prompt and call114`lib.illustrate(prompt, kind="wide")`, pulling brand handle/color from Voice &115Brand Profile section 6 for a pixel-exact overlay. Show the returned `url` + `cost`,116then attach on publish via `media_urls=[url]`. Full workflow (incl. quote-cards):117`../x-humanizer/sub-skills/illustration.md`. No Pixfaro key -> it drafts the prompt for you to generate manually.118## Related skills119120- `x-thread-builder` - when the idea needs more than a tweet121- `x-humanizer` - aggressive AI-tell scrubber, plus `--mode audit` for review122- `x-hook-extractor` - reverse-engineer a hook from a tweet you admire