From fabrik
Posts content to Bluesky via the bsky CLI — text, images, video, replies, and quotes. Activates when asked to post or when shareable work is found in public repos.
How this skill is triggered — by the user, by Claude, or both
Slash command
/fabrik:blueskyThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Post content to the Bluesky social network using the `bsky` terminal application. This skill enables creating text posts, sharing images and videos with alt text, replying to posts, and quoting posts.
Post content to the Bluesky social network using the bsky terminal application. This skill enables creating text posts, sharing images and videos with alt text, replying to posts, and quoting posts.
Use this skill in these scenarios:
Important: Only suggest posting proactively when in public repositories. Never suggest posting for private or internal work.
Create simple text posts using the bsky post command:
bsky post "Your message here"
For longer or multi-line posts, use stdin:
echo "Your longer message
with multiple lines" | bsky post --stdin
Best practices:
https:// protocol prefix -- bare domains like www.example.com/path will NOT be rendered as clickable links. Always use https://www.example.com/pathInclude images in posts using the --image or -i flag:
bsky post "Check out this screenshot!" --image /path/to/image.png
Multiple images:
bsky post "Here are several images" \
--image image1.png \
--image image2.png \
--image image3.png
Add alt text for accessibility:
bsky post "New feature screenshot" \
--image screenshot.png \
--image-alt "Dashboard showing user analytics with graphs"
Best practices:
--image-alt for accessibility--image-alt flags to --image flagsShare video content using the --video or -v flag:
bsky post "Demo of the new feature" --video demo.mp4
With alt text:
bsky post "Feature demo" \
--video demo.mp4 \
--video-alt "Screen recording showing the login flow with OAuth"
Reply to existing posts using the -r flag with the AT protocol URI.
Important: The -r flag does NOT work when passing text as a positional argument -- the CLI treats it as part of the post text. Always use --stdin when replying. Also, -r requires an AT protocol URI (at://...), not a Bluesky web URL.
echo "Thanks for sharing!" | bsky post --stdin -r "at://did:plc:xyz/app.bsky.feed.post/abc123"
Quote an existing post using the -q flag:
bsky post "Great point about Go modules!" -q at://did:plc:xyz/app.bsky.feed.post/abc123
You can build a thread by replying to your own posts. Each bsky post command prints the AT protocol URI of the post it created -- feed that URI into the -r flag of the next post to chain them together.
# First post in the thread -- note the at:// URI in the output
bsky post "Building a new feature today: a streaming CSV parser. I'll post progress as I go."
# Reply to that post's URI to continue the thread
echo "Step 1 done: tokenizer handles quoted fields and embedded newlines correctly." \
| bsky post --stdin -r "at://did:plc:xyz/app.bsky.feed.post/abc123"
# Keep chaining -- reply to the most recent post's URI each time
echo "Step 2 done: streaming transformation layer, constant memory regardless of file size." \
| bsky post --stdin -r "at://did:plc:xyz/app.bsky.feed.post/def456"
Threads are useful for two things:
Best practices:
at:// URI from each post's output before making the next replyWhen creating a post:
bsky post commandWhen suggesting or creating posts:
bsky post "Just shipped a new feature in my Go library: automatic retry logic with exponential backoff!
Makes handling transient failures much easier. Check it out: https://github.com/user/repo" \
--image feature-screenshot.png \
--image-alt "Code snippet showing the new retry configuration API"
echo "TIL: Go's io.Pipe() is incredibly useful for streaming data between goroutines without buffering.
Perfect for processing large files without loading everything into memory.
Example use case: streaming CSV parsing → transformation → JSON encoding" | bsky post --stdin
bsky post "Just reached 1,000 stars on my open source project!
Thanks to everyone in the community for the support and contributions. This wouldn't be possible without you!" \
--image milestone-screenshot.png \
--image-alt "GitHub repository page showing 1,000 stars"
When someone shares or comments on your work, reply directly:
echo "Thanks for the detailed feedback! I've opened an issue to track this enhancement." \
| bsky post --stdin -r "at://did:plc:xyz/app.bsky.feed.post/abc123"
bsky command uses your authenticated session from previous loginbsky login firstbsky commands like bsky timeline or from the Bluesky web interfacenpx claudepluginhub maragudk/fabrik --plugin fabrikCrafts launch tweets, announcement threads, and social posts for product releases on X/Twitter, LinkedIn, BlueSky, and Threads. Useful for drafting platform-specific announcements.
Drafts social media content for developer communities: HN posts, Twitter/X threads, LinkedIn posts, Reddit comments, GitHub READMEs, Bluesky. Use for launches, engagement, thought leadership.
Generates platform-specific social media copy from code changes, marketing briefs, blog posts, or feature descriptions. Tailors copy to each platform's rules and audience.