How to use plugin-atoms

Read the catalog over HTTPS

Every artifact is served under stable URLs with correct content-types:

curl https://plugin-atoms.com/exports/catalog.json
curl https://plugin-atoms.com/atoms/interface-contract/storage-provider.json
curl https://plugin-atoms.com/conventions/storage-plugin.json
curl https://plugin-atoms.com/schemas/composition-v1.json

Resolve a plugin convention

A plugin convention lists references to atoms by URI and version. To implement a conformant plugin, fetch each referenced atom and fulfill its requirements: interface contract → capability declarations → permission scopes → lifecycle hooks → trust primitives.

// pseudo-code
const convention = await fetch("/conventions/storage-plugin.json").then(r => r.json());
const refs = convention.references;
const contract = await fetch(uriToUrl(refs.interface_contract.ref)).then(r => r.json());
const capabilities = await Promise.all(
  (refs.capabilities ?? []).map(r => fetch(uriToUrl(r.ref)).then(r => r.json()))
);
const permissions = await fetch(uriToUrl(refs.permission_scope.ref)).then(r => r.json());
const hooks = await Promise.all(
  (refs.lifecycle_hooks ?? []).map(r => fetch(uriToUrl(r.ref)).then(r => r.json()))
);
// validate your plugin implementation against the contract
validatePlugin(myPlugin, { contract, capabilities, permissions, hooks });

Compatibility rules

Rules in /exports/catalog.json (under the rules key) declare predicates over atoms. Example: a semver-compatibility rule may require that a plugin's declared version satisfies a minimum interface-contract version. A convention that violates a require-effect rule is malformed.

Cross-runtime portability

plugin-atoms ships the catalog and its JSON Schema. Runtime adapters that translate plugin conventions into the native plugin API of specific systems (aish, Olympus, universal-bus) are available separately — they translate interface-contract atoms into the runtime's registration call and bind trust-primitive atoms to the runtime's verification chain.