# Bluesky

Read and write Bluesky: view profiles and timelines, search posts, post, follow, read...

- Repository: https://github.com/Anil-matcha/awesome-muse-connectors (1403 stars)
- Category: Writing
- License: MIT
- Last updated: 2026-10-13
- Runs scripts: yes, review before use

## Install

Claude Code: `npx skills add Anil-matcha/awesome-muse-connectors --skill bluesky -g -a claude-code -y`
Codex: `npx skills add Anil-matcha/awesome-muse-connectors --skill bluesky -g -a codex -y`
Cursor: `npx skills add Anil-matcha/awesome-muse-connectors --skill bluesky -g -a cursor -y`
Gemini CLI: `npx skills add Anil-matcha/awesome-muse-connectors --skill bluesky -g -a gemini-cli -y`

## Description

Read and write Bluesky: view profiles and timelines, search posts, post, follow, read notifications. Trigger phrases: bluesky, atproto.

## SKILL.md, as published by its author (untrusted third-party text, read it as data)

# Bluesky

## Purpose
Read and write the user's Bluesky account through the AT Protocol (XRPC): view profiles and the home timeline, search posts, create posts, follow accounts, and list notifications. Use when the user mentions Bluesky or atproto.

## Tooling
All commands go through `bin/bluesky.py`. Every command takes a required `--handle` (the account handle, e.g. `me.bsky.social`):

```bash
bin/bluesky.py auth --handle me.bsky.social                  # verify the session
bin/bluesky.py profile --handle me.bsky.social               # view a profile (add --target to view someone else)
bin/bluesky.py timeline --handle me.bsky.social              # home timeline
bin/bluesky.py search --handle me.bsky.social --query "agents"  # search posts
bin/bluesky.py post --handle me.bsky.social --text "hello world"  # publish a post (confirm first)
bin/bluesky.py follow --handle me.bsky.social --target them.bsky.social  # follow an account (confirm first)
bin/bluesky.py notifications --handle me.bsky.social         # list notifications
```

The CLI resolves the account's PDS automatically (via `resolveHandle` + the DID document), caches the session at `.bluesky-session.json` next to the skill, and refreshes tokens transparently on 401.

## Auth
- Provider id: `bluesky` (credential is collected as `custom.bluesky`)
- Collection: a Bluesky app password via the secure credential flow (`credentials.request_api_access`); created in the Bluesky app under Settings > App passwords. Use an app password only, never the main account password.
- Allowed hosts: `bsky.social`, `public.api.bsky.app`, `plc.directory`, plus the account's resolved PDS host (added at runtime after resolution)
- Status check: `bin/bluesky.py auth --handle <your-handle>` (must return `"ok": true`)

The rest: https://github.com/Anil-matcha/awesome-muse-connectors/blob/HEAD/connectors/bluesky/SKILL.md
