Skip to content

Skill catalogues

The catalogue export surface and the local catalogues it reads.

Catalogues and bundle export

Agent Compose exposes the effective selected profile through deterministic text and JSON catalogues. Inspection is read-only. It does not select a role, activate a personality, change authority, or fetch a source.

Catalogue commands

Every person-dependent command accepts --person-source and repeatable --personality-library roots:

agent-compose catalog personalities [--query ] [--json]
agent-compose catalog roles [--json]
agent-compose catalog seats [--role ] [--json]
agent-compose catalog expressions [--json]

Text output is unpaged and follows effective catalogue order. Exact normalized personality slugs win over aliases. An ambiguous alias returns every candidate in catalogue order.

Every JSON command emits:

{
  "format": "agent-compose.catalog.v1",
  "items": []
}

Personality items contain slug, skill, the one-sentence skill description, aliases, color, motif, emblem, form, sound_mark, source_library, digest, and complete role affinities. Role items contain slug, purpose, skill, role-skill provenance, role identity, seats, ordered personalities, favorite_color, and the derived background. Seat items contain role plus the full stable seat object. Expression items are stable strings.

Deterministic export

agent-compose bundle export <bundle-dir> --out <file>.tar.gz verifies the bundle before opening the output. The exporter sorts safe slash-separated relative paths, rejects links and non-regular entries through verification, normalizes gzip and tar metadata, and includes manifest.json. Identical verified trees produce byte-identical archives.

Content-aware diff

agent-compose diff <left-bundle> <right-bundle> reports resolver-decision changes, logical content changes, and changed bundle artifacts. Logical content uses stable IDs and SHA-256 digests from the manifest. The effective role skill, invariant, personality definitions, evaluation assets, copy contract, and compact role identity metadata therefore remain visible even when a change does not alter a resolver decision.

Local skill catalogues

Agent Compose accepts an AOS-emitted local catalogue manifest:

skill_catalog_manifest: ~/.config/aos/catalogues.json

This is the Agent Compose v2 ownership boundary. AOS owns remote selection, Git access, locking, cache freshness, offline fallback, and host paths. Agent Compose opens only the resulting local JSON and never fetches its sources.

Manifest contract

The document must use aos.catalogues.v1:

{
  "format": "aos.catalogues.v1",
  "catalogues": [
    {
      "source": "owner/repo/.agents/skills@main",
      "path": "/absolute/local/catalogue",
      "commit": "0123456789abcdef0123456789abcdef01234567"
    }
  ]
}

Every entry needs a nonempty source, an absolute existing directory, and a full 40- or 64-character Git object ID. Unknown fields, trailing JSON, unsupported formats, missing paths, relative paths, and regular files fail before roster or load-point writes.

Entries retain declaration order. Later catalogue entries win duplicate skill names. Existing unowned files at a native load point still win over every managed catalogue.

Ownership boundary

Agent Compose v2 accepts only the local manifest. It does not fetch catalogue repositories or mutate MCP and approval configuration. AOS owns those environment-facing operations and must complete them before invoking Agent Compose convergence.