Awesome-openclaw-skills timer
Set timers and alarms. When a background timer completes, you receive a System notification - respond with the reminder message (NOT HEARTBEAT_OK) to notify the user.
install
source · Clone the upstream repo
git clone https://github.com/sundial-org/awesome-openclaw-skills
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/sundial-org/awesome-openclaw-skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/timer" ~/.claude/skills/sundial-org-awesome-openclaw-skills-timer && rm -rf "$T"
OpenClaw · Install into ~/.openclaw/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/sundial-org/awesome-openclaw-skills "$T" && mkdir -p ~/.openclaw/skills && cp -r "$T/skills/timer" ~/.openclaw/skills/sundial-org-awesome-openclaw-skills-timer && rm -rf "$T"
manifest:
skills/timer/SKILL.mdsource content
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
# 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 |
|---|---|---|
| N seconds | , |
| N minutes | , |
| N hours | , |
| N minutes (default) | = 5 minutes |
| Minutes and seconds | |
| Hours, minutes, seconds | |
⚠️ 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 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 background:true command:"node {baseDir}/timer.js 2m 'Take a break'"
Pomodoro Session
# 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 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
# 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
available)afplay - Progress is logged every second (short timers) or every 10 seconds (long timers)