-
Notifications
You must be signed in to change notification settings - Fork 2
Description
It would be great to see the dev.keytrace.* lexicon schemas formally published so they're discoverable and resolvable by other developers and tooling.
Right now the schemas live in this repo but aren't published as com.atproto.lexicon.schema records, which means they can't be resolved via the standard NSID resolution mechanism, won't show up on discovery tools like Lexicon Garden, and can't be validated against by PDS instances.
Publishing lexicons is how the ATProtocol ecosystem achieves interoperability. Once the schemas are published, other apps and services can discover keytrace's record types, validate data against them, and build compatible tooling. It also establishes keytrace.dev as the authoritative namespace owner.
How to do it
The goat CLI makes this pretty painless:
1. Set up DNS for lexicon authority
Create a TXT record at _lexicon.keytrace.dev with the value:
did=did:plc:hcwfdlmprcc335oixyfsw7u3
This links the dev.keytrace.* NSID namespace to the repository that will hold the schemas. Note that if there are deeper namespace levels (e.g. dev.keytrace.identity.*), each unique namespace depth needs its own _lexicon DNS entry — resolvers don't recurse up or down the hierarchy.
2. Validate and lint the schemas
goat lex validate ./packages/lexicon/lexicons/
goat lex lint ./packages/lexicon/lexicons/3. Check DNS resolution
goat lex check-dnsThis will tell you if any NSIDs aren't resolving via DNS yet.
4. Publish
goat account login -u <handle> -p <app-password>
goat lex publish ./packages/lexicon/lexicons/This creates com.atproto.lexicon.schema records in the target repository, with the NSID as the rkey for each schema.
Guides and References
There are some good walkthroughs on this process: