Agent skill

Cron Task Creator

by open-octo in 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.

MITAuto-check passedProductivity & Automation

Install Cron Task Creator

skills CLI
$ npx skills add open-octo/octo-agent --skill cron-task-creator -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install open-octo/octo-agent cron-task-creator --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ 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-src

Use ~/.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/

Facts

Skill name
cron-task-creator
GitHub stars
125
Token cost
~2.7k tokens
SKILL.md length
1,432 words
Files
1
Skills in repo
43
Repo updated
First seen
Licence
MIT

At a glance

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.

  • Works in 5 steps: Gather the schedule, the prompt, and any… → Translate to a 6-field expression and… → Write a self-contained prompt. The task… → …
  • The user wants to schedule a recurring task
  • SKILL.md covers Task schema, Cron expression — 6 fields,…, Workflow and Editing a task, plus 3 more sections
  • Calls curl and gh

What it does

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.

When your agent uses it

  • The user wants to schedule a recurring task
  • Tasks that involve Scheduled and recurring tasks

Example prompts

  • “run X every morning”
  • “schedule a daily report”
  • “set up a cron job”
  • “/cron-task-creator”

Workflow steps

5 steps, taken from the first numbered list in SKILL.md.

  1. Gather the schedule, the prompt, and any optional fields. If the schedule
  2. Translate to a 6-field expression and echo it back in plain words
  3. Write a self-contained prompt. The task session has no access to this
  4. Give the prompt an explicit stop condition. An open-ended prompt makes the
  5. Create, then verify by listing. To smoke-test it, **point the user to

What it can do on your machine

Read from SKILL.md and the folder at commit bffd192. It shows what the files ask for, not the result of running them.

  • Tool permissions

    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.

  • Runs code

    Shell commands in SKILL.md call:

    • curl
    • gh

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    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.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

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.

Always · name and description, kept in context so the agent knows when to use it
~87
When it runs · the whole SKILL.md, loaded when a task matches
~2.7k

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.

Safety

Auto-check passed

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.

SKILL.md

The full file from open-octo/octo-agent at commit bffd192, republished under its MIT licence (© open-octo). 1,432 words, ~2,719 tokens.

Download SKILL.mdSave it as .claude/skills/cron-task-creator/SKILL.md (or your agent's skills folder).
name
cron-task-creator
description
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", "定时任务", "每天自动跑".

Create and manage octo cron tasks

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).

Task schema

FieldRequiredMeaning
nameyesHuman-readable task name
cronyesSchedule expression — see format below
promptyesThe prompt sent to the agent on each run
modelnoModel override; defaults to the server's model
agent_idnoId of the expert (/api/agents) the run executes as; empty = the Default Agent
directorynoWorking directory the run executes in
notifynoIM chats to push each run's final reply (or failure) to — see the notify table
enabledyesWhether 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.

Cron expression — 6 fields, seconds first

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
WantExpression
Every day at 09:000 0 9 * * *
Every hour0 0 * * * *
Weekdays at 18:300 30 18 * * 1-5
1st of each month at 08:000 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.

Workflow

  1. Gather the schedule, the prompt, and any optional fields. If the schedule is vague ("every morning"), pick a concrete time and confirm.
  2. Translate to a 6-field expression and echo it back in plain words ("every weekday at 18:30") before creating anything.
  3. Write a self-contained prompt. The task session has no access to this conversation — the prompt must carry all context: what to do, where, and what the output should look like. When a run depends on what earlier runs found ("only report issues I haven't seen"), have the prompt say what to save to memory at the end of each run and to check it at the start.
  4. Give the prompt an explicit stop condition. An open-ended prompt makes the model keep re-verifying until the 30-minute timeout instead of finishing. Spell out when the task is done, especially the empty case:
    • Bad: "Check the repository for any new open issues that need attention."
    • Good: "List open issues created in the last 24h via one 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."
  5. Create, then verify by listing. To smoke-test it, point the user to the scheduler panel and have them click Run on the task — do not call the run endpoint yourself from this session. A run is a full agent turn (up to 30 minutes) in the task's own session; firing it from here just blocks this conversation and the output lands in a session the user isn't watching. The panel runs it where they can see it.

Editing a task

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.

Show full SKILL.md (696 more words)Show less
The edit form

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:

FieldNodePrefill
nameinputcurrent name
croninput, label saying 6 fields, seconds firstcurrent cron
—text, tone: "muted"the current schedule in plain words ("every weekday at 18:30")
prompttextarea, rows: 12current prompt
modelinput, placeholder saying empty = the server's modelcurrent model or empty
directoryinputcurrent directory or empty
enabledswitchcurrent enabled
notetextarea, rows: 3empty; 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:

  • Compare each submitted field with the task you fetched and PATCH only the ones that changed.
  • Fields only, no 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.
  • A 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 — one surface, all under /api/tasks

Prefer 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.

bash
# 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.)

Fallback — direct file write (server not running)

Write ~/.octo/tasks/<id>.json with write_file (id format task_<unix-millis>; filename must equal <id>.json):

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.

