Board Skill
Unified kanban task board that replaces the reminder and progress skills.
Columns
- inbox: Untriaged items (agent-created proactive triggers)
- backlog: Triaged, not yet scheduled
- scheduled: Has a trigger time, waiting to fire
- in_progress: Being worked on
- waiting: Blocked on something
- done: Completed
- archived: Dismissed/expired/old done
Actions
view: Show the board. Optional filters: column, priority, labeladd: Create a new item. Required: title. Optional: kind, trigger_time, priority, labels, goal_id, task_config, recurringmove: Move item to a column. Required: item_id, status (target column)update: Edit an item. Required: item_id. Optional: title, priority, labels, trigger_time, kinddone: Mark complete. Required: item_id. Optional: result (completion note)archive: Dismiss/archive an item. Required: item_iddetail: Show full item detail, including durable worker/attempt/lease/error state and result cost. Required: item_idsnooze: Reschedule trigger time. Required: item_id, time
Priority Levels
urgent > high > medium (default) > low
Item Kinds
nudge: A pre-written message/reminder delivered verbatim to the user. Thetitlemust address them directly.task: Sub-agent work that runs autonomously under a durable lease with heartbeats and bounded retries, then stores its result. Put internal instructions intask_config.goal, not in a nudge.
User-facing nudge text
For a scheduled nudge, title is the exact notification text. Never store a plan for what the bot should say.
- BAD:
Daily check-in with Sam - ask about priorities and deadlines - GOOD:
Hey Sam, what are your priorities and deadlines today? How are things going? - BAD:
Send the user a reminder to take their medication - GOOD:
Quick reminder to take your medication.
If the bot must gather data or perform work before messaging, use kind: "task" and put the work in task_config.goal.
Recurring vs one-off
The system supports both. Pick the right one:
- One-off: use
trigger_time— e.g. "remind me tomorrow at 9am" →trigger_time: "tomorrow 9am". Fires once, then done. - Recurring: use the
recurringobject — e.g. "remind me every day at 8am" →recurring: {"type":"daily","hour":8,"minute":0}. Automatically re-fires on each next occurrence forever until the user archives it.
If the user says any of these, they want recurring (never trigger_time):
| User says | Use |
|---|---|
| "every day at 8am" / "daily at 8am" | recurring: {"type":"daily","hour":8,"minute":0} |
| "every Monday at 9am" | recurring: {"type":"weekly","hour":9,"minute":0,"dayOfWeek":1} |
| "every weekday at 9am" / "weekdays at 9am" | recurring: {"type":"weekdays","hour":9,"minute":0} |
| "every weekend at 10am" / "weekends at 10am" | recurring: {"type":"weekends","hour":10,"minute":0} |
dayOfWeek: 0=Sun, 1=Mon, 2=Tue, 3=Wed, 4=Thu, 5=Fri, 6=Sat.
hour is 24h: 8am=8, noon=12, 2pm=14, 8pm=20.
Never put "every day at 8am" as a string into trigger_time — use the recurring object.


