Claude-skill-registry bsky
Use this when working with BlueSky - fetching threads, reading posts, creating content. Shows you how to use pdsx MCP tools for the task.
install
source · Clone the upstream repo
git clone https://github.com/majiayu000/claude-skill-registry
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/bsky" ~/.claude/skills/majiayu000-claude-skill-registry-bsky && rm -rf "$T"
manifest:
skills/data/bsky/SKILL.mdsource content
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 | | |
| list someone's posts | | |
| get a profile | | |
| create a post | | |
Following Threads
Threads span multiple users. Pattern:
-
Get the root post to see its content and who posted it:
get_record(uri="at://did:plc:xxx/app.bsky.feed.post/abc123") -
List the OP's posts to find replies:
list_records("app.bsky.feed.post", repo="did:plc:xxx")Look for posts with
fields pointing back to the thread.reply -
Extract DIDs from the URIs (format:
)at://DID/collection/rkey -
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
matches the thread root.reply.root.uri
Collections
| Collection | Purpose |
|---|---|
| posts |
| profile (rkey is always ) |
| likes |
| reposts |
| 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..."} } }
- thread's original postreply.root
- immediate parent being replied toreply.parent
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
- strongRef needs uri AND cid - when creating replies, you need both from the parent post
- profile rkey is always
- useselfapp.bsky.actor.profile/self - byte indices for facets - links/mentions use UTF-8 byte positions, not character positions