Conda
Recommend AXM extensions from a Conda package and target Conda packages from an extension.
The two-way linking model applies to Conda packages just as it does to other ecosystems. A package recommends through package-author metadata it ships, and an extension targets the package through a Conda purl.
AXM reads the recommendation primarily from an agent-extensions.json sidecar
installed at
$CONDA_PREFIX/share/agent-extensions/<package>/agent-extensions.json. As a
fallback, it reads an agentExtensions key nested under extra in the recipe —
Conda recipes are defined in meta.yaml (or recipe.yaml), whose extra:
section is carried into the installed package's info/about.json. This mirrors
the pattern PHP's Composer uses for its extra field (see
Composer).
Recommend extensions from a package
Section titled Recommend extensions from a packageShip an agent-extensions.json sidecar so it installs to
share/agent-extensions/<package>/agent-extensions.json, with an
agentExtensions list. Each entry is an extension reference
(@owner/<type>/<name>):
// share/agent-extensions/<package>/agent-extensions.json
{
"$schema": "https://axm.sh/schemas/agent-extensions.schema.json",
"agentExtensions": [{ "ref": "@acme/packs/widget-kit" }],
}Alternatively, declare the recommendation in the recipe's extra section, which
AXM reads from the installed package's info/about.json as a fallback:
# meta.yaml
extra:
agentExtensions:
- { ref: "@acme/packs/widget-kit" }Keep recommendations identity-only — omit versionRange. AXM resolves the
reference to the newest matching extension version and pins it in the user's
axm.lock. Prefer recommending a single pack so you keep one stable
reference while its contents evolve. Add a semver versionRange only when your
package genuinely pairs with a bounded major line of the extension.
Target Conda packages from an extension
Section titled Target Conda packages from an extensionOn the extension manifest (skill.json, pack.json, subagent.json, …), add a
packages array with a Conda purl:
// pack.json
{
"packages": [{ "purl": "pkg:conda/widget-kit" }],
}Use the package name as published to its channel as the purl name. A channel
qualifier may be added when the package is not on the default channel, for
example pkg:conda/widget-kit?channel=conda-forge.
Version ranges
Section titled Version rangesDefault to identity-only. Add a VERS
versionRange with the conda scheme only when the extension depends on
package APIs introduced or removed in a known range:
{
"packages": [
{
"purl": "pkg:conda/widget-kit",
"versionRange": "vers:conda/>=1.0.0|<2.0.0",
},
],
}Official status
Section titled Official statusWhen the Conda package recommends an extension through the AgentXM Registry and that extension names the package as a companion via its purl, AXM derives official status for the pair — no extra flag. See Official extensions.
The Conda package-author metadata convention is still being finalized. The
share/agent-extensionssidecar andextra.agentExtensionsfallback locations above mirror the documented sidecar and Composerextraanalogs; thepkg:condapurl is the stable identity an extension uses to target a package. Confirm the current shape against thepolyglot-examplesfixtures before relying on it.