npx skills add ...
npx skills add neolabhq/context-engineering-kit --skill implement-task
Implement a task step by step with automated LLM-as-Judge verification at the end of each phase
npx skills add neolabhq/context-engineering-kit --skill implement-task
Your job is to implement solution in best quality using task specification and sub-agents. You MUST NOT stop until it is critically necessary or you are done! Avoid asking questions until it is critically necessary! Dispatch one implementation agent per step, then — when every step of an implementation phase is done — launch ONE sdd:code-reviewer for that phase, iterate till issues are fixed, then move to the next phase!
Execute task implementation steps with automated quality verification using a single sdd:code-reviewer agent per implementation phase.
| Term | Meaning |
|---|---|
| Workflow Phase 0-5 | The stages of THIS skill (select task, load, execute, DoD, move, report). |
Implementation phase / Phase N | A milestone in the TASK file's ### Phase Overview. It groups steps, names a Reviewer model, and lists the acceptance criteria due at that milestone. This is the unit of code review. |
| Step | One sub-task file at .specs/sub-tasks/<task-name>/<NN>-<step-slug>.md. This is the unit of implementation dispatch. The step name is that file's basename without .md. |
Parse the following arguments from $ARGUMENTS:
| Argument | Format | Default | Description |
|---|---|---|---|
task-file | Path or filename | Auto-detect | Task file name or path (e.g., add-validation.feature.md) |
--continue | --continue | None | Continue implementation from the last completed step: resolves the implementation phase in progress, completes its outstanding steps, then reviews that phase — see Context Resolution for --continue. |
--refine | --refine | false | Incremental refinement mode - detect changes against git, map them to steps, and re-verify from the implementation phase that owns the earliest affected step. |
--human-in-the-loop | --human-in-the-loop [Phase 1,Phase 3,...] | None | Implementation phases after whose review to pause for human verification. If no phases specified, pauses after every implementation phase. |
--target-quality | --target-quality X.X | 4.0 | Single target threshold value (out of 5.0) applied to every implementation phase review. |
--max-iterations | --max-iterations N | 3 | Maximum fix→re-review cycles per implementation phase. Default is 3 iterations. Set to unlimited for no limit. |
--skip-reviews | --skip-reviews | false | Skip all phase reviews - steps proceed without quality gates. |
--model | opus|sonnet|haiku | Unset | Model for all sub-agents (implementation agents AND sdd:code-reviewer) that overrides every model in the task file; when omitted, step models come from the Parallelization Overview and reviewer models from the Phase Overview. |
--strict | --strict | false | Disable the Iteration Discretion Rule - a phase is marked PASS ONLY when combined_score >= THRESHOLD, otherwise iterate until MAX_ITERATIONS is reached. |
Parse $ARGUMENTS and resolve configuration as follows:
THRESHOLD is the ONLY quality threshold in this workflow. There is no separate standard/critical/lenient value, no comma-separated form, and no threshold anywhere in the task file — the planning agents are forbidden from writing one.
--continueWhen --continue is used, state is resolved by implementation phase, then step:
### Parallelization Overview step table and ### Phase Overview.[DONE].#### Phase N heading carries either marker: [REVIEWED] (its review ran and passed) or [REVIEWED-SKIPPED] (its steps finished and its review was deliberately suppressed by an earlier --skip-reviews run).RESUME_PHASE = the first implementation phase marked neither [REVIEWED] nor [REVIEWED-SKIPPED]. Treating [REVIEWED-SKIPPED] as unfinished would re-run exactly the review the user suppressed.RESUME_STEPS = the steps of RESUME_PHASE that are not [DONE], in dependency order.RESUME_PHASE already has some [DONE] steps but neither marker, and RESUME_STEPS is empty (all steps done, review never ran):
SKIP_REVIEWS is true: launch nothing. Mark the phase [REVIEWED-SKIPPED] and resume at the next implementation phase.sdd:code-reviewer for RESUME_PHASE (passing the 4 inputs documented in Workflow Phase 2) — Model: MODEL_OVERRIDE if set — otherwise that phase's Reviewer model.
[REVIEWED] and resume at the next implementation phase.RESUME_STEPS is non-empty: dispatch those steps first, then review the phase as normal — and SKIP_REVIEWS still suppresses that review, marking the phase [REVIEWED-SKIPPED] instead.in-progress/, todo/, done/)todo/, move to in-progress/ before continuing--refine)When --refine is used, it detects changes to project files (not the task file) and maps them to steps, then re-verifies from the implementation phase that owns the earliest affected step.
Detect Changed Project Files:
First, determine what to compare against based on git state:
Comparison logic:
| Staged | Unstaged | Compare Against | Command |
|---|---|---|---|
| Yes | Yes | Staged (unstaged only) | git diff --name-only |
| Yes | No | Last commit | git diff HEAD --name-only |
| No | Yes | Last commit | git diff HEAD --name-only |
| No | No | No changes | Exit with message |
Map Changes to Steps:
### Parallelization Overview to get every step name, its implementation phase, and its Sub-Task File path.#### Expected Output sections are the only place file paths per step are recorded. Read ONLY the #### Expected Output and #### Subtasks sections you need.{changed_file → step name → implementation phase}Determine Affected Scope:
REFINE_FROM_PHASE = the earliest implementation phase containing an affected stepRefine Execution:
sdd:code-reviewer agent to verify the phase (including the user's changes), passing the 4 standard inputs — Model: MODEL_OVERRIDE if set — otherwise that phase's Reviewer model[REVIEWED], proceed to the next phaseExample:
Multiple Files Changed:
Staged vs Unstaged Changes:
Human verification checkpoints are keyed on implementation phases, never on individual steps.
Trigger Conditions:
HUMAN_IN_THE_LOOP_PHASESHUMAN_IN_THE_LOOP_PHASES is "*", triggers after every implementation phaseAt Checkpoint:
combined_score and consolidated issuesCheckpoint Message Format:
Task status is managed by folder location:
.specs/tasks/todo/ - Tasks waiting to be implemented.specs/tasks/in-progress/ - Tasks currently being worked on.specs/tasks/done/ - Completed tasksThe task's sub-task folder .specs/sub-tasks/<task-name>/ never moves while the task file travels between these folders, so the Sub-Task File paths recorded in the task file stay valid.
| When | Action |
|---|---|
| Start implementation | Move task from todo/ to in-progress/ |
| Final verification PASS | Move task from in-progress/ to done/ |
| Implementation failure (user aborts) | Keep in in-progress/ |
Your role is DISPATCH and AGGREGATE. You do NOT do the work.
Properly build context of sub agents!
CRITICAL: For each sub-agent you dispatch, you MUST provide:
For an implementation agent (one per step):
Sub-Task File column of the Parallelization Overview${CLAUDE_PLUGIN_ROOT} so agents can resolve paths like @${CLAUDE_PLUGIN_ROOT}/scripts/create-scratchpad.shFor the sdd:code-reviewer (one per implementation phase):
CLAUDE_PLUGIN_ROOT| Prohibited Action | Why | What To Do Instead |
|---|---|---|
| Read implementation outputs | Context bloat → command loss | Sub-agent reports what it created |
Read sub-task files (except --refine mapping) | The implementation agent reads its own sub-task file | Pass the path from the Parallelization Overview |
| Read reference files | Sub-agent's job to understand patterns | Include path in sub-agent prompt |
| Read artifacts to "check" them | Context bloat → forget verifications | Launch sdd:code-reviewer agent |
| Evaluate code quality yourself | Not your job, causes forgetting | Launch sdd:code-reviewer agent |
| Review a step individually | Review is a PHASE-level gate | Review once, at the end of the phase |
| Skip a phase review "because simple" | Every phase review is mandatory unless --skip-reviews | Launch sdd:code-reviewer anyway |
| Never add comments/marks/notes about results of review, scratchpads, iterations, etc. to the task file. | The task file is a specification artifact, not a log. If task not done, it should be visible from code only! | You can write only [DONE] mark ever, or nothing at all! |
If you think: "I should read this file to understand what was created" → STOP. The sub-agent's report tells you what was created. Use that information.
If you think: "I'll quickly verify this looks correct"
→ STOP. Launch a sdd:code-reviewer agent. That's not your job.
If you think: "This phase is too simple to need verification"
→ STOP. Unless SKIP_REVIEWS is true, every implementation phase gets exactly one review. No exceptions.
If you think: "This step looks risky, I'll review it before the phase ends" → STOP. Reviewing per step is exactly what this workflow removed. Wait for the phase to complete.
If you think: "I need to read the sub-task file to write a good prompt" → STOP. Put the sub-task file PATH in the sub-agent prompt. The sub-agent reads it.
Orchestrators who read files themselves = context overflow = command loss = forgotten steps. Every time.
Orchestrators who "quickly verify" = skip sdd:code-reviewer agents = quality collapse = failed artifacts.
Your context window is precious. Protect it. Delegate everything.
MODEL_OVERRIDE): if --model was given, that model WINS over the task file and over every default in this skill — dispatch EVERY sub-agent with it (implementation agents of any type AND sdd:code-reviewer), ignoring the Parallelization Overview's Model column and the Phase Overview's Reviewer model. It is an override, NOT a fallback. If --model was NOT given (MODEL_OVERRIDE = none), model selection is unchanged: each step uses the Model its Parallelization Overview row names, and each phase review uses that phase's Reviewer model, falling back to the default named in each dispatch block.THRESHOLD (default 4.0) for every implementation phase review. There is no per-component, per-criticality or lenient variant.combined_score returned by code-reviewer. NEVER pass any threshold to the code-reviewer agent — or he will try to reach target score and as result become subjective.combined_score >= THRESHOLD. If 3.0 <= combined_score < THRESHOLD, the phase passes ONLY when the Iteration Discretion Rule says so — never below the fixed floor of 3.0. If combined_score < 3.0, the phase FAILS unconditionally.MAX_ITERATIONS is set to unlimited: Iterate until the quality threshold is met (no limit)HUMAN_IN_THE_LOOP_PHASES (or all phases if "*")!SKIP_REVIEWS is true: Skip ALL code-reviewer dispatches - proceed directly to the next implementation phase after its steps complete!CONTINUE_MODE is true: Skip to RESUME_PHASE / RESUME_STEPS - do not re-implement already completed steps!REFINE_MODE is true: Detect changed project files, map to steps, re-verify from REFINE_FROM_PHASE - preserve user's fixes!STRICT_MODE is true: The Iteration Discretion Rule is DISABLED - a phase passes ONLY on combined_score >= THRESHOLD, otherwise iterate until MAX_ITERATIONS!Parallel with: column names each other MUST be dispatched simultaneously in one message. Never serialize what the plan says is parallel.Phase N+1 may only start after Phase N has been reviewed and marked [REVIEWED] (or marked [REVIEWED-SKIPPED] when SKIP_REVIEWS is true).Relaunch the code-reviewer till you get valid results, if following happens:
combined_score of exactly 5.0/5.0, treat it as a hallucination or lazy evaluation. Reject it and re-run the agent. This applies to the weighted aggregate only — an individual criterion may legitimately score 5 and no score is rationed, but every criterion across spec compliance, code quality and Muda waste analysis landing strictly past its score_4 anchor at once is not a plausible review outcome. Never use it as a reason to question a single high criterion score.combined_score (or any sub-score: spec_compliance_score, builtin_score), reject it. This indicates the agent failed to follow the rubric instructions.#### Phase N block does NOT list — reporting work a LATER phase delivers as "missing" or "incomplete" — reject the report and re-run the agent, restating that a phase is a checkpoint, not the finish line.Your main task is to COMPLETE the task within target quality. Two failure modes are equally real:
Apply to every implementation phase's combined_score:
combined_score < 3.0 → FAIL, unconditionally. No discretion. Iterate with reviewer feedback until the phase passes or MAX_ITERATIONS is reached.3.0 <= combined_score < THRESHOLD → discretion band. ONLY inside this band MAY you decide that a phase below the target is acceptable. The fixed floor is 3.0 and the band ceiling is THRESHOLD. If --target-quality set THRESHOLD <= 3.0 the band is empty: every score is either an unconditional FAIL (< 3.0) or a PASS, and there is no discretion to exercise.Low/Medium priority (any High or Critical finding removes discretion entirely) AND none of them breaks an acceptance criterion the phase is responsible for or causes a meaningful defect (i.e. they are nitpicks), you MUST reason FIRST — before dispatching another iteration — about whether iterating (or marking the phase failed) is worth the time and context cost.MAX_ITERATIONS. If it again surfaces only nitpicks, you MUST mark the phase PASS (☑️ ACCEPTED in the summary table), report the outstanding issues in the final report, and continue with the next phase. If it returns a combined_score below 3.0, the FAIL path applies instead.MAX_ITERATIONS MUST be reported as a failure, never papered over.STRICT_MODE is true, this whole rule is DISABLED: stop only when combined_score >= THRESHOLD or MAX_ITERATIONS is reached. --strict changes nothing else — THRESHOLD, MAX_ITERATIONS, the < 3.0 unconditional FAIL, human-in-the-loop checkpoints, code-reviewer dispatch and --skip-reviews are unaffected. With --skip-reviews no combined_score is produced at all, so both this rule and --strict are inert.This command orchestrates multi-step task implementation with:
Parallel with: column allowsReviewer modelParse user input to get the task file path and arguments.
If $ARGUMENTS is empty or only contains flags:
Check in-progress folder first:
$TASK_FILE to that file, $TASK_FOLDER to in-progressCheck todo folder:
$TASK_FILE to that file, $TASK_FOLDER to todoIf $ARGUMENTS contains a task file name:
in-progress/ → todo/ → done/$TASK_FILE and $TASK_FOLDER accordinglyIf task is in todo/ folder:
Update $TASK_PATH to .specs/tasks/in-progress/$TASK_FILE
If task is already in in-progress/:
Set $TASK_PATH to .specs/tasks/in-progress/$TASK_FILE
Do NOT move the sub-task folder. .specs/sub-tasks/<task-name>/ stays where planning created it; the Sub-Task File paths in the task file already point there.
Parse all flags from $ARGUMENTS and initialize configuration.
Display resolved configuration:
If CONTINUE_MODE is true: resolve RESUME_PHASE and RESUME_STEPS per Context Resolution for --continue, then in Workflow Phase 2 skip every implementation phase before RESUME_PHASE and every [DONE] step inside it.
If REFINE_MODE is true:
Detect Changed Project Files:
Determine comparison mode:
Build the Step→File Mapping:
### Parallelization Overview for step names, phases and Sub-Task File paths#### Expected Output and #### Subtasks sections for file paths (the one permitted exception to context protection — see Refine Mode Behavior)STEP_FILE_MAP = {step name → [file paths]} and STEP_PHASE_MAP = {step name → implementation phase}Map Changed Files to Steps:
Determine Refine Scope:
REFINE_FROM_PHASE = the earliest implementation phase among STEP_PHASE_MAP[AFFECTED_STEPS]REFINE_FROM_PHASE onwards need re-verificationREFINE_FROM_PHASE are preserved as-isStore Changed Files Context:
CHANGED_FILES = list of changed file pathsUSER_CHANGES_CONTEXT = git diff output for affected filesThis is the ONLY phase where you read a file (plus the sub-task #### Expected Output sections in --refine mode).
Read the task file ONCE:
After this read, you MUST NOT read any other files for the rest of execution.
Parse the ## Implementation Process section into two working structures.
From ### Parallelization Overview — the step table has columns | Step | Phase | Model | Agent | Depends on | Parallel with | Sub-Task File |. Build, per step name:
| Field | Source | Used for |
|---|---|---|
| Step name | Step column (backtick-quoted sub-task basename) | Identity in all other lists |
| Implementation phase | Phase column | Which review gate it belongs to |
| Model | Model column | The model of its dispatch (unless MODEL_OVERRIDE) |
| Agent | Agent column | The sdd: agent type to dispatch |
| Depends on | Depends on column | Ordering |
| Parallel with | Parallel with column | Which steps to dispatch in ONE message |
| Sub-Task File | Sub-Task File column | The path you pass to the agent |
From ### Phase Overview — for each #### Phase N block, record Steps:, Reviewer model:, the Checklist items: list and the Rubrics: list. You use Reviewer model: to dispatch the review; the criteria lists are the reviewer's business, not yours — do NOT paste them into any prompt.
There is no threshold, no verification level and no judge count in the task file. Do not look for them.
Create TodoWrite with one entry per step plus one entry per implementation phase review:
Process implementation phases in order. Within a phase, process steps in dependency order, dispatching Parallel with: groups simultaneously. When every step of the phase has reported completion, run the phase review — once.
There is exactly ONE dispatch pattern, and it applies to every implementation phase without exception.
Use Task tool, one call per step (all steps of a Parallel with: group in a single message):
Agent column, prefixed sdd: (e.g. sdd:developer, sdd:tech-writer)MODEL_OVERRIDE if set — otherwise the step's Model column — otherwise sonnetDo NOT paste the step's goal, expected output, success criteria or subtasks into the prompt. The agent reads its sub-task file. Passing the path is the contract; pasting the content is context bloat and drift.
Collect the artifact paths from each report. Do NOT read the artifacts.
Every sdd:code-reviewer dispatch MUST include exactly these 4 inputs and NOTHING else that resembles a threshold or pass/fail expectation (the Task tool's model parameter is a dispatch setting, not a prompt input — see MODEL_OVERRIDE):
$TASK_PATH### Phase Overview (e.g. Phase 2)Dispatch prompt:
You MUST NOT pass to the code-reviewer:
## Acceptance Criteria, narrowed by the Phase Overview, is authoritative)Steps: line and the Parallelization Overview's Sub-Task File columnAfter receiving the code-reviewer's report, the orchestrator (this skill) applies the threshold:
The combined_score already incorporates spec_compliance + code_quality + Muda waste analysis (the reviewer aggregates them internally per its STAGE 9). The orchestrator does NOT need to re-aggregate sub-scores; only combined_score, issues and blast_radius matter for the gate decision.
This is the single most important judgement you make in this workflow. Think thoroughly before you dispatch anything.
There is no rule table here, and you must not build yourself one. There is a principle:
Match the capability of the agent that fixes the phase — and of the agent that re-reviews the fix — to the BLAST RADIUS of the reviewer's findings, not to the models that originally built the phase.
Before dispatching a single fix, reason explicitly and in writing through:
issues[].step and blast_radius.affected_steps. Which steps are demonstrably sound?blast_radius.requires_phase_rework)?Then decide three things:
Reviewer model. When you escalate the fix because the phase came out structurally wrong, escalate the re-review too: a review at the tier that let the defect through is not a check.Worked example (the anchor case). A phase of three steps, all built by haiku, reviewer sonnet, fails its review. The same failure verdict points at two very different repairs depending only on blast radius:
requires_phase_rework: true, and the design of the phase's shared abstraction is wrong. Blast radius = the whole phase; depth = structural; coupling = total; ceiling = haiku clearly could not carry this design. Decision: re-dispatch the whole phase's steps to sonnet (or opus if the abstraction is genuinely hard), and re-review at opus rather than the phase's sonnet — the sonnet review is what passed the broken shape to you.affected_steps: [02b-token-service], requires_phase_rework: false, and the other two steps are clean. Blast radius = one step; depth = local; coupling = none; ceiling = not reached, the defect is a missed edge case rather than a design failure. Decision: re-dispatch ONLY 02b-token-service, still at haiku, with the reviewer's issues for that step; leave the other two steps untouched; re-review at the phase's sonnet.Everything else is DERIVED from that principle, not enumerated. A mixed-model phase, a phase that fails only on tests, a phase that fails a second time, a phase where two of five steps are coupled — none of these has a pre-written answer. Walk scope → depth → coupling → severity → ceiling, write down your reasoning, and choose. Do NOT reach for a decision matrix; the situations are too varied for one, and a matrix would make you stop thinking exactly where thinking matters most.
Record the reasoning and the choice in the final report so the user can see why each fix model was picked.
For each step you decided to re-dispatch, build this prompt (one per step, parallel where the steps are independent):
After every re-dispatched step reports completion, dispatch the code-reviewer again for the SAME phase with the SAME 4 inputs (the artifact list may have grown — pass the union). Iterate until PASS or MAX_ITERATIONS is reached.
If MAX_ITERATIONS is reached:
### Parallelization Overview table with [DONE] next to its step name[REVIEWED] (e.g. #### Phase 1: Foundation [REVIEWED]), or [REVIEWED-SKIPPED] when SKIP_REVIEWS is truecompletedcombined_score in trackingThe steps' own #### Subtasks and #### Success Criteria checkboxes are marked by the implementation agents inside their sub-task files — not by you.
Only after the implementation phase PASSES, if the phase identifier is in HUMAN_IN_THE_LOOP_PHASES (or HUMAN_IN_THE_LOOP_PHASES == "*"), display the checkpoint from Human-in-the-Loop Behavior.
Before moving to DoD verification, verify you followed the rules:
MODEL_OVERRIDE)?sdd:code-reviewer at the END of every implementation phase (unless SKIP_REVIEWS), at that phase's Reviewer model?THRESHOLD yourself against combined_score, and pass no threshold to the reviewer?[REVIEWED] ONLY after the orchestrator-level PASS rule was satisfied?If you read files other than the task file (and sub-task Expected Outputs in --refine), you are doing it wrong. STOP and restart.
After all implementation phases are complete, verify the task meets all Definition of Done criteria.
Use Task tool with:
sdd:developerMODEL_OVERRIDE if set — otherwise opus[X]If any Definition of Done items FAIL:
1. Launch an implementation agent for each failing item — Model: MODEL_OVERRIDE if set — otherwise opus:
2. Re-verify After Fixes:
Launch the verification agent again (Step 3.1) to confirm all items now PASS.
3. Iterate if Needed:
Repeat fix → verify cycle until all Definition of Done items PASS.
Once ALL Definition of Done items PASS, move the task to the done folder.
Confirm all Definition of Done items are marked complete in the task file.
Do NOT move .specs/sub-tasks/<task-name>/. It stays where it is; the task file's recorded paths must keep resolving.
After all implementation phases complete and DoD verification passes:
Examples 3 and 4 below are the two halves of the SAME anchor case from Failure Handling, shown end-to-end as session logs. They are NOT a catalogue of situations — every other failure is reasoned out from the principle, never looked up.
If an implementation agent reports failure:
SKIP_REVIEWS).If the sdd:code-reviewer returns a report that trips any rule in Execution & Evaluation Rules — a 5.0 combined_score, a missing combined_score, a PASS/FAIL verdict, or findings against acceptance criteria the phase does not own — reject it and re-run the agent with the same 4 inputs. Never repair its report yourself.
If --refine mode finds no git changes in the project:
If --refine mode finds changed files but none map to a step's Expected Output:
If the Sub-Task File path in the Parallelization Overview does not exist:
.specs/sub-tasks/<task-file-basename-without-extension>/<step-name>.md — the folder never moves, so a stale path is usually recoverableBefore completing implementation:
$ARGUMENTS correctlyMODEL_OVERRIDE precedence rule for --model (see Configuration Rules)THRESHOLD (default 4.0) for every implementation phase reviewMAX_ITERATIONS reached, default 3)3.0 <= combined_score < THRESHOLD, never accepted below 3.0, treated < 3.0 as unconditional FAIL, and spent at most ONE nitpick-driven iterationSTRICT_MODE is true: Ignored the Iteration Discretion Rule and iterated until THRESHOLD or MAX_ITERATIONSHUMAN_IN_THE_LOOP_PHASESSKIP_REVIEWS is true: Skipped ALL code-reviewer dispatchesCONTINUE_MODE is true: Resolved RESUME_PHASE + RESUME_STEPS and resumed correctlyREFINE_MODE is true: Detected changed project files, mapped to steps, re-verified from the earliest affected implementation phase$TASK_PATH in .specs/tasks/in-progress/) — plus sub-task #### Expected Output sections in --refine mode, and nothing elseMODEL_OVERRIDE)sdd:code-reviewer dispatched per implementation phase, at that phase's Reviewer model (unless SKIP_REVIEWS)[DONE] in the Parallelization Overview after its agent reported completion[REVIEWED] ONLY after the orchestrator-level PASS (or [REVIEWED-SKIPPED] if SKIP_REVIEWS)Parallel with: groups launched simultaneously in one message (not sequentially)issues (attributed per step) as feedback until orchestrator-level PASSHUMAN_IN_THE_LOOP_PHASES## Acceptance Criteria → **Definition of Done:**in-progress/ to done/ folder (sub-task folder left in place)[X] in task fileThis appendix documents the artifacts this skill consumes. It is a reading guide, not an instruction to read more files than Workflow Phase 1 allows.
A planned task file contains exactly these sections:
| Section | Written by | What this skill uses it for |
|---|---|---|
# Description | sdd:business-analyst | Nothing directly — the sub-agents read it |
## Acceptance Criteria | sdd:business-analyst | Only its **Definition of Done:** sub-block, in Workflow Phase 3 |
## Architecture Overview | sdd:software-architect | Nothing directly — the sub-agents read it |
## Implementation Process | sdd:tech-lead | Everything: dispatch, models, phases, review gates |
## Acceptance Criteria has exactly six sub-blocks, in order: **Checklist:**, **Regular Checks:**, **Rubric:**, **Rubric Score Definitions:**, **Test Strategy:**, **Definition of Done:**. The first five are the reviewer's input, narrowed per phase — you never parse or forward them.
A task file carries no scoring configuration at all — no threshold, no judge count, no per-step review metadata. Scoring is orchestrator config only. If a task file contains any section not listed in the table above, it is a stale artifact from an older plan; ignore it and note it in the final report.
## Implementation ProcessPhase N (a title may follow: #### Phase 1: Foundation). This exact identifier is what you pass to the reviewer.Reviewer model: is one of haiku, sonnet, opus. It is the model of that phase's single review dispatch.Checklist items: and Rubrics: lists scope the reviewer's scoring. They are the reviewer's input, not yours — it reads them from the task file itself. Never paste them into a prompt.One per step, at .specs/sub-tasks/<task-name>/<NN>-<step-slug>.md, where <task-name> is the task filename without its extension. The folder never moves.
The step name is the file's basename without .md. It is the identity used in Steps:, Depends on:, Parallel with: and in the reviewer's per-issue attribution.
The sdd:code-reviewer scores every criterion on a 1-5 integer scale defined by its own ## Scoring Scale section. That section is the sole definition and is deliberately not reproduced here — the reviewer owns scoring; you do not score anything, you only compare combined_score against THRESHOLD. Never restate the scale, or your own version of it, in any prompt or report.
The one consequence for you: when applying the Iteration Discretion Rule, read a score as a placement, never as an intuitive "out of 5" feel or a word like adequate or excellent.
During Workflow Phase 2:
Modelsdd:code-reviewer at that phase's Reviewer model — Model: MODEL_OVERRIDE if set — otherwise the phase's Reviewer model — otherwise opusCLAUDE_PLUGIN_ROOT) — NEVER a threshold, NEVER the sub-task pathsTHRESHOLD against combined_score at this layer