cycle
Skill13 starsChanged 2 months agoMITView on GitHub
Draft, critique and merge a plan in one loop, then stop for approval
6 other projects use a version of this.
Adopted by
Most recently taken up by
- AcKeskin/contexturetheir own version, first seen Nov 1, 2026
- bordumb/recurvetheir own version, first seen Oct 13, 2026
- AztecProtocol/aztec-packagestheir own version, first seen Oct 8, 2026
- iliasedelkin/jobissimotheir own version, first seen Oct 2, 2026
- robertnowell/marketing-pipelinetheir own version, first seen Jul 13, 2026
- ba0918/claude-skillstheir own version, first seen Jul 9, 2026
Other versions6 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 6
- AztecProtocol/aztec-packages★ 459same name
- iliasedelkin/jobissimo★ 8same name
- AcKeskin/contexture★ 2same name
- robertnowell/marketing-pipeline★ 2same name
- ba0918/claude-skills★ 0same name
- bordumb/recurve★ 0same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository10 other files it gives its agents.
- CLAUDE.mdCLAUDE.md
- plan-archiveSkill
- plan-createSkill
- plan-critiqueSkill
- plan-cycleSkill
- plan-executeSkill
- archiveSkill
- createSkill
- critiqueSkill
- executeSkill
The file
Show its rules and text
We split this skill into the rules it gives an agent
31 rules. 0 are common, 11 are distinctive, and 20 are very specific to this project.
0
Common
Most of the 5 edited versions we read keep these.
11
Distinctive
This author's own choices. Worth a look.
20
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 17
Read the working agreement at working-agreement.md before step 1 and follow it for the whole run.
- Very specific: line 23
Never execute the plan, and never write, edit or refactor project code during this run.
- Very specific: line 29
Never assume, ask. Change plan.md on your own only when the change a finding asks for is obvious.
- Distinctive: line 41
Verify what you merge, not only what you find.
- Distinctive: line 49
Stop early when an iteration surfaces no new findings.
- Very specific: line 60
Read .claude/plan-critique-config.json and get plansFolder path from settings.
- Very specific: line 61
If the file doesn't exist or plansFolder is not set or is an empty string:
- Very specific: line 62
Ask the user: "Where would you like to store your plans?
- Distinctive: line 65
Create the folder if it doesn't exist
- Very specific: line 66
Create an archived/ subfolder inside it
- Very specific: line 67
Read the optional cycleIterations value from the same config file.
- Very specific: line 73
Read the current session's plan from [plansFolder]/.sessions/[sessionPID] if it exists.
- Very specific: line 77
If $ARGUMENTS is a slug that matches an existing plan folder, select that plan.
- Very specific: line 88
Update the session file [plansFolder]/.sessions/[sessionPID] with the selected plan slug (create if needed).
- Very specific: line 89
Read [plansFolder]/[selected-plan]/plan.md and classify it:
- Very specific: line 95
Use $ARGUMENTS as the goal when it describes what to build.
- Distinctive: line 98
Read CLAUDE.md and README.md, and the existing files the goal touches.
- Distinctive: line 101
Ask the user whenever the research leaves a real choice open, such as which module owns the change or which of two approaches the plan …
- Very specific: line 103
Write [plansFolder]/[selected-plan]/plan.md using plan-template.md: one numbered chapter per unit of work, in dependency order, each with …
- Distinctive: line 107
Check prerequisites once, before the loop:
- Very specific: line 108
If plan.md is empty after step 12: respond with "Plan file is empty.
- Distinctive: line 110
If CLAUDE.md does not exist in the project root: respond with "Create a CLAUDE.md file in the root of your project." and stop.
- Very specific: line 115
Run the cycle. Repeat the following until you have run cycleIterations iterations or an iteration surfaces no new findings:
- Very specific: line 122
Write the critique to [plansFolder]/[selected-plan]/critique.md using critique-format.md, with the iteration number incremented from the …
- Distinctive: line 125
If the critique found nothing, respond with "No new findings." and leave the loop.
- Distinctive: line 128
Ask the user before making any change that is not obvious, and apply the answer.
- Very specific: line 136
Verify each edit before you write it.
- Very specific: line 141
Keep the Affected files and Verification sections in every chapter.
- Distinctive: line 142
When the critique recommends splitting the plan, do not split it.
- Distinctive: line 148
Stop at the approval gate and respond:
- Very specific: line 158
Never execute the plan from this skill, not even when the user approves it in the same session.
“Common” is measured: kept by at least 6 in 10 of the 5 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
You are running the whole planning loop in one pass: research the codebase, draft the plan only when the user has not written one, critique it, merge the findings, repeat, then stop and wait for approval.
This skill never executes the plan. It ends at the approval gate.
Fixed rules:
Read the working agreement at working-agreement.md before step 1 and follow it for
the whole run. If that path does not resolve, look for working-agreement.md in the project root, then in
.claude/. If it cannot be found anywhere, tell the user it is missing and apply the rules listed below.
These rules bind this phase and override any step below that conflicts with them:
- Never execute the plan, and never write, edit or refactor project code during this run. This phase produces a
plan folder, a
plan.md, acritique.mdand acycle-log.mdand nothing else. The user approves before anything is built. - The user owns the plan. Draft
plan.mdonly when it is empty or still the unedited template. When it holds text the user wrote, never overwrite it, and never drop the user's requirements, wording or constraints while merging. - Never assume, ask. Change
plan.mdon your own only when the change a finding asks for is obvious. Stop and ask the user whenever it is not: the finding is ambiguous, it touches a requirement or a constraint the user wrote, it changes the scope or the intent of a chapter, it rewrites more than the finding covers, or two findings pull in different directions. Show the finding, the exact edit you propose and the alternatives, then apply the answer. A doubt is a question, never a guess. - Be adversarial in every iteration. Try to refute each finding before you write it down, and report only what survives the attempt.
- Grade confidence per finding. Report a finding as CONFIRMED only when you verified it against the codebase.
Label everything else UNVERIFIED and state what you could not check and why. Prove every finding with a
file:linereference, a command output, or a failing test. - Re-read
plan.mdfrom disk at the start of every iteration and cite line numbers only from that copy. Merging shifts every line below the merge point, so numbers carried over from an earlier iteration are wrong. - Verify what you merge, not only what you find. A suggested solution is a claim like any other: run the command before you write it into a verification section, and check every line reference in it against the file it names. An unverified fix is not merged, it is asked about. A merge that ships a broken command costs the next iteration. Run only commands that read: this phase verifies, it never builds, installs, migrates, commits or writes anywhere outside the plan folder.
- Merging is automatic for the obvious changes only, and never silent. Record every merged finding, every finding
you asked about with the answer you got, and every skipped finding with its reason, in
cycle-log.md, and print the same summary after each iteration. - Stop early when an iteration surfaces no new findings. Respond "No new findings." and go to the approval gate.
- Be brief. No filler, no preamble, no restating the request. No emojis, no em dashes, no bold or italic text.
To do this, follow these steps precisely:
- Display the following banner before doing anything else:
+-------------------------------------------------+ | Plan Critique v2.6.1 - Plan cycle | +-------------------------------------------------+ - Read
.claude/plan-critique-config.jsonand getplansFolderpath from settings. If the file doesn't exist orplansFolderis not set or is an empty string:- Ask the user: "Where would you like to store your plans? Provide a folder path (default
.planning):". By default, the user should be presented with the option.planning. - Save the path as
plansFolderin.claude/plan-critique-config.json - Create the folder if it doesn't exist
- Create an
archived/subfolder inside it
- Ask the user: "Where would you like to store your plans? Provide a folder path (default
- Read the optional
cycleIterationsvalue from the same config file. It is the maximum number of critique and merge iterations for this run. Default to3when it is missing, and clamp any value outside the range 1 to 5. - Get the Claude Code process ID by running:
echo $PPID. Store this assessionPID. - Clean up stale sessions: Scan
[plansFolder]/.sessions/for files. For each file named with a PID, check if that process is still running viakill -0 [PID] 2>/dev/null. If the command fails (process not running), delete that session file. This is non-blocking cleanup. - Read the current session's plan from
[plansFolder]/.sessions/[sessionPID]if it exists. Store assessionPlan. - Scan
[plansFolder]/for subdirectories (each subdirectory is a plan). Excludearchived/and.sessions/folders and any files, only list plan directories. - Select the plan for this cycle:
- If
$ARGUMENTSis a slug that matches an existing plan folder, select that plan. - Else if
$ARGUMENTSis not empty, treat it as the name of a new plan and create it by following the plan naming and folder creation steps of ../create/SKILL.md: the slug rules, the name collision check, the folder creation and theplan.mdtemplate from plan-template.md. Do not display the create banner. - Else if
sessionPlanexists and matches a plan folder, auto-select it and inform the user: "Using current session plan: [sessionPlan]" - Else if exactly one plan exists, auto-select it and inform the user.
- Else if plans exist, ask the user to select one from the list, and offer creating a new plan as the last option.
- Else ask the user for a name for the new plan and create it as described above.
- If
- Update the session file
[plansFolder]/.sessions/[sessionPID]with the selected plan slug (create if needed). - Read
[plansFolder]/[selected-plan]/plan.mdand classify it:- Empty, or still the unedited template from plan-template.md, which is recognised by the placeholder chapter heading and the bracketed placeholder lines: the plan needs a draft.
- Anything else: the user wrote it. Inform the user "Using the existing plan.md, no draft written." and go to step 13.
- Prepare the draft. Tell the user "plan.md is still the template. Drafting a first pass." and get the goal:
- Use
$ARGUMENTSas the goal when it describes what to build. - Otherwise ask the user: "Describe what this plan must achieve:". Do not guess the goal.
- Use
- Research the codebase, then write the draft:
- Read
CLAUDE.mdandREADME.md, and the existing files the goal touches. - List every file that the plan will create, modify or delete, and verify each path exists with Glob before writing it down. Show this list to the user before writing the plan.
- Ask the user whenever the research leaves a real choice open, such as which module owns the change or which of two approaches the plan should take. Do not pick one and write it down as if it were settled.
- Write
[plansFolder]/[selected-plan]/plan.mdusing plan-template.md: one numbered chapter per unit of work, in dependency order, each with its ownAffected filesandVerificationsections. Every chapter names the test to write or the command to run. - Where the project has no test infrastructure, say so in the chapter instead of inventing a test harness.
- Read
- Check prerequisites once, before the loop:
- If
plan.mdis empty after step 12: respond with "Plan file is empty. Edit[plansFolder]/[selected-plan]/plan.md" and stop. - If
CLAUDE.mddoes not exist in the project root: respond with "Create aCLAUDE.mdfile in the root of your project." and stop. - Detect the project languages and probe LSP as described in the LSP availability step of ../critique/SKILL.md. Record whether LSP is available, and reuse that answer for every iteration instead of probing again.
- If
- Run the cycle. Repeat the following until you have run
cycleIterationsiterations or an iteration surfaces no new findings:- Re-read
plan.mdfrom disk. - Critique it by following the fixed rules and the analysis steps of
../critique/SKILL.md, including the split evaluation. Skip its config, session and plan
selection steps, which this run already did. Its rule against editing
plan.mdbinds the critique step only, because merging is a separate step below. - Write the critique to
[plansFolder]/[selected-plan]/critique.mdusing critique-format.md, with the iteration number incremented from the previous critique. - If the critique found nothing, respond with "No new findings." and leave the loop.
- Merge the findings into
plan.md:- Apply a CONFIRMED finding to the chapter it belongs to when the edit it asks for is obvious.
- Ask the user before making any change that is not obvious, and apply the answer. This covers an ambiguous finding, a finding that touches a requirement or a constraint the user wrote, a finding that changes the scope or the intent of a chapter, and two findings that pull in different directions. Show the finding, the exact edit you propose and the alternatives. Ask once per change, and group the questions of one iteration together so the loop stops as little as possible.
- Apply an UNVERIFIED finding only when it clarifies the plan and cannot lose information. Ask about it otherwise.
- Skip any finding whose evidence is missing.
- Verify each edit before you write it. Run any command the finding puts into a
Verificationsection and confirm it passes on the current tree and can fail, and check every path and line number the edit introduces. Do not carry a line range or an index from the critique into the plan when the chapter will change the lines it points at: anchor to a heading, a fence or a symbol instead. When the edit does not survive this check, ask the user rather than merging it. - Keep the
Affected filesandVerificationsections in every chapter. - When the critique recommends splitting the plan, do not split it. Record the recommendation as an open item for the approval gate.
- Append an entry to
[plansFolder]/[selected-plan]/cycle-log.mdusing cycle-log-format.md, and print the same merged and skipped summary to the user.
- Re-read
- Print the final
plan.mdin full, followed by the open items: every skipped finding and every split recommendation. - Stop at the approval gate and respond:
Cycle complete after [N] iteration(s): [plansFolder]/[selected-plan]/plan.md Merged: [X] findings. Asked about: [Z]. Not merged: [Y], listed in cycle-log.md. Nothing has been executed and no project code was changed. Review the plan. When you approve it, run `/plan:execute`.
Notes:
- Never execute the plan from this skill, not even when the user approves it in the same session. Point the user
at
/plan:execute, which carries its own rules, its own confirmation and its own execution log. - Each iteration is a full adversarial pass over the plan and the codebase, so a three iteration run on a large
plan is expensive. Set
cycleIterationsto 1 or 2 in.claude/plan-critique-config.jsonfor small plans. - The cycle is resumable. Run it again on the same plan and it continues from the current
plan.mdand from the iteration number recorded incritique.md. critique.mdholds the latest iteration only, because each critique overwrites it.cycle-log.mdholds the history of what was merged and what was skipped.- The plan folder, the session file and the config file are the same ones used by
/plan:create,/plan:critique,/plan:executeand/plan:archive. The cycle is a shortcut through the first two, not a separate workflow.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

