Agent skill

bsky

Use this when working with BlueSky - fetching threads, reading posts, creating content. Shows you how to use pdsx MCP tools for the task.

Stars 163
Forks 31

Install this agent skill to your Project

npx add-skill https://github.com/majiayu000/claude-skill-registry/tree/main/skills/data/bsky

SKILL.md

BlueSky with pdsx

Use the pdsx MCP tools (list_records, get_record, create_record, etc.) for BlueSky tasks.

Quick Reference

Task Tool Example
get a post get_record get_record(uri="at://did:plc:xxx/app.bsky.feed.post/abc123")
list someone's posts list_records list_records("app.bsky.feed.post", repo="handle.bsky.social")
get a profile get_record get_record(uri="app.bsky.actor.profile/self", repo="handle.bsky.social")
create a post create_record create_record("app.bsky.feed.post", {"text": "hello"})

Following Threads

Threads span multiple users. Pattern:

  1. Get the root post to see its content and who posted it:

    python
    get_record(uri="at://did:plc:xxx/app.bsky.feed.post/abc123")
    
  2. List the OP's posts to find replies:

    python
    list_records("app.bsky.feed.post", repo="did:plc:xxx")
    

    Look for posts with reply fields pointing back to the thread.

  3. Extract DIDs from the URIs (format: at://DID/collection/rkey)

  4. Query each participant's posts for their contributions to the thread:

    python
    list_records("app.bsky.feed.post", repo="did:plc:other")
    

    Filter the results locally to find posts where reply.root.uri matches the thread root.

Collections

Collection Purpose
app.bsky.feed.post posts
app.bsky.actor.profile profile (rkey is always self)
app.bsky.feed.like likes
app.bsky.feed.repost reposts
app.bsky.graph.follow follows

Post Structure

Posts reference other posts via reply:

json
{
  "text": "reply text",
  "reply": {
    "root": {"uri": "at://did/collection/rkey", "cid": "bafyrei..."},
    "parent": {"uri": "at://did/collection/rkey", "cid": "bafyrei..."}
  }
}
  • reply.root - thread's original post
  • reply.parent - immediate parent being replied to

Creating Posts

Simple:

python
create_record("app.bsky.feed.post", {"text": "hello world"})

Reply (requires both uri AND cid from the parent/root posts):

python
create_record("app.bsky.feed.post", {
    "text": "my reply",
    "reply": {
        "root": {"uri": "at://...", "cid": "..."},
        "parent": {"uri": "at://...", "cid": "..."}
    }
})

Gotchas

  1. strongRef needs uri AND cid - when creating replies, you need both from the parent post
  2. profile rkey is always self - use app.bsky.actor.profile/self
  3. byte indices for facets - links/mentions use UTF-8 byte positions, not character positions

Expand your agent's capabilities with these related and highly-rated skills.

Didn't find tool you were looking for?

Be as detailed as possible for better results