Bluesky Feed
Your Bluesky timeline in a side pane: the posts of the accounts you follow, a field to write and send a post, and a like button on every post. bsky opens it. Logs in with a Bluesky app password; the free public API, no developer account.
npx claude-code-templates@latest --skill β’β’β’β’β’β’β’β’β’β’β’β’β’β’β’β’β’β’β’β’Interactive Terminal Locked
Unlock this skill to run and inspect the interactive installation sequence.
bluesky-feed
Your Bluesky timeline in a side pane: the posts of the accounts you follow, a field to write and send a post, and a like button on every post.
π¦ BLUESKY FOLLOWING @you.bsky.social Β· updated now ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β post: What's up? 300 left Β· Enter posts Β· links and #tags are clickable Mara Quinn @mara.dev Β· 5m Shipped a Claude Code mod that turns every failing test into a toast. π aitmpl.com: Claude Mods catalog β‘ 128 β© 9 β» 14 open β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β» reposted by Sam Ortiz Infra Notes @infra-notes.bsky.social Β· 27m Our p99 dropped 40% after moving the cache in front of the auth check. β£ 2 images β₯ 55 β© 3 β» 6 open β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ [ more ] [ refresh ] [ close ]
/bsky opens it (/bsky stop closes it).
app.bsky.feed.getTimeline), newest first. Reposts and replies are marked. Images, videos, link cards and quoted posts are described in one line, not drawn. more loads the next page, up to 120 posts. While the pane is open it refreshes every pollSeconds.#hashtags are sent as richtext facets, so they are clickable on bsky.app. @mentions are sent as plain text, because linking one would take one more request per name to resolve the handle.On Claude Code's mobile surface the pane is read-only: the mobile surface draws no input field.
Why Bluesky
Bluesky's API is free and public. You don't need a developer account or credits: an app password is enough. X was considered first and ruled out. Since April 2026 X's self-serve API no longer allows likes, and reading the home timeline is billed per post (X API changelog, pricing).
Bluesky's documented limits are 3,000 requests per 5 minutes per IP and 5,000 write points per hour, where a post or like costs 3 points. Logging in is limited to 30 times per 5 minutes. The mod logs in once, refreshes the session when the access token expires, and reads at most once per pollSeconds.
Scope and secrets
The mod uses an app password, never your account password. Create one in Bluesky under Settings, Privacy and security, App passwords. You can revoke it there at any time.
The app password and the session tokens are kept in memory and sent only to service, which must be https://. Plain http:// is accepted only for a PDS on your own machine (localhost, 127.0.0.1). Any other http:// value falls back to https://bsky.social. They are never logged, drawn or written to disk. The app password option is stored as sensitive. Posts are held in memory while the pane is open and are not stored either.
The mod reads your timeline, creates posts, creates likes and deletes likes. It does nothing else with your account.
Options
handle: string your handle, e.g. you.bsky.social (required) appPassword: string a Bluesky app password (required, sensitive) service: string your PDS; https://bsky.social unless you self-host limit: number posts per page, 10-50 (default 30) pollSeconds: number refresh interval while open, 30-3600 (default 120) openOnStart: boolean open the pane at session start (default false)
pollSeconds is honoured to the nearest 5 seconds.
Install
npx claude-code-templates@latest --mod integrations/bluesky-feed claude
The mod is written to .claude/skills/bluesky-feed/. Claude Code auto-loads it from there as bluesky-feed@skills-dir once you accept the workspace trust prompt. To load it for one session with hot reload, run claude --plugin-dir .claude/skills/bluesky-feed. claude plugin validate .claude/skills/bluesky-feed prints every event the mod hooks and every $ call it makes. claude plugin test .claude/skills/bluesky-feed runs its tests.
Options are read from user settings (~/.claude/settings.json, never project settings), from --settings <file> or from managed settings. They go under the plugin's full id:
{ "pluginConfigs": { "bluesky-feed@skills-dir": { "options": { "handle": "you.bsky.social", "appPassword": "xxxx-xxxx-xxxx-xxxx" } } } }Requirements. Claude Code 2.1.287 or later, where mods are on by default. The mod is typed against Anthropic's declarations: https://github.com/anthropics/claude-code/tree/main/mods
How to Use & Getting Started
# Step 1: Initialize skill agent setup
npx skills add Bluesky Feed --install-production
python -m pip install -r requirements.txt
codex plugin install Bluesky Feed@latest
export API_KEY=secret_token_key_here
Installation Runbook & Walkthrough Locked
Unlock this skill to reveal complete step-by-step setup guides, terminal commands, configuration recipes, repository links, and interactive installation video walkthroughs.
Unlock full access to Bluesky Feed
Get instant access to complete setup guides, repository source code, and integration assets.
More in mod
View all mod skills βPrompt Cache Control
Prompt-cache meter above the Claude Code prompt: how many tokens each request read from, wrote to and sent past the cache, a live countdown to the cache's expiry, and what to do about it (keep going, compact or clear). The TTL follows Claude Code's own rules for your account (1 hour on a Claude subscription, 5 minutes on an API key, cloud provider or usage credits, plus the TTL variables and setting) and corrects itself from request timing. When Claude Code will compact an idle conversation by itself, it counts down to that too. cache opens a per-turn table.
Jev Model Router
Picks the model and the reasoning effort for each task with TypeSafe's Jev, a System One decision model reached either through TypeSafe's own API or the Vercel AI Gateway. Routes subagent models at agent.spawn and the main loop's effort and model at turn.step, in both directions, falling back to the engine's built-in classifier when no key is set.
Jev Skill Suggestion
Keeps the skill listing out of the context window and lets TypeSafe's Jev, a System One decision model, pick at most one skill per prompt from the skills' descriptions, the way TypeSafe's skill-suggestion cookbook does: one request ranks every skill and asks whether the prompt needs a skill at all, a second re-reads the top three with their SKILL.md and can reject them all. The winner's SKILL.md is attached to the prompt, so the skills can be hidden from the model altogether ( jev-skill-suggestion:setup makes them user-invocable-only and context counts them at 0). Falls back to the engine's built-in classifier when no key is set.