본문으로 건너뛰기
cccskills
무료GitHub에 공개

spell-schedule

Schedule a moflo spell to run on the local machine via the moflo daemon (cron, interval, or one-time). Use when the user wants to schedule, automate, or recurringly run one of THEIR spells locally — e.g. "schedule the oap spell every hour", "run my audit spell every weekday at 9am", "fire X once tomorrow morning". This is the LOCAL daemon path. For remote Anthropic-cloud agents, use /schedule instead.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

설치 방법 보기

포함된 파일(1)

  • SKILL.md8.0 KB

SKILL.md(원문)

설치하기 전에 에이전트에게 전달되는 지시 내용을 확인할 수 있습니다.

/spell-schedule — Schedule a Local Spell

This skill walks the user through scheduling a moflo spell on the local moflo daemon. Schedules live in moflo's memory store and are evaluated once per minute by the daemon's poll loop. Execution goes through the same engine path as flo spell cast.

Not the same as /schedule. /schedule creates remote Anthropic-cloud routines; this skill drives the local daemon scheduler.

Arguments: $ARGUMENTS (optional spell name/alias to pre-select)

When to use

The user says any of:

  • "schedule the X spell"
  • "run X every <interval>"
  • "fire X once at <time>"
  • "set up a recurring run for X"
  • "I want X to run every morning"

If the user wants a cloud agent (mentions "remote", "GitHub Actions", "Anthropic cloud", or specifies a repo to clone), redirect them to /schedule.

Workflow

Step 1 — Verify the daemon is running

npx flo doctor 2>&1 | grep -i daemon

If the daemon is not running, prompt the user:

  • "The moflo daemon isn't running. Schedules only fire while the daemon is up. Start it now?"
  • If yes: npx flo daemon start.
  • If they decline, warn the user that the schedule will be created but won't fire until the daemon is started.

OS-native autostart (launchd / systemd / Task Scheduler) is automatic: the first flo spell schedule create registers the daemon as a login service so schedules survive reboot, and the cancel that takes the enabled-schedule count to 0 unregisters it. Users only need to think about it in two cases:

  • --no-autostart on create — skip registration (use in containers/CI where the daemon is already managed externally).
  • --keep-autostart on cancel — keep the login service registered through a cancel-then-recreate dance.

Step 2 — Identify the target spell

If $ARGUMENTS was provided, use it as the spell name/alias. Otherwise, list spells and let the user pick:

npx flo spell list 2>&1

The output is a markdown table with columns: name, alias, description, source. Both name and alias are valid for flo spell schedule create -n <value> — prefer the full name to avoid alias conflicts.

If the user-named spell is not in the list, stop and ask. Do NOT silently create a schedule for a missing spell — it will be auto-disabled on first fire.

Step 3 — Pick the cadence

Use AskUserQuestion to offer four options:

OptionWhen to suggestCLI form
CronSpecific time of day, day of week, or month boundary--cron "<5-field cron>" (UTC, 5 fields: minute hour day-of-month month day-of-week)
Interval"Every N seconds/minutes/hours/days" with no specific clock anchor--interval <N><s|m|h|d> (e.g., 30m, 6h, 1d)
One-time"Run once at..." or "remind me to..."--at <ISO 8601 datetime>
Embedded in spellThe schedule should travel with the spell definition (registered every daemon start)Edit the spell YAML to add a schedule: block; no CLI

Timezone conversion (CRITICAL)

Cron expressions and --at timestamps are always UTC. The user almost always means their local time.

  1. Look up the user's timezone — derive from system. On Windows, [System.TimeZoneInfo]::Local.Id or read the auto-memory currentDate block. Never guess.
  2. Convert to UTC explicitly using PowerShell (cross-platform-safe):
    [System.TimeZoneInfo]::ConvertTimeToUtc((Get-Date "9:00am"), [System.TimeZoneInfo]::Local)
    
  3. Echo back the conversion: "9am America/Guatemala = 15:00 UTC, so the cron would be 0 15 * * 1-5. Confirm?"
  4. Re-check current time before any --at — long conversations drift. Run date -u +%Y-%m-%dT%H:%M:%SZ (or PowerShell equivalent) before computing the absolute timestamp. If the resolved time is in the past, ask for clarification — do not silently roll forward.

Constraints

  • Minimum poll interval is 1 minute (the daemon polls once per pollIntervalMs, default 60000). Sub-minute schedules are rejected.
  • Interval units: s, m, h, d ONLY. --interval 1w is rejected at load time.
  • --at must be a valid ISO 8601 datetime in the future.
  • Exactly one of --cron, --interval, --at per schedule.

Step 4 — Confirm and create

Show the full plan to the user before creating:

Spell:    outlook-attachment-processor (alias: oap)
Cadence:  every weekday at 9am America/Guatemala (15:00 UTC)
Cron:     0 15 * * 1-5
Daemon:   running ✓

After user confirms, run:

npx flo spell schedule create -n <spell-name> --cron "<cron>" 2>&1
# or --interval <value>
# or --at <iso-datetime>

Capture the schedule ID from output and surface it to the user along with the next computed run time.

Step 5 — Verify the wiring

