Agent Native

scheduling-tasks

This skill lets you create and manage scheduled tasks using the letta cron CLI, sending prompts to the agent on a timer for reminders, periodic work, and…

by LettaOfficial publisherNot reviewed

Identity proven by GitHub's verified organisation badge (letta-ai)

Agents
Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode, claude.ai and API
License
Apache-2.0 (permissive)
Pin
c1033d9pinned Oct 9, 2026
Context cost
about 2,300 tokenswhen the skill loads
GitHub stars
3,549on letta-ai/letta-code
Scripts
None found

What it does

“Advanced scheduling through the letta cron CLI for other conversations, computers, run history, and schedule replacement. Use Wake for ordinary create/list/cancel operations in the current conversation.”
The author's description, from SKILL.md

Generated summary from the skill's own text

This skill lets you create and manage scheduled tasks using the letta cron CLI, sending prompts to the agent on a timer for reminders, periodic work, and deferred follow-ups. Tasks can run in fresh conversations, specific computers, or with full execution history. Use Wake instead for simpler one-shot work in your current conversation.

When to use it

  • Task needs to run in a different or fresh conversation
  • Schedule must run on a specific connected computer
  • You need run history or to replace an existing schedule
  • Wake cannot manage the particular schedule you need

When not to

  • Simple one-shot work in the current conversation fits Wake better
  • You need sub-minute granularity (minimum is one minute)
  • Local runner is offline and cannot accept cloud fallback

Install

These commands install from the publisher's repository and need no account.

skills CLI

npx skills add letta-ai/letta-code --skill scheduling-tasks

Installs from the repository's default branch, which may have changed since the commit we checked.

GitHub CLI 2.90 or later

gh skill install letta-ai/letta-code scheduling-tasks@c1033d9f7e8863a869cd2031805cfd2c66c165b9

Installs the commit we checked (c1033d9).

Copy by hand

Download the folder at c1033d9 and put it in .claude/skills/scheduling-tasks for Claude Code and in .agents/skills/scheduling-tasks for Codex, Cursor, Gemini CLI, GitHub Copilot and OpenCode.

Skill folder on GitHub at c1033d9

Copy for your agent

A prompt for any coding agent. It installs this skill from GitHub at the pinned commit, copies the files as they are, and runs nothing unless you ask.

Prompt

Install the agent skill "scheduling-tasks" by Letta.

Source, pinned to commit c1033d9f7e8863a869cd2031805cfd2c66c165b9:
https://github.com/letta-ai/letta-code/tree/c1033d9f7e8863a869cd2031805cfd2c66c165b9/src/skills/builtin/scheduling-tasks

1. Download that folder at exactly this commit. Do not use the default branch.
2. Copy every file unchanged, keeping the folder structure, into .claude/skills/scheduling-tasks/ for Claude Code and .agents/skills/scheduling-tasks/ for Codex, Cursor, Gemini CLI, GitHub Copilot and OpenCode. Create the folders if they do not exist.
3. Do not edit the files, and do not run any script in the folder unless I ask you to.
4. When you are done, list the files you copied and where you put them.

Listing and checks: https://www.agentnative.dev/skills/letta/scheduling-tasks

SKILL.md at the pin

---
name: scheduling-tasks
description: Advanced scheduling through the letta cron CLI for other conversations, computers, run history, and schedule replacement. Use Wake for ordinary create/list/cancel operations in the current conversation.
---

# Scheduling Tasks

This skill lets you create, list, and manage scheduled tasks using the `letta cron` CLI. Scheduled tasks send a prompt to the agent on a timer — useful for reminders, periodic check-ins, and deferred follow-ups.

For ordinary one-shot or recurring work in the current conversation, use Wake instead. Wake is self-bound and covers create, list, and cancel without routing choices.

## When to Use This Skill

- The task should run in a fresh, default, or different conversation
- The task needs a specific connected computer
- You need run history, replacement, or broader schedule inspection
- Wake cannot see or manage the schedule you need

## Where Schedules Run

Execution determines schedule ownership; there is no runner selection flag:

