cremind skill-events
Manage skill event subscriptions, simulate events, tail notifications over SSE, and control listener daemons.
cremind skill-events (alias cremind events) is the CLI for the event-driven side of Cremind skills. A skill (declared by a SKILL.md) can declare events it watches for; when one fires it can spawn a conversation, run a script, or notify the user. This group inspects those subscriptions, tails live events, and controls the listener daemons that emit them. It is the terminal counterpart to the Skill Events page in the web UI.
CREMIND_TOKEN is required for every subcommand, and all of them accept the root-level --json flag.
Subcommands
| Subcommand | Purpose |
|---|---|
list | List skill event subscriptions for the active profile. |
delete <id> | Remove a subscription so its events stop being routed. |
events <skill> | List the events a skill declares (read from its SKILL.md). |
simulate <id> | Drop a Markdown file into a subscription's watched folder to fire an event by hand. |
stream | Tail the server-wide skill-events admin snapshot over SSE. |
notifications | Tail the active profile's notifications over SSE, with a --since resume cursor. |
listener-status <skill> | Check whether a skill's listener daemon is alive. |
listener-start <skill> | Start (or resume) a skill's listener daemon as an autostart process. |
Inspecting and subscribing
See what a skill exposes, then confirm a subscription appears. Subscriptions are created when a skill is bound to a conversation in the web UI — the CLI has no subscribe subcommand:
cremind skill-events events daily-brief
cremind skill-events listID SKILL EVENT_TYPE CONVERSATION CONV_TITLE
sub_19a8 daily-brief morning c_82bc Daily Brief
sub_4f02 review-pr pr-openedStreaming events and notifications
Both stream and notifications hold a long-lived SSE connection and print one line per event; Ctrl-C exits cleanly. In default mode each line is [<event_type>] <raw JSON>; with --json it is the raw payload only, ready for jq:
cremind skill-events notifications --json | jq '.summary'notifications accepts --since <millis> (Unix milliseconds) to backfill everything recorded at or after that timestamp before going live, so you can resume after a disconnect without losing events.
Simulating an event
simulate reads a Markdown body from stdin and writes it into a subscription's watched folder; the skill's listener then routes it through the normal pipeline — handy for developing event handlers:
cremind skill-events simulate sub_19a8 <<'EOF'
# Morning brief
- Top issue: cremind#42
- Calendar: 09:30 standup
EOFThe listener for that skill must be running for the dropped file to be picked up.
Listener daemons
Check liveness, then start the daemon if it is down. listener-start is idempotent — a second call against a running listener returns the existing process and autostart ids without duplicating:
cremind skill-events listener-status daily-brief
cremind skill-events listener-start daily-briefprocess_id p_9d72
autostart_id a_8c14The listener is backed by the autostart process machinery, so it relaunches at server boot. Manage it further with cremind proc (proc autostart list/delete).
If a skill should have fired but no notification arrived, the usual causes are: the listener is down (listener-status), the subscription is bound to a deleted conversation, or the skill's declared event_type changed and the old subscription no longer matches.