| name | loopty |
| description | Start an iterative development loop. Each iteration spins up a fresh, isolated Claude agent that works toward a goal, writes a timestamped journal entry, and commits โ then hands off to the next agent. |
| argument-hint | [goal or 'status'] [interval] [iterations] |
| user-invocable | true |
| metadata | {"allowed-tools":"Read, Write, Edit, Bash, Glob, Grep, Agent"} |
Start an iterative development loop. Each iteration spins up a fresh, isolated Claude agent that works toward a goal, writes a timestamped journal entry, and commits โ then hands off to the next agent.
Usage
The user may provide arguments to customize the run. Parse $ARGUMENTS for any of:
- A time interval (e.g., "10m", "30m", "600") โ defaults to 15m
- A max iteration count (e.g., "3 iterations", "5x", "n=3") โ defaults to unlimited
- A prompt file path (ending in .md) โ defaults to .loopty/prompt.md
- An inline goal in quotes (e.g., "improve test coverage") โ creates/updates .loopty/prompt.md
- "status" โ show journal history summary instead of starting a loop
- "resume" or "--resume" โ continue iteration numbering from last journal
- "no-spin-check" or "--no-spin-check" โ disable spin/stall detection
- "dry-run" or "--dry-run" โ show config without starting
- "quiet" or "--quiet" โ suppress banner output
- "verbose" or "--verbose" or "-V" โ show detailed journal content in status
- "json" or "--format json" โ machine-readable JSON output for status
Steps
Bootstrap (first time only):
If loopty.sh is not present in the project root, the skill needs to be bootstrapped.
To find the plugin source files, resolve this path relative to this SKILL.md:
SKILL_DIR is the directory containing this file (skills/loopty/)
PLUGIN_ROOT is two levels up from SKILL_DIR (the repo root)
Run the install script from the plugin root:
bash "$PLUGIN_ROOT/install.sh" "$(pwd)"
If install.sh is not found, bootstrap manually:
- Copy
$PLUGIN_ROOT/loopty.sh to the project root
- Copy
$PLUGIN_ROOT/.claude/commands/loopty.md to the project's .claude/commands/
- Create
.loopty/ directory and copy $PLUGIN_ROOT/.loopty/prompt.md.example
- Tell the user that loopty has been bootstrapped into their project
If "status" mode:
- Run
bash loopty.sh status and present the output
- Read
.loopty/last-run-summary.md if it exists for additional context
- Do NOT start a loop
If normal run mode:
-
Check that .loopty/prompt.md exists. If not:
- If the user provided an inline goal in quotes, create the prompt file with that goal
- Otherwise, ask the user what their iterative goal is and create it for them
- The prompt should describe: the goal, success criteria, and constraints
-
Parse arguments to build CLI flags:
- Time like "10m" โ
-i 600
- Time like "30m" โ
-i 1800
- Time like "600" (bare number > 59) โ
-i 600
- Iterations like "3 iterations" or "3x" or "n=3" โ
-n 3
- "resume" or "--resume" โ
--resume
- "--dry-run" or "dry-run" โ
--dry-run
- "quiet" or "--quiet" โ
--quiet
- Work turns like "w=50" or "--work-turns 50" โ
-w 50
- Inline goal in quotes โ
-g "the goal text"
- Model override โ
-m MODEL
- Wrapup timeout like "wrapup-timeout=60" โ
--wrapup-timeout 60
- Cooldown like "cooldown=5" โ
--cooldown 5
- "no-cooldown" or "--no-cooldown" โ
--no-cooldown
- "no-commit" or "--no-commit" โ
--no-commit
- "no-spin-check" or "--no-spin-check" โ
--no-spin-check
- "verbose" or "--verbose" or "-V" โ
--verbose
- "json" or "--format json" โ
--format json
-
Confirm the settings with the user before starting:
- Show the prompt content (first ~10 lines if long)
- Show the interval and max iterations
- Show how many previous journal entries exist in
.loopty/journal/
- If --dry-run, run the script with --dry-run and show output, then stop
- Otherwise, ask for confirmation to begin
-
Run the loop script:
bash ./loopty.sh [flags]
This will run in the foreground. Each iteration:
- Launches an isolated
claude -p agent with the goal + previous journals
- After the time budget, a wrap-up agent writes a journal entry
- All changes are committed with git
-
When the loop finishes (max iterations reached or interrupted), summarize:
- How many iterations ran
- Key findings from the journal entries
- What the next agent would work on
- Reference
.loopty/last-run-summary.md for full details