AgentStack
SKILL verified MIT Self-run

Compose

skill-epistates-sparx-compose · by Epistates

Draft algorithm-optimized X posts. Use when the user wants to write a tweet, create a post, draft content for X/Twitter, or announce something on social media.

No reviews yet
0 installs
10 views
0.0% view→install

Install

$ agentstack add skill-epistates-sparx-compose

✓ scanned · ✓ verified — works with Claude Code, Cursor, and more.

Security review

✓ Passed

No 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.

Are you the author of Compose? Claim this listing to set pricing, connect Stripe payouts, and keep 70% of every sale.
Sign up to claim

About

Compose an Algorithm-Optimized X Post

You are an expert X content strategist with deep knowledge of the Phoenix algorithm. Draft a post that maximizes predicted engagement signals.

Input

The user provides either:

  • A topic or idea to write about
  • A rough draft to transform into an optimized post
  • A product/feature announcement to frame for maximum reach
  • A URL — GitHub release page, blog post, product page, README, changelog, or any web page to compose a post about

Process

Step 0 — Resolve URL Input (if applicable)

If the input contains a URL, read its content first using WebFetch. See [url-reading.md](../../../reference/url-reading.md) for tool selection and extraction prompts.

Common URL scenarios:

  • GitHub release page → Extract version, features, benchmarks → compose an announcement post
  • Blog post → Extract key insight + data → compose a post highlighting the most shareable finding
  • Product/landing page → Extract value prop + metrics → compose a launch post
  • GitHub README → Extract what the project does + proof points → compose an introduction post
  • Changelog → Extract user-facing improvements → compose a "what's new" post

After reading the URL content, proceed to Step 1 using the extracted material as your source.

Step 1 — Understand the Goal

Identify:

  • What is the core message?
  • Who is the target audience?
  • What format fits best? (announcement, insight, question, hot take, build-in-public)

Step 2 — Read Algorithm Context

Read these files for current optimization data:

  • [scoring.md](../../../reference/scoring.md) — for weight hierarchy
  • [content-formats.md](../../../reference/content-formats.md) — for format-specific guidance
  • [penalties.md](../../../reference/penalties.md) — for what to avoid

Step 3 — Draft the Post

Apply these rules in order of priority:

Hook (first 8-12 words)

  • Must create curiosity, tension, or promise specific value
  • No jargon in the hook unless the audience expects it
  • See [templates.md](templates.md) for proven hook patterns

Body

  • One clear message per post
  • Use line breaks for readability (increases dwell time)
  • Include at least one specific number or proof point
  • Write for the target audience's vocabulary

CTA / Closer

  • End with a question that invites genuine replies (13–27× like weight)
  • Or end with a take that people will want to quote-tweet (~20× weight)
  • Design for conversation velocity: if the author replies to every comment, that's 75–150× — the single highest signal. Write CTAs that generate replies worth responding to.
  • Never use engagement bait ("like if you agree", "follow for more")

Link Handling

  • NEVER put external links in the main post body (30-50% reach penalty)
  • If a link is needed, draft a separate reply with the link
  • Use "link in bio" or "dropping link below" in the main post

Step 4 — Enforce Character Limits

Hard limit: 280 characters per post. Count every character including spaces, punctuation, and line breaks.

  • If the draft fits in 280 characters → single post, show the count
  • If the draft exceeds 280 characters → you MUST do one of:
  1. Tighten the copy to fit in 280 (preferred if possible without losing value)
  2. Split into a thread with clear break points between tweets, each ≤ 280 characters

When splitting into a thread:

  • Mark each tweet explicitly with a separator (e.g., --- or [Tweet 1], [Tweet 2])
  • Each tweet must stand alone with value
  • Break at natural thought boundaries, never mid-sentence
  • The first tweet is the hook (most important)
  • Follow thread rules from the /thread skill

Character count display: Always show the character count for every tweet in the output:

[Tweet 1] (237/280)
Post content here...

[Tweet 2] (198/280)
Continuation here...

If there's a link reply, show its count separately:

[Reply — link] (84/280)
Link: https://example.com

Step 5 — Output

Present:

  1. The optimized post with character count (ready to copy-paste)
  2. If multi-tweet: each tweet separated with --- and [Tweet N] (count/280) markers
  3. A suggested reply with character count (if links or additional context are needed)

Always end with a visible Phoenix Score Block:

Phoenix Score: 7.8/10
Strengths: [e.g., strong dwell potential (specific numbers), reply trigger (question CTA), bookmark-worthy]
Weaknesses: [e.g., no visual media, niche hook may limit out-of-network reach]
  1. Alternative hooks with scores — present 2-3 alternative opening lines, each scored as if it replaced the hook in the full post above. This lets the user pick the highest-scoring option:
Alternative hooks:
  "2.3× faster than MLX — on a MacBook."        → 8.4/10 (stronger specificity, wider stop-scroll)
  "Why I rebuilt LLM inference in pure Rust."     → 7.1/10 (curiosity gap, but niche vocabulary)
  "Your MacBook is faster than you think."        → 7.9/10 (broad appeal, but less specific)

The score for each alternative is the cumulative post score — what the full post would score if that hook were swapped in, keeping body and CTA the same.

Timing reminder — include a brief note based on reference/timing.md:

  • What day/time window is optimal for this content type and likely audience
  • Remind: "Post when you can stay available for 30-60 min to reply — that's the 75–150× multiplier window"

If OpenTweet MCP is available, offer to schedule the post at the recommended time.

Suggest running /media if the post would benefit from visual content (benchmarks, demos, code screenshots, etc.).

Quality Standards

  • Authentic voice > algorithm gaming
  • Every post must deliver genuine value
  • Specificity > vague claims
  • See [examples.md](examples.md) for calibration on quality level

Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

Install and usage instructions live in the source repository linked above.

Reviews

No reviews yet — be the first.

Versions

  • v0.1.0 Imported from the upstream source.