bsky

star 8

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

zzstoatzz By zzstoatzz schedule Updated 1/6/2026

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

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:

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

    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:

    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:

{
  "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:

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

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

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
Install via CLI
npx skills add https://github.com/zzstoatzz/pdsx --skill bsky
Repository Details
star Stars 8
call_split Forks 1
navigation Branch main
article Path SKILL.md
More from Creator