skills/scheduling/SKILL.md
Create scheduled tasks and one-off reminders. Use for recurring jobs (daily, weekly) or future reminders (in 5 minutes, tomorrow at 3pm).
npx skillsauth add lordluceus/lettabot schedulingInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Schedule recurring tasks or one-off reminders.
lettabot-schedule list # List all jobs
lettabot-schedule create [options] # Create job
lettabot-schedule delete ID # Delete job
lettabot-schedule enable ID # Enable job
lettabot-schedule disable ID # Disable job
For reminders at a specific future time, use --at with an ISO datetime.
Calculate the datetime in JavaScript:
// 5 minutes from now
new Date(Date.now() + 5*60*1000).toISOString()
// → "2026-01-28T20:15:00.000Z"
// 1 hour from now
new Date(Date.now() + 60*60*1000).toISOString()
// Tomorrow at 9am (approximate)
new Date(Date.now() + 24*60*60*1000).toISOString()
Create the reminder:
lettabot-schedule create \
--name "Standup" \
--at "2026-01-28T20:15:00.000Z" \
--message "Time for standup!"
One-off reminders auto-delete after running.
Options:
-n, --name - Job name (required)-a, --at - ISO datetime for one-off reminder (e.g., "2026-01-28T20:15:00Z")-m, --message - Message sent to you when job runs (required)-d, --deliver - Where to send response (format: channel:chatId). Defaults to last messaged chat.For recurring tasks, use --schedule with a cron expression.
lettabot-schedule create \
--name "Morning Briefing" \
--schedule "0 8 * * *" \
--message "Good morning! What's on today's agenda?"
Options:
-n, --name - Job name (required)-s, --schedule - Cron expression (required for recurring)-m, --message - Message sent to you when job runs (required)-d, --deliver - Where to send response (format: channel:chatId). Defaults to last messaged chat.--disabled - Create disabled┌───────── minute (0-59)
│ ┌─────── hour (0-23)
│ │ ┌───── day of month (1-31)
│ │ │ ┌─── month (1-12)
│ │ │ │ ┌─ day of week (0-6, Sun=0)
* * * * *
| Pattern | When |
|---------|------|
| 0 8 * * * | Daily at 8:00 AM |
| 0 9 * * 1-5 | Weekdays at 9:00 AM |
| 0 */2 * * * | Every 2 hours |
| 30 17 * * 5 | Fridays at 5:30 PM |
| 0 0 1 * * | First of month at midnight |
Remind me in 30 minutes:
# First calculate: new Date(Date.now() + 30*60*1000).toISOString()
lettabot-schedule create \
-n "Break reminder" \
--at "2026-01-28T20:45:00.000Z" \
-m "Time for a break!"
Daily morning check-in:
lettabot-schedule create \
-n "Morning" \
-s "0 8 * * *" \
-m "Good morning! What's on today's agenda?"
Weekly review on Fridays:
lettabot-schedule create \
-n "Weekly Review" \
-s "0 17 * * 5" \
-m "Friday wrap-up: What did we accomplish?"
When a scheduled job runs, you receive:
[cron:job-123abc Morning] Good morning! What's on today's agenda?
Current time: 1/27/2026, 8:00:00 AM (America/Los_Angeles)
--at) auto-delete after runninglettabot-schedule list to see next run timescron-jobs.jsoncontent-media
Reply with voice memos using text-to-speech. Use when the user sends a voice message, asks for an audio reply, or when a voice response would be more natural.
tools
Post, reply, like, and repost on Bluesky using the lettabot-bluesky CLI. Read-only by default; explicit actions required.
data-ai
Example TaskFlow authoring pattern for inbox triage. Use when messages need different treatment based on intent, with some routes notifying immediately, some waiting on outside answers, and others rolling into a later summary.
data-ai
Example TaskFlow authoring pattern for inbox triage. Use when messages need different treatment based on intent, with some routes notifying immediately, some waiting on outside answers, and others rolling into a later summary.