From 8c4d5f786de764870d9f3e0730ac9aee379e8b07 Mon Sep 17 00:00:00 2001 From: Garry Tan Date: Wed, 1 Apr 2026 11:08:12 -0700 Subject: [PATCH] feat: add test_stub optional field to specialist finding schema All specialist prompts now document test_stub as an optional output field, enabling specialists to suggest test code alongside findings. Co-Authored-By: Claude Opus 4.6 (1M context) --- review/design-checklist.md | 2 ++ review/specialists/api-contract.md | 1 + review/specialists/data-migration.md | 1 + review/specialists/maintainability.md | 1 + review/specialists/performance.md | 1 + review/specialists/red-team.md | 1 + review/specialists/security.md | 1 + review/specialists/testing.md | 1 + 8 files changed, 9 insertions(+) diff --git a/review/design-checklist.md b/review/design-checklist.md index 99f9dc52..e9d2b711 100644 --- a/review/design-checklist.md +++ b/review/design-checklist.md @@ -58,6 +58,8 @@ Design Review: N issues (X auto-fixable, Y need input, Z possible) - [file:line] Possible issue — verify with /design-review ``` +Optional: `test_stub` — skeleton test code for this finding using the project's test framework. + If no issues found: `Design Review: No issues found.` If no frontend files changed: skip silently, no output. diff --git a/review/specialists/api-contract.md b/review/specialists/api-contract.md index 1fc8ab83..01a649b1 100644 --- a/review/specialists/api-contract.md +++ b/review/specialists/api-contract.md @@ -3,6 +3,7 @@ Scope: When SCOPE_API=true Output: JSON objects, one finding per line. Schema: {"severity":"CRITICAL|INFORMATIONAL","confidence":N,"path":"file","line":N,"category":"api-contract","summary":"...","fix":"...","fingerprint":"path:line:api-contract","specialist":"api-contract"} +Optional: line, fix, fingerprint, evidence, test_stub. If no findings: output `NO FINDINGS` and nothing else. --- diff --git a/review/specialists/data-migration.md b/review/specialists/data-migration.md index 437194f6..effc1146 100644 --- a/review/specialists/data-migration.md +++ b/review/specialists/data-migration.md @@ -3,6 +3,7 @@ Scope: When SCOPE_MIGRATIONS=true Output: JSON objects, one finding per line. Schema: {"severity":"CRITICAL|INFORMATIONAL","confidence":N,"path":"file","line":N,"category":"data-migration","summary":"...","fix":"...","fingerprint":"path:line:data-migration","specialist":"data-migration"} +Optional: line, fix, fingerprint, evidence, test_stub. If no findings: output `NO FINDINGS` and nothing else. --- diff --git a/review/specialists/maintainability.md b/review/specialists/maintainability.md index 258d0f2f..a2a036f9 100644 --- a/review/specialists/maintainability.md +++ b/review/specialists/maintainability.md @@ -3,6 +3,7 @@ Scope: Always-on (every review) Output: JSON objects, one finding per line. Schema: {"severity":"INFORMATIONAL","confidence":N,"path":"file","line":N,"category":"maintainability","summary":"...","fix":"...","fingerprint":"path:line:maintainability","specialist":"maintainability"} +Optional: line, fix, fingerprint, evidence, test_stub. If no findings: output `NO FINDINGS` and nothing else. --- diff --git a/review/specialists/performance.md b/review/specialists/performance.md index 78a1e793..612aa285 100644 --- a/review/specialists/performance.md +++ b/review/specialists/performance.md @@ -3,6 +3,7 @@ Scope: When SCOPE_BACKEND=true OR SCOPE_FRONTEND=true Output: JSON objects, one finding per line. Schema: {"severity":"CRITICAL|INFORMATIONAL","confidence":N,"path":"file","line":N,"category":"performance","summary":"...","fix":"...","fingerprint":"path:line:performance","specialist":"performance"} +Optional: line, fix, fingerprint, evidence, test_stub. If no findings: output `NO FINDINGS` and nothing else. --- diff --git a/review/specialists/red-team.md b/review/specialists/red-team.md index 38a72182..12654da8 100644 --- a/review/specialists/red-team.md +++ b/review/specialists/red-team.md @@ -3,6 +3,7 @@ Scope: When diff > 200 lines OR security specialist found CRITICAL findings. Runs AFTER other specialists. Output: JSON objects, one finding per line. Schema: {"severity":"CRITICAL|INFORMATIONAL","confidence":N,"path":"file","line":N,"category":"red-team","summary":"...","fix":"...","fingerprint":"path:line:red-team","specialist":"red-team"} +Optional: line, fix, fingerprint, evidence, test_stub. If no findings: output `NO FINDINGS` and nothing else. --- diff --git a/review/specialists/security.md b/review/specialists/security.md index 81136dd8..b1d2e30c 100644 --- a/review/specialists/security.md +++ b/review/specialists/security.md @@ -3,6 +3,7 @@ Scope: When SCOPE_AUTH=true OR (SCOPE_BACKEND=true AND diff > 100 lines) Output: JSON objects, one finding per line. Schema: {"severity":"CRITICAL|INFORMATIONAL","confidence":N,"path":"file","line":N,"category":"security","summary":"...","fix":"...","fingerprint":"path:line:security","specialist":"security"} +Optional: line, fix, fingerprint, evidence, test_stub. If no findings: output `NO FINDINGS` and nothing else. --- diff --git a/review/specialists/testing.md b/review/specialists/testing.md index a6076cf6..b2ea12e5 100644 --- a/review/specialists/testing.md +++ b/review/specialists/testing.md @@ -3,6 +3,7 @@ Scope: Always-on (every review) Output: JSON objects, one finding per line. Schema: {"severity":"CRITICAL|INFORMATIONAL","confidence":N,"path":"file","line":N,"category":"testing","summary":"...","fix":"...","fingerprint":"path:line:testing","specialist":"testing"} +Optional: line, fix, fingerprint, evidence, test_stub. If no findings: output `NO FINDINGS` and nothing else. ---