The catalog
The template catalog index, its entries, how it is built with pack catalog, and how pack list reads it.
Since 0.6.0.
What it is
The catalog is a static index of packs (routineos.catalog.v1) built from the bundled templates into site/templates/: one <id>.json pack file per template and an index.json listing them.
Why it exists
People need to see what packs exist, what each does and needs, and get a file they can verify, without running anything. A static index does that, and the RoutineOS MCP serves the same index to Claude.
How it works
routineos.py pack catalog [--check]
routineos.py pack list <index-file-or-url>
pack catalogwritessite/templates/<id>.jsonandsite/templates/index.json.--checkfails when they are stale.pack listprints the entries of an index from a file or an https URL. The index is at most 1 MiB.
The index is {format, templates: [entry]}, sorted by id. Each entry:
| Field | Notes |
|---|---|
id, version, title, summary |
From the pack |
category, maturity |
From the pack |
type, schedule |
From routine.routine |
path |
The pack file, relative to the index |
bytes, sha256 |
Size and hash of the pack file, to verify a download |
connectors |
[{id, label, required}] |
inspiration |
URLs |
JSON Schemas (draft 2020-12) are published next to it: site/templates/schema/pack.v1.schema.json and site/templates/schema/catalog.v1.schema.json.
Worked example
The jobs-watch entry in the built index, shortened:
{"format": "routineos.catalog.v1", "templates": [
{"id": "jobs-watch", "version": "1.0.0", "title": "Jobs watch", "category": "sales", "maturity": "piloted",
"type": "watch", "schedule": "0 22 * * 1,4", "path": "jobs-watch.json", "bytes": 15882, "sha256": "0b7576988a579f12...",
"connectors": [{"id": "web-search", "label": "Web search", "required": true},
{"id": "web", "label": "Web fetch", "required": true},
{"id": "mail", "label": "Mail", "required": false}]}
]}
summary and inspiration are left out above, and the hash is cut short. bytes and sha256 change whenever the pack changes.
Common pitfalls
- Installing without checking
sha256. Compare it when the pack came from somewhere other than the index’s own host. - Editing
site/templates/by hand. Rebuild withpack catalog.