# Full ISO timestamp--send-at "2026-03-15T09:00:00Z"# With milliseconds--send-at "2026-03-15T09:00:00.000Z"# Without seconds (assumes :00)--send-at "2026-03-15T09:00Z"
From task-schedule.ts:45-92:
const UTC_SEND_AT_DATE_REGEX = /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}(?::\d{2}(?:\.\d{1,3})?)?Z$/function parseUtcSendAtDate({ value, now }: { value: string; now: Date }): Date | Error | null { if (!UTC_SEND_AT_DATE_REGEX.test(value)) { return new Error( `--send-at date must be UTC ISO format ending with Z (example: 2026-03-01T09:00:00Z). Received: ${value}`, ) } const runAt = new Date(value) if (Number.isNaN(runAt.getTime())) { return new Error(`Invalid UTC date for --send-at: ${value}`) } if (runAt.getTime() <= now.getTime()) { return new Error(`--send-at date must be in the future (UTC): ${value}`) } return runAt}
Schedule tasks to run repeatedly using cron expressions:
# Every Monday at 9am (local time)kimaki send --channel <channel-id> \ --prompt "Run weekly test suite and summarize failures" \ --send-at "0 9 * * 1"# Every day at 6amkimaki send --channel <channel-id> \ --prompt "Check for security updates in dependencies" \ --send-at "0 6 * * *"# First day of every month at 10amkimaki send --channel <channel-id> \ --prompt "Generate monthly usage report" \ --send-at "0 10 1 * *"
Cron expressions run in your local timezone (detected via Intl.DateTimeFormat().resolvedOptions().timeZone).
When you create an API key expiring in 90 days, schedule a reminder:
kimaki send --channel <channel-id> \ --prompt "Reminder: <@userId> API key created 2026-03-01 expires 2026-06-01. Renew before production breaks." \ --send-at "2026-05-28T09:00:00Z" \ --notify-only
From system-message.ts:355:
Proactively schedule a --notify-only reminder before the expiration so the user gets notified in time.
Weekly QA automation
Run test suite every Monday and notify on failures:
kimaki send --channel <channel-id> \ --prompt "Run full test suite, inspect failures, post summary, and mention @user only when failures require review" \ --send-at "0 9 * * 1"
# Compute future UTC timeFUTURE_TIME=$(date -u -d '+2 hours' +%Y-%m-%dT%H:%M:%SZ)kimaki send --session <session-id> \ --prompt "Reminder: <@userId> you asked to be reminded about this thread." \ --send-at "$FUTURE_TIME" \ --notify-only
Scheduled tasks should have long, detailed prompts with goal, constraints, expected output format, and completion criteria.
Bad:
--prompt "Check the API"
Good:
--prompt "Check API health endpoint at https://api.example.com/health. If status is not 200 or response time > 500ms, create an incident report in incidents/ with timestamp, status code, response time, and error details. Mention @oncall if critical."
Notification prompts must be very detailed. The user has no context from the original session.
Bad:
--prompt "Reminder: API key expiring"
Good:
--prompt "Reminder: <@userId> the OpenAI API key created on 2026-03-01 for the production chatbot expires on 2026-06-01. Renew at https://platform.openai.com/api-keys before it breaks production. Key name: prod-chatbot-key"
From system-message.ts:336-343:
Include: what was done, when it was done, why the reminder exists, what action is needed, and any relevant identifiers (key names, service names, file paths, URLs).