Phase 4 — Run Without You (the recurring loop)

Phase 4 of building a Claude Managed Agent — make it run without you.

How to use it

Claude Code
  1. Run the line below. It pulls the whole folder into ~/.claude/skills/run-without-you, including the files SKILL.md points to.
  2. Describe your job in plain words. Claude Code follows the skill from there.
Claude Code — installs the whole folder, not just SKILL.md
npx degit alirezarezvani/claude-skills/agent-launcher/skills/run-without-you#main ~/.claude/skills/run-without-you

For one project only, change the path to .claude/skills/run-without-you. This skill also uses deployment_builder.py, cron_validator.py, next_directions_writer.py, NEXT-DIRECTIONS.md, goal_state.py, loops-and-workflows.md — copying SKILL.md alone won't be enough. See the folder on GitHub.

Claude (web or desktop app)
  1. On this page open ⋯ → Download .md.
  2. Save it as SKILL.md in a folder, zip the folder, then Customize → Skills → + → Create skill → Upload a skill.
  3. Pick the file and Save. Claude shows the name and description and runs a security scan.
  4. Check the skill is switched on.
  5. Start a new chat and describe your job in plain words. The AI follows the skill from there.
ChatGPT or another app
  1. ChatGPT: make a Project and paste it into Instructions.
  2. Neither? Paste it at the top of a new chat — it works for that chat.
Not working?
  • Check which app you pasted it into — the steps above name the right one.
  • Some skills need the paid tier of Claude or ChatGPT.
Step-by-step guide with screenshots · Ask in the forum

Paste into Claude, ChatGPT or Cursor.

Source of Phase 4 — Run Without You (the recurring loop)

Show the full text79 lines
namedescriptionversionauthorlicensetagscompatible_tools
run-without-youPhase 4 of building a Claude Managed Agent — make it run without you. Turn a graded agent into a recurring scheduled deployment (POSIX-cron), an event-driven curl trigger, or confirmed on-demand use, then finalize the versioned roadmap. Use when the user says "run it every morning", "put it on a schedule", "nightly", "weekly", "automate this", "make it recurring", or when the orchestrator routes phase=run-without-you. deployment_builder.py builds the POST /v1/deployments payload (initial_events must include user.message; optionally nests a user.define_outcome so each firing self-grades); cron_validator.py validates the 5-field cron + IANA timezone and prints the wall-clock DST note; next_directions_writer.py writes NEXT-DIRECTIONS.md. No tool makes API calls — the deployment is created via BYOK curl. Distinct from grade-iterate (the in-session loop) and wrap-up (closeout).2.11.2Alireza RezvaniMIT[cma, deployment, cron, schedule, recurring, run-without-you, next-directions, dst][claude-code, codex-cli, cursor, antigravity, opencode, gemini-cli]

Phase 4 — Run Without You (the recurring loop)

A scheduled deployment fires a fresh session on a cron cadence — the agent runs without you. Each firing can carry its own outcome, nesting the bounded grade→iterate loop inside every recurring run.

See ../../references/loops-and-workflows.md.

Choose the trigger

Answer Shape Tool
"every morning / weekly / nightly" recurring cron deployment deployment_builder.py + cron_validator.py
"when X happens" event-driven curl (documented, not scheduled) deployment_builder.py (message only)
"only when I ask" on-demand (no deployment) none — just re-send a user.message

Workflow (recurring)

  1. Validate the schedule.
    python3 scripts/cron_validator.py --cron "0 9 * * *" --timezone Europe/Berlin
    
    Invalid cron/timezone → exit 1. Read the DST note: wall-clock semantics mean spring-forward times are skipped and fall-back times fire twice — avoid 02:00–03:00 in DST zones if exactly-once matters.
  2. Build the deployment payload.
    python3 scripts/deployment_builder.py \
      --sheet ./my-agent/build-sheet.json --agent-id agent_123 --env-id env_456 \
      --nest-outcome --out ./my-agent/payloads/deployment.json
    
    --nest-outcome includes the rubric so each firing self-grades. The tool prints the BYOK curl to create it and to test it once with the manual run endpoint before trusting the schedule.
  3. Test before you trust. Fire one manual run, read the verdict, only then leave the cron in place. Pin the agent version in the deployment once it passes.
  4. Finalize the roadmap.
    python3 scripts/next_directions_writer.py \
      --sheet ./my-agent/build-sheet.json --loop-shape cron-loop --last-verdict satisfied --out-dir ./my-agent
    
  5. Advance + hand to wrap-up. goal_state.py set --phase wrap-up, then invoke the wrap-up skill.

Hard rules

  • Test with a manual run first. Never commit a schedule you haven't fired once.
  • Safety rails on by default. always_ask MCP, limited networking where you can, read_only untrusted memory, max_iterations per firing, workspace spend limit. There is no spend cap inside CMA.
  • DST is wall-clock. Surface the note; pick safe times.
  • ≤1,000 deployments/org.

Forcing-question library (recommend + cite)

  1. "Cadence, event, or on-request?" Recommend: on-request v0 → cadence once graded. Cite: loops-and-workflows.md.
  2. "Should each firing self-grade?" Recommend: yes — nest the outcome. Cite: loops-and-workflows.md (nesting rule).
  3. "Which timezone, and is the time DST-safe?" Recommend: avoid 02:00–03:00 in DST zones. Cite: cma-primitives.md (wall-clock DST).
  4. "Did you fire one manual run first?" Recommend: always. Cite: this SKILL.

