Set a one-time reminder to be delivered via DM at a future time
Set a one-time reminder that will be delivered to the user via direct message (DM) at the specified time.
--scheduled-at parameter MUST be a valid ISO 8601 UTC timestamp (e.g., 2025-01-15T10:00:00Z). You are responsible for converting the user's natural language time expression to this format.Two-step flow — the reminder text MUST NOT appear on the command line.
Write the reminder text to a payload file under the session staging directory using your edit/write tool:
$TMPDIR/$SESSION_ID/reminder.md
The $TMPDIR / $SESSION_ID tokens in that path are expanded by the ACP path boundary, so the write is approved and the text bytes are preserved verbatim (no shell expansion). $TMPDIR/$SESSION_ID/ is the per-spawn form of the staging directory; in shared-process deployments the staging directory is shown in your system prompt and the script resolves it automatically.
Invoke the script with the payload file path:
${HOME}/.agents/skills/set-reminder/scripts/set-reminder.ts \
--session-id "$SESSION_ID" \
--scheduled-at "2025-01-15T10:00:00Z" \
--message-file "$TMPDIR/$SESSION_ID/reminder.md"
WARNING: Never put message content on the command line. The legacy --message "..." / --message=... flags are REMOVED: the shell expands $VAR in them, which corrupts the stored reminder text.
| Parameter | Required | Description |
| ---------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| --session-id | Yes | Use the session id rendered in your system prompt. $SESSION_ID works only in per-spawn deployments; in shared-process mode it is not set and the skill library resolves the owning session automatically — a mismatched value is never honored |
| --scheduled-at | Yes | ISO 8601 UTC timestamp for when the reminder should fire |
| --message-file | Yes | Path of the payload file containing the reminder text (must be under $TMPDIR/$SESSION_ID/) |
If the script fails, read the JSON error on stderr. It contains the fix. Common codes: SKILL_LEGACY_FLAG (you used the removed --message flag — stage the text in $TMPDIR/$SESSION_ID/reminder.md and use --message-file), SKILL_MISSING_PAYLOAD (no --message-file given), SKILL_PAYLOAD_OUT_OF_BOUNDS (payload path outside $TMPDIR/$SESSION_ID/), SKILL_PAYLOAD_NOT_FOUND (payload file not written yet — write it first with the edit/write tool).
scheduledAt must be a valid ISO 8601 timestamp in the future (at least 1 minute from now)reminderId for future cancellation via cancel-reminder{
"success": true,
"data": {
"reminderId": "rem_1705312800000_a1b2c3d4",
"scheduledAt": "2025-01-15T10:00:00.000Z"
}
}
Google Workspace CLI for Gmail, Calendar, Drive, Contacts, Sheets, and Docs.
Manage Apple Notes via the `memo` CLI on macOS (create, view, edit, delete, search, move, and export notes). Use when a user asks OpenClaw to add a note, list notes, search notes, or manage note folders.
Work with Obsidian vaults (plain Markdown notes) and automate via obsidian-cli.
Use when you need to control Slack from OpenClaw via the slack tool, including reacting to messages or pinning/unpinning items in Slack channels or DMs.
Manage Apple Reminders via remindctl CLI (list, add, edit, complete, delete). Supports lists, date filters, and JSON/plain output.
Manage Trello boards, lists, and cards via the Trello REST API.
Category:productivity