Draft high-signal social posts from real work — auto-researches the current PR, recent commits, or working tree to capture the essence, then writes concise, human, builder-first posts for X/Twitter (and optionally Reddit).
62
72%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Passed
No findings from the security scan
Fix and improve this skill with Tessl
tessl review fix ./.agents/skills/tweet/SKILL.mdTurn real engineering work into short, grounded social posts.
Before writing anything, gather facts from the actual work. Never draft from vibes alone.
Run these in parallel to understand what was actually done:
# current working tree changes
git diff --stat
git diff # scan for what changed
# recent commits on this branch
git log --oneline -20
# full diff against base branch (for PR-scope posts)
git log --oneline main..HEAD
git diff main...HEAD --stat
# if on a PR branch, get PR metadata
gh pr view --json title,body,url,additions,deletions,files 2>/dev/nullRead any relevant files (README, AGENTS.md, changelogs, specs) that the diff touches to understand the feature in context.
From the gathered material, identify:
Prioritize: unusual capability > difficult engineering > UX improvement > surprising detail > compatibility > practical implication.
Before drafting, always ask the user if they have visual content to go with the post — image, screenshot, video, or screen recording. Most high-performing posts include visuals. Use the Question tool:
If the user provides an image, use the vision skill to understand it and write the post to complement (not repeat) the visual. If no visual, suggest what would make a good one (e.g. "a 5-second screen recording of X would work well here").
Compress the essence into a social-ready version. Do not invent details. Do not paraphrase git commit messages verbatim — synthesize.
Default voice: human, builder-first, slightly understated, concise, technically literate.
Prefer: clear > clever, specific > broad, tangible > abstract, confident > flashy, short > overloaded.
A good post has: (1) what was built, (2) why it matters, (3) a tiny bit of personality, (4) optionally a link.
Sound like someone who actually built the thing. Not a company social media manager.
Adjust based on user request:
| Mode | Trigger phrases | Feel |
|---|---|---|
| Builder diary | "more human", "personal", "quieter" | Log from someone building every day. Mild emotion okay. |
| Product/PR | "announcement", "you can now", "launch" | Benefits-first, clean, direct. Good with screenshots. |
| Technical | "more technical", "dev audience", "engineering" | Mentions architecture, formats, specs. Still readable. |
| Aggressive | "more punch", "stronger", "traction" | Sharper framing, stronger verbs. Still professional. |
| WIP/demo | "WIP", "demo", "early", "experiment" | Exploratory, honest, avoids overclaiming. |
By default, provide 3–5 options with distinct tones:
When the user already has a draft, rewrite it — don't replace with unrelated ideas.
Also supports: tweet threads, Reddit posts, tweet+Reddit pairs, one-liners, changelog-style.
Day 317, Grida Canvas. followed by what changed, why it matters, or a small note.
More explicit, include implementation scope, acknowledge limitations, sound like an engineer sharing work. Structure: problem → what you built → tricky parts → limitations → link → invite discussion.
Never sound like: Apple keynote, VC launch thread, generic SaaS marketing, AI-generated hype.
Avoid: "super excited", "game changer", "next level", "redefining", "seamless", "unlocking", "delighted to announce", "thrilled to share", excessive exclamation marks, buzzword stacking, fake humility.
No emojis or hashtags unless the user requests them.
| Before | After |
|---|---|
| "Background removal is built in with our canvas." | "I kept needing to clean up images while designing. So I added background removal and upscaling directly into the canvas." |
| "Export now has settings." | "Export now has settings. PNG, JPEG, WebP, PDF, SVG — plus scale / fit and quality." |
| "A revolutionary renderer for Figma files." | "A headless Figma renderer. Reads .fig and REST JSON, runs in Node or the browser." |
| "Added arrow markers." | "Lines can finally end properly → arrows, dots, diamonds." |
After drafting, always validate length using the bundled script:
python3 .agents/skills/tweet/scripts/validate.py "Your draft text here"
python3 .agents/skills/tweet/scripts/validate.py draft.txtThe script reports char/word/line counts and checks against platform limits:
| Platform | Limit |
|---|---|
| Tweet | 280 chars |
| Reddit title | 300 chars |
| Reddit body | 40,000 chars |
If a draft exceeds the tweet limit, tighten it before presenting to the user. Present the final char count alongside each option so the user can see headroom at a glance (e.g. (247/280)).
8d2d05e
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.