Skip to main content

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 package

Ship 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 extension

On 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.

Default 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",
    },
  ],
}

When 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-extensions sidecar and extra.agentExtensions fallback locations above mirror the documented sidecar and Composer extra analogs; the pkg:conda purl is the stable identity an extension uses to target a package. Confirm the current shape against the polyglot-examples fixtures before relying on it.