skills/eng-design-doc-review/SKILL.md
Adversarially review a technical design document with fresh context before the human gate. Dispatches the built-in `general-purpose` subagent (clean context, no shared history with the design-author) against `docs/plans/<id>/design.md` and presents its verdict — APPROVE, REQUEST CHANGES, or COMMENT. Optional, not part of the QRSPI pipeline. Trigger on "review the design doc", "audit design.md", "is this design ready", or `/eng-design-doc-review`.
npx skillsauth add bostonaholic/team eng-design-doc-reviewInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Adversarially review a design document with fresh context. This is an optional review step — it is not part of the QRSPI phase table and adds no gate to the orchestrator. Invoke it when you want an independent, fresh-context audit before you walk into the DESIGN human gate.
There is no custom review agent. This skill is self-contained: it
carries the review brief inline and dispatches the built-in
general-purpose subagent via the Agent tool. That subagent boots with
a clean context and no shared conversation history with the
design-author — that isolation is the whole point. It prevents
self-evaluation bias.
$ARGUMENTS is the artifact directory: docs/plans/<id>/. If empty, the
discovery block below resolves it.
The review reads:
$ARGUMENTS/design.md — the document under review (required)$ARGUMENTS/task.md, $ARGUMENTS/questions.md,
$ARGUMENTS/research.md, $ARGUMENTS/repos.md — predecessor artifacts
(read for grounding when present; missing siblings are not a hard error)Resolve the artifact directory by running this self-contained block (one bash call — agent threads reset cwd between calls):
# Three-tier artifact-directory discovery (archetype A).
# ID_RE + PHASE_FILES canonical from hooks/session-start-recover.mjs.
# PHASE_FILES recency mirrors findActiveTopic() in session-start-recover.mjs.
# NOTE: this block is duplicated across 8 skills by design (see docs/architecture.md); future: shared discover-topic.sh.
ID_RE='^([A-Za-z][A-Za-z0-9_]*-[0-9]+|[0-9]{4}-[0-9]{2}-[0-9]{2})-[a-z0-9][a-z0-9-]*$'
PHASE_FILES="task questions research design structure plan"
PRED="design.md" # predecessor artifact this skill consumes
# Tier 1 — explicit: $ARGUMENTS names an existing dir → use verbatim.
if [ -n "$ARGUMENTS" ] && [ -d "$ARGUMENTS" ]; then
echo "$ARGUMENTS"; exit 0
fi
# Tier 2 — discover: newest ID_RE dir under docs/plans/ that holds PRED.
best=""; best_mtime=-1
# Assumes cwd is the repo/worktree root (where docs/plans/ lives).
for dir in docs/plans/*/; do
name="$(basename "$dir")"
printf '%s' "$name" | grep -qE "$ID_RE" || continue # ID_RE filter
[ -f "$dir$PRED" ] || continue # predecessor filter
m=-1
for p in $PHASE_FILES; do
f="$dir$p.md"
[ -f "$f" ] || continue # skip racing/absent
s="$(stat -f %m "$f" 2>/dev/null || stat -c %Y "$f" 2>/dev/null)" || continue
[ "${s:-0}" -gt "$m" ] && m="$s" # max-mtime over PHASE_FILES
done
[ "$m" -gt "$best_mtime" ] && { best_mtime="$m"; best="$dir"; }
done
[ -n "$best" ] && { echo "$best"; exit 0; }
# Tier 3 — none found: print nothing → fall to AskUserQuestion (prose below).
$ARGUMENTS for the rest of this
skill (tier 1 explicit arg, or tier 2 discovery). When the path came from
tier 2 (no explicit arg), announce the resolved directory to the user before
proceeding, so an auto-picked topic is never silent.design.md),
do not hard-error. Fire AskUserQuestion with a Setup header and labeled
options:
/team-design docs/plans/<id>/ to produce the
missing design.md.docs/plans/<id>/ directory
directly (run ls docs/plans/ to find your topic directory).## Input.Agent tool with
subagent_type: general-purpose and pass the Review brief below as
the prompt, with $ARGUMENTS substituted for the artifact directory. Do
not define or reference a project agent — the built-in
general-purpose type is the whole mechanism. Its clean context is what
makes the review independent.file:line reference) followed by one of APPROVE, REQUEST CHANGES, or
COMMENT. Relay it verbatim — the subagent's output is not shown to the
user directly./team-design with that feedback.Pass everything in this section to the
general-purposesubagent as its prompt. It is written in the second person, addressed to that subagent.
You are reviewing a technical design document — $ARGUMENTS/design.md. You
operate with fresh context and have no knowledge of the author's intent
beyond what the document itself states. This isolation is intentional: it
prevents self-evaluation bias. You are read-only — use Read, Grep, and
Glob only; do not edit any file.
First, load your operating manual. Use the Skill tool to load these
four methodology skills before you begin — they are your review criteria:
Follow
skills/progress-tracking/SKILL.md: when this procedure has two or more steps, seed one todo item per step before starting and mark each complete as you go.
Locate the document. Read $ARGUMENTS/design.md. Also read the
sibling artifacts (task.md, questions.md, research.md, repos.md)
when present — they ground the design in the work that produced it.
Evaluate structure against the TDD methodology. Walk every section
the technical-design-doc skill prescribes (Problem, Goals/Non-Goals,
Background, Design, Trade-offs, Rollout, Edge Cases, Open Questions) and
note any missing or thin sections. For design.md artifacts, walk the
design-author template instead (Current state, Desired end state,
Patterns to follow, Decisions made, Out of scope, Edge cases, Open
questions, Risks).
Audit the decisions. For each decision the document records:
documenting-decisions criteria — these are ADR-grade
questions even when the doc is not a formal ADR.Verify edge-case enumeration. The design must walk boundary values, invalid inputs, failure paths, concurrency, authorization, and resource limits. A doc with no edge-case section — or one listing only the happy path — is incomplete. Edge cases deliberately deferred must appear in "Out of scope" or "Non-Goals", not be silently omitted.
Check specificity. Cite-by-file-and-line beats hand-waving. Flag
any "the auth module" where services/auth/SessionManager.ts:88 would
have been possible. Spot-check a few claims by reading the referenced
files — if a citation does not exist or does not say what the doc
claims, that is a blocking issue.
Apply the engineering-standards lens. Walk the Core Philosophy (Hickey/Carmack/Armstrong/Knuth/Liskov/Ousterhout) and the design-first workflow. Higher severity for failure-isolation or contract violations; lower for stylistic concerns.
Check scope discipline. Does the design stay within the repos and subsystems implied by the predecessor artifacts? Flag scope creep (especially silent multi-repo expansion) as a blocking issue.
Use Conventional Comments format for every finding. Every comment includes a
file:line reference (line number in the design doc itself, or in the file
the doc cites). The code-review skill defines the three comment types
(issue, suggestion, nitpick) — use them.
End with a verdict, using the same gate type as code-reviewer:
code-reviewer agent owns that.design.md or the artifact
directory.approved / approved_at frontmatter
on design.md. The human gate in /team-design is the only thing
that flips those fields. An APPROVE verdict from this skill is an
advisory signal, not a pipeline gate./team-design or /team-structure. Users
may run those without ever invoking this skill.Print the verdict and the count of issue / suggestion / nitpick findings.
If the verdict is APPROVE or COMMENT, tell the user:
"You can proceed to the /team-design human gate."
If the verdict is REQUEST CHANGES, tell the user:
"Re-run /team-design docs/plans/<id>/ with the findings above to
re-dispatch design-author for a revision."
data-ai
Todo-first progress convention for multi-step procedures — loaded by every multi-step agent to track its own steps without drift
development
Generator-evaluator separation and review methodology — loaded by review agents to enforce fresh-context review discipline, Conventional Comments format, and gate verdicts
data-ai
Prepare one or more isolated git worktrees — one per repository the topic touches. Router action — no agent. Trigger on "set up the worktree", "isolate this work", or "/team-worktree".
development
Break the approved design into vertical slices with verification checkpoints. The structure document is the human's last review point before code is written. Trigger on "slice this up", "break the design into steps", or "/team-structure".