Tail the actual execution history for this schedule so the user can confirm the daemon picked it up:

npx flo spell schedule executions --schedule <schedule-id> 2>&1

executions reads from the daemon-written schedule-executions namespace and shows started time, status (success/failed/running), duration, and whether the run was manual. This is the only command that proves a schedule actually fired — flo spell schedule list only shows the schedule definition.

If the user wants to wait for the first fire (interval ≤ 5m), poll flo spell schedule executions --schedule <id> or watch The Luminarium (the daemon's localhost UI). Otherwise, summarize and exit:

Scheduled: <schedule-id>
Next run:  <ISO datetime UTC> (<local-equivalent>)
Verify:    npx flo spell schedule executions --schedule <schedule-id>
Cancel:    npx flo spell schedule cancel <schedule-id>

Sub-actions (when not creating)

If the user asks to list schedules:

npx flo spell schedule list 2>&1

If the user asks to cancel a schedule:

  1. Run flo spell schedule list and let them pick.
  2. npx flo spell schedule cancel <schedule-id>.
  3. Confirm the entry is gone from the list.

If the user asks to run now without altering the cadence:

  • Use the dashboard's "Run now" button if available, or the daemon's runScheduleNow API.
  • The CLI does not currently expose this — surface that limitation if asked, and offer flo spell cast -n <name> as a manual alternative.

Important — gotchas

  • Daemon prerequisite: schedules only fire while the daemon is running. Tell the user this explicitly. OS autostart for reboot survival is now wired automatically — see Step 1.
  • Catch-up window (default 1h, scheduler.catchUpWindowMs in moflo.yaml): if the daemon was offline when a run was due, runs within the window still fire on the next poll. Older missed runs are skipped with a schedule:skipped event.
  • maxConcurrent (default 2): caps the number of scheduled spells running concurrently. Same-schedule overlap is never allowed.
  • No update CLI yet: flo spell schedule exposes create/list/cancel only. To change a cadence, cancel + recreate.
  • Spell-required sandboxing: when sandbox-required spells become enforced, scheduled runs will honor it just like manual casts — a missing sandbox skips the run with a schedule:skipped event.

Output

End the session with a single-block summary:

Schedule Created
────────────────
Spell:       <name>
Cadence:     <human-readable>
Cron/At:     <UTC expression>
ID:          <schedule-id>
Next run:    <UTC + local>
Cancel:      npx flo spell schedule cancel <id>
Daemon:      running | needs-start

Reference

  • Full daemon scheduler docs: see docs/SPELLS.md#scheduling in the moflo source tree

리뷰

아직 리뷰가 없습니다. 사용해 본 소감을 남겨 주세요.

댓글

로그인 없이 쓸 수 있습니다. 사용 후기, 질문, 작동하지 않은 환경 등을 편하게 남겨 주세요.

아직 댓글이 없습니다. 첫 댓글을 남겨 보세요.

보내면 바로 공개됩니다. 이메일 주소나 전화번호 같은 개인 정보는 쓰지 마세요. URL은 2개까지입니다.

0 / 1,000자

이 양식은 reCAPTCHA로 보호되며 Google 개인정보처리방침 및 서비스 약관이 적용됩니다.

같은 저장소의 스킬

commune

무료

Turn a vague idea into a concrete, actionable spec through a short Socratic dialogue, then hand the result off to an existing moflo surface — a /flo ticket, a spell, or memory. Use BEFORE you have a defined unit of work, when the goal is still fuzzy.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

eric-cielo/moflo192026년 10월 18일 업데이트

Scaffold new spell step commands and connectors. Use when building new step commands for spells or extending the spell engine with new capabilities. Connectors are for new I/O transport types OR platforms requiring complex multi-step interaction (e.g., browser-based automation).

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

eric-cielo/moflo192026년 10월 18일 업데이트

distill

무료

Alias for /flo-simplify — see that skill's description.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

eric-cielo/moflo192026년 10월 18일 업데이트

divine

무료

Structured multi-hop web research with explicit confidence gating — plan the inquiry, search (WebSearch/WebFetch), score your own confidence, and keep digging until the answer is well-supported or a hop cap is hit, then emit a cited synthesis. Learns across sessions by storing each research case to memory and reusing prior strategies. Use when a question needs more than one search — comparisons, current-best-practice questions, anything where a single lookup leaves you unsure.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

eric-cielo/moflo192026년 10월 18일 업데이트

eldar

무료

Consult the Eldar — audit a project's moflo + Claude Code setup for portable, high-leverage gaps and guide remediation. Default mode is read-only audit with severity-ranked findings; --fix presents an interactive triage menu and walks the user through each chosen fix (healer, missing CLAUDE.md, sparse guidance, hook/MCP wiring, empty memory namespaces, stack→guidance gaps). Use when starting in a new project, when Claude feels lost or inefficient, when guidance/CLAUDE.md is sparse, or as a periodic health check.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

eric-cielo/moflo192026년 10월 18일 업데이트

flfl

무료

Run /fl on a ticket with moflo's three standing considerations loaded first — cross-platform (Rule

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

eric-cielo/moflo192026년 10월 18일 업데이트

eric-cielo의 스킬 모두 보기

이 스킬의 문제 신고