Schedule
TinyAGI/tinyagi
Create, list, and delete scheduled tasks (recurring or one-time) that send messages to agents.
Create, inspect, run, edit, enable/disable, and delete octo's scheduled cron tasks — recurring agent prompts stored in ~/.octo/tasks/.json and executed by the octo serve scheduler.
$ npx skills add open-octo/octo-agent --skill cron-task-creator -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install open-octo/octo-agent cron-task-creator --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/open-octo/octo-agent.git skills-src && mkdir -p .claude/skills && cp -r skills-src/internal/skills/defaults/cron-task-creator .claude/skills/cron-task-creator && 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 "cron-task-creator" agent skill from https://github.com/open-octo/octo-agent/tree/main/internal/skills/defaults/cron-task-creator into .claude/skills/cron-task-creator/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "cron-task-creator", 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/open-octo/octo-agent/tree/main/internal/skills/defaults/cron-task-creatorType 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 open-octo/octo-agent --skill cron-task-creator -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install open-octo/octo-agent cron-task-creator --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/open-octo/octo-agent.git skills-src && mkdir -p .agents/skills && cp -r skills-src/internal/skills/defaults/cron-task-creator .agents/skills/cron-task-creator && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "cron-task-creator" agent skill from https://github.com/open-octo/octo-agent/tree/main/internal/skills/defaults/cron-task-creator into .agents/skills/cron-task-creator/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "cron-task-creator", 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 open-octo/octo-agent --skill cron-task-creator -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install open-octo/octo-agent cron-task-creator --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/open-octo/octo-agent.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/internal/skills/defaults/cron-task-creator .cursor/skills/cron-task-creator && 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 "cron-task-creator" agent skill from https://github.com/open-octo/octo-agent/tree/main/internal/skills/defaults/cron-task-creator into .cursor/skills/cron-task-creator/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "cron-task-creator", 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/open-octo/octo-agent.git --path internal/skills/defaults/cron-task-creator--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 open-octo/octo-agent --skill cron-task-creator -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install open-octo/octo-agent cron-task-creator --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/open-octo/octo-agent.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/internal/skills/defaults/cron-task-creator .gemini/skills/cron-task-creator && 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 "cron-task-creator" agent skill from https://github.com/open-octo/octo-agent/tree/main/internal/skills/defaults/cron-task-creator into .gemini/skills/cron-task-creator/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "cron-task-creator", 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 open-octo/octo-agent cron-task-creatorInstalls 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 open-octo/octo-agent --skill cron-task-creator -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/open-octo/octo-agent.git skills-src && mkdir -p .github/skills && cp -r skills-src/internal/skills/defaults/cron-task-creator .github/skills/cron-task-creator && 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 "cron-task-creator" agent skill from https://github.com/open-octo/octo-agent/tree/main/internal/skills/defaults/cron-task-creator into .github/skills/cron-task-creator/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "cron-task-creator", 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 open-octo/octo-agent --skill cron-task-creator -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install open-octo/octo-agent cron-task-creator --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/open-octo/octo-agent.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/internal/skills/defaults/cron-task-creator .opencode/skills/cron-task-creator && 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 "cron-task-creator" agent skill from https://github.com/open-octo/octo-agent/tree/main/internal/skills/defaults/cron-task-creator into .opencode/skills/cron-task-creator/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "cron-task-creator", 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.
cron-task-creatorCreate, inspect, run, edit, enable/disable, and delete octo's scheduled cron tasks — recurring agent prompts stored in ~/.octo/tasks/.json and executed by the octo serve scheduler.
Cron Task Creator is an agent skill from open-octo/octo-agent. Create, inspect, run, edit, enable/disable, and delete octo's scheduled cron tasks — recurring agent prompts stored in ~/.octo/tasks/.json and executed by the octo serve scheduler. Use when the user wants to schedule a recurring task, e.g. "run X every morning", "schedule a daily report", "set up a cron job", "定时任务", "每天自动跑".
Its SKILL.md is about 2.7k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Productivity & Automation, covering Scheduled and recurring tasks. The repository describes itself as: Open-source, single-binary, self-hosted AI agent — your models and data stay on your machine. A coding agent on par with Claude Code and a personal assistant lighter than… The licence is MIT.
5 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit bffd192. 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:
curlghFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use curl and gh, which can reach the network depending on how they are called.
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.
Cron Task Creator loads about 2.7k tokens when it runs. Until then it costs about 87 tokens; SKILL.md has 1,432 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 open-octo/octo-agent at commit bffd192, republished under its MIT licence (© open-octo). 1,432 words, ~2,719 tokens.
.claude/skills/cron-task-creator/SKILL.md (or your agent's skills folder).octo runs an agent prompt on a schedule. Each task is a JSON file in
~/.octo/tasks/, loaded by the scheduler inside octo serve. When a task
fires, the scheduler runs one agent turn with the task's prompt in a fresh
session — a run never sees an earlier run's transcript. What's worth keeping
across runs goes in long-term memory: each task has its own project, and with
it its own working directory and memory directory, so a note one run saves is
in the next run's memory block.
Each run is bounded by a 30-minute wall-clock timeout (the only hard cap on
a run).
| Field | Required | Meaning |
|---|---|---|
name | yes | Human-readable task name |
cron | yes | Schedule expression — see format below |
prompt | yes | The prompt sent to the agent on each run |
model | no | Model override; defaults to the server's model |
agent_id | no | Id of the expert (/api/agents) the run executes as; empty = the Default Agent |
directory | no | Working directory the run executes in |
notify | no | IM chats to push each run's final reply (or failure) to — see the notify table |
enabled | yes | Whether the schedule is active |
id, created_at, last_run, session_id, session_group_id are
server-managed — never set them by hand except id in the file-write fallback
below.
Every run creates a fresh session (titled by the run's local date and time) and files it under a per-task session group named after the task, so a task's runs cluster together in the sidebar. The group is created with the task and renamed/deleted along with it. Runs never share a session — each starts from a clean transcript.
The scheduler uses robfig/cron with a seconds field. A standard 5-field crontab line is invalid — always prepend a seconds field:
seconds minutes hours day-of-month month day-of-week| Want | Expression |
|---|---|
| Every day at 09:00 | 0 0 9 * * * |
| Every hour | 0 0 * * * * |
| Weekdays at 18:30 | 0 30 18 * * 1-5 |
| 1st of each month at 08:00 | 0 0 8 1 * * |
Descriptors also work: @hourly, @daily, @weekly, @every 90m. Times are
in the server's local timezone.
Minimum interval is 1 hour. The scheduler rejects any expression whose
consecutive fires are closer together than that (e.g. 0 */30 * * * * or
@every 10m) — the seconds/minutes fields exist for picking a precise time of
day, not for sub-hourly polling. If the user wants faster iteration, use
/loop in a live session instead of a cron task.
gh issue list
call. If there are none, reply exactly 'no new issues' and stop. Otherwise
summarize each in one line and stop — do not re-check."The Web UI's edit button opens a session with the skill arguments
edit <id> "<name>". There is no single-task GET — find the task in
GET /api/tasks by id.
In that session (or whenever the user is clearly in the Web UI), open with an edit form instead of asking what to change. Elsewhere (TUI, IM), list the current fields as text and ask.
Read the genui skill before emitting it. Reply with a short line and one
inline octo-ui fence — no panel id — holding, in this order:
| Field | Node | Prefill |
|---|---|---|
name | input | current name |
cron | input, label saying 6 fields, seconds first | current cron |
| — | text, tone: "muted" | the current schedule in plain words ("every weekday at 18:30") |
prompt | textarea, rows: 12 | current prompt |
model | input, placeholder saying empty = the server's model | current model or empty |
directory | input | current directory or empty |
enabled | switch | current enabled |
note | textarea, rows: 3 | empty; label along the lines of "Or describe the change and I'll make it" |
followed by a primary button with action: "save_task" and
payload: {"id": "<id>"}. Label fields in the user's language. notify and
agent_id stay out of the form — changes to them go through note.
The renderer silently truncates a prefilled value past its cap — 500
characters for an input, 5000 for a textarea — and whatever it shows
is what comes back on submit. Leave a field out of the form when its
current value is near its cap (over ~480 / ~4800 characters), and say in a
text node that it can be changed through note.
When the [octo-ui-action] with action: "save_task" comes back:
PATCH only
the ones that changed.note — the user already made the edit; don't ask
again. PATCH, then report the changes in one or two lines; a changed
cron is restated in plain words. A 400 (bad cron, sub-hourly schedule,
unknown expert) goes back to the user as-is. Nothing changed → say so and
stop.note — handle it as in the workflow above, on top of any field
changes: a new schedule is translated and echoed back, a rewritten prompt
is shown and confirmed before PATCH./api/tasksPrefer the API whenever octo serve is up (default :8088): every change
reschedules the running process immediately. If the Environment section has an
Octo server: line, use that address in place of 127.0.0.1:8088 below.
# Create — returns {"id":"task_..."}. Include any optional field (directory,
# model, agent_id, notify) right here.
curl -s -X POST http://127.0.0.1:8088/api/tasks \
-H 'Content-Type: application/json' \
-d '{"name":"daily-report","cron":"0 0 9 * * *","prompt":"Summarize ...","directory":"/srv/repo"}'
curl -s http://127.0.0.1:8088/api/tasks # list
curl -s -X DELETE http://127.0.0.1:8088/api/tasks/{id} # delete
# Run now — prefer the scheduler panel's Run button (see the workflow). Only
# call this when the user explicitly asks to trigger a run from here.
curl -s -X POST http://127.0.0.1:8088/api/tasks/{id}/run
# Edit any subset of fields — this is also how you enable/disable.
curl -s -X PATCH http://127.0.0.1:8088/api/tasks/{id} \
-H 'Content-Type: application/json' \
-d '{"prompt":"new prompt ...","enabled":false}'PATCH /api/tasks/{id} accepts name, enabled, cron, prompt, model,
agent_id, directory, notify — send only the fields you want to change.
A changed cron is re-validated (syntax and the 1-hour floor) and rejected
with a 400.
Renaming via name also renames the task's session group. Look up {id} from
the create response or the list. (Earlier builds had a separate
/api/cron-tasks/... route and a /toggle endpoint; both are gone — everything
is /api/tasks now.)
Write ~/.octo/tasks/<id>.json with write_file (id format
task_<unix-millis>; filename must equal <id>.json):
{
"id": "task_1717999999999",
"name": "daily-report",
"cron": "0 0 9 * * *",
"prompt": "Summarize ...",
"directory": "/srv/repo",
"enabled": true,
"created_at": "2026-06-10T09:00:00Z"
}The file is picked up the next time octo serve starts. A hand-written file
with a bad cron expression — invalid syntax, or faster than the 1-hour floor —
fails silently at load (logged to stderr only, task stays listed but never
fires): double-check the 6-field format and the interval. File edits to an
already-running server are ignored until restart — when the server is up,
always go through the API.
octo serve is running. No serve → no runs. Missed
schedules are not replayed on restart.chat_idnotify is a list (a single bare object is also accepted); every entry is
pushed: [{"platform":"feishu","chat_id":"oc_..."}, ...].
| Platform | chat_id | Notes |
|---|---|---|
feishu | oc_… chat id | Works with app creds in ~/.octo/channels.yml; get the id from chat settings or the server log after messaging the bot. |
dingtalk | staff id (1:1) or cid… openConversationId (group) | A DM's conversation id does NOT work — use the staff id. Needs "robot message send" permission. |
weixin | iLink user id | User must have messaged the bot once (refreshes the context_token the push reads); a long-stale token may be rejected. |
telegram | Telegram chat id (user/group/channel) | Bot must be able to message it (user started it, or bot is a member). |
discord | channel id | Bot needs Send Messages permission in that channel. |
wecom | (ignored) | Pushes go through a group-robot webhook (webhook_key/webhook_url in channel config); bound to one group, so chat_id is just a label. |
© open-octo, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in internal/skills/defaults/cron-task-creator of open-octo/octo-agent.
Open the folder on GitHubat commit bffd192
Cron Task Creator 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 |
|---|---|---|---|---|---|---|
| Cron Task Creator this skillopen-octo/octo-agent | 125 | — | ~2.7k | 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.
open-octo/octo-agent
Acquire images as files — generate them with an AI image model (14 providers: OpenAI/gpt-image, Gemini, Qwen, Zhipu, Volcengine, Stability, FLUX, Ideogram, MiniMax, and more), search openly-licensed…
open-octo/octo-agent
Create, read, and edit Excel (.xlsx) spreadsheets programmatically with openpyxl — cell values, formulas, styling (fonts/fills/borders/alignment/number formats), merged cells, multiple sheets…
open-octo/octo-agent
Design guidance for any HTML/Markdown file shown in octo's Artifacts panel — reports, dashboards, architecture/system diagrams, generated UIs, slide-style pages, 3D scenes.
open-octo/octo-agent
Review local code changes. An agent skill from open-octo/octo-agent.
open-octo/octo-agent
AI-driven multi-format SVG content generation system. An agent skill from open-octo/octo-agent.
open-octo/octo-agent
Configure octo's global settings through guided conversation — set up AI model endpoints (providers, API keys, models), adjust agent defaults (reasoning effort, permission mode, coauthor, workspace…
Categories
Create, inspect, run, edit, enable/disable, and delete octo's scheduled cron tasks — recurring agent prompts stored in ~/.octo/tasks/.json and executed by the octo serve scheduler. Cron Task Creator is an agent skill from open-octo/octo-agent.json and executed by the octo serve scheduler.
Cron Task Creator fits situations like: the user wants to schedule a recurring task; tasks that involve Scheduled and recurring tasks.
Run `npx skills add open-octo/octo-agent --skill cron-task-creator -a claude-code`. Or copy the skill folder (internal/skills/defaults/cron-task-creator in open-octo/octo-agent) into .claude/skills/cron-task-creator in your project. Claude Code loads it when a task matches its description.
Run `npx skills add open-octo/octo-agent --skill cron-task-creator -a codex`. Or copy the skill folder (internal/skills/defaults/cron-task-creator in open-octo/octo-agent) into .agents/skills/cron-task-creator 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 open-octo/octo-agent --skill cron-task-creator -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/cron-task-creator, .gemini/skills/cron-task-creator, .github/skills/cron-task-creator and .opencode/skills/cron-task-creator in your project.
Going by SKILL.md and its folder, Cron Task Creator needs the command-line tools its instructions call (curl and gh).
SKILL.md contains no URLs. Its commands use curl and gh, which can reach the network depending on how they are called. 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.
Cron Task Creator is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.7k tokens (SKILL.md is roughly 11k 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 Cron Task Creator: 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.
open-octo (a GitHub organization) maintains it in open-octo/octo-agent, which has 125 GitHub stars. The repository holds 43 skills in this directory. The repository was last updated on October 5, 2026.
Source: open-octo/octo-agent on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.