Caveats — mention when relevant

  • Tasks only fire while octo serve is running. No serve → no runs. Missed schedules are not replayed on restart.
  • API changes take effect immediately; hand-edited files don't (until the next serve start).
  • A failed IM push is logged on the server and never affects the run.

notify — per-platform chat_id

notify is a list (a single bare object is also accepted); every entry is pushed: [{"platform":"feishu","chat_id":"oc_..."}, ...].

Platformchat_idNotes
feishuoc_… chat idWorks with app creds in ~/.octo/channels.yml; get the id from chat settings or the server log after messaging the bot.
dingtalkstaff id (1:1) or cid… openConversationId (group)A DM's conversation id does NOT work — use the staff id. Needs "robot message send" permission.
weixiniLink user idUser must have messaged the bot once (refreshes the context_token the push reads); a long-stale token may be rejected.
telegramTelegram chat id (user/group/channel)Bot must be able to message it (user started it, or bot is a member).
discordchannel idBot 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

Files

Just SKILL.md in internal/skills/defaults/cron-task-creator of open-octo/octo-agent.

Open the folder on GitHubat commit bffd192

Compare with similar skills

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.

Cron Task Creator compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Cron Task Creator this skillopen-octo/octo-agent125—~2.7kAutomated safety check: PassMIT
ScheduleTinyAGI/tinyagi3.6k—~1.4kAutomated safety check: PassMIT
Send User MessageTinyAGI/tinyagi3.6k—~829Automated safety check: PassMIT
Cron Opsczl9707/build-your-own-openclaw1.9k—~593Automated safety check: PassMIT
Wp Wpcli And OpsAutomattic/agent-skills2112 repos~988Automated safety check: PassNone
Ohdearohdearapp/ohdear-cli141—~1.1kAutomated safety check: PassMIT

Similar skills

  • Schedule

    TinyAGI/tinyagi

    Create, list, and delete scheduled tasks (recurring or one-time) that send messages to agents.

    3.6k GitHub stars~1.4k tokensUpdated 6 mo ago
    Productivity & AutomationAuto-check passed
  • Send User Message

    TinyAGI/tinyagi

    Send a proactive message to a paired user via their channel (Discord, Telegram, or WhatsApp).

    3.6k GitHub stars~829 tokensUpdated 6 mo ago
    Productivity & AutomationAuto-check passed
  • Cron Ops

    czl9707/build-your-own-openclaw

    Create, list, and delete scheduled cron jobs. An agent skill from czl9707/build-your-own-openclaw.

    1.9k GitHub stars~593 tokensUpdated 3 mo ago
    Productivity & AutomationAuto-check passed
  • Wp Wpcli And Ops

    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…

    211 GitHub starsUsed in 2 repos~988 tokens
    Productivity & AutomationAuto-check passed
  • Ohdear

    ohdearapp/ohdear-cli

    Manage Oh Dear website monitoring using the ohdear CLI. An agent skill from ohdearapp/ohdear-cli.

    141 GitHub stars~1.1k tokensUpdated 1 mo ago
    Productivity & AutomationAuto-check passed
  • Jobs

    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.

    386 GitHub stars~1.1k tokensUpdated 3 days ago
    Productivity & AutomationAuto-check passed

More from open-octo/octo-agent

All 43 skills in this repo
  • Image Gen

    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…

    125 GitHub stars~3.1k tokensUpdated 2 days ago
    Auto-check: notes
  • Office XLSX

    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…

    125 GitHub stars~1.8k tokensUpdated 2 days ago
    Auto-check: notes
  • Artifact Design

    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.

    125 GitHub stars~2.7k tokensUpdated 2 days ago
    Auto-check passed
  • Code Review

    open-octo/octo-agent

    Review local code changes. An agent skill from open-octo/octo-agent.

    125 GitHub stars~942 tokensUpdated 2 days ago
    Auto-check passed
  • Ppt Master

    open-octo/octo-agent

    AI-driven multi-format SVG content generation system. An agent skill from open-octo/octo-agent.

    125 GitHub stars~23k tokensUpdated 2 days ago
    Auto-check: warnings
  • Config Setup

    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…

    125 GitHub stars~3.3k tokensUpdated 2 days ago
    Auto-check passed

Questions about Cron Task Creator

What does Cron Task Creator do?

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.

When should I use Cron Task Creator?

Cron Task Creator fits situations like: the user wants to schedule a recurring task; tasks that involve Scheduled and recurring tasks.

How do I install Cron Task Creator in Claude Code?

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.

How do I install Cron Task Creator in Codex?

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.

Can I use Cron Task Creator in Cursor, Gemini CLI or GitHub Copilot?

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.

What does Cron Task Creator need to run?

Going by SKILL.md and its folder, Cron Task Creator needs the command-line tools its instructions call (curl and gh).

Does Cron Task Creator access the network?

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.

Is Cron Task Creator safe to install?

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.

What licence does Cron Task Creator use?

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.

How many tokens does Cron Task Creator use?

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.

What are the alternatives to Cron Task Creator?

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.

Who maintains Cron Task Creator?

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.