Using goat
Lexicons are designed to be machine-readable and network-accessible. While it is not currently required that a lexicon is available on the network, it is strongly advised to publish lexicon so that a single canonical & authoritative representation is available to consumers of the method.
You can use goat, our command line tool, for creating and publishing Lexicons. The Lexicon-related features are available under goat lex :
- publishing schemas to and synchronizing from the AT network
- diffing, linting, and verifying schema evolution rules
goat can be installed from Homebrew on macOS and Linux:
brew install goat
In a project directory, you can download some existing Lexicons, which will get saved as JSON files in ./lexicons/:
$ goat lex pull com.atproto.repo.strongRef com.atproto.moderation. app.bsky.actor.profile
🟢 com.atproto.repo.strongRef
🟢 com.atproto.moderation.defs
🟢 com.atproto.moderation.createReport
🟢 app.bsky.actor.profile
You can also create a new Lexicon record with goat lex new record:
$ goat lex new record dev.project.thing
$ open ./lexicons/dev/project/thing.json
And eventually publish it with goat lex publish:
$ goat lex publish
🟢 dev.project.thing
Lexicons are published into your own repository like any other record. This means that you'll need to log in with goat when publishing! To do this, use goat account login or set the GOAT_USERNAME and GOAT_PASSWORD environment variables.
Refer to the Lexicon Style Guide for guidance on creating new Lexicons.