Initial commit - LettaBot multi-channel AI assistant

Co-authored-by: Cameron Pfiffer <cameron@pfiffer.org>
Co-authored-by: Caren Thomas <carenthomas@gmail.com>
Co-authored-by: Charles Packer <packercharles@gmail.com>
Co-authored-by: Sarah Wooders <sarahwooders@gmail.com>
This commit is contained in:
Sarah Wooders
2026-01-28 18:02:51 -08:00
commit 22770e6e88
133 changed files with 21947 additions and 0 deletions

131
skills/scheduling/SKILL.md Normal file
View File

@@ -0,0 +1,131 @@
---
name: scheduling
description: Create scheduled tasks and one-off reminders. Use for recurring jobs (daily, weekly) or future reminders (in 5 minutes, tomorrow at 3pm).
---
# Scheduling
Schedule recurring tasks or one-off reminders.
## Quick Reference
```bash
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
```
## One-Off Reminders (--at)
For reminders at a specific future time, use `--at` with an **ISO datetime**.
**Calculate the datetime in JavaScript:**
```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:**
```bash
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.
## Recurring Schedules (--schedule)
For recurring tasks, use `--schedule` with a cron expression.
```bash
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
## Cron Schedule Syntax
```
┌───────── 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 |
## Examples
**Remind me in 30 minutes:**
```bash
# 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:**
```bash
lettabot-schedule create \
-n "Morning" \
-s "0 8 * * *" \
-m "Good morning! What's on today's agenda?"
```
**Weekly review on Fridays:**
```bash
lettabot-schedule create \
-n "Weekly Review" \
-s "0 17 * * 5" \
-m "Friday wrap-up: What did we accomplish?"
```
## Message Format
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)
```
## Notes
- Jobs activate immediately when created (no restart needed)
- One-off reminders (`--at`) auto-delete after running
- Use `lettabot-schedule list` to see next run times
- Jobs persist in `cron-jobs.json`