Install
$ agentstack add skill-epistates-sparx-compose ✓ 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
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:
- Tighten the copy to fit in 280 (preferred if possible without losing value)
- 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
/threadskill
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:
- The optimized post with character count (ready to copy-paste)
- If multi-tweet: each tweet separated with
---and[Tweet N] (count/280)markers - 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]
- 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.
- Author: Epistates
- Source: Epistates/sparX
- 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.