- In a managed Cloud sandbox, schedules are durable Cloud schedules and run in the agent's Cloud sandbox.
- On a user-managed computer or self-hosted runtime, schedules are local and fire only while a Letta session is running there.

From a managed Cloud sandbox, `--computer <deviceId>` can run the scheduled work on a specific connected computer. Get the device ID from `letta computers list`. If that computer is offline at fire time, execution falls back to the Cloud sandbox. Local execution cannot target another computer.

Creation and execution follow those rules, while management commands still show and cancel both local and Cloud inventory. This keeps schedules created by older CLI versions visible without changing where new schedules run.

## CLI Usage

All commands go through `letta cron` via the Bash tool. Output is JSON.

### Creating a Task

```bash
letta cron add --name <short-name> --description <text> --prompt <text> <schedule>
```

**Required flags:**

| Flag | Description |
|------|-------------|
| `--name <text>` | Short identifier for the task (e.g. "dog-walk-reminder") |
| `--description <text>` | Human-readable description of what the task does |
| `--prompt <text>` | The message that will be sent to the agent when the task fires |

**Schedule (pick one):**

| Flag | Type | Example |
|------|------|---------|
| `--every <interval>` | Recurring (cron shorthand) | `5m`, `2h`, `1d` |
| `--at <time>` | One-shot | `"in 45m"`, `"2026-09-24T09:00:00-07:00"` |
| `--cron <expr>` | Raw cron (recurring) | `"0 9 * * 1-5"` |

**Optional flags:**

| Flag | Description |
|------|-------------|
| `--agent <id>` | Agent ID (defaults to `LETTA_AGENT_ID` from the current shell/session) |
| `--conversation <id>` | Conversation target: omit or pass `new` for a fresh conversation per fire; pass `self` for the current conversation; pass `default` for the agent default; or pass a concrete ID |
| `--computer <id>` | From managed Cloud, execute on a specific connected computer |
| `--once` | Mark `--at` as one-shot (already the default for `--at`) |

### Listing Tasks

```bash
letta cron list
```

Optional filters: `--agent <id>`, `--conversation <id>`

### Getting a Single Task

`get` accepts an ID or name:

```bash
letta cron get <id-or-name> [--agent <id>]
```

### Reading Run History

```bash
letta cron runs --id <task-id> [--limit <n>] [--agent <id>]
```

For local run history, `--run-id <id>` selects one run. Cloud history ignores that flag.

### Binding a Task to the Right Conversation

If exact routing matters, pass both `--agent` and `--conversation` explicitly.

`letta cron add` falls back to `LETTA_AGENT_ID` for the agent. An omitted `--conversation` means `"new"`, so every fire gets a fresh conversation. Pass `--conversation self` to capture the current `LETTA_CONVERSATION_ID`, `--conversation default` for the agent default, or a concrete conversation ID.

Safest pattern:

```bash
letta cron add \
  --name "email-check" \
  --description "Daily email summary in this conversation" \
  --prompt "Check the user's email and post a summary here." \
  --cron "0 10 * * *" \
  --agent "$LETTA_AGENT_ID" \
  --conversation self
```

Then verify the binding explicitly:

```bash
letta cron list --agent "$LETTA_AGENT_ID" --conversation self
```

### Deleting or Replacing Tasks

`delete` accepts an ID or name; `remove` is an alias.

```bash
# Delete a specific task
letta cron delete <id-or-name> [--agent <id>]

# Delete all tasks for one agent
letta cron delete --all --agent "$AGENT_ID"
```

In-place editing is not available. To change a schedule, create and verify the replacement before deleting the old one.

## Timezones

Cloud-schedule recurring expressions (both `--cron` and the expression `--every` compiles to) are interpreted in **UTC**. Users say times in their local timezone, so convert before writing the expression: a user in PDT asking for "9am daily" needs `--cron "0 16 * * *"` (9am PDT = 16:00 UTC; 17:00 during PST). State the conversion in your reply so the user can catch a wrong assumption. Local-runner recurring tasks use the computer's local timezone.

