Skip to content
Back to skills

Routine

ASecurity

Schedule a prompt or verb to recur in your Cloudflare account; list, pause, resume, run, change, or delete one. Claude cloud routines use schedule.

  • 6 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added September 27, 2026
ai-agentsbashnodegit

Security analysis

A100/100

Pro scans all 2 files and shows the line behind each finding

Scanned October 7, 2026

npx -y skills add matthewwong525/WongStack --skill routine --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Routine?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Routine
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/matthewwong525-routine/badge)](https://www.skillsdirectory.com/skills/matthewwong525-routine)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: routine
description: Schedule a prompt or verb to recur in your Cloudflare account; list, pause, resume, run, change, or delete one. Claude cloud routines use schedule.
user-invocable: true
---

# /routine

`/routine` puts work on a schedule that runs in the person's own Cloudflare account. [Cloud routines](../../../wiki/stack/cloud-routines.md) owns how a run works. [`routine.mjs`](scripts/routine.mjs) makes every call.

```bash
R="$(git rev-parse --show-toplevel)/.claude/skills/routine/scripts/routine.mjs"
```

It prints one JSON object, never a key. Exit `2` is bad input: fix it or ask. `3`: meet its `needs` ([below](#when-it-is-not-ready)). `4` or `5`: nothing changed; show its `error` and stop.

## Script or routine

Judge **who decides the steps**.

- **The same steps every run** (*copy yesterday's orders into the archive table*) is a script, even when a step calls an AI model. Say so, make no routine, and start [`/plan`](../plan/SKILL.md) for [a timed job](../../rules/code.md#sample-data-and-timed-jobs) in the app.
- **Work that finds its own way** (*find news about our competitors*, `/improve-code`) is a routine.

Say which you picked first; the person may ask for a routine anyway.

## Create

1. **Turn the time into five-field cron** (`0 9 * * 1-5`); ask when the time is unclear. Omit the timezone unless the user states one.
2. **Preview.** Run `node "$R" create --cron '<cron>' --prompt '<prompt>' [--name '<name>'] [--timezone <iana>] [--keys <NAME,NAME>] --dry-run`. Keep the prompt verbatim. `--keys` names the `.env` keys the run may use.
3. **Confirm.** Show the name, cron and its plain meaning, timezone, prompt, and model, and say the run has full permissions inside its cloud computer. With `installed: false`, show `adds` and `cost` too. With `model: null`, ask [which model](#when-it-is-not-ready) here. Ask in [the ask format](../explore/references/asking-the-user.md#confirmations-offers-and-menus-are-asks): create it *(Recommended)*, or change the time or prompt. When nobody can answer, create it.
4. **Create.** Rerun without `--dry-run`; report its name, id, `nextRunAt` in its timezone, what `setup` added, and any `todo`.

## When it is not ready

Meet the one `needs` exit `3` names, then rerun the command.

- `model`: ask which model in the ask format: the `shortlist`, its recommended one first, each with its `billing` (`node "$R" model` lists the rest). Then `node "$R" model '<id>'`. A refused pick (exit `2`) changes nothing: say why and ask again.
- `model-key`, or the person says *use my key*: send [the key link](../../../wiki/development/secrets.md#receive-a-key-through-a-private-link) for `WONG_ROUTINE_MODEL_KEY`, then `node "$R" key`. Say the service and model it reports. `key --remove` undoes it.
- `provider`: ask which of `services` the key is for, then `node "$R" key --provider <id> [--model <id>]`.
- `project-access`: say its `why` if any, send the key link for `WONG_ROUTINE_GITHUB_TOKEN`, then `node "$R" setup`.
- `paid-plan`: give `cost` and `upgrade`, and stop.
- `cloudflare`: say this install has no Cloudflare account, and stop.
- `setup`: show `node "$R" setup --dry-run`'s `adds` and `cost`, confirm, then `node "$R" setup`.

## List and manage

- `/routine` alone → `node "$R" ls`. Show each routine's name, cadence, status, next run, and last result with its start-up and run times.
- `/routine pause|resume|run|logs|delete <name or id>` → `node "$R" <action> '<name or id>'`. Confirm a `delete` first, in [the ask format](../explore/references/asking-the-user.md).
- `/routine change <name or id> <new time or prompt>` → `node "$R" change '<name or id>' [--cron '<cron>'] [--timezone <iana>] [--prompt '<prompt>']`.

An ambiguous name returns the matching ids; ask which.

A schedule made in Paseo stays in the Paseo app. [`workspace.mjs`](scripts/workspace.mjs) here also opens a new workspace for one part of a request; [open a part in a new workspace](../plan/references/new-workspace.md) owns its use. [`presets.mjs`](scripts/presets.mjs) `add` adds WongStack's agent presets; [required tools](../../../wiki/development/required-tools.md) owns when.

End every reply with [the next step](../explore/references/asking-the-user.md#end-every-reply-with-the-next-step), normally to run the new one now.

Files in this skill

  • SKILL.md3.7 KB
  • scripts/routine.mjs15.1 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.