Schedule
TinyAGI/tinyagi
Create, list, and delete scheduled tasks (recurring or one-time) that send messages to agents.
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.
$ npx skills add physiclaw/PhysiClaw --skill jobs -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install physiclaw/PhysiClaw jobs --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/physiclaw/PhysiClaw.git skills-src && mkdir -p .claude/skills && cp -r skills-src/src/physiclaw/agent/claude/skills/jobs .claude/skills/jobs && 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 "jobs" agent skill from https://github.com/physiclaw/PhysiClaw/tree/main/src/physiclaw/agent/claude/skills/jobs into .claude/skills/jobs/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "jobs", 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/physiclaw/PhysiClaw/tree/main/src/physiclaw/agent/claude/skills/jobsType 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 physiclaw/PhysiClaw --skill jobs -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install physiclaw/PhysiClaw jobs --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/physiclaw/PhysiClaw.git skills-src && mkdir -p .agents/skills && cp -r skills-src/src/physiclaw/agent/claude/skills/jobs .agents/skills/jobs && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "jobs" agent skill from https://github.com/physiclaw/PhysiClaw/tree/main/src/physiclaw/agent/claude/skills/jobs into .agents/skills/jobs/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "jobs", 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 physiclaw/PhysiClaw --skill jobs -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install physiclaw/PhysiClaw jobs --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/physiclaw/PhysiClaw.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/src/physiclaw/agent/claude/skills/jobs .cursor/skills/jobs && 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 "jobs" agent skill from https://github.com/physiclaw/PhysiClaw/tree/main/src/physiclaw/agent/claude/skills/jobs into .cursor/skills/jobs/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "jobs", 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/physiclaw/PhysiClaw.git --path src/physiclaw/agent/claude/skills/jobs--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 physiclaw/PhysiClaw --skill jobs -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install physiclaw/PhysiClaw jobs --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/physiclaw/PhysiClaw.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/src/physiclaw/agent/claude/skills/jobs .gemini/skills/jobs && 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 "jobs" agent skill from https://github.com/physiclaw/PhysiClaw/tree/main/src/physiclaw/agent/claude/skills/jobs into .gemini/skills/jobs/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "jobs", 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 physiclaw/PhysiClaw jobsInstalls 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 physiclaw/PhysiClaw --skill jobs -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/physiclaw/PhysiClaw.git skills-src && mkdir -p .github/skills && cp -r skills-src/src/physiclaw/agent/claude/skills/jobs .github/skills/jobs && 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 "jobs" agent skill from https://github.com/physiclaw/PhysiClaw/tree/main/src/physiclaw/agent/claude/skills/jobs into .github/skills/jobs/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "jobs", 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 physiclaw/PhysiClaw --skill jobs -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install physiclaw/PhysiClaw jobs --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/physiclaw/PhysiClaw.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/src/physiclaw/agent/claude/skills/jobs .opencode/skills/jobs && 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 "jobs" agent skill from https://github.com/physiclaw/PhysiClaw/tree/main/src/physiclaw/agent/claude/skills/jobs into .opencode/skills/jobs/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "jobs", 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.
jobsA 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.
Jobs is an agent skill from physiclaw/PhysiClaw. Use when the task involves scheduling future work — any "remind me at …", "every weekday …", "check again in 30 min", or closing a fired cron job. Also use to reschedule or list jobs. NOT for one-off in-session waits. NEVER edit jobs.md by hand (the cron parser is strict).
Its SKILL.md is about 1.1k tokens, which your agent loads only when the skill is triggered. The skill folder holds 1 other file (for example `jobs.py`).
It sits in Productivity & Automation, covering Scheduled and recurring tasks. The repository describes itself as: The AI agent that physically operates a phone — the way you do. The licence is MIT.
2 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 333ddda. 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.
Ships script files (Python), which the agent can run.
Shell commands in SKILL.md call:
uvFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use uv, 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.
Jobs loads about 1.1k tokens when it runs. Until then it costs about 70 tokens; SKILL.md has 421 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 physiclaw/PhysiClaw at commit 333ddda, republished under its MIT licence (© physiclaw). 421 words, ~1,098 tokens.
.claude/skills/jobs/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.Durable scheduled work lives in ~/.physiclaw/jobs/jobs.md. The
format is regex-parsed by the cron loop — a malformed field breaks
every scheduled job in the file. Never edit jobs.md directly.
All job operations go through a single CLI:
uv run python "$SKILL_DIR/jobs.py" <subcommand> [args]Four subcommands: create, list, get, finish. Each is a thin
wrapper around the canonical engine module — the file format stays
invariant no matter what you pass.
$SKILL_DIR is provided by Claude Code; it resolves to the directory
containing this SKILL.md.
uv run python "$SKILL_DIR/jobs.py" create \
--id <user>-<topic>-<YYYY-MM-DD> \
--kind <one-time|periodic> \
--schedule "<5-field cron>" \
--description "<human text>" \
--context "<what the next wake needs to know>"--kind defaults to one-time if omitted.--schedule: standard 5-field cron min hour dom mon dow. Day-
of-week is 0=Sun, 6=Sat. All times are naive local time. Examples:"0 9 * * 1-5""30 14 1 5 *" (combined with a
matching one-time kind)"M H D Mo *" where M/H/D/Mo are the computed minute/hour/day/month.--context: at least 10 characters. Write what the next wake
needs to do — the engine injects this into the SYSTEM prompt when
the job fires.Id format: <user>-<topic>-<YYYY-MM-DD>. Lowercase letters,
digits, hyphens only. The date suffix keeps repeat ids
(alice-water-plants-…) unique across days without -v2 churn.
On duplicate id (even terminal), the command errors — pick a fresh id.
uv run python "$SKILL_DIR/jobs.py" create \
--id alice-water-plants-2026-05-01 \
--schedule "0 9 1 5 *" \
--description "Remind Alice to water the kitchen plants." \
--context "Send Alice a friendly reminder via WeChat to water the kitchen herbs."uv run python "$SKILL_DIR/jobs.py" list [--status pend|fired|done|fail|cancel|all]Default is all. Prints one job per line with id, status, kind,
schedule, next fire, and short description.
Common recovery move: start a wake with
jobs.py list --status fired to find orphaned fired jobs from earlier
wakes that you need to close.
uv run python "$SKILL_DIR/jobs.py" get --id <id>Prints every field (description, type, status, schedule, context,
all timestamps, execution result). Use when the one-liner from
list isn't enough.
uv run python "$SKILL_DIR/jobs.py" finish \
--id <id> --status <done|fail|cancel> --recap "<one-line outcome>"cancel + new create with a fresh id).For periodic jobs, done/fail automatically reset to pend
so the next cycle fires. Only cancel is permanent for periodic.
Errors on already-terminal jobs (re-finishing is a bug, not idempotent).
There is no update. Jobs are append-only; their only state change
is finishing them. To reschedule:
jobs.py finish --id <old> --status cancel --recap "rescheduling — new id <new>"jobs.py create --id <new> … (use a fresh id — bump the date, or
append -v2 if same-day)When closing with >> WAIT - <reason>, pair it with a fresh job
for the resume check. Otherwise the engine auto-schedules a generic
15-min follow-up — usually wrong for your situation. Only fall back
to that if you genuinely don't know when to check back.
Example:
uv run python "$SKILL_DIR/jobs.py" create \
--id alice-confirm-order-2026-05-01 \
--schedule "$(date -v +30M '+%M %H %d %m') *" \
--description "Re-check IM: user said they'd confirm in ~30min." \
--context "Alice reviewed cart before leaving for a meeting; re-open WeChat and look for her OK to place the order."© physiclaw, 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 1 other file in src/physiclaw/agent/claude/skills/jobs of physiclaw/PhysiClaw.
Open the folder on GitHubat commit 333ddda
Jobs 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 |
|---|---|---|---|---|---|---|
| Jobs this skillphysiclaw/PhysiClaw | 389 | — | ~1.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 | |
| X Bookmarkssharbelxyz/x-bookmarks | 289 | — | ~2k | Automated safety check: Notes | None | |
| Wp Wpcli And OpsAutomattic/agent-skills | 211 | 2 repos | ~988 | Automated safety check: Pass | None |
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.
sharbelxyz/x-bookmarks
Fetch, summarize, and manage X/Twitter bookmarks via bird CLI or X API v2.
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
Shop on the 京东 (JD) app. An agent skill from physiclaw/PhysiClaw.
physiclaw/PhysiClaw
First-run setup — learn the bboxes of your three key input boxes (Spotlight search, chat input keyboard-down, chat input keyboard-up) plus the keyboard keys and Paste buttons.
physiclaw/PhysiClaw
Shop on the 淘宝 (Taobao) app. An agent skill from physiclaw/PhysiClaw.
Categories
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. Jobs is an agent skill from physiclaw/PhysiClaw. Use when the task involves scheduling future work — any "remind me at …", "every weekday …", "check again in 30 min", or closing a fired cron job.
Jobs fits situations like: the task involves scheduling future work — any remind me at …; every weekday …; check again in 30 min; closing a fired cron job.
Run `npx skills add physiclaw/PhysiClaw --skill jobs -a claude-code`. Or copy the skill folder (src/physiclaw/agent/claude/skills/jobs in physiclaw/PhysiClaw) into .claude/skills/jobs in your project. Claude Code loads it when a task matches its description.
Run `npx skills add physiclaw/PhysiClaw --skill jobs -a codex`. Or copy the skill folder (src/physiclaw/agent/claude/skills/jobs in physiclaw/PhysiClaw) into .agents/skills/jobs 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 physiclaw/PhysiClaw --skill jobs -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/jobs, .gemini/skills/jobs, .github/skills/jobs and .opencode/skills/jobs in your project.
Going by SKILL.md and its folder, Jobs needs Python for the scripts in its folder and the command-line tools its instructions call (uv). Our summary lists: Python 3.
SKILL.md contains no URLs. Its commands use uv, 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.
Jobs is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 1.1k tokens (SKILL.md is roughly 4.4k 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 Jobs: 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 X Bookmarks (sharbelxyz/x-bookmarks, 289 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
physiclaw (a GitHub user) maintains it in physiclaw/PhysiClaw, which has 389 GitHub stars. The repository holds 4 skills in this directory. The repository was last updated on October 10, 2026.
Source: physiclaw/PhysiClaw on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.