Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Generate X/Twitter release promotion posts with ASCII tables and CodeSnap rendering. Use when writing release posts, promotion tweets, plugin announcements, or preparing social media content for new versions.
.claude/skills/oliver-kriska-promote/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-08 | ✗→✓ | ▲ Improved | 41% | 0% |
| case-12 | ✗→✓ | ▲ Improved | 51% | 0% |
| case-14 | ✗→✓ | ▲ Improved | 164% | 0% |
| case-21 | ✓→✗ | ▼ Worse | 69% | 0% |
| case-20 | ✓→✓ | = Same ✓ | 262% | 0% |
Generate data-driven X/Twitter posts for plugin releases with ASCII cards ready for CodeSnap screenshots.
Run /promote vX.Y.Z after tagging a release. Optionally add a title: /promote v2.8.0 "LiveView Streams Overhaul".
All files go to scratchpad/x-posts/{version}-release.md (create directory if needed).
The output file contains three sections:
Collect these metrics (all are verifiable commands — run them, don't estimate):
| Metric | How to get it | |--------|---------------| | File count + insertions/deletions | git diff --stat {prev-tag}..{tag} | | Skill count | ls plugins/elixir-phoenix/skills/ \| wc -l | | Agent count | ls plugins/elixir-phoenix/agents/*.md \| wc -l | | Iron Law count | Grep for numbered Iron Laws in CLAUDE.md | | Eval scores | make eval-all (run it, report actual numbers) | | Changelog entries | Read CHANGELOG.md for this version's section | | Before/after metrics | Depends on release — look for quantifiable changes |
The strongest posts have before/after comparisons. Look for changes in CHANGELOG.md that have measurable deltas (line counts, counts of affected files, error rates, coverage numbers).
The card is the visual centerpiece — it gets screenshotted via CodeSnap and attached to tweet 1.
Rules:
┌─┐│└┘╞═╡╤╪╧ for borders and separators—) and arrows (→) are single-width but easy to miscount. Every line between the top ┌ and bottom └ borders must be exactly 72 visual charactersAlso save the ASCII card as a separate .txt file at scratchpad/x-posts/{version}-table.txt for CodeSnap input.
See ${CLAUDE_SKILL_DIR}/references/templates.md for the proven card format and past examples.
Follow the hook → findings → details → CTA structure. Read ${CLAUDE_SKILL_DIR}/references/templates.md for proven tweet patterns.
Thread rules (from analytics on 7 posts, 6.9K-9.9K views):
#ElixirLang #ClaudeCode hashtags.Voice and tone:
Output the exact command to render the ASCII card as an image. The card .txt file from Step 2 is the input.
Use the config file at scratchpad/x-posts/codesnap-claude-dark.json (dark gradient, tight margins, no watermark):
codesnap -f scratchpad/x-posts/{version}-table.txt \
-o scratchpad/x-posts/{version}-card.png \
--config scratchpad/x-posts/codesnap-claude-dark.json \
--title "claude-elixir-phoenix {version}" \
-l textThen render and verify the image looks correct by reading the output PNG.
Every claim in the tweets must have a corresponding entry in the fact-check section:
markdown## Fact-Check - File stats: `git diff --stat {prev}..{tag}` (output: N files, +X/-Y) - Eval scores: `make eval-all` output — N skills avg X.XXX, N agents X.XXX - [claim]: [exact command or file:line that proves it]
If a claim can't be verified with a command or file reference, flag it as UNVERIFIED and suggest rewording.
When deciding whether a release warrants its own post:
The v2.6.1 post (37 likes, 1.4K views) vs v2.6.0 (150 likes, 5.5K views) demonstrates this — back-to-back releases dilute signal. When in doubt, wait and bundle.
Other measured skills in the registry, with their headline benchmark lift.