check
CommandUse when a task is implemented (in-review) and must be verified against the CCF spec before /ccf:updatespec marks it done —…
Use only when the user explicitly asks to run the planned backlog, because it merges branches and commits. Executes the todo/in-progress backlog in parallel waves, one worktree-isolated agent per task, merge each wave through the preflight gate and integrate-wave, then run
> /plugin marketplace add naniiluja/ccf> /plugin install ccf@ccf
description: Use only when the user explicitly asks to run the planned backlog, because it merges branches and commits. Executes the todo/in-progress backlog in parallel waves, one worktree-isolated agent per task, merge each wave through the preflight gate and integrate-wave, then run /ccf:check once and /ccf:updatespec. argument-hint: "[optional: task range]" allowed-tools: Read, Edit, Glob, Grep, Task, Skill, AskUserQuestion, TaskCreate, TaskUpdate, TaskList, Bash model: opus
You are running CCF `/ccf:cook`. You are the **wave orchestrator**: once `/ccf:plan` has produced a backlog, you split it into waves of tasks that code proves independent, run every task of a wave at the same time in its own worktree-isolated agent, and merge each wave through a mandatory gate before the next wave starts. You write application code yourself only for a task `plan-waves.mjs --inline` marked `inline` (step 4a0); every other task is written by an agent inside its own worktree and only there.
**Mutually exclusive with `auto-verify.mjs --auto-verify`:** you drive the same verify step that hook drives, so only one of the two may be active. Step 8 has the details.
**Scope boundary:** this rule governs the text you show the user (the wave list, the per-wave result, the stop-and-report message). It does NOT apply to the CCF repo's own source, which stays English per `.claude/rules/components.md` (never translate the repo itself). Marker words, section headings and identifiers stay verbatim in every language, because the verify step parses them.
Read `.claude/plan/PLAN.md` plus the relevant `.claude/plan/task-NNN-*.md` files. `PLAN.md` holds the CURRENT iteration; closed iterations live in `.claude/plan/ARCHIVE.md` and are never eligible. Select the `todo` and `in-progress` tasks; if `$ARGUMENTS` names a task range, restrict to it.
Locate the CCF scripts once with Glob (`**/ccf/scripts/plan-waves.mjs`, and its siblings `plan-lint.mjs`, `worktree-preflight.mjs` and `integrate-wave.mjs` in the same directory), because `${CLAUDE_PLUGIN_ROOT}` is not reliable in a command body.
First run `node "<scripts>/plan-lint.mjs" --tasks <selected ids, comma-separated>` from the project root. It is read-only and prints `findings` plus a `serial` flag. Show every finding. A `hotspot-collision` (two tasks that each edit one shared file such as README, CHANGELOG, `CLAUDE.md` or a lockfile) is the usual reason independent tasks end up as waves of one task each, so the run would never be parallel. When `serial` is `true`, or any finding is a `hotspot-collision`, `no-files` or `dependency-cycle`, ask once with `AskUserQuestion` whether to continue as planned (the waves below then run in that order) or to stop so the shared edits can be moved into one final task with `/ccf:plan`; never choose for the user, because the answer decides whether this run is parallel at all. If `AskUserQuestion` is unavailable, stop and say why. Other finding kinds are shown and do not stop the run.
Then run `node "<scripts>/plan-waves.mjs" --tasks <selected ids, comma-separated>` from the project root. It prints JSON: `waves` (each entry a list of `{ id, title, taskFile, worktree, branch }`), `edges` and `iteration`. Code decides every edge: a declared `Depends on`, a declared file clash after brace and glob expansion, a task with no `Files to touch`, an unparseable path, or two tasks on one hotspot class (lockfile, migration, shared config, `CLAUDE.md`, `.claude/rules/*`). Each of those puts the later task in a later wave, so missing or unreadable data always means "run after", never "run beside".
A plugin for Claude Code that keeps your AI coding assistant disciplined: plan first, keep the project spec fresh, check work against the spec, and run independent tasks in parallel.
Use when a task is implemented (in-review) and must be verified against the CCF spec before /ccf:updatespec marks it done —…
Use only when the user explicitly asks to bootstrap a new project or onboard an existing one into the CCF workflow, because it…
Use when a session ends with code or decisions the spec does not reflect yet, or after /ccf:check passes to mark a task done.…
Implement tasks incrementally — build, test, verify, commit. Add "auto" to run the whole plan in one approved pass.