Draft a reply or a value-add quote tweet for a specific X (Twitter) tweet from its URL. Use to reply in a thread, answer a creator, or quote-tweet with added value. Parses the tweet URL, reads pasted context, decides reply vs quote tweet, and drafts 1-3 variants in your voice. X has no LinkedIn-style 2-level thread flattening, so a reply is just a tweet. Publora has no reply endpoint, so the draft is returned as a copy-paste block to post yourself. Not for top-level posts (use x-post-writer).
npx skills add https://github.com/sergebulaev/x-skills --skill x-reply-drafter
Drafts a reply in a thread, or a quote tweet, for a specific tweet. On X a reply
is just a tweet posted in-reply-to another, and replies nest naturally: there is
no LinkedIn-style 2-level flattening and no parent-comment URN to resolve.
An X tweet URL (x.com/HANDLE/status/ID or the twitter.com equivalent), plus
the tweet text (and any thread context) pasted by the user, since this bundle
has no built-in tweet reader.
| Use a reply when | Use a quote tweet when |
|---|---|
| You are adding to the conversation in place | Your addition deserves its own reach |
| You are answering a question or engaging a creator | Your followers should see the original for context |
| You want intimacy over reach | You want reach and a take on your own timeline |
Default to a reply for direct engagement and a quote tweet when the
user's point is strong enough to stand as its own post. Never quote-dunk on a
small account; add value or skip it.
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.
lib.url_parser.parse_x_url(url) returns handle,tweet_id, canonical_url.
thread above it. If the user is already in the thread, include their prior
tweet.
the user override.
references/reply-templates.md. If thecounterpart asked a question, answer it plainly with one real detail. If they
pushed back, concede then sharpen.
most one per reply, never swap one for a period), strip reveal bridges and
sincerity openers ("not gonna lie", "let me be honest"). Leave the rhythm
alone; never insert a fragment for punch. Keep each variant under 280
chars (emoji = 2). One idea per reply. Canonical rules: x-humanizer V3.
recommendation, and the target URL.
target_url=<canonical_url>) for a reply, or kind="quote"` for a quote
tweet. Publora has no reply endpoint, so kind="reply" always returns a
copy-paste block. A kind="quote" could in principle post a new tweet
containing the original URL via Publora, but the default is still copy-paste
so the user controls the embed. Paste it on X yourself.
Unlike LinkedIn (which flattens reply threads to 2 levels and needs the
top-level comment URN as the parent), X nests replies naturally. There is no
parent-comment URN to compute. A reply is simply a tweet you post while replying
to the target tweet. This skill therefore does not walk any comment tree; it
just drafts the text and hands it back for you to post in-reply.
references/reply-templates.md)Global voice rules: see root SKILL.md Voice rules. Additional skill-specific
rules:
Describe what they do instead.
> User: "Reply to this: https://x.com/somebuilder/status/1790000000000000000"
>
> Skill: parses -> handle somebuilder, tweet 1790000000000000000. Asks the user
> to paste the tweet. User pastes a take about pricing. Skill recommends a reply
> (direct engagement), drafts an R2 Concede-Then-Sharpen variant and an R3
> Extend-Their-Point variant, each under 280 chars. Shows the approval card.
>
> User: "post the first one"
>
> Skill: returns the copy-paste block with the target URL for the user to post
> as a reply on X.
SKILL.md - this filereferences/reply-templates.md - 5 reply/quote templates with examplesx-post-writer - for a standalone tweet rather than a replyx-thread-builder - for a multi-tweet responsex-humanizer - scrub the reply before postingTake sergebulaev/x-reply-drafter from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.