Agent Plugins
Agent Plugins
Mini-A can consume Agent Plugins 1.0.0: a portable directory format that packages skills and MCP servers together. Mini-A treats a loaded plugin as additional skill roots and ordinary MCP connections, so there is no separate plugin runtime to learn.
Plugin layout
Each plugin has a required plugin.json manifest and may include skills/ and mcp.json:
my-plugin/
├── plugin.json
├── skills/
│ └── my-skill/
│ └── SKILL.md
└── mcp.json
plugin.json must include the 1.0 schema URL and a plugin name:
{
"$schema": "https://agent-plugins.org/schemas/1.0.0/plugin.schema.json",
"name": "my-plugin",
"version": "1.0.0"
}
Loading plugins
Use explicit directories with plugins=, or point Mini-A at a root that contains one level of plugin directories:
# Load named plugin directories
mini-a goal="use the available plugin skills" \
plugins="~/plugins/reports,~/plugins/issue-tracker"
# Discover every plugin directly under this root
mini-a goal="summarize this repository" pluginsroot=~/team-plugins
pluginsroots= accepts additional comma-separated roots. Without an explicit root, Mini-A discovers plugins in ~/.openaf-mini-a/plugins (adjusted by homedir=).
Plugins compose with extraskills and mcp=. Their skill directories load after built-in and extra skill directories, so a plugin cannot shadow an existing skill name.
MCP servers
An optional mcp.json declares named servers. Mini-A supports stdio, streamable-http, and deprecated sse transports.
{
"$schema": "https://agent-plugins.org/schemas/1.0.0/mcp.schema.json",
"mcpServers": {
"my-server": {
"type": "stdio",
"command": "./server.sh",
"args": ["${PLUGIN_ROOT}/data"],
"env": { "MODE": "prod" },
"cwd": "${PLUGIN_DATA}"
}
}
}
For every plugin stdio server, Mini-A sets PLUGIN_ROOT (the canonical plugin directory) and PLUGIN_DATA (a managed persistent directory at ~/.openaf-mini-a/plugin-data/<plugin-name>/). Only these placeholders are expanded in arguments, environment values, and cwd. A working directory must stay within one of these boundaries; ./ paths are plugin-root-relative. Commands must be a bare executable name or a ./-relative executable, with arguments declared separately.
Remote plugin servers must use HTTPS, except for localhost HTTP. At present, only an Authorization: Bearer <token> header is passed through; other custom headers are dropped with a warning.
Compatibility and failures
Full stdio cwd and environment support requires an OpenAF runtime with native MCP pwd/envs support. Older runtimes still launch servers, but ignore those two settings.
Mini-A isolates plugin failures: an invalid manifest skips only that plugin; an invalid mcp.json leaves its skills usable; and an invalid server entry skips only that server. Warnings are logged so a broken extension does not prevent the rest of the agent configuration from starting.