Abstrax

Metadata protocol

Every plugin must support:

abstrax-<name> plugin metadata

This must print JSON only to stdout (protocol version 1):

{
  "protocol_version": 1,
  "name": "example",
  "display_name": "Example Plugin",
  "description": "Reference plugin and SDK example for Abstrax",
  "version": "0.1.0",
  "requires_abstrax": ">=0.1.0",
  "homepage": "https://plugins.useabstrax.com/plugins/example",
  "commands": [
    {
      "name": "hello",
      "description": "Print a greeting"
    },
    {
      "name": "project",
      "description": "Read project information from Abstrax"
    },
    {
      "name": "version",
      "description": "Display plugin version information"
    }
  ]
}

Required fields

Field Description
protocol_version Must be 1
name Plugin name (matches the abstrax-<name> binary suffix)
display_name Human-readable name
description Short description
version Plugin semver
requires_abstrax Semver constraint for the Abstrax CLI
commands List of subcommands, each with name and description

Abstrax reads this metadata after installation and when you run abstrax plugin info.

Semantic versioning

Plugin versions must use valid semantic versions. Abstrax compatibility is expressed as a semver constraint in requires_abstrax (for example >=0.1.0).

The plugin name must match the abstrax-<name> binary suffix. See How plugins work.