timer
SafeCalendar & Scheduling
Set timers and alarms. When a background timer completes.
SKILL.md
# Timer
Set timers that run in the background. When they complete, you will receive a system notification and MUST respond with the reminder to notify the user.
## Quick Start
```bash
# Set a 5-minute timer
bash background:true command:"node {baseDir}/timer.js 5m"
# Set a timer with a label
bash background:true command:"node {baseDir}/timer.js 10m 'Check the oven'"
# Set a timer in seconds
bash background:true command:"node {baseDir}/timer.js 30s"
# Set a timer in hours
bash background:true command:"node {baseDir}/timer.js 1h"
```
## Time Formats
| Format | Description | Example |
|--------|-------------|---------|
| `Ns` | N seconds | `30s`, `90s` |
| `Nm` | N minutes | `5m`, `15m` |
| `Nh` | N hours | `1h`, `2h` |
| `N` | N minutes (default) | `5` = 5 minutes |
| `MM:SS` | Minutes and seconds | `5:30` |
| `HH:MM:SS` | Hours, minutes, seconds | `1:30:00` |
## ā ļø CRITICAL: Timer Completion Notification
When a timer completes, you receive a `System:` message like:
```
System: [2026-01-24 21:27:13] Exec completed (swift-me, code 0) :: ā° Timer complete! Check the pasta!
```
### ā WRONG - Do NOT respond like this:
```
HEARTBEAT_OK
š Your timer is complete! Check the pasta!
```
This response will be **filtered and NOT delivered** to the user!
### ā
CORRECT - Respond like this:
```
ā° Timer Alert! Your timer is complete: Check the pasta!
```
Start directly with the notification message. Do NOT include HEARTBEAT_OK.
**Why?** Responses starting with `HEARTBEAT_OK` followed by less than 300 characters are automatically suppressed and never reach the user. Your timer notification will be lost!
## Examples
### Cooking Timer
```bash
bash background:true command:"node {baseDir}/timer.js 12m 'Pasta is ready!'"
```
When complete, respond: "ā° Your 12-minute timer is up! Pasta is ready!"
### Quick Reminder
```bash
bash background:true command:"node {baseDir}/timer.js 2m 'Take a break'"
```
### Pomodoro Session
```bash
# Work session
bash background:true command:"node {baseDir}/timer.js 25m 'Pomodoro done - time for a break!'"
# After user is notified...
# Break
bash background:true command:"node {baseDir}/timer.js 5m 'Break over - back to work!'"
```
### Multiple Timers
```bash
bash background:true command:"node {baseDir}/timer.js 5m 'Tea is ready'"
bash background:true command:"node {baseDir}/timer.js 10m 'Eggs are done'"
bash background:true command:"node {baseDir}/timer.js 30m 'Meeting starts soon'"
```
## Managing Timers
```bash
# List all running timers
process action:list
# Check specific timer status
process action:poll sessionId:XXX
# View timer output
process action:log sessionId:XXX
# Cancel a timer
process action:kill sessionId:XXX
```
## Notes
- Timers run as background processes with unique sessionIds
- Completed timers exit with code 0
- Cancelled timers (via kill) exit with code 130
- Sound notification plays on macOS when timer completes (if `afplay` available)
- Progress is logged every second (short timers) or every 10 seconds (long timers)
More in Calendar & Scheduling
accli
CautionThis skill should be used when interacting with Apple Calendar on macOS.
apple-calendar
CautionApple Calendar.app integration for macOS.
apple-reminders
CautionManage Apple Reminders via the `remindctl` CLI on macOS (list, add, edit, complete, delete).
calcurse
SafeA text-based calendar and scheduling application. Use strictly for CLI-based calendar management.