Skip to content
Back to skills

Loop

ASecurity

Schedule the recurring autopilot heartbeat. Calls CronCreate to fire one autopilot tick every ~15 min. Triggers on: /loop, start the loop, run the loop, autonomous mode, kick off the heartbeat.

  • 71 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added September 3, 2026
ai-agentsgoapi

Works with

  • claude code
  • cli
  • api

Security analysis

A100/100

Scanned September 3, 2026

npx -y skills add atrislabs/atris --skill loop --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Loop?

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

Security grade badge for Loop
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/atrislabs-loop/badge)](https://www.skillsdirectory.com/skills/atrislabs-loop)

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: loop
description: "Schedule the recurring autopilot heartbeat. Calls CronCreate to fire one autopilot tick every ~15 min. Triggers on: /loop, start the loop, run the loop, autonomous mode, kick off the heartbeat."
version: 2.0.0
tags:
  - loop
  - autopilot
  - cron
  - heartbeat
---

# /loop

Schedules the recurring autopilot heartbeat. One tick fires roughly every 13–17 minutes via Claude Code's cron system.

## What it does

1. Calls `CronCreate` with a recurring schedule (off-clock minute to avoid fleet sync at :00 / :30)
2. The cron prompt first invokes `atris mission run --due --max-ticks 1 --complete-on-pass`; if no mission is due, it invokes `/autopilot`
3. Returns the cron job id so the user can stop it later with `CronDelete`
4. Lists the active cron jobs via `CronList` so the user can see the heartbeat is alive
5. Runs from a dedicated active task for this loop; a completed task is never reused as the scheduler host

## How to invoke

User says "run /loop", "start the loop", "kick off autonomous mode", or "make autopilot recurring".

The agent then:

1. Checks that the current task is active and dedicated to this loop. If it is complete or belongs to other work, stop and create a new dedicated task before scheduling.
2. Calls `CronCreate` with these args (use whatever off-clock minute you land on, do not pin to :00 or :30):
   - `cron`: `"*/13 * * * *"` (every 13 min) for tight loops, or `"7 * * * *"` (hourly at :07) for slow loops
   - `prompt`: `"First run: atris mission run --due --max-ticks 1 --complete-on-pass. If it reports no_due_mission, run /autopilot for one tick. One bounded goal only, then stop. Do not start a conversation."`
   - `recurring`: `true`
   - `durable`: `false` (in-memory only, gone when this Claude session ends)
3. After creating, calls `CronList` and shows the user the active cron jobs.
4. Tells the user: "loop is alive. job id <X>. fires roughly every <N> minutes. say 'stop the loop' to kill it. auto-expires after 7 days."

## Stopping the loop

When the user says "stop the loop", call `CronDelete` with the saved job id.

If the user says "kill all loops", call `CronList`, then `CronDelete` for every job.

## Rules

- One tick at a time. Never schedule a cron that fires more than once per 10 min.
- One recurring monitor per dedicated active task. Never attach a new monitor to a completed task.
- Always pick an off-clock minute (avoid :00 and :30) to prevent the global fleet from hammering the API at the same instant.
- Use `durable: false` by default. Only use `durable: true` if the user explicitly says "make this survive restarts" or "persist this".
- Auto-expires after 7 days. Tell the user.
- Cron only fires while Claude Code is idle (not mid-query). It will NOT run if Claude Code is closed.
- The CLI writes the heartbeat Notes block. Do not hand-write tick summaries to the journal.

## Why this is the heartbeat

`atris mission` is the north star. `/autopilot` is the fallback tick. `/loop` is the schedule:

```
/loop  →  CronCreate('*/13 * * * *', 'atris mission run --due ... || /autopilot')
              ↓
          every ~13 min while Claude Code is idle:
              ↓
          due mission? → one mission tick
          no mission?  → one autopilot tick
              ↓
          plan → do → review → stop
              ↓
          (cron fires again next interval)
```

This is the autonomous mode. Without `/loop`, `/autopilot` only runs when a human invokes it.

## The CLI front door and wiki upkeep

The CLI command `atris loop` is now the single front door to the self-improvement loop: `atris loop start` (local), `atris loop start --overnight` (durable heartbeat), `atris loop status`, `atris loop stop`. It delegates to the existing engines (`run`, `pulse`) rather than adding a new one.

Wiki upkeep (stale pages, orphans, ingest candidates) moved to `atris loop wiki` (or `atris wiki loop`). If the user wants wiki health, run that. If they want the autopilot heartbeat from inside Claude Code, invoke `/loop` here.

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.