kanon -- declarative dependency manager for git-hosted assets

Usage: kanon <command> [options]

Discovery & management:
  search           Discover catalog entries (grouped by source)
  add              Add catalog entries to .kanon
  remove           Remove sources from .kanon
  outdated         Report installable upgrades
  why              Explain why a transitive dep is in the tree

Lifecycle:
  install          Install/sync everything in .kanon
  clean            Remove installed artifacts (use --orphans to also prune unreferenced)
  validate         Validate XML manifests (subcommands: xml, marketplace, metadata)
  doctor           Diagnose .kanon / .kanon.lock health

Manifest repo (catalog author):
  catalog audit    Audit a manifest repo against the standards contract
  repo             Catalog-author repo subcommands (see kanon repo --help)

Shell integration:
  completion       Generate shell completion script

Global options (always available):
  --version                      Print kanon version and exit.
  --help                         Show this and exit.
  --quiet / --verbose            Logging verbosity (mutually exclusive).
  --no-color                     Disable ANSI color (also respects NO_COLOR env var).
  --no-update-check              Skip the PyPI update-available check (or set KANON_SKIP_UPDATE_CHECK=1).
  --home / --store-dir <path>    Shared kanon home root (store + caches). Precedence: flag > KANON_HOME env > ~/.kanon.

Catalog source (required by commands that resolve a manifest repo; see each subcommand's --help):
  --catalog-source <url>@<ref>   Override the KANON_CATALOG_SOURCES env var. No default;
                                 one of --catalog-source or a single KANON_CATALOG_SOURCES
                                 entry is required for search/add/outdated/why/catalog audit.
                                 install is hermetic and does not accept a catalog source.
