Skip to content
RoutineOS
Esc
↑↓navigate↵open⌘Jpreview
On this page

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 catalog writes site/templates/<id>.json and site/templates/index.json. --check fails when they are stale.
  • pack list prints 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 with pack catalog.

Was this page helpful?