feat: add /speckit.critique command — dual-lens strategic & technical review#2044
feat: add /speckit.critique command — dual-lens strategic & technical review#2044arunt14 wants to merge 2 commits intogithub:mainfrom
Conversation
…al review Add a new core command that critically evaluates spec.md and plan.md through two expert perspectives BEFORE implementation begins: - Product Lens (CEO/Product Lead): problem validation, user value, alternatives, edge cases, success measurement - Engineering Lens (Staff Engineer): architecture soundness, failure modes, security, performance, testing strategy, operational readiness Includes command template and structured output report template. Inspired by GStack's /plan-ceo-review and /plan-eng-review commands.
8e10966 to
7e60fa7
Compare
There was a problem hiding this comment.
Pull request overview
Adds a new /speckit.critique command template and a corresponding critique report template to introduce a pre-implementation, dual-lens (product + engineering) review step in the Spec-Driven Development workflow.
Changes:
- Added
templates/commands/critique.mddefining the critique command workflow (including extension hooks). - Added
templates/critique-template.mdas the structured output format for critique reports.
Reviewed changes
Copilot reviewed 2 out of 2 changed files in this pull request and generated 4 comments.
| File | Description |
|---|---|
| templates/commands/critique.md | New command template describing how to run and structure the dual-lens critique workflow. |
| templates/critique-template.md | New markdown template for the critique report saved under FEATURE_DIR/critiques/. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
templates/commands/critique.md
Outdated
| sh: scripts/bash/check-prerequisites.sh --json --require-tasks --include-tasks | ||
| ps: scripts/powershell/check-prerequisites.ps1 -Json -RequireTasks -IncludeTasks |
There was a problem hiding this comment.
The frontmatter prerequisite script currently uses --require-tasks, which will hard-fail unless tasks.md already exists. This contradicts the intended workflow position of /speckit.critique (before /speckit.tasks) and makes the command unusable at the right time. Drop --require-tasks (keep --include-tasks if you want tasks.md listed when present).
| sh: scripts/bash/check-prerequisites.sh --json --require-tasks --include-tasks | |
| ps: scripts/powershell/check-prerequisites.ps1 -Json -RequireTasks -IncludeTasks | |
| sh: scripts/bash/check-prerequisites.sh --json --include-tasks | |
| ps: scripts/powershell/check-prerequisites.ps1 -Json -IncludeTasks |
templates/commands/critique.md
Outdated
|
|
||
| ## Operating Constraints | ||
|
|
||
| **STRICTLY READ-ONLY**: Do **not** modify `spec.md`, `plan.md`, or any other files. Output a structured critique report. Offer to apply approved changes only after the user reviews findings. |
There was a problem hiding this comment.
The "STRICTLY READ-ONLY" constraint says not to modify spec.md, plan.md, or any other files, but the outline later requires writing FEATURE_DIR/critiques/critique-{timestamp}.md and (optionally) applying approved edits to spec/plan. Please clarify the constraint wording (e.g., read-only for existing artifacts; creating the critique report is allowed; spec/plan edits only after explicit user approval).
| **STRICTLY READ-ONLY**: Do **not** modify `spec.md`, `plan.md`, or any other files. Output a structured critique report. Offer to apply approved changes only after the user reviews findings. | |
| **STRICTLY READ-ONLY FOR EXISTING ARTIFACTS**: During this command, do **not** directly modify existing project files such as `spec.md`, `plan.md`, or other source/docs. You **may** create a new critique report under `FEATURE_DIR/critiques/critique-{timestamp}.md`. Propose, but do not apply, edits to `spec.md`/`plan.md`; applying any changes requires explicit user approval in a follow-up step or command after the user reviews the findings. |
templates/commands/critique.md
Outdated
| - 🤔 **Question**: Ambiguity or assumption that needs stakeholder input. Cannot be resolved by the development team alone. | ||
|
|
||
| 7. **Generate Critique Report**: | ||
| Create the critique report at `FEATURE_DIR/critiques/critique-{timestamp}.md` using the critique report template. The report must include: |
There was a problem hiding this comment.
In step 7, the instructions don't mention ensuring FEATURE_DIR/critiques/ exists before writing the report, so the workflow can fail on first run. Also "using the critique report template" is ambiguous—other commands reference the canonical template path (e.g., templates/tasks-template.md); consider explicitly pointing to templates/critique-template.md as the required structure source.
| Create the critique report at `FEATURE_DIR/critiques/critique-{timestamp}.md` using the critique report template. The report must include: | |
| Ensure the directory `FEATURE_DIR/critiques/` exists (create it if necessary), then create the critique report at `FEATURE_DIR/critiques/critique-{timestamp}.md` using `templates/critique-template.md` as the required structure. The report must include: |
| | Product findings | [count] | | ||
| | Engineering findings | [count] | | ||
| | Cross-lens findings | [count] | | ||
|
|
There was a problem hiding this comment.
The command template requires a consolidated "Findings Summary Table" listing all items with ID/lens/severity/category/finding/suggestion, but critique-template.md only has a metrics/count summary plus per-section tables. Add the consolidated findings table section (matching the format described in /templates/commands/critique.md) or relax the command requirements so the template and command stay in sync.
| ### Consolidated Findings Table | |
| | ID | Lens | Severity | Category | Finding | Suggestion | | |
| |----|------|----------|----------|---------|------------| | |
| | [ID] | [Product / Engineering / Cross-lens] | 🎯/💡/🤔 | [category] | [finding] | [suggestion] | |
|
Please deliver this as an extension. See https://github.com/github/spec-kit/tree/main/extensions |
- Drop --require-tasks from prerequisites (critique runs before tasks) - Clarify READ-ONLY constraint: existing artifacts read-only, new critique report allowed - Reference templates/critique-template.md explicitly and ensure dir exists - Add consolidated findings table to critique-template.md
|
Thanks for the review! All 4 comments addressed in the latest push:
|
|
Please review https://github.com/github/spec-kit/blob/main/extensions/EXTENSION-PUBLISHING-GUIDE.md for publishing a community hosted extension |
|
Thanks @mnriem! I've reviewed the Extension Publishing Guide. Will restructure this as a community extension following the extension.yml manifest pattern and resubmit as an extension contribution to catalog.community.json. |
|
Closing in favor of PR #2049 — restructured as a community extension per maintainer feedback. Extension repo and v1.0.0 release are available. |
Description
Problem
Spec-Kit currently has no mechanism to challenge a specification or plan before committing to implementation. The existing
/speckit.analyzecommand checks cross-artifact consistency (spec ↔ plan ↔ tasks), but it does not question whether the right problem is being solved or whether the technical approach is sound. This means teams can invest significant effort implementing a well-structured but fundamentally flawed plan — discovering strategic misalignment or architectural risks only after code is written.Industry context: Garry Tan (Y Combinator President) demonstrated with GStack that separating product review (
/plan-ceo-review) from engineering review (/plan-eng-review) catches blind spots that a single-pass review misses. This PR brings that same dual-lens discipline to Spec Kit.Solution
Adds
/speckit.critique— a new core command that performs a structured critical review ofspec.mdandplan.mdthrough two distinct expert lenses before implementation begins:Product Lens (CEO/Product Lead perspective):
Engineering Lens (Staff Engineer perspective):
Output: Structured critique report with severity classification (🎯 Must-Address / 💡 Recommendation / 🤔 Question) and verdict (PROCEED / PROCEED WITH UPDATES / RETHINK).
Business Value
Workflow Position
Files Added
templates/commands/critique.mdbefore_critique,after_critique)templates/critique-template.mdTesting
uv run specify --helpuv sync && uv run pytest— 878/972 pass (44 failures are pre-existing, unrelated to this change)specify initthrough the existingtemplates/commands/discovery mechanismAI Disclosure
implement.mdandanalyze.md. All content was reviewed and validated against the project's template conventions.