Use this when working with BlueSky - fetching threads, reading posts, creating content. Shows you how to use pdsx MCP tools for the task.
/plugin marketplace add zzstoatzz/pdsx/plugin install pdsx@pdsxThis skill inherits all available tools. When active, it can use any tool Claude has access to.
Use the pdsx MCP tools (list_records, get_record, create_record, etc.) for BlueSky tasks.
| 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"}) |
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 and filter for replies to extract participant DIDs:
list_records("app.bsky.feed.post", repo="did:plc:xxx", _filter="[?reply].reply.parent.uri")
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="[?reply.root.uri=='at://did:plc:xxx/app.bsky.feed.post/abc123']")
| 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 |
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 postreply.parent - immediate parent being replied toSimple:
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": "..."}
}
})
_filterThe _filter parameter uses JMESPath:
# just the text from posts
list_records(..., _filter="[*].text")
# reply URIs only
list_records(..., _filter="[?reply].reply.parent.uri")
# posts with specific text
list_records(..., _filter="[?contains(text, 'keyword')]")
self - use app.bsky.actor.profile/selfCreating algorithmic art using p5.js with seeded randomness and interactive parameter exploration. Use this when users request creating art using code, generative art, algorithmic art, flow fields, or particle systems. Create original algorithmic art rather than copying existing artists' work to avoid copyright violations.
Applies Anthropic's official brand colors and typography to any sort of artifact that may benefit from having Anthropic's look-and-feel. Use it when brand colors or style guidelines, visual formatting, or company design standards apply.
Create beautiful visual art in .png and .pdf documents using design philosophy. You should use this skill when the user asks to create a poster, piece of art, design, or other static piece. Create original visual designs, never copying existing artists' work to avoid copyright violations.