brainstorming
brainstorming
You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or planning anything new, in software or out of it (a talk, a business, a renovation).
checkpointed-agent-loopRun long or failure-prone Claude Code tasks as bounded, resumable loops with a durable state machine, attempt budget, and verification evidence checkpoint.
Independent GitHub snapshot · Automated classification · Original documentation governs
Use this skill when a task can be interrupted, needs bounded retries, or must prove verification before it is called complete. It adds a small local checkpoint file around ordinary Claude Code work so a new context can resume from explicit state instead of reconstructing progress from chat.
The included Node.js utility stores state and evidence. It does not execute commands, call a model, spawn agents, access secrets, or contact a network service. Claude Code remains responsible for each actual tool call and for deciding whether a human approval is required.
Do not use it for a one-line edit or a workflow that already has its own durable runner.
The checkpoint uses these states and only these transitions:
planned -> running
running -> verifying | failed | blocked
verifying -> succeeded | running | failed | blocked
succeeded, failed, and blocked are terminal. Entering running consumes one attempt, and the finite maxAttempts value cannot be exceeded. A transition to succeeded is rejected until the checkpoint contains at least one passing evidence record from verifying.
Choose a project-local path that is not committed with application code, for example .agent/checkpoints/data-migration.json. Keep objectives, reasons, and evidence free of API keys, tokens, passwords, personal data, and raw secret-bearing logs.
Set the helper path for the commands below:
SKILL_DIR="<absolute path to the installed checkpointed-agent-loop skill>"
CHECKPOINT=".agent/checkpoints/task.json"
Initialize with a finite budget:
node "$SKILL_DIR/scripts/checkpoint-loop.mjs" init \
--file "$CHECKPOINT" \
--task "data-migration" \
--objective "Migrate the user table without losing records" \
--max-attempts 3 \
--next-action "Inspect the current migration and test fixture"
Before making the change, persist the next action and enter running:
node "$SKILL_DIR/scripts/checkpoint-loop.mjs" transition \
--file "$CHECKPOINT" \
--to running
Use Claude Code-native tools for exactly the bounded action described by nextAction. Do not turn one attempt into an unbounded plan.
After the action, move to verification before deciding the outcome:
node "$SKILL_DIR/scripts/checkpoint-loop.mjs" transition \
--file "$CHECKPOINT" \
--to verifying
Run the relevant check yourself. The helper records a check name and outcome; it never runs that check for you:
node "$SKILL_DIR/scripts/checkpoint-loop.mjs" evidence \
--file "$CHECKPOINT" \
--check "npm test -- workspace migration" \
--outcome passed \
--artifact "artifacts/migration-test.txt"
Only cite an artifact that exists and is safe to share. A failed check can be recorded with --outcome failed; do not convert it to a passing record by rewriting the expected value.
If verification is genuinely passing:
node "$SKILL_DIR/scripts/checkpoint-loop.mjs" transition \
--file "$CHECKPOINT" \
--to succeeded
If the change needs another bounded attempt, provide a concrete next action and reason:
node "$SKILL_DIR/scripts/checkpoint-loop.mjs" transition \
--file "$CHECKPOINT" \
--to running \
--next-action "Fix the null-row fixture and rerun the focused test" \
--reason "Verification found a reproducible null-row failure"
Use failed for a terminal technical failure. Use blocked only when progress needs an external dependency or human decision:
node "$SKILL_DIR/scripts/checkpoint-loop.mjs" transition \
--file "$CHECKPOINT" \
--to blocked \
--reason "Waiting for the database owner to approve the production window"
Read the checkpoint before doing any work in a new session:
node "$SKILL_DIR/scripts/checkpoint-loop.mjs" status \
--file "$CHECKPOINT" \
--format summary
For machine-readable recovery, omit --format summary. Continue from nextAction, inspect the history and evidence, and never repeat a completed attempt merely because the old conversation is unavailable.
succeeded without passing verification evidence in the checkpoint.An agent initializes data-migration with three attempts, enters running, updates the migration, and is interrupted before verification. The next session runs status, sees running and the saved nextAction, performs only that action, then records the actual test result before moving to succeeded or a bounded retry.
An agent records a failed verification, transitions back to running with maxAttempts: 2, and fails the same focused check on the second attempt. A third transition into running is rejected with attempt budget exhausted; the agent must report the failure or escalate rather than silently looping forever.
The script has a local Node test suite covering legal transitions, terminal immutability, attempt limits, evidence rules, malformed input, atomic persistence, and rejected-operation preservation:
node --test "$SKILL_DIR/scripts/checkpoint-loop.test.mjs"
The repository validator checks the frontmatter and directory/name contract:
node scripts/validate-skills.js