Tools

  • scripts/deployment_builder.py — POST /v1/deployments payload (+ test-run curl).
  • scripts/cron_validator.py — 5-field cron + IANA tz + DST note.
  • scripts/next_directions_writer.py — write/refresh NEXT-DIRECTIONS.md.
1---
2name: run-without-you
3description: Phase 4 of building a Claude Managed Agent — make it run without you. Turn a graded agent into a recurring scheduled deployment (POSIX-cron), an event-driven curl trigger, or confirmed on-demand use, then finalize the versioned roadmap. Use when the user says "run it every morning", "put it on a schedule", "nightly", "weekly", "automate this", "make it recurring", or when the orchestrator routes phase=run-without-you. deployment_builder.py builds the POST /v1/deployments payload (initial_events must include user.message; optionally nests a user.define_outcome so each firing self-grades); cron_validator.py validates the 5-field cron + IANA timezone and prints the wall-clock DST note; next_directions_writer.py writes NEXT-DIRECTIONS.md. No tool makes API calls — the deployment is created via BYOK curl. Distinct from grade-iterate (the in-session loop) and wrap-up (closeout).
4version: 2.11.2
5author: Alireza Rezvani
6license: MIT
7tags: [cma, deployment, cron, schedule, recurring, run-without-you, next-directions, dst]
8compatible_tools: [claude-code, codex-cli, cursor, antigravity, opencode, gemini-cli]
9---
10 
11# Phase 4 — Run Without You (the recurring loop)
12 
13A **scheduled deployment** fires a fresh session on a cron cadence — the agent
14runs without you. Each firing can carry its own outcome, nesting the bounded
15grade→iterate loop inside every recurring run.
16 
17See [`../../references/loops-and-workflows.md`](../../references/loops-and-workflows.md).
18 
19## Choose the trigger
20 
21| Answer | Shape | Tool |
22|---|---|---|
23| "every morning / weekly / nightly" | recurring cron deployment | `deployment_builder.py` + `cron_validator.py` |
24| "when X happens" | event-driven curl (documented, not scheduled) | `deployment_builder.py` (message only) |
25| "only when I ask" | on-demand (no deployment) | none — just re-send a `user.message` |
26 
27## Workflow (recurring)
28 
291. **Validate the schedule.**
30 ```bash
31 python3 scripts/cron_validator.py --cron "0 9 * * *" --timezone Europe/Berlin
32 ```
33 Invalid cron/timezone → exit 1. Read the **DST note**: wall-clock semantics mean
34 spring-forward times are skipped and fall-back times fire twice — avoid
35 02:00–03:00 in DST zones if exactly-once matters.
362. **Build the deployment payload.**
37 ```bash
38 python3 scripts/deployment_builder.py \
39 --sheet ./my-agent/build-sheet.json --agent-id agent_123 --env-id env_456 \
40 --nest-outcome --out ./my-agent/payloads/deployment.json
41 ```
42 `--nest-outcome` includes the rubric so **each firing self-grades**. The tool
43 prints the BYOK curl to create it and to **test it once** with the manual `run`
44 endpoint before trusting the schedule.
453. **Test before you trust.** Fire one manual `run`, read the verdict, only then
46 leave the cron in place. Pin the agent version in the deployment once it passes.
474. **Finalize the roadmap.**
48 ```bash
49 python3 scripts/next_directions_writer.py \
50 --sheet ./my-agent/build-sheet.json --loop-shape cron-loop --last-verdict satisfied --out-dir ./my-agent
51 ```
525. **Advance + hand to wrap-up.** `goal_state.py set --phase wrap-up`, then invoke
53 the `wrap-up` skill.
54 
55## Hard rules
56 
57- **Test with a manual `run` first.** Never commit a schedule you haven't fired once.
58- **Safety rails on by default.** `always_ask` MCP, `limited` networking where you
59 can, `read_only` untrusted memory, `max_iterations` per firing, workspace spend
60 limit. There is no spend cap inside CMA.
61- **DST is wall-clock.** Surface the note; pick safe times.
62- **≤1,000 deployments/org.**
63 
64## Forcing-question library (recommend + cite)
65 
661. "Cadence, event, or on-request?" *Recommend:* on-request v0 → cadence once graded.
67 *Cite:* loops-and-workflows.md.
682. "Should each firing self-grade?" *Recommend:* yes — nest the outcome. *Cite:*
69 loops-and-workflows.md (nesting rule).
703. "Which timezone, and is the time DST-safe?" *Recommend:* avoid 02:00–03:00 in
71 DST zones. *Cite:* cma-primitives.md (wall-clock DST).
724. "Did you fire one manual run first?" *Recommend:* always. *Cite:* this SKILL.
73 
74## Tools
75 
76- `scripts/deployment_builder.py` — POST /v1/deployments payload (+ test-run curl).
77- `scripts/cron_validator.py` — 5-field cron + IANA tz + DST note.
78- `scripts/next_directions_writer.py` — write/refresh NEXT-DIRECTIONS.md.
79 

Discussion

Alternatives

Also in Jobs & queuesSee all 533 in Development →