Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Manage Pilot Bot scheduled jobs — add, remove, pause, resume, edit, list. Live-syncs JOBS.yaml with CronCreate/CronDelete.
.claude/skills/majiayu000-bot-jobs/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-18 | ✗→✓ | ▲ Improved | -12% | 0% |
| case-10 | ✗→✓ | ▲ Improved | 49% | 0% |
| case-11 | ✗→✓ | ▲ Improved | 18% | 0% |
| case-14 | ✗→✓ | ▲ Improved | -13% | 0% |
| case-16 | ✗→✓ | ▲ Improved | -19% | 0% |
Manage scheduled jobs defined in JOBS.yaml at $PILOT_BOT_DIR. All changes are written to YAML and live-synced with CronCreate/CronDelete immediately.
Before using cron tools: Load them first with ToolSearch(query="select:CronList,CronCreate,CronDelete"). CronCreate uses cron (not schedule) as the parameter name for the cron expression.
Users interact with this skill via conversation (e.g., "add a job that checks X every morning") — either through Telegram (if available) or directly in the Claude Code session. The bot calls this skill internally.
| Command | Action | |---------|--------| | /bot-jobs list | Show all jobs with status | | /bot-jobs add | Add a new job interactively | | /bot-jobs remove <id> | Delete a job permanently | | /bot-jobs pause <id> | Set active: false and unregister from cron | | /bot-jobs resume <id> | Set active: true and register with cron | | /bot-jobs edit <id> | Modify a job interactively |
Args are passed via the Skill tool's args parameter (e.g., skill: "bot-jobs", args: "pause daily-report").
Extract the subcommand and optional job ID from args:
list → listadd → addremove <id> → removepause <id> → pauseresume <id> → resumeedit <id> → editRead JOBS.yaml from $PILOT_BOT_DIR. Parse the YAML structure. Each job has:
yamljobs: <id>: schedule: "<cron expression>" description: <short description> active: true|false prompt: | <prompt text>
Display all jobs in a table format:
| ID | Schedule | Active | Description |
|----|----------|--------|-------------|
| daily-report | 0 9 * * * | yes | Morning status report |Also run CronList to show which jobs are currently registered in the session.
Ask the user for each field:
daily-report)0 9 * * *)Then:
JOBS.yaml using the Edit toolCronCreate with cron='<cron expression>' and prompt='<prompt text>'JOBS.yamlCronList to find the matching cron job, then CronDelete itJOBS.yaml using the Edit toolactive: trueactive: true to active: false in JOBS.yamlCronList to find the matching cron job, then CronDelete itactive: falseactive: false to active: true in JOBS.yamlCronCreate with cron='<schedule>' and prompt='<prompt>'JOBS.yaml with the new valuesCronDelete the old cron, then CronCreate with updated valuesCronCreate returns a session-internal ID that differs from the JOBS.yaml job ID. To match them:
active: true jobs on every session start/bot-jobs
/bot-jobs list
/bot-jobs add
/bot-jobs remove daily-report
/bot-jobs pause daily-report
/bot-jobs resume daily-report
/bot-jobs edit daily-reportOther measured skills in the registry, with their headline benchmark lift.