← ClaudeAtlas

routine-initlisted

Use when the friend wants to declare a pre-declared routine/loop — a scheduled or triggered automation that runs unattended. Documents the v3 routine-spec schema (Task 6.3): every routine must declare its schedule, exit criterion, failure handler, AND a capability/path allowlist bounding WHAT it may touch, not just when it runs. Triggers on the /ren:routine-init slash command.
hazarsozer/ren-os · ★ 1 · AI & Automation · score 73
Install: claude install-skill hazarsozer/ren-os
# routine-init The declaration side of spec §3.5's routine model: **a routine's declaration must bound what it may touch, not just when it runs.** This skill's `lib` doesn't scaffold a repo (see "Scope" below) — it validates the v3 routine-spec schema and provides the runtime allowlist check every routine calls before proposing a write. ## The v3 schema (REQUIRED fields) ```yaml schema_version: 3 allowlist: paths: ["projects/myproj/**"] # wiki-relative globs the routine may propose writes to capabilities: ["recall", "queue-propose"] # named capabilities it may invoke failure_handler: "notify-journal" # the ONLY valid value in 0.2 exit_criterion: "<non-empty string>" # human-readable, required ``` - **`allowlist.paths` must be non-empty for a NEW spec.** A routine that may touch anything is invalid BY SCHEMA — there is no "allow everything" escape hatch. (A migrated v2→v3 spec is the one exception: it may start with empty `paths` until a human fills it in — see `migrations/routine-spec-2-to-3/README.md`.) - **`allowlist.paths` must never include `global/` or `global/**`.** Routines can never write to the global tier — enforced here at declaration time, and independently again at apply time by `lib.governance.tiers.tier_of` (Task 6.1): a routine `memory_write` to a `global/` page is always `diff_approved`, never `auto`. - **`failure_handler` has exactly one valid value: `"notify-journal"`.** Spec §3.5: "failure = notify + journal." There is no free