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.