The audience skews technical, journalist/academic, and early-adopter, and is allergic to marketing speak. People are here on purpose. Be candid and specific; say the real thing.
Be human, not corporate. Conversational and transparent beats polished and promotional.
Favor participation over broadcasting: a post that invites a genuine reply earns its keep.
~300 characters (graphemes). Tight, but it can breathe more than an X post; wit and personality land here. Write the full thought first, then cut to length.
Links don't hurt reach. Bluesky doesn't downrank them, so link directly to the source rather than hiding it or burying it in a reply.
Use threads (replies) for longer thoughts; each post should still read on its own.
Add alt text to every image. It's expected, not optional, and doesn't count against the character limit. Keep it a plain description of what's in the image.
Hashtags are supported but used sparingly: one or two topical tags at most, never a wall. Keyword-rich text does more for discovery (custom feeds) than tag volume.
Structure
Hook: the candid claim or the concrete detail, front-loaded on line one.
Body: the substance, one idea, in your own voice.
Close: the link, the takeaway, or a real question.
References
references/best-practices.md: researched tactics as a checklist, with sources.
references/post-specs.md: character limit, media/alt-text, and hashtag specs for quick lookup.
references/banned-words.json: the words to avoid. The lint_against_style tool checks a draft against this list (surface bluesky), so run the tool rather than reading the file.
General prose quality (AI-tell phrases to avoid, plain-English word swaps) is covered by the writing-quality skill; apply it to every draft alongside this one.
How to use it
Copy the folder
Take vercel-labs/bluesky-style from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
Check the name does not clash
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.