Install
$ agentstack add skill-sergebulaev-x-skills-x-thread-builder ✓ scanned · ✓ verified — works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
About
X Thread Builder
Build tweetstorms that get read all the way down. On X, tweet 1 is the entire funnel: it has to promise a payoff and open a loop, or no one taps "Show this thread." Everything after only matters if tweet 1 earns the tap.
When to use
- User says "turn this into a thread" or "write me a thread about X"
- The idea is a list where each item needs teaching, a story with a build, a
surprising result with a mechanism, or a repeatable process
- User has a single tweet that is trying to do too much and should be a thread
Formulas this skill uses (thread shapes)
| Code | Formula | Primary goal | Best for | |---|---|---|---| | X7 | Listicle-Thread Promise | bookmarks | numbered teaching thread, one item per tweet | | X8 | Story Thread | likes, reposts | a real narrative with a build and a turn | | X9 | Curiosity-Gap Opener | replies, bookmarks | a surprising result, mechanism withheld | | X10 | How-I Teardown | bookmarks | a repeatable process you ran yourself |
Full skeletons in ../../references/hook-formulas.md. For single tweets (X1-X6), use x-post-writer.
Pick by goal first
| Goal | Reach for | |---|---| | Bookmarks | X7, X10, X9 | | Likes | X8 | | Reposts | X8 | | Replies | X9 |
How Publora splits a thread
Pass the full thread as one content string. Publora auto-splits it:
- at paragraph breaks (
\n\n) first, - then at sentence endings,
- then at word boundaries as a fallback,
- and adds
(1/N)markers, reserving ~8 chars per tweet for the marker.
For full control of where each tweet breaks, hand-split with a --- separator on its own line between tweets. The skill defaults to hand-splitting with --- so the user sees exactly how the thread will land before approving.
Steps
- Gather inputs. Topic, the raw material (notes, a transcript, a result),
target audience, and the goal (bookmarks / likes / reposts / replies).
- Pick the formula from the goal table, confirm it fits the material.
- Write tweet 1. This is 80% of the work:
- Promise a specific payoff (a number, a named result, a clear list count).
- Open a loop the reader has to resolve ("most people get 3 of them wrong",
"I did not expect why").
- Keep it under 280 chars on a standard account. It must stop the scroll
alone.
- Pace the body. One beat or one item per tweet. Front-load the strongest
item or beat at position 1-2; tap-through decays with depth. Target 5-9 tweets for teaching/list threads; longer only for a strong story.
- Make each tweet stand alone. A reader landing mid-thread from a quote
tweet should still get something.
- Write the closer. The last tweet earns the repost and the follow. End on
the most quotable line, then one clear ask (bookmark, follow, or "reply with yours"), not both.
- Humanizer pass on every tweet. Strip em dashes, AI vocab, uniform rhythm.
Vary tweet length across the thread.
- Optional audit. Run
x-humanizer --mode auditon the assembled thread. - Approval card. Show the thread tweet-by-tweet with per-tweet char counts,
total tweet count, the formula, and the goal. Confirm any --- breaks.
- On approval. Call `lib.publish(kind="thread", drafttext=, targeturl="https://x.com/compose/tweet",
platforms=[], scheduled_time=). Publora posts the chain in one call and returns a postGroupId`.
Hard rules
Global voice rules: see root SKILL.md Voice rules. Additional skill-specific rules:
- Tweet 1 must contain a real promise and an open loop. A bare "A thread:" label
is not a hook.
- Keep each tweet under 280 chars on a standard account (emoji = 2 chars).
- Front-load value. Never bury the best item at the end of a teaching thread.
- No external link in tweet 1. Put links in a later tweet or a reply.
- Vary tweet length. A thread of identical-length tweets reads as AI.
- Only ship a Story Thread (X8) built on a true story. Readers punish
manufactured stakes.
Anti-patterns (skill will refuse)
- Tweet 1 that closes its own loop (no reason to expand).
- Over-promising in tweet 1 and under-delivering in the body.
- Vague how-to steps ("be consistent", "add value") in an X10 teardown.
- Padding to hit a round number of tweets.
- Em dashes, AI vocab, ALL CAPS openers.
- Engagement-bait closers ("RT if this helped").
Resources
../../references/hook-formulas.md- X7-X10 thread skeletons with worked shapes../../references/algorithm-heuristics.md- thread length, tap-through decay, signalsreferences/thread-structure.md- per-position pacing and the closer playbook
Related skills
x-post-writer- when the idea is really just one tweetx-humanizer- scrub each tweet, or--mode auditthe whole threadx-hook-extractor- lift the structure from a viral thread you admirex-content-planner- schedule threads into a weekly cadence
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: sergebulaev
- Source: sergebulaev/x-skills
- License: MIT
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet — be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.