--- name: model-catalog description: The model catalog (library/downloads.py) — one Asset row per weight (repo, files, destination, installed probe), packs, resolve() name order, and the rule that loaders import their default paths from here. Load before adding or moving a weight, changing a loader's default path, adding a download target, or touching a GUI Models panel. --- # Model catalog `library/downloads.py` is the single catalog: **one `Asset` per weight** — repo · files · destination · offline installed-probe. It holds the rows only the trainer needs (the Anima half) and concatenates `anime_tools.downloads` for the curation half. The package's own catalog skill is `../anime_tools/.claude/skills/model-catalog/SKILL.md`. **Add a weight by adding a row, not a command.** `make download-*`, `make download-list` and both GUI Models panels read the catalog; `resolve()` takes a name as **legacy alias → pack id → row id** (so `pe` keeps its historical meaning), and raises `KeyError` naming the unknown token. **Loaders import their default paths from here** rather than spelling them. ## Packs Display order is `TRAINER_PACKS` then the package's: - trainer: `anima` (DiT + Qwen3-0.6B TE + Qwen-Image VAE) · `pe` (PE-Core-L14-336) · `cjk` (vocab pack, on by default since v2) - package: `tagger` · `tags` · `masking` · `ocr` · `grouping` `HIDDEN_PACKS` is the seam for a package pack the trainer does not offer (not listed, resolved or downloaded here). It is currently **empty** — keep it as the mechanism rather than filtering rows. ## Commands ```bash make download-models # first-run set: DiT, TE, VAE, PE, CJK vocab pack, tagger, tag DB make download-list # every row grouped by pack: installed / MISSING, repo, destination make download-model ocr # by pack, legacy alias, or row id ``` SAM3 (`masking`) and OCR are **opt-in** — not in the first-run set. `make download-anima-variant ARGS=Anima-2.9B-preview-v1` fetches a depth variant (no args lists them).