skills/a0-development/references/plugins-workflow.md
/a0/plugins/AGENTS.md/a0/helpers/plugins.py/a0/skills/a0-plugin-router/SKILL.md, /a0/skills/a0-create-plugin/SKILL.md, /a0/skills/a0-debug-plugin/SKILL.md, /a0/skills/a0-review-plugin/SKILL.md/a0/AGENTS.mdPlugins are the primary way to extend Agent Zero. A plugin can bundle:
plugin.yamldefault_config.yamlhooks.pyexecute.pytools/api/helpers/prompts/skills/extensions/python/extensions/webui/webui/Use root framework directories only when changing bundled framework behavior itself. For custom or experimental work, use usr/plugins/<plugin>/ unless the task is explicitly to change a bundled plugin.
plugins/ may use plugins.<plugin_name>... imports.usr/plugins/ should use usr.plugins.<plugin_name>... imports.sys.path hacks and symlink-dependent imports.hooks.py runs inside the framework runtime (/opt/venv-a0 in Docker).Every plugin needs plugin.yaml. Runtime fields include:
nametitledescriptionversionsettings_sectionsper_project_configper_agent_configalways_enabledDefaults belong in default_config.yaml. Runtime user settings belong under usr/.
Settings resolution order is project/profile, project, user/profile, user plugin config, then bundled default_config.yaml.
.toggle-1 for ON and .toggle-0 for OFF.always_enabled: true forces ON and disables UI toggles.Plugin routes:
| Route | Purpose |
|---|---|
GET /plugins/<name>/<path> | Static/plugin web assets. |
POST /api/plugins/<name>/<handler> | Plugin API handler. |
POST /api/plugins | Plugin management actions. |
Plugin settings UIs should bind saved values to config.* and modal-only state/actions to context.* through $store.pluginSettingsPrototype.
Plugin UI errors, warnings, success, and info should use the A0 notification system.
a0-plugin-router.a0-create-plugin.a0-debug-plugin.a0-review-plugin or a0-contribute-plugin.plugins/AGENTS.md and any plugin-local AGENTS.md.helpers/ or root code.