bot-jobslisted
Install: claude install-skill maxritter/pilot-shell
# Bot Jobs Skill
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.
## Commands
| 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"`).
## Steps
### Parse command
Extract the subcommand and optional job ID from args:
- No args or `list` → **list**
- `add` → **add**
- `remove <id>` → **remove**
- `pause <id>` → **pause**
- `resume <id>` → **resume**
- `edit <id>` → **edit**
### Read JOBS.yaml
Read `JOBS.yaml` from `$PILOT_BOT_DIR`. Parse the YAML structure. Each job has:
```yaml
jobs:
<id>:
schedule: "<cron