theme check
Lints the local templates for mistakes the server cannot catch.
The API already refuses invalid markup, so this covers the other kind: a binding that is perfectly
legal and renders the wrong thing, with no error anywhere.
Errors exit non-zero so this works as a pre-commit or CI gate. Warnings do not fail the run unless
you pass --strict. It lints the draft, because that is what push sends.
theme package
Packs the templates and the builder config into one zip for handoff. The local state file is
excluded: it records which revision your checkout last saw, which is true of your machine and
false of anyone else’s.
Packaging the same theme twice produces byte-identical output, so the archive can be checksummed
and cached.
theme list
Shows each template’s name, whether it is published, whether it has unpublished changes, and its
size. Live-and-edited-since is its own state rather than being collapsed into “published”, because
the unpublished work is usually what you are looking for.
webhook listen
Watches for new deliveries and re-sends each one to a URL on your machine, signed exactly as the
platform signs it, so you can build a receiver without a tunnel.
The forward carries the real webhook-id, webhook-timestamp, webhook-event-type and
webhook-signature headers, with the signature computed over id.timestamp.payload the same way
a production delivery is. Your receiver’s own verification is what gets exercised.
Pass --secret. Without the endpoint’s signing secret this forwards unsigned, and any
receiver that verifies will reject every event, which looks like a broken receiver rather than a
missing flag. The secret is shown once when the endpoint is created.
Reading a payload needs the topic’s own read scope as well as read_webhooks: the body of an
orders/paid delivery is order data, so it needs read_orders. A 403 names the scope to add, and
the run continues, because other topics may still be readable.
The existing backlog is skipped by default. Replaying it into a fresh receiver on every start
would fire yesterday’s orders at a handler that may act on them; pass --skip-backlog=false if
that is what you want.
status
Reports whether the API is answering, which build is deployed, and whether a newer CLI has been
released. Exits non-zero when the API is unhealthy, so a monitor can gate on it.
This is about the platform. For a problem with your own setup, mercemur doctor checks your
config, key and clock instead.