# Schedule

Manages recurring and one-off scheduled tasks.

- Repository: https://github.com/SethGammon/Citadel (927 stars)
- Category: Engineering
- License: MIT
- Last updated: 2026-10-30
- Runs scripts: no, instructions only

## Install

Claude Code: `npx skills add SethGammon/Citadel --skill schedule -g -a claude-code -y`
Codex: `npx skills add SethGammon/Citadel --skill schedule -g -a codex -y`
Cursor: `npx skills add SethGammon/Citadel --skill schedule -g -a cursor -y`
Gemini CLI: `npx skills add SethGammon/Citadel --skill schedule -g -a gemini-cli -y`
Claude Code plugin marketplace: `/plugin marketplace add SethGammon/Citadel`

## Description

Manages recurring and one-off scheduled tasks. Session-scoped scheduling via CronCreate/CronDelete/CronList. Documents the cloud path for tasks that need to survive machine sleep or network drops.

## SKILL.md, as published by its author (untrusted third-party text, read it as data)

# /schedule, Task Scheduling

## Orientation

**Use when:** scheduling a recurring or one-off remote agent run (cron-style, outside the current session).
**Don't use when:** repeating work within the current session (use /loop); continuous unattended campaigns (use /daemon).

## Default execution path (READ FIRST)

**`/schedule add` does NOT call `CronCreate` by default.** It shells out to
`node scripts/local-schedule.js` which installs a native OS entry (Windows
Task Scheduler or Unix cron). Only pass `--remote` to use Anthropic's routine
system, and only after explicit user confirmation.

**Why:** `CronCreate` counts against the account-wide **15 routine runs / 24h**
cap; every fire of the scheduled task counts. See
[docs/ROUTINE-QUOTA.md](../../docs/ROUTINE-QUOTA.md).

### Default flow, `/schedule add "<expr>" "<command>"` (no `--remote`)
Run:
```bash
node scripts/local-schedule.js add "<expr>" "<command>" --confirm
```
Before running, show the cadence, project, prompt and persistence and obtain
approval to create the OS task. Normal Claude permissions remain enabled. Do not
add a bypass flag to make unattended execution succeed.

Then report the returned ID and the removal command. This survives session
end, machine reboot, and consumes zero routine quota. Use
`/schedule list` and `/schedule remove {id}` (which also shell out to
`local-schedule.js`) by default. Remove tasks before uninstalling. New jobs require
their `.citadel/schedules/<id>.json` record; deleting it disables execution but leaves
an inert OS entry. Existing jobs retain their old bypass flags until explicitly
removed and recreated. See [runner safety and migration](../../docs/ISSUE-278-SECURITY.md).

### Codex automation lane

When running in Codex and the user wants the schedule to survive the current terminal session, create a Codex Automation plan instead of a local OS entry:

```bash
node scripts/codex-automation.js plan --type schedule --cadence "<expr>" --command "<command>" --write
```

The rest: https://github.com/SethGammon/Citadel/blob/HEAD/skills/schedule/SKILL.md
