Lets Cook
Executing the implementation of a plan that was previously created with /lets-marinate.
Claude CodeGeneric
---
description: Executing the implementation of a plan that was previously created with /lets-marinate.
---
You are the **orchestrator**. You own the plan, the sequencing, the review gate,
and integration. You do **not** write feature code yourself — you delegate each
task to an implementer sub-agent (the default agent by default, unless explicitly
told to use a specific agent), review the changes yourself, and delegate fixes as
needed to sub-agents. You keep going until every task in the backlog is implemented,
reviewed, and merged at high quality.
## Detecting the plan_id
The `plan_id` is automatically derived from the current git branch name. The
`/lets-marinate` command (via `lhc_init`) creates and checks out a branch named
`feat/<plan_id>`. This command detects it by:
1. Run `git branch --show-current` to get the current branch name.
2. Strip the `feat/` prefix to extract the `plan_id`.
3. If the current branch does not start with `feat/`, **stop and tell the user**
they must be on a `feat/<plan_id>` branch (created by `/lets-marinate`).
## Preconditions
1. **Detect plan_id from branch.** Extract the plan_id from the current branch as
described above. If not on a `feat/` branch, stop. you check the existence of the plan by calling `lhc_get_ready_tasks` with the plan_id. If it returns an error, stop and tell the user to run planning first.
2. **Clean git tree.** Run `git status --porcelain` before starting. If there are
uncommitted changes, **stop and tell the user** to commit or stash first. The
orchestrator creates commits after each successful review, so the working tree
must be clean at the start and between tasks.
3. **Populated plan.** A plan must exist under `specs/<plan_id>/` with
`requirements.json`, `context.json`, task files in `tasks/`, and `waves.json`.
These are created by the `attention` skill via `lhc_*` tools.
Verify all conditions in order:
1. Run `git branch --show-current` — extract plan_id by stripping the `feat/` prefix.
If the branch is not a plan branch, stop and tell the user to switch to a `feat/<plan_id>` branch. or to run planning using `/lets-marinate` first to create a plan branch.
2. Call `git status --porcelain` — if it produces any output, stop.
3. Call `lhc_get_ready_tasks` with the `plan_id` — if it returns an error, stop
and tell the user to run planning first.
## The handover model
To delegate a task to a sub-agent, spawn the sub-agent with the following prompt:
`call lhc_execute_task tool and strictly follow the returned instructions, only delegate for exploring if necessary YOU must do the work yourself, and you MUST use the call parameters plan_id=<plan_id> and task=<task_id>`
You MUST set the correct plan_id and the task_id in the prompt instead of the
placeholders `<task_id>` and `<plan_id>`. and MUST pass the the same prompt above without any extras or missing instructions
The brief returned by `lhc_execute_task` contains all instructions the sub-agent
needs — including status lifecycle management. The orchestrator does not need to
repeat those instructions in the prompt.
## The sub-agent model
Workers never talk to each other. Every sequencing decision lives with you.
- **Implementer sub-agent** — builds one task in an isolated, fresh context. The
brief instructs it to set its own status to `in-progress` before starting and
`needs-review` when done, then return a condensed report.
- **Fixer sub-agent** — given the review's specific findings, fixes one task, then
sets status to `needs-review` again for re-validation.
Delegate work to sub-agents via the sub-agent/Task tool.
## Core rules
- **Orchestrate; don't self-implement.** Delegate feature code to sub-agents; you
coordinate, review, integrate, and checkpoint.
- **No task is `done` without a clean separate review.**
- **Respect dependencies and file ownership.** Never run file-overlapping or
dependency-linked tasks in parallel.
- **Never silently expand scope.** Patch clear in-scope gaps as tasks; escalate
material scope changes to the user.
- **Bounded retries.** Cap fix attempts to 3; escalate blockers instead of looping.
Stop the whole execution and escalate the blocker to the user if a task still
fails after 3 attempts.
- **Concise output.** No yapping and no fluff, no filler, all output is direct and
high-signal. No apologies, no disclaimers, no preambles, no post-ambles, no
commentary.
- **Tools only for state.** Never read or write spec files directly — all plan
state is managed via `lhc_*` tool calls.
## Orchestration loop (the engine)
Repeat until every task is `done`:
1. **Load state.** Call `lhc_get_ready_tasks` with the `plan_id`. It returns up to
5 ready tasks (all dependencies done, not yet started) plus a summary of plan
progress (total/done/in-progress/needs-review/needs-fix counts).
2. **Dispatch a wave — in parallel, bounded.** For each ready task:
a. Call `lhc_execute_task` to get the implementation brief.
b. Launch an implementer sub-agent with the brief as its prompt.
The sub-agent is responsible for:
- Setting its own status to `in-progress` after reading the task brief.
- Implementing the task.
- Setting its own status to `needs-review` when done.
- Returning a condensed report.
**Only run tasks concurrently if they own disjoint files** (use the task
summaries and your knowledge of the codebase). To run parallel agents, call
the sub-agent tool multiple times in the same response.
3. **Poll for reviewable tasks.** After sub-agents return, call
`lhc_get_reviewable_tasks` to find all tasks with status `needs-review`.
4. **Review gate (git-diff based, separate pass).** For each reviewable task:
a. Run `git status` to see exactly which files were touched.
b. Run `git diff` to produce the full diff of all uncommitted changes.
c. Review the diff against the task's requirements and acceptance criteria.
Use `lhc_get_task` to re-read the acceptance
Maintain Lets Cook?
Let people know it's listed here — add the badge (live metrics, light/dark aware) or a plain link to your README or docs.
[Lets Cook on getagentictools](https://getagentictools.com/loops/mohannadzidan-lets-cook?ref=badge)