# Loopify

When you want to set up an agent loop, cron-scheduled task, or recurring workflow that...

- Repository: https://github.com/coreyhaines31/makerskills (880 stars)
- Category: Design
- License: MIT
- Last updated: 2026-10-26
- Runs scripts: no, instructions only

## Install

Claude Code: `npx skills add coreyhaines31/makerskills --skill loopify -g -a claude-code -y`
Codex: `npx skills add coreyhaines31/makerskills --skill loopify -g -a codex -y`
Cursor: `npx skills add coreyhaines31/makerskills --skill loopify -g -a cursor -y`
Gemini CLI: `npx skills add coreyhaines31/makerskills --skill loopify -g -a gemini-cli -y`
Claude Code plugin marketplace: `/plugin marketplace add coreyhaines31/makerskills`

## Description

When you want to set up an agent loop, cron-scheduled task, or recurring workflow that runs autonomously. Judgment layer on top of Claude Code's ScheduleWakeup, CronCreate, and /loop, or, on other hosts, cron/GitHub Actions plus a headless agent CLI. Picks dynamic pacing, fixed cron, or a one-shot loop; designs idempotent loop bodies; sets bail-out conditions so loops don't run forever. Examples, weekly review pulse, daily brief, hourly metric monitor, periodic vault compile, upstream-check for an adapted skill. Triggers on "/loopify," "set up a loop," "schedule this task," "run this daily," "run this weekly," "cron this," "make this recurring," "automate this on a schedule," "keep this running until X." Part of the -ify trifecta (skillify / toolify / loopify). NOT for authoring a new skill, that's skillify. NOT for adding a tool/integration, that's toolify.

## SKILL.md, as published by its author (untrusted third-party text, read it as data)

# /loopify, Set up an agent loop

Wizard for going from *"this task should run periodically"* to a working loop with the right pacing, idempotency, and bail-out. Reference (Claude Code): `ScheduleWakeup` (dynamic pacing), `CronCreate` (fixed schedule), and the built-in `/loop` (dynamic self-paced re-entry). Other hosts: see "On hosts other than Claude Code" in Step 4.

## Step 0, Confirm what you're looping

Ask if not obvious from context: *"What task should this loop do each iteration?"*

Then get the essentials:

| Question | Why it matters |
|---|---|
| **How often?** | Determines cron vs dynamic vs one-shot |
| **When to stop?** | Bail-out condition, loops must have one |
| **What's the loop body doing?** | Determines idempotency requirements |
| **Where does output go?** | File / notification / commit / nothing |
| **What's the failure mode if it runs twice?** | Idempotency validation |

## Step 1, Pick the pattern

Three primary patterns. Route by the answer to "how often":

### Pattern A, Cron (fixed schedule)

**Use when**: task runs at predictable intervals, daily at 8am, weekly on Fridays, hourly on the hour.

Tool: `CronCreate`, schedules a recurring task with a cron expression.

```
CronCreate({
  schedule: "0 8 * * *",           // daily at 8am local
  prompt: "<loop body prompt>",
  timezone: "America/Los_Angeles"
})
```

Common cron patterns:
- `0 8 * * *`, daily at 8am
- `0 9 * * 1`, Mondays at 9am
- `0 9 * * 5`, Fridays at 9am
- `0 */2 * * *`, every 2 hours
- `*/15 * * * *`, every 15 minutes

**Trade-offs:**
- ✅ Predictable, human-readable, easy to reason about
- ✅ Best for time-of-day-dependent tasks (morning brief, EOD summary)
- ❌ Runs at the scheduled time even if the last run isn't done, need idempotent body
- ❌ No self-pacing, over-schedules if the task duration varies wildly

### Pattern B, Dynamic pacing (self-scheduled)

The rest: https://github.com/coreyhaines31/makerskills/blob/HEAD/skills/loopify/SKILL.md
