Extending Magpie

July 7, 2026 · View on GitHub

Magpie is built to be extended without forking it. This page is the map: what you can extend, where an extension can live, and who typically owns each kind.

If you only remember one rule: extensions are discovered and wired in deliberately, never auto-installed — per PRINCIPLES.md §13, indexes and catalogs exist for discovery, not installation.

What you can extend

EntityWhat it isReference
Skilla workflow the agent followsPRINCIPLES.md §14, write-skill
Skill sourcea trusted external repo a skill/family is pulled fromdocs/skill-sources/, RFC-AI-0006
Tool / tool adapterthe only layer that knows a vendor — a backend behind a capability contractvendor-neutrality § Tool adapters, adapters/authoring.md
Capability contractthe stable verb set a skill depends on; the seam adapters plug intotools/cve-tool/ and siblings
Organizationgovernance vocabulary + backend bundle + identity, shared by an org's projectsorganizations/README.md
Project configone adopter's concrete valuesprojects/_template/
User configone person's preferences (handle, governance membership, local clone paths)AGENTS.md § user.md

Where an extension can live (the three homes)

Every extension — a skill, an adapter, or a whole organization — has the same three possible homes. They are not mutually exclusive: start local, upstream later.

HomeWhereTravels withLicenceBest when
In-tree (upstream)a PR into apache/magpiethe framework, to every adopterApache-2.0 (§17)the extension is broadly useful — other projects share the backend/org
In your adopter repo<project-config>/ + <project-config>/.apache-magpie-overrides/ (committed)your repoyoursit is specific to your project, or not ready to upstream
External (another repo)a repo you (or a community) maintain, referenced from confignothing automatically — you vendor/clone it in deliberatelythe author'sa third party maintains it, or it is shared across your repos but not in Magpie

The middle home is the framework's snapshot + override model (§13): the framework is a gitignored snapshot; your additions and tweaks are committed agent-readable markdown alongside it. The external home is the same act of wiring-in as the middle one — you just keep the source in another repo and the registry lists it for discovery.

How each entity resolves across homes

  • Skills — framework skills come from the snapshot; project tweaks live in .apache-magpie-overrides/<skill>.md (consulted at run time); a wholly new skill you keep can live in your repo's agent-skill dir. A skill or skill-family maintained in another repo can also be pulled in from a trusted external source — a skills/<name>/source.md redirect that names a pinned, verified source the adopter has vouched for, fetched into the snapshot and wired in like a framework skill. This is the one external home that installs rather than merely being referenced (see PRINCIPLES.md §13 and docs/skill-sources/).
  • Tools / adapters — selected per capability in <project-config>/project.md Tools enabled. The selected adapter may be an in-tree tools/<name>/, a directory you keep in your adopter repo, or one you vendored from an external repo. Skills never branch on the choice. See adapters/authoring.md.
  • Organizationsorganization: <org> in project.md resolves to an in-tree organizations/<org>/ first; if your organization is not in-tree, it resolves to an adopter-local org adapter you keep under <project-config>/.apache-magpie-overrides/organizations/<org>/ (copied from your own or another repo). Either way the resolution chain is project.md → organization → framework default.

Who extends what

A project (adopter)

Owns its <project-config>/: identity, per-skill config, and .apache-magpie-overrides/ for behaviour tweaks. A project may also keep a local organization or adapter in its override layer when no in-tree one fits — and upstream it later with setup-override-upstream.

An organization (foundation / company / collective)

Owns an organization adapter — the defaults every project under it inherits (CVE authority, mail/forwarder/archive backends, governance vocabulary, identity + logo). It can ship that adapter in-tree (contributed to apache/magpie, so all its projects and others reuse it) or maintain it in the organization's own repo and have member projects point at it. See organizations/README.md.

An individual

Owns their user.md (per-user preferences, resolved first-match across $APACHE_MAGPIE_USER_CONFIG~/.config/apache-magpie/user.md<project-config>/user.md). An individual can also author any skill, adapter, or organization above and choose a home for it — contribute it upstream, keep it in their project's override layer, or maintain it in a personal repo and link it.

Contributing an extension back

Whatever the home you start with, upstreaming is one PR away and benefits every adopter:

See also