For a one-shot calendar request such as "tomorrow at 9am," resolve the date in the user's timezone and pass `--at` an RFC 3339 timestamp with an explicit offset. Infer a reasonable timezone from available context instead of asking a redundant follow-up. State the timezone you used in the confirmation (for example, "Scheduled for 9:00 AM PT") so the user can correct the assumption. A bare clock such as `--at "9:00am"` uses the current process timezone, which may be UTC in Cloud; use it only when that is the intended timezone. Relative values such as `--at "in 45m"` do not need a timezone.

## Examples

### "Remind me every morning at 9am to walk the dog" (user in UTC−7)

```bash
letta cron add \
  --name "dog-walk-reminder" \
  --description "Daily 9am (America/Los_Angeles) reminder to walk the dog" \
  --prompt "Hey! It's 9am — time to walk the dog." \
  --cron "0 16 * * *"
```

Note: `--every 1d` fires daily at midnight (UTC on a Cloud schedule), so use `--cron` for a specific time of day, converting the user's local time to UTC first.

### "Check on the deploy in 30 minutes"

```bash
letta cron add \
  --name "deploy-check" \
  --description "One-time check on deployment status" \
  --prompt "Check the deployment status and report the result here." \
  --at "in 30m" \
  --agent "$LETTA_AGENT_ID" \
  --conversation self
```

### "Every weekday at 5pm, remind me to submit my timesheet" (user in UTC−7)

```bash
letta cron add \
  --name "timesheet-reminder" \
  --description "Weekday 5pm (America/Los_Angeles) timesheet reminder" \
  --prompt "Friendly reminder: don't forget to submit your timesheet before EOD!" \
  --cron "0 0 * * 2-6"
```

Note the day shift: 5pm UTC−7 is midnight UTC the *next* day, so weekdays Mon–Fri become `2-6`. Always re-derive both the hour and the day fields after converting.

### "What reminders do I have?"

```bash
letta cron list
```

If you need to confirm the exact conversation a task is bound to, list with explicit filters instead:

```bash
letta cron list --agent "$AGENT_ID" --conversation "$CONVERSATION_ID"
```

### "Cancel the dog walk reminder"

```bash
letta cron delete dog-walk-reminder
```

## Writing Good Prompts

The `--prompt` value is what gets sent to you (the agent) when the task fires. Write it as a message that will make sense when you receive it later, with enough context to act on:

- **Good**: "The user asked to be reminded to review the PR for the auth refactor. Check if it's still open and nudge them."
- **Bad**: "reminder"

Include context about what the user originally asked for, so you can give a helpful response when the prompt arrives.

## Important Notes

- **Minimum granularity**: 1 minute. Intervals under 60 seconds are rounded up.
- **Recurring tasks**: No longer auto-expire. They remain active until explicitly cancelled.
- **One-shot cleanup (local runner)**: One-shot local tasks are garbage-collected 24 hours after firing.
- **Default binding**: `letta cron add` uses `--agent` first, then `LETTA_AGENT_ID`. Omit `--conversation` for a fresh conversation per fire; use `--conversation self` to capture `LETTA_CONVERSATION_ID` explicitly.
- **Local scheduler requirement**: Local schedules only fire while a Letta session is running on their computer; fires while no session runs are marked as missed. Cloud schedules fire from the cloud regardless.
- **`--at` for specific times**: prefer RFC 3339 with an explicit offset. A bare `--at "3:00pm"` uses the process timezone and schedules tomorrow if that time has already passed there.
- **Cloud schedule creation failures are loud**: if creating a Cloud schedule fails in a managed Cloud sandbox, no schedule is created; it never falls back to a local schedule.

## Cron Expression Reference

For `--cron`, use numeric 5-field cron syntax (named days/months, seconds, `?`, `L`, and `#` are not supported):

```
┌───────────── minute (0-59)
│ ┌───────────── hour (0-23)
│ │ ┌───────────── day of month (1-31)
│ │ │ ┌───────────── month (1-12)
│ │ │ │ ┌───────────── day of week (0-6, Sun=0)
│ │ │ │ │
* * * * *
```

