Creating a plugin
This page covers the end-to-end workflow. For individual topics, see How plugins work (naming and discovery), Metadata protocol (the plugin metadata command), and Registry submission (publishing to the official registry).
What you will need
- A plugin binary compiled for supported platforms (
linux-amd64,linux-arm64) - A working
plugin metadatacommand - Semantic versioned releases with SHA-256 checksums
- A public source repository
Reference implementation
The full reference implementation, SDK, and publishing guide live in the plugin-example/ directory:
cd plugin-example
make build
./bin/abstrax-example plugin metadata
./bin/abstrax-example hello --name Mike
See plugin-example/CREATING_A_PLUGIN.md for a step-by-step guide to forking the example into a new plugin.
A minimal embedded example also exists at cli/cmd/abstrax-example/ in the main Abstrax repository.
Local testing without the registry
Build the embedded example from the cli/ directory:
go build -o abstrax-example ./cmd/abstrax-example
./abstrax-example plugin metadata
Install it as a local (non-registry) plugin so Abstrax records it and can remove the link later without deleting your binary:
abstrax plugin install example --path ./abstrax-example --yes
# or:
abstrax plugin install ./abstrax-example --yes
You can also place an abstrax-<name> binary on your PATH or in a plugin directory to test delegation without an install record. See Plugin commands for local install details.
Publishing to the registry
To submit a plugin to the official registry, open a pull request in the useabstrax/plugin-registry repository. See Registry submission for the full process, required metadata, and review expectations. Release manifest format and checksum requirements are documented in Registry API.