By zentered
Skills for building on the AT Protocol (Bluesky) — OAuth, identity, and more.
This skill should be used when the user asks to "resolve a Bluesky handle", "look up a DID", "find a PDS endpoint", "discover an auth server", "work with ATProto identity", "query XRPC endpoints", "what is did:plc vs did:web", "get a user's profile", "build on AT Protocol", "create a Bluesky bot", "how does federation work", or mentions AT Protocol architecture, DID documents, handle resolution, PDS discovery, plc.directory, ATProto scopes, XRPC NSIDs, Bluesky API structure, data repositories, feed generators, labelers, or app views. Covers identity, discovery, data model, federation architecture, and API fundamentals — not OAuth flows (see atproto-oauth for authentication).
This skill should be used when the user asks to "define a lexicon", "create a lexicon schema", "write a record type", "design an XRPC endpoint", "publish a lexicon", "install a lexicon", "generate types from a lexicon", "validate a lexicon", "add a query endpoint", "add a procedure endpoint", "what is a lexicon", "how do lexicon types work", "use goat to publish", "use @atproto/lex", or mentions NSID naming, lexicon evolution rules, ATProto schema design, record key types, lexicon style guide, knownValues vs enum, open vs closed unions, or lexicon codegen. Covers schema definition, type system, naming conventions, publishing, and installation — for identity and OAuth, see atproto-domain and atproto-oauth.
This skill should be used when the user asks to "implement ATProto OAuth", "add Bluesky login", "debug DPoP proofs", "set up pushed authorization requests", "configure PKCE for ATProto", "fix ATProto OAuth errors", "set up client metadata", "debug token exchange", "authenticate with Bluesky", "refresh token keeps invalidating", or mentions DPoP nonce issues, client assertions, base64url padding errors, OAuth callback verification, confidential client setup, or OAuth for Bluesky/AT Protocol apps. Covers the full OAuth flow — for identity resolution and handle lookups, see atproto-domain instead.
Own this plugin?
Verify ownership to unlock analytics, metadata editing, and a verified badge. GitHub access is read-only (username + org membership).
Sign in to claimOwn this plugin?
Verify ownership to unlock analytics, metadata editing, and a verified badge. GitHub access is read-only (username + org membership).
Sign in to claimBased on adoption, maintenance, documentation, and repository signals. Not a security audit or endorsement.
A Claude Code plugin with skills for building on the AT Protocol (Bluesky).
AT Protocol fundamentals — identity resolution, DIDs, handle lookups, PDS discovery, XRPC endpoints, and scopes.
Triggers on: "resolve a Bluesky handle", "look up a DID", "find a PDS endpoint", "how does ATProto identity work", etc.
Lexicon schema language — schema structure, type system, NSID naming, record types, XRPC endpoints, evolution rules, publishing, and codegen (goat, @atproto/lex).
Triggers on: "define a lexicon", "create a lexicon schema", "design an XRPC endpoint", "generate types from a lexicon", "publish a lexicon", "how do lexicon types work", etc.
OAuth implementation guide — PAR, DPoP, PKCE, client metadata, token exchange, and common pitfalls (including the base64url padding trap).
Triggers on: "implement ATProto OAuth", "add Bluesky login", "debug DPoP proofs", "fix ATProto OAuth errors", etc.
From your terminal:
claude plugin marketplace add https://github.com/zentered/atproto-skills
claude plugin install atproto-skills
Or from within a Claude Code session:
/plugins marketplace add https://github.com/zentered/atproto-skills
/plugins install atproto-skills
30 test prompts evaluated against skill descriptions to verify correct skill triggers. See tests/trigger-evals.yaml for cases and tests/trigger-eval-results.md for full results.
| Skill | Cases | Pass Rate |
|---|---|---|
| atproto-oauth | 10 | 100% |
| atproto-domain | 10 | 100% |
| atproto-lexicon | 10 | 100% |
| Total | 30 | 100% |
6 prompts answered by a baseline LLM (no skills) then compared against skill content. Measures whether skills prevent real developer harm. See tests/quality-eval-results.md for full analysis.
| Prompt | Skill | Risk Without Skill | Key Gap |
|---|---|---|---|
| "required a client_assertion" error | atproto-oauth | HIGH | Misdiagnoses — real issue is base64url padding |
| Local dev OAuth setup | atproto-oauth | HIGH | Recommends ngrok; wrong client_id format |
| Handle→DID in CF Workers | atproto-domain | HIGH | cloudflare-dns.com unreachable in Workers |
| Store handles or DIDs? | atproto-domain | LOW | Baseline gets it right |
| enum vs knownValues | atproto-lexicon | LOW-MED | Directionally correct, soft on breaking contract |
| Publishing a lexicon | atproto-lexicon | HIGH | Wrong model — no path to publication |
4 of 6 prompts are high-risk without skills (67%) — the skills prevent real debugging dead-ends and broken implementations.
Last evaluated: 2026-03-30 with claude-sonnet-4-6.
Add a new skill:
mkdir -p skills/skill-name/referencesSKILL.md with YAML frontmatter (name, description with trigger phrases)references/tests/trigger-evals.yaml./tests/validate-skills.sh to verifyMIT
Built by Zentered
npx claudepluginhub zentered/atproto-skills --plugin atproto-skillsATProtocol-specific skills for Claude Code: lexicon design, DID resolution, XRPC, DAG-CBOR, MST/repo inspection, OAuth flows, record parsing. Use when the user is working with Bluesky, at:// URIs, com.atproto.*, app.bsky.*, or any AT Protocol concept.
Skill for working with the Jacquard AT Protocol library for Rust — teaches correct BosStr usage, borrow-first patterns, and common pitfalls
Living Ontology for Claude Code - Captures and reuses knowledge across sessions
Build authentication systems with JWT, OAuth2, and API keys
Research-backed, opinionated guidance for designing world-class RESTful APIs — routes, naming, errors, auth, caching, webhooks, and more, distilled from Stripe, GitHub, Twilio, Shopify, Google, and Microsoft
Harness-native ECC operator layer - 67 agents, 271 skills, 92 legacy command shims, reusable hooks, rules, selective install profiles, and production-ready workflows for Claude Code, Codex, OpenCode, Cursor, and related agent harnesses