Agent Skillsletta-ai/letta-code › scheduling-tasks

scheduling-tasks

GitHub

用于通过 letta cron CLI 创建、列出和管理定时任务。支持设置提醒、周期性检查或延迟消息,并可根据需求指定在本地或云端运行,确保任务可靠执行。

src/skills/builtin/scheduling-tasks/SKILL.md letta-ai/letta-code

Trigger Scenarios

用户请求设置提醒 用户需要周期性检查或跟进 用户希望延迟执行某项操作 用户需要查看、替换或取消已计划的定时任务

Install

npx skills add letta-ai/letta-code --skill scheduling-tasks -g -y
More Options

Non-standard path

npx skills add https://github.com/letta-ai/letta-code/tree/main/src/skills/builtin/scheduling-tasks -g -y

Use without installing

npx skills use letta-ai/letta-code@scheduling-tasks

指定 Agent (Claude Code)

npx skills add letta-ai/letta-code --skill scheduling-tasks -a claude-code -g -y

安装 repo 全部 skill

npx skills add letta-ai/letta-code --all -g -y

预览 repo 内 skill

npx skills add letta-ai/letta-code --list

SKILL.md

Frontmatter
{
    "name": "scheduling-tasks",
    "description": "Schedules reminders and recurring tasks via the letta cron CLI. Use when the user asks to be reminded of something, wants periodic work or check-ins, or needs to list, inspect, replace, or cancel scheduled tasks."
}

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.

When to Use This Skill

  • User asks to be reminded of something ("remind me to X at Y")
  • User wants a recurring check-in ("every morning ask me about X")
  • User wants a one-shot delayed message ("in 30 minutes, check on X")
  • User wants to see or cancel existing scheduled tasks

Where Schedules Run — Omit the Flags

Default guidance: omit --runner and --computer. The CLI places the schedule so the work keeps running on the computer where it was created. Don't move scheduled work to a different computer than the active conversation without a reason: two computers working the same conversation can conflict.

Pass a flag only when you have a requirement the default can't infer:

  • --runner cloud — the schedule must fire no matter which computers are online; execute in the agent's cloud sandbox.
  • --computer <deviceId> — the work needs a specific connected computer (its filesystem, services, or credentials). Get the deviceId from letta environments list. If that computer is offline at fire time, execution falls back to the cloud sandbox.
  • --runner local — the work must only ever run on the current computer, even if that means missing fires while no session is running here.

The CLI reports its placement in the command output. If it warns that the schedule is local (this happens when the cloud scheduler cannot reach the current computer), the schedule only fires while a Letta session is running here — read the warning and decide whether that's acceptable.

Fast Follow-ups vs Recurring Jobs

Two patterns cover most schedules:

  • Fast follow-ups ("check on the PR in 5m"): the default is right — same computer as the active conversation. If the session dies before it fires, the follow-up usually died with the task anyway.
  • Recurring jobs ("every Monday 11am, start the lunch order"): prefer durability. If the CLI warned that a recurring schedule is local, that's usually wrong for the user's intent — recreate it with --runner cloud, or --computer if the job needs a specific always-on computer. Also consider whether the job should post into a dedicated conversation rather than this one (continuity in one thread vs a fresh context per run).

CLI Usage

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

Creating a Task

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 "3:00pm", "in 45m"
--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 ID (defaults to LETTA_CONVERSATION_ID from the current shell/session, otherwise "default")
--runner <runner> cloud or local — normally omit; see "Where Schedules Run" above
--computer <id> Execute on a specific connected computer — normally omit
--once Mark --at as one-shot (already the default for --at)

Listing Tasks

letta cron list

Optional filters: --agent <id>, --conversation <id>, --runner local|cloud

Getting a Single Task

get accepts an ID or name:

letta cron get <id-or-name> [--runner local|cloud] [--agent <id>]

Reading Run History

letta cron runs --id <task-id> [--limit <n>] [--runner local|cloud] [--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 will otherwise fall back to LETTA_AGENT_ID and LETTA_CONVERSATION_ID from the current shell/session. Those values may be correct for the current chat, but they can also be inherited from surrounding tooling, another conversation, or an older shell.

Safest pattern:

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 "$AGENT_ID" \
  --conversation "$CONVERSATION_ID"

Then verify the binding explicitly:

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

Deleting or Replacing Tasks

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

# Delete a specific task
letta cron delete <id-or-name> [--runner local|cloud] [--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 — Convert Before Writing --cron

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 tasks use the computer's local timezone — no conversion. --at stores one absolute timestamp parsed in the current process timezone, so it needs no conversion either.

Examples

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

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"

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"

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

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?"

letta cron list

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

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

"Cancel the dog walk reminder"

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 precedence: letta cron add uses --agent / --conversation first, then falls back to LETTA_AGENT_ID / LETTA_CONVERSATION_ID, then finally uses "default" for the conversation if no env var is present.
  • 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: --at "3:00pm" schedules a one-shot. If the time has already passed today, it schedules for tomorrow.
  • Cloud schedule creation failures are loud: if creating a cloud schedule fails, no schedule is created — a failed create never silently becomes a local schedule. (The local placement for computers the cloud scheduler can't reach is decided before creation and reported in the output.)

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

Version History

  • bec353d Current 2026-08-05 14:25

    修复了当云端无法连接本机时回退到本地调度的问题,并默认保留活跃监听器的执行状态。

  • 23446a1 2026-07-23 06:14

    引入 cloud/local 双运行器机制,默认启用云端持久化调度;将 --target-device 参数重命名为 --computer 以统一文档术语;增强任务在设备离线时的可靠性和跨设备执行能力。

  • b7b6330 2026-07-05 20:11

Same Skill Collection

.skills/adding-models/SKILL.md
src/skills/builtin/acquiring-skills/SKILL.md
src/skills/builtin/context-doctor/SKILL.md
src/skills/builtin/converting-mcps-to-skills/SKILL.md
src/skills/builtin/creating-mods/SKILL.md
src/skills/builtin/creating-skills/SKILL.md
src/skills/builtin/customizing-commands/SKILL.md
src/skills/builtin/customizing-statusline/SKILL.md
src/skills/builtin/dispatching-coding-agents/SKILL.md
src/skills/builtin/editing-letta-code-desktop-preferences/SKILL.md
src/skills/builtin/finding-agents/SKILL.md
src/skills/builtin/generating-mod-envs/SKILL.md
src/skills/builtin/image-generation/SKILL.md
src/skills/builtin/initializing-memory/SKILL.md
src/skills/builtin/letta-guide/SKILL.md
src/skills/builtin/managing-shared-memory/SKILL.md
src/skills/builtin/messaging-agents/SKILL.md
src/skills/builtin/migrating-memory/SKILL.md
src/skills/builtin/modifying-the-harness/SKILL.md
src/skills/builtin/self-configuration/SKILL.md
src/skills/builtin/syncing-memory-filesystem/SKILL.md

Metadata

Files
0
Version
43e4a35
Hash
109dcd33
Indexed
2026-07-05 20:11

Главная - Вики-сайт
Copyright © 2011-2026 iteam. Current version is 2.155.2. UTC+08:00, 2026-08-07 02:25
浙ICP备14020137号-1 $Гость$