Files
youlu-openclaw-workspace/skills/calendar/MIGRATION.md
Yanxin Lu 383b33cc30 calendar: use todoman for VTODO list/complete/delete/check
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.
2026-03-22 15:00:20 -07:00

118 lines
3.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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-run` works
- [ ] `~/.openclaw/workspace/calendars/tasks/` directory exists (auto-created by `todo add`)
- [ ] vdirsyncer has a `cal/tasks` pair configured
- [ ] Live tests 8-12 from `TESTING.md` pass on the Linux machine
## Step 0: Install and configure todoman
### Install
```bash
# 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`:
```python
path = "~/.openclaw/workspace/calendars/tasks/"
date_format = "%Y-%m-%d"
time_format = "%H:%M"
default_due = 24
default_priority = 0
humanize = True
```
### Verify
```bash
# Should list todos (or show empty list without errors)
todo list
```
## Step 1: Migrate pending reminders
Two items are pending in `reminders/active.md`:
```bash
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:
```bash
$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 check`
> and 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 items
- [ ] `calendar.sh todo list` shows both items with Chinese priority labels
- [ ] `vdirsyncer sync` completes 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:
```bash
# 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.md` is unchanged
- `scripts/reminder_check.py` still works
- Re-add the old cron entry to restore the previous behavior