Brainstorming
JetBrains/thinkrail
Use before implementation when a request requires choosing product scope, user-visible behavior, or architecture.
Routes build, debug, review, plan, QA, and triage requests through the cc10x workflows (task graphs, workflow artifacts, gates); it is the single entry point for cc10x code work.
$ npx skills add romiluz13/cc10x --skill cc10x-router -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install romiluz13/cc10x cc10x-router --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/romiluz13/cc10x.git skills-src && mkdir -p .claude/skills && cp -r skills-src/plugins/cc10x/skills/cc10x-router .claude/skills/cc10x-router && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "cc10x-router" agent skill from https://github.com/romiluz13/cc10x/tree/main/plugins/cc10x/skills/cc10x-router into .claude/skills/cc10x-router/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "cc10x-router", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/romiluz13/cc10x/tree/main/plugins/cc10x/skills/cc10x-routerType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add romiluz13/cc10x --skill cc10x-router -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install romiluz13/cc10x cc10x-router --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/romiluz13/cc10x.git skills-src && mkdir -p .agents/skills && cp -r skills-src/plugins/cc10x/skills/cc10x-router .agents/skills/cc10x-router && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "cc10x-router" agent skill from https://github.com/romiluz13/cc10x/tree/main/plugins/cc10x/skills/cc10x-router into .agents/skills/cc10x-router/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "cc10x-router", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add romiluz13/cc10x --skill cc10x-router -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install romiluz13/cc10x cc10x-router --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/romiluz13/cc10x.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/plugins/cc10x/skills/cc10x-router .cursor/skills/cc10x-router && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "cc10x-router" agent skill from https://github.com/romiluz13/cc10x/tree/main/plugins/cc10x/skills/cc10x-router into .cursor/skills/cc10x-router/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "cc10x-router", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/romiluz13/cc10x.git --path plugins/cc10x/skills/cc10x-router--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add romiluz13/cc10x --skill cc10x-router -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install romiluz13/cc10x cc10x-router --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/romiluz13/cc10x.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/plugins/cc10x/skills/cc10x-router .gemini/skills/cc10x-router && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "cc10x-router" agent skill from https://github.com/romiluz13/cc10x/tree/main/plugins/cc10x/skills/cc10x-router into .gemini/skills/cc10x-router/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "cc10x-router", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install romiluz13/cc10x cc10x-routerInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add romiluz13/cc10x --skill cc10x-router -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/romiluz13/cc10x.git skills-src && mkdir -p .github/skills && cp -r skills-src/plugins/cc10x/skills/cc10x-router .github/skills/cc10x-router && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "cc10x-router" agent skill from https://github.com/romiluz13/cc10x/tree/main/plugins/cc10x/skills/cc10x-router into .github/skills/cc10x-router/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "cc10x-router", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add romiluz13/cc10x --skill cc10x-router -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install romiluz13/cc10x cc10x-router --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/romiluz13/cc10x.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/plugins/cc10x/skills/cc10x-router .opencode/skills/cc10x-router && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "cc10x-router" agent skill from https://github.com/romiluz13/cc10x/tree/main/plugins/cc10x/skills/cc10x-router into .opencode/skills/cc10x-router/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "cc10x-router", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
cc10x-routerRoutes build, debug, review, plan, QA, and triage requests through the cc10x workflows (task graphs, workflow artifacts, gates); it is the single entry point for cc10x code work.
Cc10x Router is an agent skill from romiluz13/cc10x. Routes build, debug, review, plan, QA, and triage requests through the cc10x workflows (task graphs, workflow artifacts, gates); it is the single entry point for cc10x code work. Activates when the user asks to implement, fix, review, plan, test, refactor, or continue code work. Trigger keywords: build, implement, create, write, add, review, audit, debug, fix, error, bug, broken, plan, design, architect, spec, brainstorm, test, refactor, optimize, update, change, research, cc10x, c10x. Hand-off: questions about…
Its SKILL.md is about 20k tokens, which your agent loads only when the skill is triggered. The skill folder holds 16 other files, including reference files (for example `evals/README.md`, `evals/eval-01-error-beats-build.md` and `evals/eval-02-review-stays-advisory.md`).
It sits in Agent Workflows, covering Brainstorming and Refactoring. The repository describes itself as: The Loop Engine for Claude Code — engineer the loop, not the prompt. 1 router · 9 agents · 16 skills · 4 workflows. Fail-closed gates, test honesty, anti-anchored review. The licence is MIT.
12 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit f346ebe. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
No scripts in the folder and no shell commands in SKILL.md (its code samples are json).
From the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Cc10x Router loads about 20k tokens when it runs, and up to ~75k if it reads all its reference files. Until then it costs about 155 tokens; SKILL.md has 9,481 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from romiluz13/cc10x at commit f346ebe, republished under its MIT licence (© romiluz13). 9,481 words, ~19,990 tokens.
.claude/skills/cc10x-router/SKILL.md (or your agent's skills folder). This skill also uses 14 other files; get the full folder from GitHub.The router runs trust-first orchestration: route intent, hydrate workflow state, write workflow artifacts, execute the task graph, validate agent output, and fail closed on ambiguity, skipped work, or missing persistence.
A keyword hit only NOMINATES a row; the request's primary deliverable DECIDES the route (e.g. "triage incoming issues" contains issue but its deliverable is triage, so it routes TRIAGE, not DEBUG). When the primary-deliverable test genuinely holds for more than one row, the lower Priority number wins. The QA, ORIENT, and REVIEW cases below are applications of this test, not exceptions to it.
| Priority | Signal | Keywords | Workflow | Chain |
|---|---|---|---|---|
| 1 | ERROR | error, bug, fix, broken, crash, fail, debug, troubleshoot, issue | DEBUG | bug-investigator -> code-reviewer -> integration-verifier |
| 2 | PLAN | plan, design, architect, roadmap, strategy, spec, brainstorm | PLAN | exploration -> planner -> bounded fresh review loop |
| 3 | REVIEW | review, audit, analyze, assess, "is this good" | REVIEW | code-reviewer |
| 4 | ORIENT | zoom out, explain, understand, "how does X work", unfamiliar, "map this", "walk me through", "where is", "what does this do" | ORIENT | advisory orientation (no agents) |
| 5 | QA | test, QA, e2e, end-to-end, integration test, test plan, test coverage, regression, smoke test, "verify my feature", "prove it works" | QA | qa-researcher (fan-out) → qa-plan → plan-gap-reviewer → qa-preflight → qa-harness-builder → [code-reviewer ‖ failure-hunter] → qa-executor |
| 6 | TRIAGE | triage, "incoming issues", "look at #", "triage #" | TRIAGE | triage-agent → optional exploration → agent-ready brief |
| 7 | CODEBASE-HEALTH | "codebase health", "improve architecture", "deepening", "ball of mud", "shallow modules", "architecture audit" | CODEBASE-HEALTH | architecture-scanner → HTML report → human picks → exploration (grilling) → feeds PLAN |
| 8 | DEFAULT | Everything else | BUILD | component-builder → [code-reviewer ‖ failure-hunter] → integration-verifier |
Rules:
plan_file and run the fresh-review gate over it) rather than discarding it. Default to the CC10x PLAN workflow for "plan", "design", "architect", "brainstorm" requests.triage or incoming issues or look at # / triage #). A request that mentions a bug/issue/feature but asks to implement/fix/change it is BUILD or DEBUG — the primary deliverable is the change, not the triage. Do not route to TRIAGE unless the user explicitly asks to triage.codebase health, improve architecture, deepening, ball of mud, shallow modules, or architecture audit). A request that asks to refactor/fix/change specific code is BUILD — the primary deliverable is the change, not the audit.references/build-workflow.md): trivial scope (1-2 files, single change, one testable outcome, no cross-module wiring) runs a reduced builder → verifier → memory graph; everything else, and all planned work, runs the full builder → [reviewer || hunter] → verifier → doc-sync → memory chain. The reviewer and hunter run in parallel (two read-only agents in the same message) and the router merges their findings before verifier handoff. The builder escalates trivial → full on any scope increase. The router is still the sole entry point for every BUILD — the gradient scales the graph to the work, it does not bypass routing.-> {WORKFLOW} workflow (signals: {matched keywords})Triggered when the user wants to understand existing code, not change it ("zoom out", "explain", "how does X work", "I'm unfamiliar with", "map this", "walk me through", "where is X", "what does this do"). The router answers inline — no TaskCreate, no NEW workflow artifact, no phase graph, no write agents. (Edge case: if an artifact was pre-created before routing resolved — §2a permits early creation with workflow_type: pending — set its workflow_type to ORIENT and phase_cursor to orient, record the close in status_history, and create no phase graph. That is the only reason ORIENT/orient appear in the artifact enums.)
Orientation procedure:
Glob / Grep to locate, Read only the slices needed to explain). Octocode local tools (localViewStructure, localSearchCode), when mounted, are optional accelerators.LSP tool (incomingCalls, findReferences) where a language server is configured, else Grep; locate the exact line and column with Grep before any LSP call. Octocode lspCallHierarchy is an optional accelerator.Distinguish from REVIEW: REVIEW judges quality ("is this good", audit); ORIENT only explains structure and flow. The deliverable decides: "help me understand" is ORIENT, "tell me what's wrong" is REVIEW; only a genuine tie goes to REVIEW (lower number).
Always run this before routing or resuming:
1. Bash("mkdir -p .cc10x/")
2. Read(".cc10x/activeContext.md")
3. Read(".cc10x/patterns.md")
4. Read(".cc10x/progress.md")Do not parallelize step 1 with reads — the reads assume the directory exists.
If a memory file is missing:
cc10x:memory-and-handoff template.Required sections:
| File | Required Sections |
|---|---|
activeContext.md | ## Current Focus, ## Recent Changes, ## Next Steps, ## Decisions, ## Learnings, ## References, ## Blockers, ## Session Settings, ## Last Updated |
progress.md | ## Current Workflow, ## Tasks, ## Completed, ## Verification, ## Last Updated |
patterns.md | ## User Standards, ## Common Gotchas, ## Project SKILL_HINTS, ## Last Updated |
Auto-heal rule:
## Last Updated.Edit(...), immediately Read(...) and verify the new section exists.JUST_GO:
activeContext.md ## Session Settings.AUTO_PROCEED: true, set JUST_GO=true.JUST_GO=true, auto-default AskUserQuestion gates to the recommended option EXCEPT: REVERT, failure-stop gates, destructive finishing options (auto-pick Keep as-is; never merge/push/discard), and plans with unresolved Open Decisions (BUILD may not start). Log each auto-choice in ## Decisions.Trust rule:
JUST_GO never overrides explicit user/project standards, open plan decisions, or failure-stop gates.Open Decisions, BUILD may not start, even in JUST_GO.Core law:
.cc10x/workflows/{workflow_uuid}.json.cc10x/workflows/{workflow_uuid}.events.jsonlplan_trust_gate, phase_exit_gate, failure_stop_gate, memory_sync_gate, and skill_precedence_gateMandatory reference read:
references/workflow-artifact-and-hook-policy.md.Plugin root for commands in reference files: ${CLAUDE_PLUGIN_ROOT}; Claude Code substitutes it when this skill loads, but reference files read through Read arrive with the placeholder literal. When a reference command carries the plugin-root placeholder, build the absolute path from the value on this line; never run the placeholder as-is.
Every CC10X task description starts with normalized metadata lines:
wf:{workflow_uuid}
kind:{workflow|agent|remfix|memory|reverify|research}
origin:{router|component-builder|bug-investigator|code-reviewer|failure-hunter|integration-verifier|planner|qa-harness-builder|qa-executor}
phase:{build|build-implement|build-review|build-hunt|build-verify|build-doc-sync|build-finish|debug|debug-investigate|debug-review|debug-verify|review|review-audit|plan|plan-create|plan-review-gap-1|plan-review-gap-2|plan-review-amendment|qa|qa-research|qa-plan|qa-plan-review|qa-re-plan|qa-plan-review-2|qa-preflight|qa-build|qa-review|qa-hunt|qa-execute|memory-finalize|re-review|re-hunt|re-verify|re-plan|re-qa-build|re-qa-execute|research-web|research-github|triage|codebase-health}
plan:{path|N/A}
scope:{ALL_ISSUES|CRITICAL_ONLY|N/A|{source}|code:{repo}}
reason:{short reason or N/A}Rules:
wf:, kind:, origin:, phase:, plan:, scope:, reason:) are present on EVERY CC10X task — use N/A where a field does not apply. The TaskCompleted hook audits exactly this invariant; the task-graph templates already satisfy it.wf: always carries the generated workflow_uuid (wf-<ts>-<hex>), never a Claude TaskCreate task id. This aligns with the hard rule "never treat stored task IDs as durable truth across workflows."workflow_uuid before TaskCreate() and use it from the first write.kind: drives resume, routing, and counting logic.origin: on a kind:remfix task names the agent whose findings triggered the fix (never N/A there).plan: carries the real plan path on workflow, agent, reverify, and memory tasks when a plan exists.reason: carries a meaningful short reason (not N/A) on remediation and research tasks.After memory load:
TaskList()Task tools are optional. Claude Code ships TaskCreate/TaskList/TaskGet/TaskUpdate by default only on some models; the Agent tool is a separate primitive and stays available without them. The workflow artifact is the source of truth and task metadata mirrors it. When the Task tools are absent, do not fail and do not run inline: use ARTIFACT-ONLY GRAPH MODE. Phase state, task ids and ordering are tracked in the artifact (task_ids, phase_status, phase_cursor, results) and the events log; every agent is still dispatched through the Agent tool with fresh context; validation and every gate apply as written; completion is recorded by the router in the artifact, because no agent holds TaskUpdate or is told to call it (the router completes every task after contract validation). The inline no-subagent fallback (§12) applies only when the Agent/dispatch primitive itself is unavailable. CLAUDE_CODE_ENABLE_TODO_TOOLS=1 restores the tools on every model (recommended); CLAUDE_CODE_TASK_LIST_ID shares one task list across sessions (optional).
Hydration rules:
CC10X BUILD:, CC10X DEBUG:, CC10X REVIEW:, CC10X PLAN:, CC10X QA:. TRIAGE and CODEBASE-HEALTH create no parent task: find them by CC10X triage-agent: / CC10X architecture-scanner: or the pending CC10X Memory Update: task, scoped by wf:; a paused workflow has no Memory Update task yet, and its artifact pending_gate names the open question. In Task-tools mode, when no such task is found for an advisory route, fall back to the non-terminal artifacts that carry a pending_gate and have workflow_type TRIAGE or CODEBASE-HEALTH (they have no parent task). ORIENT creates no task.wf: markers. Do not resume a workflow you cannot scope confidently.TaskList() and TaskGet() using wf: + kind: + phase:. Do not rely on stored task IDs for correctness..cc10x/ state namespace (memory .cc10x/*.md, workflows .cc10x/workflows/*). Ignore any legacy version-segmented layout such as .cc10x/v10/* or .claude/cc10x/* left over from older installs during hydration.[cc10x-internal] memory_task_id in activeContext.md is only a transient optimization. If it is missing, stale, or points to a different wf:, ignore it and reconstruct the memory task from the current workflow scope. [EASY TO MISS: stale memory_task_id is the #1 cause of cross-workflow pollution]Resume algorithm:
.cc10x/stop-state.json or .cc10x/precompact-state.json exists (written by the Stop/PreCompact hooks), read it as a HINT for which wf: and phase_cursor were live when the session last ended. It is a hint only — task metadata and the workflow artifact stay authoritative; discard the hint on any mismatch.workflow_uuid from the wf: line.wf:.status and blockedBy.kind:memory task in the same wf:..cc10x/workflows/*.json, drop the terminal ones, and keep the artifacts whose workflow_uuid the user named or whose user_request matches the current conversation, never by modification time alone; one match resumes it, more than one, ask which; when none matches, look up the paused workflow a bare reply answers: the candidates are the non-terminal artifacts with a non-null pending_gate (the wf the step 0 hint names counts when its artifact is non-terminal and has one); exactly one candidate means the reply is the answer to its pending_gate, more than one, ask which (list each gate name and user_request), none starts a new workflow (say so); (b) read pending_gate first and answer it, then phase_cursor, phase_status and results; (c) a graph step is complete only if the events log holds a result_persisted event for its agent and task phase with details.phase_id equal to the current phase_cursor, appended after the latest phase_started or remediation_created event for that phase_id (file order decides; the workflow start event is the boundary when neither exists, and after a remediation_created the current graph is the remediation graph: REM-FIX, re-review, re-hunt, re-verify (REM-FIX is the component-builder step with the originating task phase; a pending original verifier that has not run takes the re-verify slot and keeps its task phase; doc-sync follows the verifier on the BUILD route as usual)); results.* holds only the latest value and never proves a step done; null, missing and N/A phase_id values compare equal (a BUILD with no plan phases has a null phase_cursor); a result_persisted whose decision is NEEDS_INFO or NEEDS_GRILLING is the pause of a pass that a second pass of the same agent and task phase follows, so it does not complete its step and only a terminal-status result does (CANDIDATES_FOUND completes the scanner step: no second pass follows and pending_gate carries the pause); the next step is the first step of that route's graph that is not complete, and a partial or blocked step is re-entered only through its remediation or clarification gate.Terminal test: a workflow is terminal when its events log or status_history holds memory_finalized, workflow_completed or workflow_failed, or its phase_cursor is memory-finalize and completed. Pending gate (both modes): if a non-terminal artifact carries pending_gate, read it first; the user's reply answers it, and the router CLEARS it (sets null and records the answer in status_history in the user's exact words) once answered and also when the workflow reaches a terminal state.
Scope-decision resume:
activeContext.md ## Decisions for a live marker:[SCOPE-DECISION-PENDING: wf:{workflow_uuid} reason:{...}]critical only -> create the pending REM-FIX with scope:CRITICAL_ONLYall issues -> create the pending REM-FIX with scope:ALL_ISSUES## DecisionsSafety rules:
wf: before resuming.status=in_progress and unresolved blockers, treat it as waiting on remediation, not as a free-running orphan.status=in_progress and no blockers, ask the user whether to resume, delete, or mark complete.BUILD:, DEBUG:, REVIEW:, or PLAN: without the CC10X prefix, ask whether to resume the legacy workflow or start a fresh CC10X workflow.Known misbehaviors (resume/poll surfaces). Symptom → detection → fallback. Do not burn chain cycles retrying a misbehaving surface, and name the exit bound (max attempts or time) before starting any poll; on timeout, stop and report the state.
| Symptom | Detection | Fallback |
|---|---|---|
| Sub-agent reported "completed" but no output arrived | Check the task's result payload directly (TaskGet, or Read of the task's output file path; TaskOutput is deprecated) before trusting status | Retrieve once more; still empty → inspect the workflow artifact and events log before declaring the output lost, then treat the task as failed through the existing resume/retry gate — any re-dispatch carries changed input (never re-dispatch the same agent on unchanged input). Never mark a phase PASS on a missing result |
| Background task hangs (alive, no progress) | Elapsed time far past expected duration; log unchanged between checks | At the named bound, stop the poll and route the task through the existing resume checkpoint (resume, delete, or mark complete with the user); do not silently relaunch past the gate |
| Stop-state hint contradicts task metadata | Compare .cc10x/stop-state.json hint to wf: scope and phase_cursor | Discard the hint — task metadata and the workflow artifact stay authoritative |
Before creating a new workflow:
activeContext.md ## References to discover Plan, Design, and prior Research files.activeContext.md ## Decisions for prior planner/build clarifications.progress.md ## Current Workflow and ## Tasks for pending work that should resume instead of duplicating..cc10x/workflows/*.json artifact if one exists for the current conversation.Intent Readiness Gate (MANDATORY before PLAN or BUILD): Before dispatching to planner or builder, verify the intent contract meets three conditions:
pending_gate="intent_contradiction".Router-owned interface fields:
plan_mode: direct | execution_plan | decision_rfcverification_rigor: standard | critical_path; the router sets it at workflow preparation: standard when no plan exists (direct BUILD, DEBUG, REVIEW, QA, and PLAN before the planner returns), and from the planner contract once a plan existscheckpoint_type: none | human_verify | decision | human_actionproof_status: passed | gaps_found | human_neededreferences/build-workflow.md and apply its ### BUILD preparation and ### BUILD task graph blocks.references/debug-workflow.md and apply its ### DEBUG preparation and ### DEBUG task graph blocks.references/review-workflow.md and apply its ### REVIEW preparation and ### REVIEW task graph blocks.references/qa-workflow.md and apply its ### QA preparation and ### QA task graph blocks; that file is QA's governing design (there is no separate design document).references/triage-workflow.md or references/codebase-health-workflow.md and apply its ### TRIAGE preparation or ### CODEBASE-HEALTH preparation block.references/plan-workflow.md and apply its ### PLAN preparation and ### PLAN task graph blocks.references/remediation-and-research.md before continuing.Use this pattern for every new workflow that has a parent task (BUILD, DEBUG, REVIEW, PLAN, QA). TRIAGE and CODEBASE-HEALTH create no parent task: skip the TaskCreate step and write N/A as the task_id of the start event. Skip that step too when the Task tools are absent. Every other step applies:
TaskCreate():workflow_uuid = "wf-" + UTC timestamp + "-" + 8 hex charsTaskCreate({
subject: "CC10X {WORKFLOW}: {summary}",
description: "wf:{workflow_uuid}\nkind:workflow\norigin:router\nphase:{build|debug|review|plan|qa}\nplan:{plan_file or 'N/A'}\nscope:N/A\nreason:User request\n\nUser request: {request}\nChain: {chain description}",
activeForm: "{workflow active form}"
})Bash(command="mkdir -p .cc10x/workflows && cp \"${CLAUDE_PLUGIN_ROOT}/skills/cc10x-router/references/workflow-artifact.skeleton.json\" .cc10x/workflows/{workflow_uuid}.json")Then Edit the copied file, replacing each placeholder token with the live value (the skeleton carries every required key; undecided fields such as verification_rigor ship as null and the router sets them explicitly later — you only fill these placeholders now):
__WORKFLOW_UUID__ → {workflow_uuid} (appears twice: workflow_uuid and workflow_id)__WORKFLOW_TYPE__ → {WORKFLOW} (BUILD | DEBUG | REVIEW | PLAN | QA | ORIENT | TRIAGE | CODEBASE-HEALTH) — if routing (§5) has not yet determined the workflow type, use pending and update it after §5 resolves. Never hardcode BUILD before routing completes. The artifact may be created before routing (to capture state early), but workflow_type must reflect the actual routed type after §5.__USER_REQUEST__ → the user request (JSON-escape quotes/newlines)__PHASE__ → {build|debug|review|plan|qa|orient|triage|codebase-health}__ISO_TIMESTAMP__ → the current UTC ISO timestamp (appears 3×: status_history[0].ts, created_at, updated_at)Use Edit(replace_all=true) for __WORKFLOW_UUID__ and __ISO_TIMESTAMP__ since each repeats. Then write the event log:
Write(
file_path=".cc10x/workflows/{workflow_uuid}.events.jsonl",
content="{\"ts\":\"{iso_timestamp}\",\"wf\":\"{workflow_uuid}\",\"event\":\"workflow_started\",\"phase\":\"{build|debug|review|plan|qa}\",\"task_id\":\"{parent_task_id}\",\"agent\":\"router\",\"decision\":\"start\",\"reason\":\"User request\"}\n"
)Read-back gate (MANDATORY before any child TaskCreate): Read(".cc10x/workflows/{workflow_uuid}.json") and confirm (a) it parses as JSON, (b) workflow_uuid equals the generated UUID, and (c) no __PLACEHOLDER__ tokens remain. If any check fails, fix the file and re-read before proceeding. The PostToolUse artifact guard also validates this write in block mode and will flag a malformed or key-missing artifact — but the router must not rely on the guard alone; confirm the read-back first.
Only create child tasks after the workflow artifact exists and the read-back passes.
references/build-workflow.md and apply its ### BUILD task graph block verbatim, including its multi-phase exception (Memory Update is created once, with the LAST phase's graph), before creating BUILD child tasks.references/debug-workflow.md and apply its ### DEBUG task graph block verbatim before creating DEBUG child tasks.references/review-workflow.md and apply its ### REVIEW task graph block verbatim before creating REVIEW child tasks.references/plan-workflow.md and apply its ### PLAN task graph block verbatim before creating PLAN child tasks.references/qa-workflow.md and apply its ### QA task graph block verbatim before creating QA child tasks.### TRIAGE task graph block of references/triage-workflow.md or the ### CODEBASE-HEALTH task graph block of references/codebase-health-workflow.md verbatim (single-pass: the agent task now, the router-inline Memory Update only at the terminal state; no parent task).[DEBUG-RESET: wf:{workflow_uuid}][QA-START: wf:{workflow_uuid}]| Task Phase / Kind | Agent |
|---|---|
build-implement | cc10x:component-builder |
debug-investigate | cc10x:bug-investigator |
build-review, debug-review, review-audit, re-review | cc10x:code-reviewer |
build-hunt, re-hunt | cc10x:failure-hunter |
build-verify, debug-verify, re-verify | cc10x:integration-verifier |
plan-create, re-plan | cc10x:planner |
plan-review-gap-1, plan-review-gap-2 | cc10x:plan-gap-reviewer (REVIEW_MODE: fresh — never sees the prior findings; each pass counts against the maximum of 2) |
plan-review-amendment | cc10x:plan-gap-reviewer (REVIEW_MODE: amendment — diff-scoped, uncapped, does not count against the fresh-pass cap; returns no closure) |
qa-research | cc10x:qa-researcher |
qa-plan | cc10x:planner (with cc10x:qa-strategy in SKILL_HINTS) |
qa-plan-review | cc10x:plan-gap-reviewer (coverage lens = a scaffold Read of skills/qa-strategy/SKILL.md; the reviewer loads no skills and has no Skill tool, so the discipline is named as a file to Read, never a SKILL_HINTS entry) |
qa-re-plan | cc10x:planner (with cc10x:qa-strategy in SKILL_HINTS) — amends the saved artifacts after pass-1 findings; must report AMENDED_FILES / STALE_SWEEP / RECONCILIATION_RERUN |
qa-plan-review-2 | cc10x:plan-gap-reviewer (same scaffold Read of the coverage lens) — runs only after qa-re-plan, and is MANDATORY when the workflow stops at the plan phase |
qa-preflight | cc10x:qa-harness-builder (MODE: preflight — measures the environment, classifies every failure missing-input/wrong-guess/defect, and never boots a service) |
qa-build, re-qa-build | cc10x:qa-harness-builder (MODE: harness) |
qa-review | cc10x:code-reviewer |
qa-hunt | cc10x:failure-hunter |
qa-execute, re-qa-execute | cc10x:qa-executor |
research-web | cc10x:researcher |
research-github | cc10x:researcher |
triage | cc10x:triage-agent |
codebase-health | cc10x:architecture-scanner |
kind:remfix created in a DEBUG workflow (any origin:; wins over the origin rows below), or kind:remfix + origin:bug-investigator | cc10x:bug-investigator |
build-doc-sync | cc10x:doc-syncer |
kind:remfix + origin:code-reviewer / origin:failure-hunter / origin:integration-verifier / origin:router | cc10x:component-builder |
The Agent tool accepts a per-invocation model that outranks frontmatter, but the router passes none: model selection stays in agent frontmatter. Two live rules: (1) never edit a gating agent's (code-reviewer, integration-verifier, plan-gap-reviewer) frontmatter below mid-tier — the cheapest tier rubber-stamps; (2) never downgrade a gating role to save tokens, including under JUST_GO.
ADVISORY — for humans tuning frontmatter; the router does not act on this table at dispatch time. Tiers are abstract: cheap (small/fast), standard (mid), capable (frontier).
| Role / phase | Recommended tier | Why |
|---|---|---|
component-builder on trivial scope, transcription/mechanical builds (rote wiring, single-change, codegen-from-spec) | cheap | Mechanical execution against an explicit spec; little judgment. |
doc-syncer | cheap | Mechanical diff-driven doc edits. |
component-builder on multi-file / cross-module integration | standard | Real wiring decisions across files; needs coherence. |
code-reviewer | standard (FLOOR) | Judgment under adversarial intent; see reviewer floor below. |
bug-investigator | standard | Hypothesis search; escalate to capable on a stubborn root cause. |
planner, plan-gap-reviewer | capable | Architecture and decomposition; cheap planning poisons the whole chain. |
integration-verifier (final phase, REVERT authority) | capable | Last line before "done"; must not miss scenario gaps. |
researcher, qa-researcher | standard | Retrieval + synthesis. |
qa-harness-builder | standard | Real wiring across services and environments; needs coherence. |
qa-harness-builder (MODE: preflight) | standard | Measurement, not design — but it must never round a BLOCKED up to a PASS, so not cheap. Guidance only: the agent ships one model: for both modes and the router passes no per-dispatch model (see the note below), so no tier is actually applied here. |
qa-executor (produces the QA verdict) | capable | Last line before "the feature works"; must not round BLOCKED up to PASS. |
cc10x ships model: haiku on doc-syncer (safely mechanical) and model: inherit everywhere else so the user's session model choice is respected. Never claim a tier was applied that frontmatter did not set.
Reviewer floor, restated for the amendment lane (a restatement, not a relaxation): the amendment lane (REVIEW_MODE: amendment) reads less text than a fresh pass, but it is scope-cheap, never tier-cheap — a narrower brief is not a licence for a cheaper model, and it gets no exemption from rule (1) above or from the capable row for plan-gap-reviewer.
## Task Context
- Task ID: {task_id}
- Parent Workflow ID: {workflow_uuid}
- Task Phase: {phase}
- Plan File: {plan_file or 'None'}
- Workflow Scope: wf:{workflow_uuid}
- Workflow Artifact: .cc10x/workflows/{workflow_uuid}.json
## User Request
{request}
## Requirements
{clarified requirements or 'See plan/design files'}
## Memory Summary
{brief activeContext summary}
## Project Patterns
{User Standards + Common Gotchas, trimmed if needed}
## Domain Context
{If UBIQUITOUS_LANGUAGE.md, DOMAIN_GLOSSARY.md, docs/domain/*.md, or project-context.md exist, include content. Otherwise omit section.}
## SKILL_HINTS
{router-detected skill list or "None"}Artifact-only mode (Task tools absent): pass - Task ID: N/A and add the line Task tools are absent: skip TaskUpdate; the router records completion under ## Task Context; no agent holds TaskUpdate, so the line only keeps the dispatch text explicit.
Anti-anchoring exception: for adversarial read-only dispatches (code-reviewer, plan-gap-reviewer) OMIT ## Memory Summary — it carries the implementer's own narrative (decisions, learnings) and anchors the auditor. Keep ## Project Patterns (user standards and gotchas are neutral law, not author narrative). Approved decisions the reviewer genuinely needs travel via ## Pre-Answered Requirements / ## Intent Contract, never via the memory summary.
Optional sections:
## Pre-Answered Requirements for BUILD when router already gathered decisions.## Intent Contract when a plan or design already defined goal, constraints, acceptance criteria, and named scenarios.## Research Files only when at least one research file exists.## Research Quality only when at least one research result exists.## Design File only for planner.## Planning Review Findings only for re-plan.## Original User Request only for plan-gap-reviewer.## Approved Context Files only for plan-gap-reviewer.## Previous Agent Findings only for integration-verifier and only after a review phase ran.## QA Bug Context only for bug-investigator, and only when this DEBUG was seeded from a QA BUG_CANDIDATE. Built per references/qa-workflow.md §4; its anti-anchoring rule (§5) is mandatory — suspected_service travels only with suspicion_basis and only labelled as a hint, or the suspicion block is omitted entirely.code-reviewer, failure-hunter, or plan-gap-reviewer, grep the drafted prompt against the SELF-CHECK BLOCKLIST in references/workflow-artifact-and-hook-policy.md §Dispatch-Prompt Construction Rules; any hit → rewrite it out before dispatch. A hit means you are pre-judging the reviewer's verdict before they have seen the code. The router knows the plan, the intent contract, and the approved decisions — that knowledge can unknowingly inject bias ("the plan chose approach X, so don't flag Y"). Reviewers must form their own opinion from the diff. State approved decisions as neutral facts ("approach X was approved for reason Z"), never as instructions to suppress findings.Frontmatter skills: preloads carry each agent's role-core skills; everything else reaches an agent only through SKILL_HINTS, and the router is the only authority that adds situational skills. The router never passes a skill the agent already preloads.
Agents may not self-activate frontend or architecture.
Include cc10x:frontend only when the request, changed files, plan, or design targets UI/frontend work. The skill has two modes: authoring (build UI with patterns) and critique (score built UI). Router selects mode via dispatch context.
Include cc10x:architecture only for multi-component, API, schema, auth, or integration-heavy work.
Include cc10x:research only when planner or investigator receives ## Research Files.
cc10x:exploration is not a SKILL_HINTS entry: no dispatched agent loads it. The router runs it inline (see Inline exploration handoff) only on an explicit de-risk/spike intent ("spike", "try out", "what should this look like", "prototype", "throwaway") or in PLAN — never as the default for a real build. The skill has two modes: design (brainstorm a design) and spike (throwaway prototype). Absorbing a spike's answer is a fresh gated BUILD, not promotion.
Include cc10x:codebase-hygiene only when (a) the code-reviewer is asked for a reuse/consolidation audit or the request targets semantic duplication, OR (b) the request targets retrofitting/deepening shallow modules in EXISTING code (not greenfield architecture, which stays cc10x:architecture). The skill has two modes: duplicate detection and module deepening.
Include cc10x:qa-strategy only on QA-route dispatches whose agent loads skills (qa-researcher, qa-plan, qa-re-plan, qa-preflight, qa-harness-builder, qa-executor). qa-plan-review and qa-plan-review-2 dispatch plan-gap-reviewer, which loads no skills and has no Skill tool — a SKILL_HINTS entry cannot reach it, so there the coverage lens is a scaffold Read of skills/qa-strategy/SKILL.md, named in the dispatch itself (§7). It is the test-system design discipline — tier selection, scenario matrices, environment topology, flake sources. Do NOT inject it into BUILD's component-builder: BUILD's inner TDD is governed by cc10x:building, and mixing the two blurs "write a failing test for the code I am writing" with "design a test system for code that exists."
Include cc10x:mcp-cli only when a researcher needs a one-off MCP capability that is not already mounted.
Include cc10x:code-review only when a human/external reviewer's feedback (pasted PR comments, review notes, "can you change X") must be acted on — it governs verify-before-agreeing in the MAIN session, not the internal reviewer→router→fix loop.
Include cc10x:memory-and-handoff only when work is being handed to a coworker, a different tool, or a fresh non-cc10x session.
Include project/domain skills only from patterns.md ## Project SKILL_HINTS.
Skill precedence is strict:
CLAUDE.md / repo standards / user standardsWhen invoking integration-verifier, build and pass the ## Previous Agent Findings section per the Verifier findings handoff law in §12 — read results.reviewer and results.hunter from the workflow artifact and use the exact template defined there (single source). DEBUG skips the hunter.
TaskGet() / TaskList(), if Claude Code exposes task duration metrics, persist them into:telemetry.workflow_wall_clock_secondstelemetry.agent_wall_clock_seconds.{agent}task_metrics_available="unknown" and continue. Missing telemetry is never a reason to advance or block a workflow.integration-verifier reports a ### Timing & Workload section, persist:telemetry.verifier.phase_exit_proof_runstelemetry.verifier.extended_audit_runstelemetry.verifier.workload_secondsOne rule, the same one references/workflow-artifact-and-hook-policy.md §contracts states: the STATUS in the fenced YAML Router Contract block decides. The line-1 envelope CONTRACT {"s":"...","b":...,"cr":...} and the line-2 heading are fast-path signals, and the fallback verdict signal only when the YAML block is absent; if they disagree with the YAML, the YAML decides.
Fallback headings on line 2: ## Review: Approve|Changes Requested, ## Verification: PASS|FAIL, ## Planning Review: Pass|Findings, ## QA Research: PASS|FAIL, ## QA Harness: PASS|FAIL|BLOCKED, ## QA Execution: PASS|FAIL|BLOCKED.
Finding the YAML block: take the fenced yaml block that follows the ### Router Contract (MACHINE-READABLE) heading when that heading exists (qa-researcher has it); otherwise take the first fenced yaml block after the envelope and heading (code-reviewer, failure-hunter, integration-verifier, plan-gap-reviewer, triage-agent and architecture-scanner carry no such heading). plan-gap-reviewer emits PLANNING_REVIEW_STATUS: PASS|FINDINGS as its status field, not STATUS.
Verdict extraction:
STATUS (PLANNING_REVIEW_STATUS for plan-gap-reviewer).CRITICAL_ISSUES from ### Critical Issues.failure_stop_gate instead (see their workflow references; no Memory Update).SELF_REMEDIATED from task state:in_progress and blockedBy is non-empty after the agent stops, treat it as self-remediated. This is blockedBy based, so it cannot fire in artifact-only mode; there the structured remediation fields decide.SCENARIOS_TOTALSCENARIOS_PASSEDSCENARIOS_FAILEDExpected or Actual evidence.Read-only structured intent fields:
REMEDIATION_NEEDED: true|falseREMEDIATION_REASON: ...REMEDIATION_SCOPE_REQUESTED: N/A|CRITICAL_ONLY|ALL_ISSUESREVERT_RECOMMENDED: true|falsePLANNING_REVIEW_STATUS: PASS|FINDINGSBLOCKING_FINDINGS_COUNT: [number]REPLAN_NEEDED: true|falseREPLAN_REASON: ...Compatibility rule:
For write agents, parse the fenced YAML block that follows the ### Router Contract (MACHINE-READABLE) heading.
Before post-agent validation, read references/workflow-artifact-and-hook-policy.md §contracts for the per-agent required-field table and the contract-override pass conditions.
If the YAML block is missing or malformed:
After Skill(skill="cc10x:exploration"), parse the fenced YAML block under
### Brainstorming Handoff (MACHINE-READABLE).
Required field:
DESIGN_FILEIf present:
design_file## Design FileactiveContext.md to be updated firstSTATUS/verdict as a pass, read references/workflow-artifact-and-hook-policy.md §contracts and apply the per-agent contract-override pass conditions verbatim (the STATUS=PASS/FIXED/APPROVE/PLAN_CREATED/COMPLETE gates, plus the reviewer rubber-stamp fallback).Convergence rule:
quality.convergence_state to needs_iteration and stop on the appropriate remediation or clarification gate instead of treating the task as good enough.references/remediation-and-research.md.## 9. Remediation And Workflow Rules block there as canonical router law.references/remediation-and-research.md and apply its ## 10. Research Orchestration, ## Research Quality, and ## Research Files blocks.references/remediation-and-research.md and apply its ## 11. Re-Review Loop block whenever a kind:remfix task completes.phase:re-qa-build does NOT enter that loop: no integration-verifier re-verify and no re-review/re-hunt. QA re-enters with a fresh qa-review/qa-hunt pair on the rebuilt harness, and its proof-of-exercise is MUTATION_CHECKS/RERUN_CLEAN/TEARDOWN_VERIFIED, not the loop's COVERING_TESTS/TEST_COMMAND/TEST_OUTPUT — which qa-harness-builder does not emit, so the precondition gate would fail closed on a correct QA remfix. Rules and rationale: references/qa-workflow.md, Harness review.The harness is a loop engine. These concepts govern how the loop runs:
| Concept | Meaning |
|---|---|
| Trigger | The event that starts or resumes a loop iteration — user request, agent completion, checkpoint resolution. Every loop iteration has exactly one trigger. |
| Checkpoint | A point where the loop pauses for human input. Only on irreversible actions, real scope changes, or input only the user can provide. Checkpoints are NOT for narration or "want me to continue?" prompts. |
| Push right | Defer checkpoints as far as possible — do maximal work before involving the human. The loop should never stop on a promise or plan when it could act. If the next step is reversible and follows from the original request, proceed without asking. |
| Brief | The decision-ready summary the loop produces when pausing. Not raw output, not a diary — the one thing the human needs to decide next. Outcome first, supporting detail second. |
| Cycle | One complete plan → build → verify → learn iteration. The circuit breaker pauses the loop for a human checkpoint before a 4th remediation cycle is created (single definition: references/remediation-and-research.md); cycles beyond 3 run only on explicit user go-ahead. |
| Convergence | The loop's quality signal — when quality.convergence_state transitions from needs_iteration to converged, the loop is complete. Never declare convergence on prose alone. |
Autonomous mode: When the user sets a goal that spans multiple iterations (e.g., /goal or explicit "do this end-to-end"), the loop runs without checkpointing for reversible actions. The user is not watching in real time and cannot answer questions mid-task. Before ending a turn, check the last paragraph — if it is a plan, analysis, question, list of next steps, or a promise about work not yet done, do that work now with tool calls. End the turn only when the task is complete or blocked on input only the user can provide.
1. TaskList() (no Task tools: derive the runnable steps from the artifact, §4)
2. Select tasks in the active `wf:` where:
- status is pending or in_progress
- blockedBy is empty or all blockers are completed
3. If the runnable task kind is memory:
- execute inline in the main context
- set `phase_cursor="memory-finalize"` in the workflow artifact BEFORE any other memory-side write, and on completion append a `memory_finalized` entry to the artifact's `status_history`. This is what disengages the QA isolation guard when the workflow ends: the guard keys on the newest artifact and treats `phase_cursor` in `{memory-finalize}` or a last `status_history` event in `{memory_finalized, workflow_completed, workflow_failed}` as terminal. A QA workflow whose cursor is left on a plan phase keeps the guard engaged after the work is over, locking all later sessions — cc10x or not — out of Write, Edit, and mutating Bash, including the router's own next-workflow bootstrap
- persist workflow artifact results + Memory Notes from the artifact `memory_notes` and the task description (§13), and set `pending_gate` to null
- set `quality.convergence_state=converged` when the workflow's final gate has passed (BUILD and QA: the final phase's `phase_exit_gate`; every other route: its last gate) and memory is finalized; the advisory routes (TRIAGE, CODEBASE-HEALTH) carry `N/A`, set before the first agent dispatch
- append `memory_finalized` to `.cc10x/workflows/{wf}.events.jsonl`
- clean up the matching [cc10x-internal] memory_task_id entry
- mark the memory task completed
- mark the parent workflow task completed
- continue
4. Otherwise, map each runnable task through the dispatcher table.
5. Mark each task in_progress before invoking its agent. If `code-reviewer` and `failure-hunter` are both ready in BUILD: mark both in_progress first, invoke them in the same message. They are read-only and safe to parallelize.
- If parallel invocation fails or is unavailable (API error, rate limit, agent not found): fall back to sequential execution — dispatch `code-reviewer` first, wait for it to complete, then dispatch `failure-hunter`. Do NOT substitute the hunter with a different agent (e.g., bug-investigator). Do NOT skip the hunter. The hunter is a read-only agent with a specific adversarial posture — no other agent can replace it. Never block a workflow because parallelism is unavailable. Log `event=parallel_fallback` in the workflow event log.
6. After each agent returns:
- capture memory payload immediately
- validate output
- persist task-state side effects
- if BUILD review and hunt are both complete for the current phase, write one router-owned merged findings summary into the existing workflow results before verifier handoff
- apply workflow rules
- for BUILD and QA, run `phase_exit_gate`; if the current phase is not complete, persist `phase_status={partial|blocked}` and stop, except that a valid dispute-only REM-FIX return persists `partial` and proceeds to the Re-Review loop (`references/remediation-and-research.md`, Re-review precondition gate)
- never advance to the next phase or workflow step on apology prose alone
- if two agents in the same phase return contradictory verdicts (e.g., reviewer approves but verifier fails on the same evidence), treat the blocking verdict as authoritative (FAIL over PASS, CHANGES_REQUESTED over APPROVE), except that a re-raised finding whose dispute the verifier upheld is dropped per the Re-review precondition gate, and one whose dispute is still in flight continues to the verifier under the same gate; never average or reconcile the signals. Log the contradiction in `status_history`.
- **Cross-reviewer agreement promotion:** if `code-reviewer` and `failure-hunter` independently flag the SAME finding (same file:line, same defect, raised from different passes), that is stronger signal than either alone — promote the merged finding's confidence by one tier (80→90, or mark it `cross-confirmed` in the merged findings summary). Agreement between two mutually-blind reviewers is independent confirmation; use it. Promotion never overrides the quote-the-line gate — a finding without a verbatim `file:line` quote cannot be promoted, only demoted.
- doc-syncer `STATUS=SKIPPED` is a passing state; advance to Memory Update immediately
- doc-syncer STATUS=PARTIAL: soft pass; advance to Memory Update; persist doc_sync_partial=true in workflow artifact results.doc_syncer for user review
7. Repeat until all tasks in the active `wf:` are completed.Artifact-only graph mode: read "task" in this loop as a graph step recorded in the artifact. Blockers are the ordering rules of the route's references/*-workflow.md graph, evaluated with the events-log completion rule of §4 (never from a bare results.* slot); "mark in_progress/completed" is an artifact write plus an event-log entry instead of a TaskUpdate; a REM-FIX is a recorded step with the same metadata fields, dispatched through the Agent tool to the executing agent the dispatch table names (component-builder, or bug-investigator in a DEBUG workflow or for origin:bug-investigator), and its remediation_history entry comes with a remediation_created event. Record the mode once in status_history.
Claude Code may run a dispatched agent in the background and deliver its result as a notification, and in auto mode an agent's report can arrive through SubagentHandback instead of its final message. Do not assume the final message is the report: read the contract from whichever channel carries it, and if none does, take the missing-contract path in §8.
Capture memory payload FIRST — before the pre-check, validation, or any task-state mutation (compaction can fire between agent return and parse; an uncaptured payload is lost).
### Memory Notes (For Workflow-Final Persistence) immediately after return.MEMORY_NOTES from YAML immediately after return.memory_notes at once, always, even when no memory task exists (an advisory pause has none).Pre-check before processing agent output:
TaskGet({ taskId }) or TaskList() to verify final task state (skip when the task tools are absent; the artifact is the record).
WRITE agents:
TaskUpdate or is told to call it. The router completes the task with TaskUpdate(status="completed") after the contract validates.READ-ONLY agents:
TaskUpdate(status="completed").Memory payload was already captured in step 0:
memory_notes, and to the memory task description when one exists (the artifact write is the one step 0 made; never twice).MEMORY_NOTES go the same way; append deferred or supplemental payload needed by the memory task.Update .cc10x/workflows/{workflow_uuid}.json with:
phase_exit_gate passesstatus_history entries when decisions change workflow state, and exactly one remediation_history entry per remediation round (see ### Circuit breaker)updated_at timestamp MUST be set to the current ISO timestamp — a stale updated_at breaks resume logic and triggers the TaskCompleted guard's stale-artifact warning.
READ-BACK GATE (MANDATORY): After writing the artifact, Read it back and confirm:updated_at is set to a timestamp from THIS turn (not a prior turn)results.{agent_name} exists and contains the agent's contract fieldsAppend event log entry: For each result persisted to the artifact in step 6, append a matching entry to .cc10x/workflows/{wf}.events.jsonl. Append mechanism: the Write tool overwrites whole files — NEVER Write only the new line. Either Read the current .events.jsonl and Write it back with the new line added at the end, or use a Bash append (printf '%s\n' '{...}' >> .cc10x/workflows/{wf}.events.jsonl). Entry shape:
{"ts":"<ISO>","wf":"<wf_id>","event":"result_persisted","phase":"<phase>","task_id":"<task_id>","agent":"<agent_name>","decision":"<contract_status>","reason":"<one-line summary>","details":{"phase_id":"<phase_cursor>"}}phase is the task phase (e.g. build-review); details.phase_id is the phase_cursor value, written as the literal N/A when phase_cursor is null (routes without phases, a BUILD with no plan phases); decision is the contract status, written NEEDS_GRILLING when a TRIAGED result sets NEEDS_GRILLING=true. The event log MUST stay in sync with the artifact. A mutation without an event log entry is a desync that breaks the audit trail. (The PostToolUse guard auto-appends a fallback artifact_mutated event, but the router MUST write the semantic result_persisted entry with agent-specific metadata.)
Persist [cc10x-internal] memory_task_id: {memory_task_id} wf:{workflow_uuid} only if it matches the active workflow.
Before invoking integration-verifier in BUILD:
Read results.reviewer and results.hunter from the workflow artifact.
Build ## Previous Agent Findings exactly in the format verifier expects:
## Previous Agent Findings
### Code Reviewer
**Verdict:** {Approve|Changes Requested}
**Critical Issues:**
{reviewer critical issues or "None"}
### Failure Hunter
**Critical Issues:**
{hunter critical issues or "None / not in this workflow"}Never invoke verifier without that section when review/hunt already ran. On a re-verify after a REM-FIX, add a ### REM-FIX report sub-block that references the persisted REM-FIX report (results.builder, or results.investigator when bug-investigator executed the REM-FIX) and its proof and dispute fields, per the Re-review precondition gate in references/remediation-and-research.md.
Post-verifier finding validation (act on hallucinated findings): after the verifier returns, read its ### Reviewer Finding Validation section. For any finding the verifier marked validated: false, DROP that finding from the merged findings set before creating a REM-FIX task — a hallucinated critical finding must not gate the phase or waste a builder cycle. Log the dropped finding in status_history (finding_dropped: hallucinated — verifier could not confirm quote at file:line). For validated: degraded CRITICAL/HIGH findings, KEEP them in the blocking set (fail-safe — a transient access failure must never silently remove a critical finding). This gate runs BEFORE the REM-FIX scope decision in §remediation-and-research, so CRITICAL_ONLY / ALL_ISSUES scope is computed over validated findings only.
The default execution model is per-phase subagent dispatch: every phase runs in a fresh-context agent via the dispatcher (§7), and that remains the default whenever the Agent primitive is available AND the work is separable. The fallback below is a bounded degrade mode, NOT a shortcut to reach for when dispatch feels heavy. Prefer subagents. Only enter inline mode on one of the two triggers, and record which one in status_history.
Enter inline mode when EITHER trigger holds:
Agent(...) dispatch path). Without it the router cannot spawn phase agents at all; rather than be inoperative, it executes the plan itself. Absent TaskCreate/TaskList alone is not this trigger: it selects ARTIFACT-ONLY GRAPH MODE (§4), which still dispatches agents.What changes vs. default: the ROUTER executes each phase's work inline, in the main session, instead of spawning the phase agent. Walk the same task graph in the same order the dispatcher would. Lose the subagent isolation — KEEP every gate.
What does NOT change (the gates stay fail-closed):
phase_exit_gate at each phase boundary exactly as in the default loop step 6 — if the phase is not complete, persist phase_status={partial|blocked} and stop. No phase advances on prose.results.baseline and the per-phase results the spawned agent would have written. The artifact remains the source of truth; do not rely on conversation narrative.integration-verifier: where the graph carries a reviewer and a hunter, the pass first performs a reviewer pass and a hunter pass (quote-the-line findings in results.reviewer and results.hunter); inline mode does not skip them. The router then applies the integration-verifier's checks (run the scenarios, capture Expected/Actual evidence per scenario, reconcile SCENARIOS_TOTAL/PASSED/FAILED, and honor the REVERT authority) and writes the same scenario-accounting into the artifact that §8 post-agent validation would parse. The point is to lose the subagent, not the verification — incomplete or contradictory evidence still sets quality.convergence_state=needs_iteration and stops on the remediation gate.### Circuit breaker in references/remediation-and-research.md; inline mode appends remediation_history entries too) without a human checkpoint, fail closed on ambiguity or skipped work.The cost — be disciplined about it: inline mode forfeits fresh-context isolation. The router now carries the build, review, and verify context in one session, so context can bleed across phases (the very pollution subagents prevent). Counter it: between phases, re-ground from the workflow artifact rather than from earlier turns; include only the current-phase objective and live evidence when reasoning about a phase; treat completed-phase narrative as stale. If the session context grows large enough to threaten this discipline, prefer returning to subagent dispatch over pushing further inline.
Mode bookkeeping: persist execution_mode="inline_fallback" and inline_fallback_reason={primitive_unavailable|tightly_coupled} in the workflow artifact, and log an event=inline_fallback_entered entry in .cc10x/workflows/{wf}.events.jsonl. If the primitive becomes available again and the remaining work is separable, the router MAY resume default subagent dispatch for later phases; log event=inline_fallback_exited.
The memory task executes inline only. Never spawn it as a sub-agent.
The memory task:
memory_notes plus any task description payload (deduplicated). Leave memory_notes untouched until every persistence write has succeeded.activeContext.md ## Learningspatterns.md ## Common Gotchasprogress.md ## Verification[Deferred]: ... under patterns.md ## Common Gotchas.progress.md ## Tasks with the active workflow snapshot.progress.md ## Completed.[cc10x-internal] memory_task_id line from activeContext.md ## References.activeContext.md for this wf: reached 3+ [DEBUG-N]: entries before resolving, OR (b) the reviewer/hunter blast-radius scan touched 3+ files with the same defect pattern, OR (c) the winning fix contradicts a documented assumption in patterns.md. If any condition is true, write docs/solutions/{category}/{slug}.md using the format in cc10x:memory-and-handoff (Problem / What Didn't Work / Solution / Why / Prevention), then reference it from activeContext.md ## Learnings. If none apply, skip — do not create a solution doc for mechanical fixes.For PLAN:
- Plan: {plan_file} remains correct in activeContext.md ## References.- Design: {design_file} remains correct in activeContext.md ## References when a design exists.Plan saved: {plan_file} in activeContext.md ## Recent Changes.activeContext.md ## Next Steps to 1. Execute plan: {plan_file} unless the workflow ended in clarification-needed state.For DEBUG:
[DEBUG-RESET: wf:{workflow_uuid}] section in ## Recent Changes and summarize the final result beneath it.wf:, kind:, origin:, phase:, or scope: can answer the question.CC10X TODO: tasks. Non-blocking discoveries go into **Deferred:** memory notes.bug-investigator still owns its Feedback Loop Gate — a pre-built repro loop satisfies that gate only after the investigator personally observes it turn red. A seeded loop that no longer reproduces sends the investigator back to rung 1, never forward on trust. [EASY TO MISS: a stale QA report will happily send a debugger hunting a bug that was already fixed.]qa-plan/qa-re-plan — it holds Edit/Write/Bash like the rest. QA proves behavior; DEBUG repairs it. A route that can fix what it measures cannot be believed about what it measured. QA reports BUG_CANDIDATES and may OFFER a DEBUG follow-up — it never auto-starts one.qa-executor edit test or harness code to turn a red run green. A harness defect routes to re-qa-build; a product defect routes to a DEBUG offer. [EASY TO MISS: this is the QA route's most damaging failure mode — it silently destroys the only thing QA produces, which is a trustworthy answer.]>= 3 circuit breaker in references/remediation-and-research.md is the single definition).DIFF_DRIVEN_DOCS: skip in Session Settings disables doc-syncer for projects that manage documentation separately; when present, skip build-doc-sync task creation and block Memory Update on verifier_task_id directly.[cc10x-internal] markers, status_history, other agents' results.* entries). The workflow artifact itself is dispatch-readable BY REFERENCE: an agent may read the artifact path handed to it in the scaffold, but only the sections its dispatch names (intent, normalized_phases, its own phase's results/evidence/baseline) — cross-agent orchestration knowledge still flows exclusively through router-mediated scaffolds. Reading a shared pattern/reference doc for domain guidance is fine; inheriting another agent's live state is not.plan_file and run the fresh-review gate over it rather than rejecting it outright.keep as-is option. Both offers are skipped for build_scope=trivial. See references/build-workflow.md ### BUILD-DONE finishing (optional) for the canonical wording.phase_exit_gate, the TDD/verifier chain, the complexity gradient's trivial→full escalation, or any governing workflow. Terseness lowers ceremony, never rigor. Treat "just"/"quickly"/"simply" as urgency cues, not as permission to skip routing or gates. Only an explicit user opt-out ("don't use cc10x", "without cc10x", "skip cc10x") skips the router's gates; a small edit still routes as BUILD trivial scope.references/build-workflow.md, references/debug-workflow.md, references/review-workflow.md, references/plan-workflow.md, references/qa-workflow.md, references/triage-workflow.md, references/codebase-health-workflow.md) tells you HOW to ask and what readiness it needs; do not freelance clarifying questions or broad exploration ahead of loading it.Optional, cost-bearing capabilities (worktree isolation, research accelerators / web+github researchers, the BUILD-DONE finishing menu) are offered under restraint:
© romiluz13, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 14 other files (references) in plugins/cc10x/skills/cc10x-router of romiluz13/cc10x.
Open the folder on GitHubat commit f346ebe
Cc10x Router next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Cc10x Router this skillromiluz13/cc10x | 164 | — | ~20k | Automated safety check: Pass | MIT | |
| BrainstormingJetBrains/thinkrail | 513 | — | ~913 | Automated safety check: Pass | Apache-2.0 | |
| Ideation Firstccplugins/awesome-claude-code-plugins | 968 | — | ~926 | Automated safety check: Pass | Apache-2.0 | |
| Improvefossasia/eventyay-interpretation | 1.6k | 10 repos | ~3.7k | Automated safety check: Warn | MIT | |
| Odoo Workflowunclecatvn/agent-skills | 143 | — | ~4.7k | Automated safety check: Pass | MIT | |
| Context Modes0xNyk/lacp | 305 | — | ~313 | Automated safety check: Pass | MIT |
JetBrains/thinkrail
Use before implementation when a request requires choosing product scope, user-visible behavior, or architecture.
ccplugins/awesome-claude-code-plugins
Use before planning a new feature or greenfield refactor whose requirements aren't yet pinned down — clarifies intent through a few questions and ends with a short scope brief the planner can build…
fossasia/eventyay-interpretation
Survey any codebase as a senior advisor and produce prioritized, self-contained implementation plans for OTHER models/agents to execute.
unclecatvn/agent-skills
Mandatory pre-code gate and definition-of-done for ANY Odoo change (add field, override method, inherit view/xpath, OWL/JS patch, wizard, cron, controller, report, security, migration, bug fix…
0xNyk/lacp
Structured work modes for agent sessions. An agent skill from 0xNyk/lacp.
Habitat-Thinking/ai-literacy-superpowers
A skill your agent uses when designing a new plugin component (skill, agent, command, or backing script) for the ai-literacy-superpowers plugin or a sister plugin in this marketplace.
romiluz13/cc10x
A skill your agent uses when writing production code test-first: the RED-GREEN-REFACTOR cycle, false-RED detection, vertical slicing, scope escalation, test process discipline, and code generation…
romiluz13/cc10x
A skill your agent uses when a BUILD phase completes, a commit is staged, or a PR is about to be created, and the diff has not yet been reflected in documentation.
romiluz13/cc10x
A skill your agent uses when writing an execution plan or a decision RFC: task decomposition, context references, validation levels, risk-based testing, ADR format, plan completeness gate, and…
romiluz13/cc10x
A skill your agent uses when judging whether a task reached its goal, not just finished: the gate function, self-critique gate, validation levels, evidence array protocol, and goal-backward lens.
romiluz13/cc10x
A skill your agent uses when a cc10x agent starts a task: the shared preamble for the memory protocol, the contract format, and the output rules.
romiluz13/cc10x
Answers questions about cc10x itself — what it is, how to install and configure it, how the router, workflows, memory, and hooks operate, and how to troubleshoot.
Categories
Routes build, debug, review, plan, QA, and triage requests through the cc10x workflows (task graphs, workflow artifacts, gates); it is the single entry point for cc10x code work. Cc10x Router is an agent skill from romiluz13/cc10x. Routes build, debug, review, plan, QA, and triage requests through the cc10x workflows (task graphs, workflow artifacts, gates); it is the single entry point for cc10x code work.
Cc10x Router fits situations like: asks to implement; continue code work; keywords: build.
Run `npx skills add romiluz13/cc10x --skill cc10x-router -a claude-code`. Or copy the skill folder (plugins/cc10x/skills/cc10x-router in romiluz13/cc10x) into .claude/skills/cc10x-router in your project. Claude Code loads it when a task matches its description.
Run `npx skills add romiluz13/cc10x --skill cc10x-router -a codex`. Or copy the skill folder (plugins/cc10x/skills/cc10x-router in romiluz13/cc10x) into .agents/skills/cc10x-router in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add romiluz13/cc10x --skill cc10x-router -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/cc10x-router, .gemini/skills/cc10x-router, .github/skills/cc10x-router and .opencode/skills/cc10x-router in your project.
SKILL.md names no scripts, command-line tools or credentials: Cc10x Router is instructions for the agent only.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Cc10x Router is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 20k tokens (SKILL.md is roughly 80k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 55k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Cc10x Router: Brainstorming (JetBrains/thinkrail, 513 stars), Ideation First (ccplugins/awesome-claude-code-plugins, 968 stars), Improve (fossasia/eventyay-interpretation, 1.6k stars) and Odoo Workflow (unclecatvn/agent-skills, 143 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
romiluz13 (a GitHub user) maintains it in romiluz13/cc10x, which has 164 GitHub stars. The repository holds 22 skills in this directory. The repository was last updated on October 7, 2026.
Source: romiluz13/cc10x on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.