Guide for publishing an Agent Zero plugin to the community Plugin Index (a0-plugins repo). Covers GitHub repo setup, index.yaml creation, CI validation rules, and PR submission. Use when the user wants to share, publish, submit, or contribute a plugin to the Plugin Hub so other Agent Zero users can find and install it.
This skill guides publishing a plugin to the Plugin Index, making it discoverable and installable by all Agent Zero users.
Before starting, verify:
/a0/usr/plugins/<name>/a0-review-plugin first:
"I recommend running a full review before contributing. Should I do that now?"
git / gh CLI availableBefore doing any git work, ask:
"Do you want me to handle the git operations (fork, branch, commit, PR) automatically, or would you prefer I give you the steps to run manually?"
gh and git commands via the code execution toolThe plugin must live in its own standalone GitHub repository with plugin contents at the repo root (not inside a subfolder).
your-plugin-repo/ <- GitHub repository root
├── plugin.yaml <- runtime manifest (REQUIRED)
├── README.md <- strongly recommended (shown in Plugin Hub detail view)
├── LICENSE <- REQUIRED for Plugin Index submission (place at repo root)
├── default_config.yaml <- optional
├── api/ <- API handlers
├── tools/ <- agent tools
├── helpers/ <- shared Python logic
├── prompts/ <- prompt templates
├── agents/ <- agent profiles
├── conf/ <- config files (e.g. model_providers.yaml)
├── extensions/ <- lifecycle, UI, and implicit @extensible hooks
└── webui/ <- frontend pages, stores, components
Inside extensions/, use python/<point>/ for named lifecycle hooks, python/_functions/<module>/<qualname>/<start|end>/ for implicit @extensible hooks, and webui/<point>/ for UI breakpoints. Do not publish the retired flattened python/<module>_<qualname>_<start|end>/ form.
plugin.yaml requirementsThe remote plugin.yaml must include a name field - this is validated by CI and must exactly match the index folder name: