Skill Tracer
Skills › BMAD Method › bmad-code-review › step-04-route.md

step-04-route.md

24 lines · skills/bmad-code-review/step-04-route.md at bd70c64

Open on GitHub

Most marks come from matching words in the file, so treat them as pointers.

1---
2---
3
4# Step 4: Route
5

Step 4: Route

Raw lines 1 to 5
6## INSTRUCTIONS
7
8`{triage_file}`, the triage step's output, is the input here. Work from its `F` findings.
9
101. **Route** each deduplicated finding: decide which should be fixed right away, and which dealt with in a different manner. Assign each of them to one of [`decision_needed`, `patch`, `defer`], as follows:
11 - **decision_needed** -- There is an ambiguous choice that requires human input. The code cannot be correctly patched without knowing the user's intent. You should assign `decision_needed` even when running in a non-interactive mode. Do not guess and patch, even if a human cannot answer during this session. List the options, one line each, and the one you recommend with the reason.
12 - **patch** -- Code issue that is fixable without human input. The correct fix is unambiguous, adds no public surface, and guards no state you did not demonstrate; otherwise `decision_needed`.
13 - **defer** -- Pre-existing issue not caused by the current change, real but not actionable now; or an entry whose members are all `maybe-false` and the claim, if true, would be `medium` or `high` -- record that severity marked unverified, plus what would settle it (if it would only be `low`, reject it with the same note); or any entry whose fix edits agent-context files (CLAUDE.md, AGENTS.md, rules) or a ticket file.
15 An entry this change caused, with a verified `high`, `medium`, or `low` member, is never `defer`, whatever its fix touches: it is `patch` or `decision_needed`. defer is only for what is not this change's problem.
17 Write each finding's route into its block in `{triage_file}`, with the options and recommendation for `decision_needed` and the note for `defer`.
192. If `failed_layers` is non-empty, report which lenses failed before announcing results. If zero entries remain after rejections AND `failed_layers` is non-empty, warn the user that the review may be incomplete rather than announcing a clean review.
203. If zero entries remain after triage (all rejected or none raised): state "✅ Clean review — all lenses passed." (Item 2 already warned if any review lenses failed via `failed_layers`.)

INSTRUCTIONS

{triage_file}, the triage step's output, is the input here. Work from its F findings.

  1. Route each deduplicated finding: decide which should be fixed right away, and which dealt with in a different manner. Assign each of them to one of [decision_needed, patch, defer], as follows:
  2. decision_needed -- There is an ambiguous choice that requires human input. The code cannot be correctly patched without knowing the user's intent. You should assign decision_needed even when running in a non-interactive mode. Do not guess and patch, even if a human cannot answer during this session. List the options, one line each, and the one you recommend with the reason.
  3. patch -- Code issue that is fixable without human input. The correct fix is unambiguous, adds no public surface, and guards no state you did not demonstrate; otherwise decision_needed.
  4. defer -- Pre-existing issue not caused by the current change, real but not actionable now; or an entry whose members are all maybe-false and the claim, if true, would be medium or high -- record that severity marked unverified, plus what would settle it (if it would only be low, reject it with the same note); or any entry whose fix edits agent-context files (CLAUDE.md, AGENTS.md, rules) or a ticket file.

An entry this change caused, with a verified high, medium, or low member, is never defer, whatever its fix touches: it is patch or decision_needed. defer is only for what is not this change's problem.

Write each finding's route into its block in {triage_file}, with the options and recommendation for decision_needed and the note for defer.

  1. If failed_layers is non-empty, report which lenses failed before announcing results. If zero entries remain after rejections AND failed_layers is non-empty, warn the user that the review may be incomplete rather than announcing a clean review.
  2. If zero entries remain after triage (all rejected or none raised): state "✅ Clean review — all lenses passed." (Item 2 already warned if any review lenses failed via failed_layers.)
Raw lines 6 to 21
Project instruction file CLAUDE.md :13
Project instruction file AGENTS.md :13
22## NEXT
24Read fully and follow `{{ rendered("step-05-present.md") }}`

NEXT

Read fully and follow {{ rendered("step-05-present.md") }}

Raw lines 22 to 24