From e355795625800027f45e9d81246e2c67d9d0f95e Mon Sep 17 00:00:00 2001 From: Jesse Vincent Date: Wed, 10 Jun 2026 03:44:19 -0700 Subject: [PATCH] Hand reviewers the diff as a file, not a paste MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Paste adoption stayed at 0/15 even as a Red Flag — and the controller's reluctance is locally rational: pasting loads the diff into the (most expensive) controller context permanently, while a reviewer self-fetch costs a few cheap turns. The diff-file handoff is cheap for both sides: the controller redirects git diff to /tmp without reading it, and the reviewer gets the whole change in one Read call. --- skills/subagent-driven-development/SKILL.md | 15 ++++++++------- .../task-reviewer-prompt.md | 16 +++++++--------- 2 files changed, 15 insertions(+), 16 deletions(-) diff --git a/skills/subagent-driven-development/SKILL.md b/skills/subagent-driven-development/SKILL.md index c21dce50..ca5c4795 100644 --- a/skills/subagent-driven-development/SKILL.md +++ b/skills/subagent-driven-development/SKILL.md @@ -153,10 +153,11 @@ final whole-branch review. When you fill a reviewer template: - Include the spec/design's global constraints that bind the task (version floors, naming and copy rules, platform requirements) in the requirements you paste — a reviewer can only enforce what you hand them. -- Run `git diff BASE..HEAD` yourself and paste the output into the reviewer - prompt (`--stat` plus the relevant hunks if it exceeds a few hundred - lines). A reviewer with the diff in hand needs few or no tool calls; do - not make reviewers re-derive the diff. +- Hand the reviewer its diff as a file: run + `git diff BASE..HEAD > /tmp/sdd-task-N.diff` (redirected, so the diff + never enters your own context) and put that path in the prompt. The + reviewer then sees the whole change in one Read call instead of + re-deriving it with git commands. - Dispatch fix subagents for Critical and Important findings. Record Minor findings and move on — then paste the accumulated Minor findings into the final whole-branch review dispatch so it can triage which must be fixed @@ -282,9 +283,9 @@ Done! - Tell a reviewer what not to flag, or pre-rate a finding's severity in the dispatch prompt ("treat it as Minor at most") — the plan's example code is a starting point, not evidence that its weaknesses were chosen -- Dispatch a task reviewer without pasting the diff into the prompt — run - `git diff BASE..HEAD` yourself first (`--stat` plus relevant hunks if it - exceeds a few hundred lines) +- Dispatch a task reviewer without a diff file — run + `git diff BASE..HEAD > /tmp/sdd-task-N.diff` first and name that path in + the prompt - Move to next task while the review has open Critical/Important issues **If subagent asks questions:** diff --git a/skills/subagent-driven-development/task-reviewer-prompt.md b/skills/subagent-driven-development/task-reviewer-prompt.md index f6b98bd6..37b4dd67 100644 --- a/skills/subagent-driven-development/task-reviewer-prompt.md +++ b/skills/subagent-driven-development/task-reviewer-prompt.md @@ -27,13 +27,11 @@ Subagent (general-purpose): **Base:** [BASE_SHA] **Head:** [HEAD_SHA] + **Diff file:** [DIFF_FILE] - [DIFF — REQUIRED: the controller pastes `git diff BASE..HEAD` output - here before dispatching. Dispatching with this placeholder unfilled is - a dispatch error.] - - Review from the diff above — do not re-run git commands or re-read the - files it already shows. If no diff was provided, fetch it yourself: + Read the diff file once — that single Read is your view of the change. + Do not re-run git commands or re-read the files it already shows. If + the diff file is missing, fetch the diff yourself: `git diff --stat [BASE_SHA]..[HEAD_SHA]` and `git diff [BASE_SHA]..[HEAD_SHA]`. Only read files in this diff. Do not crawl the broader codebase. Inspect code outside the diff only to evaluate a concrete risk you can name — and @@ -153,9 +151,9 @@ Subagent (general-purpose): - `[DESCRIPTION]` — what the implementer reports they built - `[BASE_SHA]` — commit before this task - `[HEAD_SHA]` — current commit -- `[DIFF]` — REQUIRED: paste `git diff BASE..HEAD` output (use `--stat` - plus the relevant hunks if it exceeds a few hundred lines); a reviewer - with the diff in hand needs few or no tool calls +- `[DIFF_FILE]` — REQUIRED: the path the controller wrote the diff to + (`git diff BASE..HEAD > /tmp/sdd-task-N.diff`, redirected so it never + enters the controller's context) **Reviewer returns:** Spec Compliance verdict (✅/❌/⚠️), Strengths, Issues (Critical/Important/Minor), Task quality verdict