Replaces custom .ics parsing with todoman CLI (--porcelain for JSON). todo add still uses icalendar directly (needs ICS creation + email). Updates MIGRATION.md with todoman install/config instructions.
3.0 KiB
3.0 KiB
Migration: reminder_check.py → calendar todo
What's changing
| Before | After |
|---|---|
scripts/reminder_check.py |
skills/calendar/scripts/calendar.sh todo |
reminders/active.md (markdown table) |
calendars/tasks/*.ics (RFC 5545 VTODO) |
| Local only, no sync | CalDAV sync to all devices via vdirsyncer |
| No native reminders | VALARM triggers on phone/desktop |
| Cron reads markdown | Cron reads .ics via todoman |
| Custom Python parsing | todoman for robust RFC 5545 VTODO handling |
Prerequisites
- Install todoman (see below)
- Configure todoman (see below)
calendar.sh todo add --dry-runworks~/.openclaw/workspace/calendars/tasks/directory exists (auto-created bytodo add)- vdirsyncer has a
cal/taskspair configured - Live tests 8-12 from
TESTING.mdpass on the Linux machine
Step 0: Install and configure todoman
Install
# Debian/Ubuntu (the agent's Linux machine)
pip install todoman
# macOS (Homebrew)
brew install todoman
The CLI command is todo.
Configure
Create ~/.config/todoman/config.py:
path = "~/.openclaw/workspace/calendars/tasks/"
date_format = "%Y-%m-%d"
time_format = "%H:%M"
default_due = 24
default_priority = 0
humanize = True
Verify
# Should list todos (or show empty list without errors)
todo list
Step 1: Migrate pending reminders
Two items are pending in reminders/active.md:
SKILL_DIR=~/.openclaw/workspace/skills/calendar
$SKILL_DIR/scripts/calendar.sh todo add \
--summary "跟进iui保险报销" \
--due "2026-03-25" \
--priority medium \
--description "确认iui(人工授精)费用保险报销进度,避免过期"
$SKILL_DIR/scripts/calendar.sh todo add \
--summary "打电话给progyny问iui报销" \
--due "2026-04-04" \
--priority medium \
--description "询问iui报销相关事宜"
Note: todo add emails each item to mail@luyx.org. This is expected.
Verify:
$SKILL_DIR/scripts/calendar.sh todo list
Step 2: Set up cron
Ask the agent to set up a daily cron job via openclaw cron:
Set up a daily cron at 8:00 AM PST that runs:
~/.openclaw/workspace/skills/calendar/scripts/calendar.sh todo checkand emails the output to mail@luyx.org with subject "📋 今日待办清单"
The old reminder_check.py cron should be removed by the agent at the same time.
Step 3: Verify
todo list(todoman directly) shows both migrated itemscalendar.sh todo listshows both items with Chinese priority labelsvdirsyncer synccompletes without errors- Todos appear on phone/CalDAV client
- Next morning's cron email arrives with the new format
Step 4: Clean up
After a few days of successful operation:
# Remove old reminder system
rm scripts/reminder_check.py
rm -r reminders/
Rollback
If something goes wrong, the old system is still intact until Step 4:
reminders/active.mdis unchangedscripts/reminder_check.pystill works- Re-add the old cron entry to restore the previous behavior