From fabrik
Guides building on AT Protocol (atproto/Bluesky): authoring Lexicons, app views, firehose consumption, DIDs/handles, repositories, records, XRPC endpoints, OAuth.
How this skill is triggered — by the user, by Claude, or both
Slash command
/fabrik:atprotoThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
A guide for building on atproto -- the protocol behind Bluesky and the broader atmosphere of interoperable apps. This file is the overview and a router; deep details live in `references/`.
A guide for building on atproto -- the protocol behind Bluesky and the broader atmosphere of interoperable apps. This file is the overview and a router; deep details live in references/.
atproto is a federated protocol where users own a signed, content-addressed data repository that any service can replicate. Apps are mostly app views -- services that consume the network firehose, validate records against a Lexicon schema, index them, and expose a read API. Writes go to the user's PDS via XRPC.
Five concepts to keep in your head:
did:plc:... or did:web:...).com.example.fooBar).Real systems are made of four roles. An app you build is usually #3.
This SKILL.md is intentionally thin. For anything beyond a high-level question, jump to the right reference:
| You are doing | Read |
|---|---|
| Authoring a Lexicon (records, queries, procedures, subscriptions) | references/lexicon.md |
| Lexicon style guide -- naming, conventions, design patterns | references/lexicon-style.md |
| Working with DIDs, handles, AT URIs, NSIDs, TIDs, record keys | references/identity.md |
| Calling XRPC endpoints, handling errors, auth, proxying | references/xrpc.md |
| Reading repos, commits, MSTs, CAR files, the data model | references/repository.md |
Consuming the firehose / subscribeRepos, event framing | references/firehose.md |
| OAuth client implementation specifics | references/oauth.md |
| Designing an app view end-to-end (the most common task) | references/app-view.md |
| Picking a Go package from indigo, code sketches | references/indigo-go.md |
If a question spans several topics, start with app-view.md -- it stitches the others together.
github.com/bluesky-social/indigo). See references/indigo-go.md.These bite people the first time they build anything on atproto:
#identity events.$type is required on records, blobs, and union variants. Strict clients silently drop records without it.indexedAt for ordering.https://atproto.com/specs/atp -- starting point for everything below.
| Spec | URL |
|---|---|
| Lexicon | https://atproto.com/specs/lexicon |
| Data model | https://atproto.com/specs/data-model |
| Repository | https://atproto.com/specs/repository |
| XRPC | https://atproto.com/specs/xrpc |
| Sync / firehose | https://atproto.com/specs/sync |
| Event stream framing | https://atproto.com/specs/event-stream |
| OAuth | https://atproto.com/specs/oauth |
| DIDs | https://atproto.com/specs/did |
| Handles | https://atproto.com/specs/handle |
| NSIDs | https://atproto.com/specs/nsid |
| TIDs | https://atproto.com/specs/tid |
| Record keys | https://atproto.com/specs/record-key |
| AT URI | https://atproto.com/specs/at-uri-scheme |
| Blobs | https://atproto.com/specs/blob |
| Labels | https://atproto.com/specs/label |
| Cryptography | https://atproto.com/specs/cryptography |
| Permissions | https://atproto.com/specs/permission |
| Accounts | https://atproto.com/specs/account |
Worked examples: Statusphere tutorial (TS), indigo services (Go), Bluesky's canonical Lexicons (the best style reference).
npx claudepluginhub maragudk/fabrik --plugin fabrikThis skill should be used when the user is authoring, validating, or invoking AT Protocol lexicons in Rust, TypeScript, or Go — the JSON schema layer that governs record shapes and XRPC methods. Triggers on phrases like "lexicon", "lexicon doc", "LexiconDoc", "NSID", "defs", "$type", "$type dispatch", "main def", "open union", "closed union", "knownValues", "enum", "strongRef", "blob ref", "cid-link", "record-key", "rkey", "tid", "at-uri", "at://<did>/<collection>/<rkey>", "record validation", "assertValidRecord", "ValidateRecord", "validate_record", "query", "procedure", "subscription", "XRPC", "XRPC method", "invoke XRPC", "xrpc call", "params", "parameters", "input.schema", "output.schema", "subscription frame", "MessageFrame", "ErrorFrame", "firehose consumer", "Jetstream", "lex-cli", "gen-api", "gen-server", "lexgen", "cbor-gen", "backward-compat", "breaking change", "add optional field", "closed union evolution", "InvalidRequest", "XRPCError", "XRPCInvalidResponseError", "AuthRequiredError", "RateLimitExceeded". Also triggers on dependency/import names like `atproto-lexicon`, `atproto-client`, `atproto-record`, `atproto-jetstream`, `@atproto/lexicon`, `@atproto/xrpc`, `@atproto/xrpc-server`, `@atproto/api`, `@atproto/lex-cli`, `@atproto/syntax`, `indigo/atproto/lexicon`, `indigo/atproto/data`, `indigo/atproto/syntax`, `indigo/xrpc`, `indigo/api/atproto`, `indigo/api/agnostic`, `indigo/events`, `indigo/lex/util`, or API names like `BaseCatalog`, `Lexicons`, `XrpcClient`, `AtpAgent`, `createServer`, `streamMethod`, `ResolvingCatalog`, `DefaultLexiconResolver`, `RepoGetRecord`, `RepoCreateRecord`, `HandleRepoStream`, `RepoStreamCallbacks`, `LexiconTypeDecoder`, `BlobRef`, `DataValue`. Use this skill to author a new lexicon, run a validator against records (strict on write, lenient on read), call any `com.atproto.*` XRPC method, consume the firehose, stand up an XRPC server, or plan a backward-compatible lexicon change. Covers lexicon document structure, NSID grammar, AT-URI shape inside records, `$type` dispatch, strongRef vs. blob refs, XRPC HTTP/WebSocket wire format, validation strictness modes, and the backward-compat change matrix. Does NOT cover CID parsing/construction (see `atproto-cid`), DID resolution / handle lookup (see `atproto-identity-resolution`), CAR / MST / commit signing at the repo layer (see `atproto-repository`), OAuth token flows / DPoP (see `atproto-oauth`), Bluesky-domain record idioms (`app.bsky.*` facets, richtext, embeds, threadgates, labels — out of scope for this plugin entirely; point users at the Bluesky appview or `@atproto/api` docs).
Builds ActivityPub servers and handles fediverse federation in JavaScript/TypeScript using Fedify. Covers builder pattern, dispatchers, HTTP Signatures, vocab objects, key management, and integrations with Hono, Express, Next.js, and more.
Ingests Bluesky/AT Protocol social graph and content: fetches paginated user posts, maps engagements (likes, reposts, replies, quotes), streams via Firehose.