Schedule
TinyAGI/tinyagi
Create, list, and delete scheduled tasks (recurring or one-time) that send messages to agents.
Manages recurring and one-off scheduled tasks. An agent skill from SethGammon/Citadel.
$ npx skills add SethGammon/Citadel --skill schedule -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install SethGammon/Citadel schedule --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/SethGammon/Citadel.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/schedule .claude/skills/schedule && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "schedule" agent skill from https://github.com/SethGammon/Citadel/tree/main/skills/schedule into .claude/skills/schedule/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "schedule", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/SethGammon/Citadel/tree/main/skills/scheduleType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add SethGammon/Citadel --skill schedule -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install SethGammon/Citadel schedule --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/SethGammon/Citadel.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/schedule .agents/skills/schedule && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "schedule" agent skill from https://github.com/SethGammon/Citadel/tree/main/skills/schedule into .agents/skills/schedule/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "schedule", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add SethGammon/Citadel --skill schedule -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install SethGammon/Citadel schedule --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/SethGammon/Citadel.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/schedule .cursor/skills/schedule && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "schedule" agent skill from https://github.com/SethGammon/Citadel/tree/main/skills/schedule into .cursor/skills/schedule/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "schedule", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/SethGammon/Citadel.git --path skills/schedule--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add SethGammon/Citadel --skill schedule -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install SethGammon/Citadel schedule --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/SethGammon/Citadel.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/schedule .gemini/skills/schedule && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "schedule" agent skill from https://github.com/SethGammon/Citadel/tree/main/skills/schedule into .gemini/skills/schedule/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "schedule", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install SethGammon/Citadel scheduleInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add SethGammon/Citadel --skill schedule -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/SethGammon/Citadel.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/schedule .github/skills/schedule && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "schedule" agent skill from https://github.com/SethGammon/Citadel/tree/main/skills/schedule into .github/skills/schedule/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "schedule", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add SethGammon/Citadel --skill schedule -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install SethGammon/Citadel schedule --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/SethGammon/Citadel.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/schedule .opencode/skills/schedule && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "schedule" agent skill from https://github.com/SethGammon/Citadel/tree/main/skills/schedule into .opencode/skills/schedule/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "schedule", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
scheduleManages recurring and one-off scheduled tasks. An agent skill from SethGammon/Citadel.
Schedule is an agent skill from SethGammon/Citadel. 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.
Its SKILL.md is about 2.1k tokens, which your agent loads only when the skill is triggered. The skill folder holds 3 other files (for example `__benchmarks__/list-empty.md` and `__benchmarks__/natural-language-interval.md`).
It sits in Productivity & Automation, covering Scheduled and recurring tasks. The repository describes itself as: The operating layer for Claude Code + OpenAI Codex: persistent project memory, intent routing, safety hooks, cost telemetry, and parallel agent fleets. The licence is MIT.
2 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit e41ff1d. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
nodeFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Schedule loads about 2.1k tokens when it runs. Until then it costs about 51 tokens; SKILL.md has 1,043 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from SethGammon/Citadel at commit e41ff1d, republished under its MIT licence (© SethGammon). 1,043 words, ~2,074 tokens.
.claude/skills/schedule/SKILL.md (or your agent's skills folder). This skill also uses 2 other files; get the full folder from GitHub.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).
/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.
/schedule add "<expr>" "<command>" (no --remote)Run:
node scripts/local-schedule.js add "<expr>" "<command>" --confirmBefore 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.
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:
node scripts/codex-automation.js plan --type schedule --cadence "<expr>" --command "<command>" --writeGive the returned prompt to the Codex app automation surface and keep the generated .planning/codex-automations/{id}.json as the durable Citadel record.
If .planning/ does not exist, create it before writing automation state.
/schedule add --remote ...Only when --remote is explicitly passed:
CronCreate, which counts against your 15 routine
runs / 24h quota and is cleared at session end. Continue? (y/N)"CronCreate-based flow documented below.The rest of the protocol documents the full CronCreate flow for reference
and for --remote invocations.
List all currently scheduled tasks using CronList.
Output format:
Active schedules (N):
[id] {description} — {cron expression} — next run: {time}
No schedules active.If CronList is not available: output a helpful error (see Fringe Cases).
Create a recurring task.
Steps:
/pr-watch, /do status, etc.{command} {natural-language-interval} (cron: {expression}). OK?"/schedule remove {id} to cancel."Cron Expression Conversion Table:
| Natural Language | Cron Expression |
|---|---|
| every minute | * * * * * |
| every 5 minutes | */5 * * * * |
| every 15 minutes | */15 * * * * |
| every 30 minutes | */30 * * * * |
| every hour / hourly | 0 * * * * |
| every 2 hours | 0 */2 * * * |
| every 6 hours | 0 */6 * * * |
| every day / daily | 0 9 * * * (default 9am) |
| every day at {H}am/pm | 0 {H} * * * |
| every weekday | 0 9 * * 1-5 |
| every Monday | 0 9 * * 1 |
If the user provides a raw cron expression directly, use it as-is without converting. Validate it has 5 fields before accepting.
Remove a scheduled task by ID using CronDelete.
If the user doesn't know the ID: run /schedule list first, show the list,
and ask which one to remove.
Output: "Removed schedule {id} ({description})."
Show all active schedules and their next run times. Equivalent to /schedule list
with additional context about what each task does and when it last ran (if available).
CronCreate schedules tasks that run during the current Claude Code session only. When the session ends (Claude Code closes or the conversation is reset), all session-scoped schedules are cleared.
Use session-scoped when:
For tasks that need to survive machine sleep, network drops, or session restarts, use RemoteTrigger — a one-off cloud trigger that fires from Anthropic's infrastructure rather than your local session.
Use cloud-persistent when:
How to set up a one-off cloud trigger:
Note: RemoteTrigger requires Claude Code with cloud features enabled (Pro or Team plan). CronCreate works on all plans but is session-scoped only.
CronCreate not available: Output error; suggest OS cron/Task Scheduler. Never fail silently.
Ambiguous interval: Ask for clarification before proceeding.
Raw cron expression: Accept without conversion; validate 5 fields.
Every-minute schedule: Warn about 60 fires/hour; suggest 5m or 15m instead.
No schedules when listing: "No active schedules. Use /schedule add to create one."
Pause requested: Explain pause isn't supported; remove and recreate instead.
Disclosure: "Creating schedule: {command} at {cron expression}. OK?"
Reversibility: amber — creates OS cron entries or CronCreate sessions (side effects outside the repo); undo with /schedule remove {id}
Trust gates:
/schedule does not produce a HANDOFF block. After each action, output a concise confirmation or list and wait for the next command.
add: "Scheduled. ID: {id}. Use /schedule remove {id} to cancel."remove: "Removed schedule {id}."list or status: the active schedule list (or "No active schedules.")© SethGammon, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 2 other files in skills/schedule of SethGammon/Citadel.
Open the folder on GitHubat commit e41ff1d
Schedule next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Schedule this skillSethGammon/Citadel | 922 | — | ~2.1k | Automated safety check: Pass | MIT | |
| ScheduleTinyAGI/tinyagi | 3.6k | — | ~1.4k | Automated safety check: Pass | MIT | |
| Send User MessageTinyAGI/tinyagi | 3.6k | — | ~829 | Automated safety check: Pass | MIT | |
| Cron Opsczl9707/build-your-own-openclaw | 1.9k | — | ~593 | Automated safety check: Pass | MIT | |
| Wp Wpcli And OpsAutomattic/agent-skills | 211 | 2 repos | ~988 | Automated safety check: Pass | None | |
| Ohdearohdearapp/ohdear-cli | 141 | — | ~1.1k | Automated safety check: Pass | MIT |
TinyAGI/tinyagi
Create, list, and delete scheduled tasks (recurring or one-time) that send messages to agents.
TinyAGI/tinyagi
Send a proactive message to a paired user via their channel (Discord, Telegram, or WhatsApp).
czl9707/build-your-own-openclaw
Create, list, and delete scheduled cron jobs. An agent skill from czl9707/build-your-own-openclaw.
Automattic/agent-skills
A skill your agent uses when working with WP-CLI (wp) for WordPress operations: safe search-replace, db export/import, plugin/theme/user/content management, cron, cache flushing, multisite, and…
ohdearapp/ohdear-cli
Manage Oh Dear website monitoring using the ohdear CLI. An agent skill from ohdearapp/ohdear-cli.
physiclaw/PhysiClaw
A skill your agent uses when the task involves scheduling future work — any "remind me at …", "every weekday …", "check again in 30 min", or closing a fired cron job.
SethGammon/Citadel
Creates new skills from the user's repeating patterns. An agent skill from SethGammon/Citadel.
SethGammon/Citadel
Cross-drive storage audit and cleanup. An agent skill from SethGammon/Citadel.
SethGammon/Citadel
Bounded foreground repetition for the current session. An agent skill from SethGammon/Citadel.
SethGammon/Citadel
GitHub issue and PR investigator. An agent skill from SethGammon/Citadel.
SethGammon/Citadel
File sentinel that monitors the working directory for changes and marker comments, then auto-triggers appropriate skills.
SethGammon/Citadel
Autonomous multi-session campaign agent. An agent skill from SethGammon/Citadel.
Categories
Manages recurring and one-off scheduled tasks. An agent skill from SethGammon/Citadel. Schedule is an agent skill from SethGammon/Citadel. Manages recurring and one-off scheduled tasks.
Schedule fits situations like: tasks that involve Scheduled and recurring tasks.
Run `npx skills add SethGammon/Citadel --skill schedule -a claude-code`. Or copy the skill folder (skills/schedule in SethGammon/Citadel) into .claude/skills/schedule in your project. Claude Code loads it when a task matches its description.
Run `npx skills add SethGammon/Citadel --skill schedule -a codex`. Or copy the skill folder (skills/schedule in SethGammon/Citadel) into .agents/skills/schedule in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add SethGammon/Citadel --skill schedule -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/schedule, .gemini/skills/schedule, .github/skills/schedule and .opencode/skills/schedule in your project.
Going by SKILL.md and its folder, Schedule needs the command-line tools its instructions call (node).
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Schedule is published under the MIT licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.1k tokens (SKILL.md is roughly 8.3k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Schedule: Schedule (TinyAGI/tinyagi, 3.6k stars), Send User Message (TinyAGI/tinyagi, 3.6k stars), Cron Ops (czl9707/build-your-own-openclaw, 1.9k stars) and Wp Wpcli And Ops (Automattic/agent-skills, 211 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
SethGammon (a GitHub user) maintains it in SethGammon/Citadel, which has 922 GitHub stars. The repository holds 48 skills in this directory. The repository was last updated on October 1, 2026.
Source: SethGammon/Citadel on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.