Common patterns (UTC on Cloud schedules):
- `*/5 * * * *` — every 5 minutes
- `0 */2 * * *` — every 2 hours
- `0 9 * * *` — daily at 9:00 UTC
- `0 9 * * 1-5` — weekdays at 9:00 UTC
- `30 8 1 * *` — 8:30 UTC on the 1st of each month

From letta-ai/letta-code at c1033d9, shown as plain text under its license: Apache-2.0 (permissive). The license text is in LICENSE.

View SKILL.md on GitHub at c1033d9

Files

1 file, 9.6 KB in total. Each file has a sha256 in the pin's manifest; the first 12 characters are shown.

Skill folder on GitHub at c1033d9
All 50 skills from Letta

More from Letta

  • acquiring-skills

    Enables the agent to discover and install skills from multiple registries including Hermes Skills Hub, ClawHub, GitHub, and community repositories.

    Agents not labelled yet · about 3.1K tokens · pinned 6 days ago

  • browser-use

    Control a real browser using Chrome DevTools Protocol over WebSocket to navigate pages, interact with UI, fill forms, scrape sites, and capture screenshots or…

    Claude Code, Codex, Cursor +4 · about 3.2K tokens · pinned 6 days ago

  • Context Doctor

    Context Doctor investigates and repairs an agent's context including memory, system prompt, and skills by analyzing observed behavior as evidence.

    Claude Code, Codex, Cursor +3 · about 1K tokens · pinned 6 days ago

  • creating-mods

    This skill creates and edits mod files that extend local Letta instances with tools, slash commands, event handlers, custom model providers, permissions, and…

    Claude Code, Codex, Cursor +4 · about 2.4K tokens · pinned 6 days ago

  • creating-skills

    This skill guides developers in creating modular packages that extend Letta Code agent capabilities with specialized knowledge, workflows, tool integrations…

    Contains scripts

    Claude Code, Codex, Cursor +3 · about 4.5K tokens · pinned 6 days ago

  • curating-memory-palace

    This skill lets the agent maintain a Memory Palace, a structured dashboard view that shows the user what the agent is working on, what it could do next, and…

    Agents not labelled yet · about 3.1K tokens · pinned 6 days ago

All Productivity skills
  • suggest-automations

    This skill suggests three relevant automations to users based on their team role and connected apps, then builds the chosen workflow using the build-workflow…

    by n8nOfficial publisher

    Claude Code, Codex, Cursor +3 · about 1.9K tokens · pinned 6 days ago

  • agent-mail-automation

    This skill enables agents to automate email operations through Composio's Agent Mail toolkit via the Rube MCP server.

    by ComposioOfficial publisher

    Claude Code, Codex, Cursor +3 · about 700 tokens · pinned 6 days ago

  • inbox-manager

    This skill transforms an overflowing inbox into a short prioritized list by reading email from Gmail, Microsoft 365, or pasted text, sorting messages into…

    by AnthropicOfficial publisher

    Claude Code, Codex, Cursor +4 · about 2.5K tokens · pinned 6 days ago

  • huggingface-papers

    This skill retrieves and analyzes AI research papers from Hugging Face's paper index and arXiv by fetching paper content as markdown or structured metadata…

    by Hugging FaceOfficial publisher

    Claude Code, Codex, Cursor +4 · about 2.2K tokens · pinned 6 days ago

  • figma-use-figjam

    This skill enables agents to programmatically create and edit FigJam boards using the Figma plugin API via the use_figma MCP tool.

    by FigmaOfficial publisher

    Claude Code · about 1.7K tokens · pinned 6 days ago

  • figma-use-figjam

    This skill guides agents in using Figma's MCP tool for FigJam boards, which are collaboration canvases at figma.com/board URLs.

    by FigmaOfficial publisher

    Claude Code · about 1.7K tokens · pinned 6 days ago

Open roles at Letta

4 open roles on the jobs board

The skills listed here are third-party software, collected from public GitHub repositories as a catalog of recent skills and provided as is. Agent Native does not write or control them and is not responsible for any harm, loss or damage caused by installing or using them. Labels and checks describe what we saw at one commit and are not a guarantee. Read a skill's files before you run it. Terms of use