This guide helps contributors decide what to share, where to share it, and what must stay private.
Use the main agent-zero contribution flow when the change directly improves the framework itself, for example:
- a bugfix in
webui/,helpers/,api/,tools/,extensions/, ordocs/ - a test that belongs with core framework behavior
- documentation for built-in functionality
If yes:
- Fork
agent0ai/agent-zeropublicly. - Add
upstreamto your local clone. - Sync from
upstream/main(or the currently used upstream target branch). - Create a focused branch.
- Open the PR across forks.
See ../guides/contribution.md for the detailed workflow.
Use a dedicated public plugin repository when the work is a standalone plugin that users can install independently.
Typical signals:
- it lives cleanly under
usr/plugins/<plugin_name>/ - it has its own
plugin.yaml - it can evolve independently from the core repository
- it should be discoverable in the Plugin Hub
If yes:
- Put the plugin contents at the root of its own repository.
- Include
plugin.yaml,README.md, andLICENSE. - Test it locally from
usr/plugins/. - Submit its
index.yamlentry toagent0ai/a0-plugins.
See plugins.md for the Plugin Index rules and packaging details.
Use the skills workflow when the work is mainly procedural knowledge in SKILL.md form.
Typical signals:
- it teaches the agent how to perform a task
- it is portable across Agent Zero, Cursor, Claude Code, or Copilot-style ecosystems
- it lives naturally under
usr/skills/during development
If yes:
- Develop it locally in
usr/skills/. - Validate the structure and examples.
- Move it into
skills/for an Agent Zero contribution, or publish it in a dedicated public repository/collection.
See contributing-skills.md for the authoring standard.
Keep the work out of public forks and upstream PRs when it includes any of the following:
- credentials, tokens, API keys,
.envfiles, or customer secrets - local-only experiments, snapshots, or temporary branch archaeology
- customer-specific logic or data
- machine-specific configuration, caches, local virtual environments, or editor debris
- plugin or skill prototypes that are not ready for public review
If yes, keep it in a private repository, in usr/, or outside the public contribution path entirely.
- Use a public, pushable fork for any branch that may become the head branch of an upstream PR.
- Keep the source branch alive until the PR is merged or intentionally closed.
- Search open and recently closed upstream PRs before opening a new one.
- Choose the base branch from current upstream practice; do not hardcode
developmentif active comparable PRs targetmain. - Record the exact tests you ran.
GitHub lets you allow maintainers to edit a branch on your fork.
If the fork branch contains GitHub Actions workflows, GitHub may show "Allow edits and access to secrets by maintainers". Treat this carefully:
- only enable it when you are comfortable with maintainers editing workflow files on that branch
- do not leave sensitive values or private automation in a fork branch you plan to share publicly
.env.venv/- editor settings such as
.vscode/settings.json - temporary notes, scratch files, or machine-specific backups
- unrelated formatting churn
- private reports or internal strategy docs
For teams or maintainers juggling both private R&D and public contributions, this split keeps things sane:
-
Private workspace or backup repository
- plugin experiments
- customer-specific work
- snapshots and branch archaeology
- internal notes and strategy
-
Clean fix-only clone for upstream-facing work
- only branches that may become public PRs
- synced from upstream
- no snapshots, no unrelated experiments
-
Public fork used only for PR head branches
- only focused, reviewable public branches
- no internal scratch branches
- Confirm the work belongs in the chosen publication path.
- Remove secrets and local-only artifacts.
- Check for overlapping upstream work.
- Make sure the diff is narrow and reviewer-friendly.
- Verify the test evidence you plan to mention.
- Make sure the branch source is public if it will back an upstream PR.