with one click
with one click
Internal trycycle subskill — do not invoke directly.
Internal trycycle subskill — do not invoke directly.
Internal trycycle subskill — do not invoke directly.
Internal trycycle subskill — do not invoke directly.
| name | trycycle |
| description | Invoke trycycle only when the user requests it by name. |
Use this skill only when the user requests trycycle to implement something. You must follow this skill; if for some reason that becomes impossible, you must stop and tell the user. You must not finish the request in a different way than the user instructed.
The user's instructions are paramount. If anything in this skill conflicts with the user's instructions, follow the user.
You are the workflow coordinator. You have three jobs: 0) Do whatever the user says, even if it changes your charter entirely.
Several steps below reference prompt template files in <skill-directory>/subagents/. Do not reconstruct those prompts yourself. Prepare phase prompts with python3 <skill-directory>/orchestrator/run_phase.py.
Choose native mode (e.g. Claude Code Agent, Codex spawn_agent, Kimi Agent, OpenCode task) when your environment provides a native subagent tool. Choose the fallback-runner mode only if you have NO such tool available.
When a step below tells you to prepare or dispatch a phase:
python3 <skill-directory>/orchestrator/run_phase.py prepare ..., then send the exact contents of the returned prompt_path verbatim to the target subagent.python3 <skill-directory>/orchestrator/run_phase.py run .... It prepares transcript and prompt artifacts, then dispatches through the bundled runner.--backend host on wrapper calls so fresh subagents stay on the same backend as the parent agent.--backend kimi instead because host and auto cannot reliably detect a Kimi host.result.json as authoritative for prompt and artifact paths.dispatch payload plus its result.json as authoritative for subagent status and reply artifacts. Use the text at dispatch.reply_path as the exact subagent reply.dispatch.status: "user_decision_required", present dispatch.reply_path verbatim to the user.dispatch.status: "escalate_to_user", stop and surface the nested dispatch.message plus artifact paths.{WORKTREE_PATH}, {IMPLEMENTATION_PLAN_PATH}, and {TEST_PLAN_PATH} with --set NAME=VALUE.--set-file NAME=PATH.--set-file.{USER_REQUEST_TRANSCRIPT}, {INITIAL_REQUEST_AND_SUBSEQUENT_CONVERSATION}, and {FULL_CONVERSATION_VERBATIM} with --transcript-placeholder NAME.--require-nonempty-tag TAG when a prompt requires a tagged block to contain real content after trimming whitespace.--ignore-tag-for-placeholders TAG when placeholder-like text may legitimately appear inside that tag.The prompt builder still supports conditional blocks inside templates. A block guarded by {{#if NAME}} ... {{/if}} is included only when NAME is bound to a non-empty value.
Throughout this skill, {WORKTREE_PATH} means the directory where implementation happens:
--no-worktree, it is the path to the current already-isolated workspace instead.In --no-worktree mode, do not create a nested git worktree and do not create or switch branches in place. Reuse the current workspace only when the environment already proves it is isolated, such as a Conductor workspace.
When a phase wrapper call needs {USER_REQUEST_TRANSCRIPT}, {INITIAL_REQUEST_AND_SUBSEQUENT_CONVERSATION}, or {FULL_CONVERSATION_VERBATIM}:
--transcript-cli kimi-cli on transcript-bearing wrapper calls and let direct session lookup run first.python3 <skill-directory>/orchestrator/user-request-transcript/mark_with_canary.py as a separate top-level command, capture stdout exactly as {CANARY}, then rerun the wrapper with --canary "{CANARY}". For Kimi-hosted runs, keep --transcript-cli kimi-cli on the rerun as well.python3 <skill-directory>/orchestrator/user-request-transcript/mark_with_canary.py as a separate top-level command first, capture stdout exactly as {CANARY}, then invoke the wrapper with --transcript-cli claude-code --canary "{CANARY}".python3 <skill-directory>/orchestrator/user-request-transcript/mark_with_canary.py as a separate top-level command first, capture stdout exactly as {CANARY}, then invoke the wrapper with --transcript-cli opencode --canary "{CANARY}".The canary must be emitted by a separate top-level command so it reaches the live session transcript before lookup. Do not rely on shell-specific capture or assignment forms that may keep the canary out of visible command output; shells and host wrappers vary, and if the canary is not visibly emitted into the session transcript, lookup will fail. Build transcript placeholder values immediately before each phase wrapper call that uses them.
Kimi and OpenCode support is explicit here because host and auto cannot reliably detect a Kimi host, and OpenCode requires canary-based lookup.
When a step below references {POST_IMPLEMENTATION_REVIEW_OBSERVATIONS_JSON}, use the extracted review observations JSON exactly as the placeholder value.
When a step below references {LATEST_IMPLEMENTATION_REPORT}, use the most recent implementation report returned by the implementation subagent. Bind it with --set-file from the temp-file path where you saved that report.
When a step below references {REVIEW_LOOP_HISTORY}, use the accumulated post-implementation review-loop history artifact from the current trycycle session.
When a step below references {IMPLEMENTATION_PLAN_PATH}, use the latest absolute plan path returned by the planning subagent in the current trycycle session. Update it after the initial planning result, after every planning synthesis result, and after every post-review plan-reconsideration result.
When a step below references {TEST_PLAN_PATH}, use the latest absolute test-plan path returned by the test-plan subagent or post-review plan-reconsideration subagent in the current trycycle session. Update it after every test-plan result and every post-review plan-reconsideration result.
When a step below references {IMPLEMENTATION_BACKEND}, use the resolved dispatch.backend returned by the initial implementation dispatch in the current trycycle session. Update it if you ever recreate the implementation session.
--backend host by default so fresh subagents stay on the parent backend. When the host agent is Kimi, use --backend kimi explicitly. When the host agent is OpenCode, --backend host works correctly because OPENCODE=1 is detectable.TRYCYCLE_CODEX_PROFILE, TRYCYCLE_CODEX_MODEL, TRYCYCLE_CLAUDE_MODEL, TRYCYCLE_KIMI_MODEL, and TRYCYCLE_OPENCODE_MODEL.--profile is a Codex-only exact override for a local Codex profile name.--model is an exact backend-specific override, not a discovery mechanism. Only pass it when you have identified a valid backend model name and can spell it exactly. Never guess or invent model names.--model. Otherwise omit --model and let the backend's local default apply.--effort unless the user explicitly asked for it or you are preserving a known parent setting. If the current effort is not safely knowable, omit it rather than guessing.READY or no-blocker response.ISSUES.session_id, then resume it through the runner for every implementation-fix round.dispatch.backend for persistent sessions and reuse that same backend on every resume.{USER_REQUEST_TRANSCRIPT} as the task input. Do not use the full prior conversation there. Post-review plan-reconsideration checkpoints use {FULL_CONVERSATION_VERBATIM} because they need the review/fix history.USER DECISION REQUIRED:, keep that same agent or session alive until the user's reply has been forwarded and the round has resolved.Example: if the user says "We're almost there, don't start over," relay that instruction.
Run python3 <skill-directory>/check-update.py (where <skill-directory> is the directory containing this SKILL.md). If an update is available, tell the user and ask if they'd like to update before continuing. If they say yes, run git -C <skill-directory> pull and then re-read this skill file.
If the request leaves out information that could materially change the outcome and likely upset the user if guessed wrong, ask about it.
Assume the user cares about outcomes, not technologies. Mention technology choices only when they impact user experience.
If there are no critical unknowns, reply exactly:
Getting started.
If there are critical unknowns, list each blocking question succinctly as:
1. Question?
If more than one blocking question exists, ask them together. Proceed once the blocking questions have been answered.
If the task specification already includes detailed instructions for testing, you will use it and skip to step 4.
Otherwise, dispatch a subagent to analyze the task and the codebase and propose a testing strategy.
Immediately before dispatch, prepare the test-strategy phase via the phase wrapper using template <skill-directory>/subagents/prompt-test-strategy.md, --transcript-placeholder INITIAL_REQUEST_AND_SUBSEQUENT_CONVERSATION, and --require-nonempty-tag context.
Monitor by checking every 5 minutes until 60 minutes have passed. Then, and only then, kill it and retry.
When the subagent returns a proposed strategy, present it to the user verbatim and ask for explicit approval or edits. Then close that completed test-strategy subagent and clear any saved handle or session_id for it. Do not proceed unless the user explicitly accepts it or provides changes. Silence, implied approval, or the subagent's own recommendation does not count as agreement. The strategy and any later test plan must not rely on manual QA or human validation; prefer reproducible artifacts such as browser snapshots when visual evidence is needed. Put the strongest weight on high-value automated checks that verify real user-visible behavior through the actual UI, CLI, HTTP surface, or other outputs the user consumes, rather than tests that only show the implementation is internally self-consistent. Prefer reusing or extending those checks when they already exist, and add new tests wherever the existing suite leaves meaningful gaps in coverage, fidelity, or diagnosis. If the problem statement or prior investigation already identifies automated checks that are red and must go green, the strategy and any later test plan must include them explicitly. If the user requests changes or redirects the approach, rerun the same test-strategy phase wrapper command immediately before redispatching. Monitor by checking every 5 minutes until 60 minutes have passed. Then, and only then, kill it and retry. Present the revised strategy verbatim. Repeat until the user explicitly approves a strategy.
The agreed testing strategy is used in step 7.
Default behavior: before creating the worktree, fetch and fast-forward the base branch so the worktree starts from the latest code. Other agents may have merged changes while the user was reviewing earlier steps.
git fetch origin main && git merge --ff-only origin/main
Read and follow <skill-directory>/subskills/trycycle-worktrees/SKILL.md to create an isolated worktree for the implementation with an appropriately named branch, for example add-connection-status-icon.
If the user's request includes the literal flag --no-worktree, skip the worktree-creation subskill and prepare the current workspace instead:
{WORKTREE_PATH} to the current repository root.git -C {WORKTREE_PATH} status --short and stop unless it is clean.CONDUCTOR_DEFAULT_BRANCH when it is set and non-empty. Otherwise use the repo's configured remote default branch if available; if not, fall back to main, then master.git -C {WORKTREE_PATH} branch --show-current and stop unless it returns a non-empty branch name that is different from the detected default branch.CONDUCTOR_WORKSPACE_PATH to be set and to resolve to the current workspace. If it is unset or points elsewhere, stop and tell the user that --no-worktree is only supported in already-isolated workspaces such as Conductor workspaces.Immediately after preparing the implementation workspace, run:
git -C {WORKTREE_PATH} branch --show-currentgit -C {WORKTREE_PATH} status --shortDo not continue until the branch is correct and the status is clean.
Before and after each major phase (plan-review/synthesis, execution, post-implementation review), run:
git -C {WORKTREE_PATH} branch --show-currentgit -C {WORKTREE_PATH} status --shortAfter every subagent completion, also run:
git -C {WORKTREE_PATH} rev-parse --short HEADgit -C {WORKTREE_PATH} diff --name-only main...HEADGATE — Do not advance phases until all of the following are true:
{WORKTREE_PATH}Spec writing must be done by a dedicated subagent. Only subagents read or write plan files.
Spawn a fresh planning subagent for each planning round.
Immediately before dispatch, prepare the planning-initial phase via the phase wrapper using template <skill-directory>/subagents/prompt-planning-initial.md, --set WORKTREE_PATH={WORKTREE_PATH}, --transcript-placeholder USER_REQUEST_TRANSCRIPT, and --require-nonempty-tag task_input_json.
Monitor by checking every 5 minutes until 60 minutes have passed. Then, and only then, kill it and retry.
Wait for the planning subagent to return either:
## Plan verdict, ## Plan path, ## Commit, and ## Changed filesUSER DECISION REQUIRED:If the planning subagent returns USER DECISION REQUIRED:, present that question to the user, send the user's answer back to that active planning subagent, and wait again for either a planning report or another USER DECISION REQUIRED: report. Monitor by checking every 5 minutes until 60 minutes have passed. Then, and only then, kill it and retry.
If a planning report was returned, update {IMPLEMENTATION_PLAN_PATH} from ## Plan path, then run the workspace hygiene gate checks, verify the latest commit hash plus changed-file list match the planning subagent's report, confirm the plan file exists at {IMPLEMENTATION_PLAN_PATH}, then close that planning subagent and clear any saved handle or session_id for it.
Deploy a fresh planning issue finder to critique the current plan against the user's request and the repo. The issue finder only discovers and reports plan issues; it must not edit the plan. If it finds issues, deepen on the same issue finder until discovery is saturated or the planning issue-finder deepening cap is reached, then close it and dispatch a fresh planning synthesis subagent to rewrite the plan holistically from the accumulated findings.
A planning review round is one fresh issue-finder pass plus any same-agent deepening responses from that same issue finder. If that round returns ISSUES, one fresh synthesis pass follows and the round counts as not ready. The synthesis pass is separate from issue discovery and must not be sent to the same subagent.
Immediately before each issue-review dispatch, prepare the planning-review phase via the phase wrapper using template <skill-directory>/subagents/prompt-planning-review.md, --set WORKTREE_PATH={WORKTREE_PATH}, --set IMPLEMENTATION_PLAN_PATH={IMPLEMENTATION_PLAN_PATH}, --transcript-placeholder USER_REQUEST_TRANSCRIPT, and --require-nonempty-tag task_input_json, then dispatch a fresh planning subagent with the returned prompt_path. Start a phase prompt paths temp file if needed, and append the returned prompt_path.
Monitor by checking every 5 minutes until 180 minutes have passed. Then, and only then, kill it and retry.
After each issue-review round starts:
## Plan verdict, ## Findings memo, ## Plan path, ## Commit, and ## Changed files, or a report beginning with USER DECISION REQUIRED:.USER DECISION REQUIRED:, present that question to the user, send the user's answer back to that active planning subagent, and wait again for either an issue-review report or another USER DECISION REQUIRED: report. Monitor by checking every 5 minutes until 180 minutes have passed. Then, and only then, kill it and retry.## Plan path matches the current {IMPLEMENTATION_PLAN_PATH}, then run the workspace hygiene gate checks and verify the latest commit hash plus changed-file list match the planning issue finder's report.## Plan verdict is READY, close that planning subagent for the completed round, clear any saved handle or session_id, and continue to ## 8) Build test plan with the current {IMPLEMENTATION_PLAN_PATH}. Do not run deepening after a READY verdict.## Plan verdict is ISSUES, run the same-agent planning issue-finder deepening loop below without closing the planning subagent.session_id.Same-agent planning issue-finder deepening loop:
Before entering this loop, set the planning issue-finder deepening count to 0 for this planning subagent.
For each deepening pass:
planning-review-deepen phase via the phase wrapper using template <skill-directory>/subagents/prompt-planning-review-deepen.md, --set WORKTREE_PATH={WORKTREE_PATH}, and --set IMPLEMENTATION_PLAN_PATH={IMPLEMENTATION_PLAN_PATH}. Append the returned prompt_path to the phase prompt paths temp file.prompt_path contents verbatim to the same active planning issue finder. In fallback-runner mode, resume the same planning session through python3 <skill-directory>/orchestrator/subagent_runner.py resume using that planning dispatch's saved session_id, its resolved backend, the wrapper-prepared prompt_path, and phase planning-review-deepen.## Plan verdict, ## Findings memo, ## Plan path, ## Commit, and ## Changed files, or a report beginning with USER DECISION REQUIRED:.USER DECISION REQUIRED:, present that question to the user, send the user's answer back to that same active planning subagent, and wait again for either an issue-review report or another USER DECISION REQUIRED: report. Monitor by checking every 5 minutes until 180 minutes have passed. Then, and only then, kill it and halt with the completed planning issue-review report paths and timed-out attempt artifacts.## Plan path matches the current {IMPLEMENTATION_PLAN_PATH}, then run the workspace hygiene gate checks and verify the latest commit hash plus changed-file list match the planning issue finder's report.## Plan verdict is READY, the same planning issue finder has found no additional critical plan issues. End this same-agent deepening loop.## Plan verdict is ISSUES, increment the planning issue-finder deepening count.The planning issue-finder counter intentionally counts completed deepening responses that contain ISSUES. A final READY response stops the loop and is not counted toward the cap.
Planning synthesis pass:
planning-synthesis phase via the phase wrapper using template <skill-directory>/subagents/prompt-planning-synthesis.md, --set WORKTREE_PATH={WORKTREE_PATH}, --set IMPLEMENTATION_PLAN_PATH={IMPLEMENTATION_PLAN_PATH}, --set-file PLANNING_FINDINGS_MEMO=<planning-findings-memo-temp-file>, --transcript-placeholder USER_REQUEST_TRANSCRIPT, --require-nonempty-tag task_input_json, and --ignore-tag-for-placeholders planning_findings_memo, then dispatch a fresh planning subagent with the returned prompt_path. Append the returned prompt_path to the phase prompt paths temp file.## Plan verdict, ## Synthesis summary, ## Plan path, ## Commit, and ## Changed files, or a report beginning with USER DECISION REQUIRED:.USER DECISION REQUIRED:, present that question to the user, send the user's answer back to that active planning subagent, and wait again for either a synthesis report or another USER DECISION REQUIRED: report. Monitor by checking every 5 minutes until 180 minutes have passed. Then, and only then, kill it and retry.{IMPLEMENTATION_PLAN_PATH} from ## Plan path, then run the workspace hygiene gate checks, verify the latest commit hash plus changed-file list match the planning synthesis subagent's report, and confirm the plan file exists at {IMPLEMENTATION_PLAN_PATH}.session_id.If the plan still is not judged ready after the 5th planning review round: STOP. Do NOT proceed to step 8.
nonconvergence-review phase via the phase wrapper using template <skill-directory>/subagents/prompt-nonconvergence-review.md, --set TRYCYCLE_SKILL_PATH=<skill-directory>/SKILL.md, --set NONCONVERGENCE_CONTEXT="Planning issue-review and synthesis loop reached 5 review rounds without a READY verdict.", --set WORKTREE_PATH={WORKTREE_PATH}, --set IMPLEMENTATION_PLAN_PATH={IMPLEMENTATION_PLAN_PATH}, --set TEST_PLAN_PATH="Not built yet; the planning issue-review and synthesis loop did not converge before the test-plan phase.", --set-file PHASE_PROMPT_PATHS=<phase-prompt-paths-temp-file>, --set-file LOOP_OUTPUT_PATHS=<loop-outputs-temp-file>, and --set IMPLEMENTATION_REPORT_PATHS="Not applicable; execution did not start.", then dispatch a subagent with the returned prompt_path. Monitor by checking every 5 minutes until 60 minutes have passed. Then, and only then, kill it and retry.Now that the implementation plan has passed the planning issue-review and synthesis loop and is finalized, dispatch a subagent to reconcile the testing strategy against the plan and produce the concrete test plan, starting from high-value existing automated checks where they exist and adding new tests where coverage is missing.
Immediately before dispatch, prepare the test-plan phase via the phase wrapper using template <skill-directory>/subagents/prompt-test-plan.md, --set IMPLEMENTATION_PLAN_PATH={IMPLEMENTATION_PLAN_PATH}, --set WORKTREE_PATH={WORKTREE_PATH}, --transcript-placeholder FULL_CONVERSATION_VERBATIM, and --require-nonempty-tag conversation.
Monitor by checking every 5 minutes until 60 minutes have passed. Then, and only then, kill it and retry.
When the subagent returns:
{TEST_PLAN_PATH} from ## Test plan path in the latest test-plan report.## Strategy changes requiring user approval, present that section to the user verbatim.session_id for it, then rerun the same test-plan phase wrapper command immediately before redispatching. Monitor by checking every 5 minutes until 60 minutes have passed. Then, and only then, kill it and retry. Update {TEST_PLAN_PATH} from the latest test-plan report. Repeat until the user explicitly approves or the report no longer includes that section.## Strategy changes requiring user approval section or the user has explicitly approved it.{TEST_PLAN_PATH}.session_id for it.Code implementation must be done by a new, dedicated subagent.
Before dispatching the implementation subagent, rebase onto the latest base branch to incorporate any changes merged by other agents during planning:
git -C {WORKTREE_PATH} fetch origin main
git -C {WORKTREE_PATH} rebase origin/main
If the rebase has conflicts, stop and present them to the user.
Spawn a fresh implementation subagent and give it the final excellent plan.
The implementation subagent stays in execute mode until the plan is complete, the work has gone through red/green/refactor cycles as needed, and all required automated tests are passing for legitimate reasons. Failed checks mean keep improving the code and tests unless there is a genuine blocker. Do not accept weakened or deleted valid tests as a shortcut to green.
Immediately before dispatch, prepare the executing phase via the phase wrapper using template <skill-directory>/subagents/prompt-executing.md, --set IMPLEMENTATION_PLAN_PATH={IMPLEMENTATION_PLAN_PATH}, --set TEST_PLAN_PATH={TEST_PLAN_PATH}, and --set WORKTREE_PATH={WORKTREE_PATH}, then dispatch the implementation subagent with the returned prompt_path. Start a phase prompt paths temp file if needed, and append the returned prompt_path.
In fallback-runner mode, record the returned dispatch.backend as {IMPLEMENTATION_BACKEND} alongside the saved session_id.
Monitor by checking every 5 minutes until 180 minutes have passed. Then, and only then, kill it and retry.
If you kill and retry this implementation round, create a fresh implementation subagent or runner session and replace the saved implementation handle. In fallback-runner mode, also replace the saved session_id and {IMPLEMENTATION_BACKEND} with the fresh dispatch values.
Do not proceed to post-implementation review until the implementation subagent has returned an implementation report. Start an implementation reports temp file if needed, save the report to a temp file immediately, append that path, and treat that saved file as the latest implementation report for the first review prompt.
After implementation completes, run the workspace hygiene gate checks and verify the latest commit hash plus changed-file list match the implementation subagent's report before launching post-implementation review.
After execution completes, deploy a new reviewer with no prior context and give it the finalized implementation plan plus the finalized test plan.
Create an empty temp file for {REVIEW_LOOP_HISTORY} before starting the first review round, then append the implementation subagent's initial implementation report to it.
Immediately before dispatch, prepare the post-implementation-review phase via the phase wrapper using template <skill-directory>/subagents/prompt-post-impl-review.md, --set WORKTREE_PATH={WORKTREE_PATH}, --set IMPLEMENTATION_PLAN_PATH={IMPLEMENTATION_PLAN_PATH}, --set TEST_PLAN_PATH={TEST_PLAN_PATH}, --set-file LATEST_IMPLEMENTATION_REPORT=<latest-implementation-report-temp-file>, and --ignore-tag-for-placeholders latest_implementation_report, then dispatch a review subagent with the returned prompt_path. Append the returned prompt_path to the phase prompt paths temp file.
Monitor by checking every 5 minutes until 180 minutes have passed. Then, and only then, kill it and retry.
Use the review subagent's completed output as the first review-pass input. Keep that same review subagent open until either:
USER DECISION REQUIRED:.If the reviewer returns USER DECISION REQUIRED:, present that question to the user, send the user's answer back to that same active review subagent, and wait again for either a completed review response or another USER DECISION REQUIRED: report. Monitor by checking every 5 minutes until 180 minutes have passed. Then, and only then, kill it and halt with all completed review reply paths, extracted observation paths, and timed-out attempt artifacts if available.
After every completed review pass, including the normal first response and every deepening response:
{REVIEW_LOOP_HISTORY} under the current post-implementation review round before sending any further prompt.Use this command for each pass extraction:
python3 <skill-directory>/orchestrator/review_observations.py extract \
--reply <review-reply-temp-file> \
--output <review-observations-temp-file>
Treat the extractor's JSON stdout as authoritative for:
issue_countblocking_issue_counthas_blocking_issuesreview_statusIf extraction fails, stop and surface the review reply plus the extractor failure to the user rather than guessing.
Start a loop outputs temp file if needed before appending review artifacts.
If the normal first review response has blocking_issue_count: 0, do not run deepening. Close the completed review subagent and clear any saved handle or session_id.
If any completed review pass has blocking_issue_count > 0, run same-agent post-implementation review deepening before deciding the fix-loop input. Before entering this loop, set the post-implementation review deepening count to 0 for this review subagent. If this loop halts for timeout, cap, or extraction failure, preserve the active review subagent or runner session where the host supports it. For each deepening pass:
post-implementation-review-deepen phase via the phase wrapper using template <skill-directory>/subagents/prompt-post-impl-review-deepen.md. Append the returned prompt_path to the phase prompt paths temp file.prompt_path contents verbatim to the same active review subagent. In fallback-runner mode, resume the same review session through python3 <skill-directory>/orchestrator/subagent_runner.py resume using that review dispatch's saved session_id, its resolved backend, the wrapper-prepared prompt_path, and phase post-implementation-review-deepen.<review_observations_json>...</review_observations_json> block or a report beginning with USER DECISION REQUIRED:.USER DECISION REQUIRED:, present that question to the user, send the user's answer back to that same active review subagent, and wait again for either a completed review response or another USER DECISION REQUIRED: report. Monitor by checking every 5 minutes until 180 minutes have passed. Then, and only then, kill it and halt with all completed review reply paths, extracted observation paths, and timed-out attempt artifacts if available.{REVIEW_LOOP_HISTORY} before sending any further prompt.blocking_issue_count: 0, the same reviewer has found no additional critical or major issues. End this same-agent deepening loop, then close the completed review subagent and clear any saved handle or session_id.blocking_issue_count > 0, increment the post-implementation review deepening count.The counter intentionally counts completed deepening responses that contain critical or major observations. A final no_issues response stops the loop and is not counted toward the cap.
After the normal review response and any completed deepening responses have been extracted, create the review-round observation artifact used by the rest of the loop:
python3 <skill-directory>/orchestrator/review_observations.py combine \
--output <combined-review-observations-temp-file> \
<review-observations-temp-file> [<deepening-review-observations-temp-file> ...]
Treat the combine command's JSON stdout as authoritative for:
issue_countblocking_issue_counthas_blocking_issuesreview_statusAppend the combined review-round observation artifact path to the loop outputs temp file.
Use this combined review-round observation artifact anywhere Step 10 previously used the latest extracted review-observations artifact, including:
{POST_IMPLEMENTATION_REVIEW_OBSERVATIONS_JSON}{POST_IMPLEMENTATION_REVIEW_OBSERVATIONS_JSON}Deepening passes do not increment the completed fresh post-implementation review round number. Plan reconsideration cadence and the default stop point use completed fresh review rounds only.
When blocking issues remain after a review round, first check whether the loop has reached its stop point. The default stop point is 8 completed fresh review rounds, but the user can override that like any other instruction.
Before either dispatching another fix round or running nonconvergence review, check whether plan reconsideration is due. Plan reconsideration is due when blocking issues remain and either:
If plan reconsideration is due, run this checkpoint before the next action:
planning-reconsider phase via the phase wrapper using template <skill-directory>/subagents/prompt-planning-reconsider.md, --set WORKTREE_PATH={WORKTREE_PATH}, --set IMPLEMENTATION_PLAN_PATH={IMPLEMENTATION_PLAN_PATH}, --set TEST_PLAN_PATH={TEST_PLAN_PATH}, --set REVIEW_ROUND_NUMBER=<completed-review-round-number>, --set-file POST_IMPLEMENTATION_REVIEW_OBSERVATIONS_JSON=<combined-review-observations-temp-file>, --set-file REVIEW_LOOP_HISTORY=<review-loop-history-temp-file>, --transcript-placeholder FULL_CONVERSATION_VERBATIM, --require-nonempty-tag conversation, --require-nonempty-tag review_loop_history, --ignore-tag-for-placeholders conversation, --ignore-tag-for-placeholders post_implementation_review_observations_json, and --ignore-tag-for-placeholders review_loop_history, then dispatch a fresh planning subagent with the returned prompt_path. Append the returned prompt_path to the phase prompt paths temp file.## Plan reconsideration verdict, ## Implementation plan path, ## Test plan path, ## Commit, and ## Changed files, or a report beginning with USER DECISION REQUIRED:.USER DECISION REQUIRED:, present that question to the user, send the user's answer back to that active planning subagent, and wait again for either a plan-reconsideration report or another USER DECISION REQUIRED: report. Monitor by checking every 5 minutes until 60 minutes have passed. Then, and only then, kill it and retry.{IMPLEMENTATION_PLAN_PATH} from ## Implementation plan path and {TEST_PLAN_PATH} from ## Test plan path in the latest plan-reconsideration report.{REVIEW_LOOP_HISTORY} under a clear plan-reconsideration heading so future plan-reconsideration checkpoints receive prior analyses. This history is for planning and final nonconvergence analysis; do not add it to executor or reviewer prompts.session_id for it.Stop when either condition is met:
blocking_issue_count: 0.If the combined review-round observation artifact still reports blocking_issue_count > 0 after the configured stop point:
nonconvergence-review phase via the phase wrapper using template <skill-directory>/subagents/prompt-nonconvergence-review.md, --set TRYCYCLE_SKILL_PATH=<skill-directory>/SKILL.md, --set NONCONVERGENCE_CONTEXT="Post-implementation review loop stopped after <completed-review-round-number> review rounds while blockers remained.", --set WORKTREE_PATH={WORKTREE_PATH}, --set IMPLEMENTATION_PLAN_PATH={IMPLEMENTATION_PLAN_PATH}, --set TEST_PLAN_PATH={TEST_PLAN_PATH}, --set-file PHASE_PROMPT_PATHS=<phase-prompt-paths-temp-file>, --set-file LOOP_OUTPUT_PATHS=<loop-outputs-temp-file>, and --set-file IMPLEMENTATION_REPORT_PATHS=<implementation-reports-temp-file>, then dispatch a subagent with the returned prompt_path. Monitor by checking every 5 minutes until 60 minutes have passed. Then, and only then, kill it and retry.If blockers remain and the configured stop point has not been reached, continue with the fix round:
executing phase again via the phase wrapper using template <skill-directory>/subagents/prompt-executing.md, --set IMPLEMENTATION_PLAN_PATH={IMPLEMENTATION_PLAN_PATH}, --set TEST_PLAN_PATH={TEST_PLAN_PATH}, --set WORKTREE_PATH={WORKTREE_PATH}, --set-file POST_IMPLEMENTATION_REVIEW_OBSERVATIONS_JSON=<combined-review-observations-temp-file>, and --ignore-tag-for-placeholders post_implementation_review_observations_json. Append the returned prompt_path to the phase prompt paths temp file. The executing prompt must treat only critical and major observations as critical issues and required fix targets; minor and nit observations are not required fix targets.prompt_path contents verbatim. In fallback-runner mode, resume the implementation session through python3 <skill-directory>/orchestrator/subagent_runner.py resume using the saved session_id, --backend {IMPLEMENTATION_BACKEND}, and the wrapper-prepared prompt_path.session_id and {IMPLEMENTATION_BACKEND} with the fresh dispatch values. Keep any paths already appended for the killed attempt; they are useful evidence if nonconvergence analysis is needed.After each implementation-subagent fix round, save the returned implementation report to a temp file, append that path to the implementation reports temp file, treat that saved file as the latest implementation report for the next review prompt, append the report to {REVIEW_LOOP_HISTORY}, then run the workspace hygiene gate checks and verify the latest commit hash plus changed-file list match the implementation subagent's report before starting the next fresh review round.
Once the post-implementation review loop passes (blocking_issue_count: 0):
Clean up temporary artifacts created during the loop (for example plan scratch files and temp notes), then run:
git -C {WORKTREE_PATH} status --shortgit -C {WORKTREE_PATH} rev-parse --short HEADgit -C {WORKTREE_PATH} diff --name-only main...HEADIf the implementation subagent is still open, close it and clear its saved handle or session_id before handing off to finishing.
Finally, in one paragraph, briefly describe what was built/accomplished/changed/fixed. Then Report the process to the user using concrete facts and returned artifacts: how many planning issue-review/synthesis rounds, how many code-review rounds, the current HEAD, the changed-file list, the implementation subagent's latest summary and verification results, and any reviewer-reported residual issues.
Then read and follow <skill-directory>/subskills/trycycle-finishing/SKILL.md to present the user with options for integrating the implementation workspace (merge, PR, etc.).