User Input
$ARGUMENTS
You MUST consider the user input before proceeding (if not empty).
Pre-Execution Checks
Check for extension hooks (before critique):
- Check if
.specify/extensions.yml exists in the project root.
- If it exists, read it and look for entries under the
hooks.before_critique key
- If the YAML cannot be parsed or is invalid, skip hook checking silently and continue normally
- Filter out hooks where
enabled is explicitly false. Treat hooks without an enabled field as enabled by default.
- For each remaining hook, do not attempt to interpret or evaluate hook
condition expressions:
- If the hook has no
condition field, or it is null/empty, treat the hook as executable
- If the hook defines a non-empty
condition, skip the hook and leave condition evaluation to the HookExecutor implementation
- For each executable hook, output the following based on its
optional flag:
- Optional hook (
optional: true):## Extension Hooks
**Optional Pre-Hook**: {extension}
Command: `/{command}`
Description: {description}
Prompt: {prompt}
To execute: `/{command}`
- Mandatory hook (
optional: false):## Extension Hooks
**Automatic Pre-Hook**: {extension}
Executing: `/{command}`
EXECUTE_COMMAND: {command}
Wait for the result of the hook command before proceeding to the Outline.
- If no hooks are registered or
.specify/extensions.yml does not exist, skip silently
Goal
Challenge the specification and implementation plan through two distinct expert lenses BEFORE committing to implementation. The Product Lens evaluates whether the right problem is being solved in the right way for users. The Engineering Lens evaluates whether the technical approach is sound, scalable, and free of hidden risks. This dual review prevents costly mid-implementation pivots and catches strategic and technical blind spots early.
Operating Constraints
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.
CONSTRUCTIVE CHALLENGE: The goal is to strengthen the spec and plan, not to block progress. Every critique item must include a constructive suggestion for improvement.
Constitution Authority: The project constitution (.specify/memory/constitution.md) defines non-negotiable principles. Any spec/plan element conflicting with the constitution is automatically a 🎯 Must-Address item.
Outline
Run .specify/scripts/bash/check-prerequisites.sh --json --include-tasks from repo root and parse FEATURE_DIR and AVAILABLE_DOCS list. All paths must be absolute. For single quotes in args like "I'm Groot", use escape syntax: e.g 'I'''m Groot' (or double-quote if possible: "I'm Groot").
Load Critique Context:
- REQUIRED: Read
spec.md for requirements, user stories, and acceptance criteria
- REQUIRED: Read
plan.md for architecture, tech stack, and implementation phases
- IF EXISTS: Read
.specify/memory/constitution.md for governing principles
- IF EXISTS: Read
tasks.md for task breakdown (if already generated)
- IF EXISTS: Read previous critique reports in FEATURE_DIR/critiques/ for context
Product Lens Review (CEO/Product Lead Perspective):
Adopt the mindset of an experienced product leader who cares deeply about user value, market fit, and business impact. Evaluate:
3a. Problem Validation
- Is the problem statement clear and well-defined?
- Is this solving a real user pain point, or is it a solution looking for a problem?
- What evidence supports the need for this feature? (user research, data, customer requests)
- Is the scope appropriate — not too broad (trying to do everything) or too narrow (missing the core value)?
3b. User Value Assessment
- Does every user story deliver tangible user value?
- Are the acceptance criteria written from the user's perspective (outcomes, not implementation)?
- Is the user journey complete — or are there gaps where users would get stuck?
- What's the simplest version that would deliver 80% of the value? (MVP analysis)
- Are there unnecessary features that add complexity without proportional value?
3c. Alternative Approaches
- Could a simpler solution achieve the same outcome?
- Are there existing tools, libraries, or services that could replace custom implementation?
- What would a competitor's approach look like?
- What would happen if this feature were NOT built? What's the cost of inaction?
3d. Edge Cases & User Experience
- What happens when things go wrong? (error states, empty states, loading states)
- How does this feature interact with existing functionality?
- Are accessibility considerations addressed?
- Is the feature discoverable and intuitive?
- What are the onboarding/migration implications for existing users?
3e. Success Measurement
- Are the success criteria measurable and time-bound?
- How will you know if this feature is successful after launch?
- What metrics should be tracked?
- What would trigger a rollback decision?
Engineering Lens Review (Staff Engineer Perspective):
Adopt the mindset of a senior staff engineer who has seen projects fail due to hidden technical risks. Evaluate:
4a. Architecture Soundness
- Does the architecture follow established patterns for this type of system?
- Are boundaries and interfaces well-defined (separation of concerns)?
- Is the architecture testable at each layer?
- Are there circular dependencies or tight coupling risks?
- Does the architecture support future evolution without major refactoring?
4b. Failure Mode Analysis
- What are the most likely failure modes? (network failures, data corruption, resource exhaustion)
- How does the system degrade gracefully under each failure mode?
- What happens under peak load? Is there a scaling bottleneck?
- What are the blast radius implications — can a failure in this feature affect other parts of the system?
- Are retry, timeout, and circuit-breaker strategies defined?
4c. Security & Privacy Review
- What is the threat model? What attack vectors does this feature introduce?
- Are trust boundaries clearly defined (user input, API responses, third-party data)?
- Is sensitive data handled appropriately (encryption, access control, retention)?
- Are there compliance implications (GDPR, SOC2, HIPAA)?
- Is the principle of least privilege followed?
4d. Performance & Scalability
- Are there potential bottlenecks in the data flow?
- What are the expected data volumes? Will the design handle 10x growth?
- Are caching strategies appropriate and cache invalidation well-defined?
- Are database queries optimized (indexing, pagination, query complexity)?
- Are there resource-intensive operations that should be async or batched?
4e. Testing Strategy
- Is the testing plan comprehensive (unit, integration, E2E)?
- Are the critical paths identified for priority testing?
- Is the test data strategy realistic?
- Are there testability concerns (hard-to-mock dependencies, race conditions)?
- Is the test coverage target appropriate for the risk level?
4f. Operational Readiness
- Is observability planned (logging, metrics, tracing)?
- Are alerting thresholds defined?
- Is there a rollback strategy?
- Are database migrations reversible?
- Is the deployment strategy clear (blue-green, canary, feature flags)?
4g. Dependencies & Integration Risks
- Are third-party dependencies well-understood (stability, licensing, maintenance)?
- Are integration points with existing systems well-defined?
- What happens if an external service is unavailable?
- Are API versioning and backward compatibility considered?
Cross-Lens Synthesis:
Identify items where both lenses converge (these are highest priority):
- Product simplification that also reduces engineering risk
- Engineering constraints that affect user experience
- Scope adjustments that improve both value delivery and technical feasibility
Severity Classification:
Classify each finding:
- 🎯 Must-Address: Blocks proceeding to implementation. Critical product gap, security vulnerability, architecture flaw, or constitution violation. Must be resolved before
/speckit.tasks.
- 💡 Recommendation: Strongly suggested improvement that would significantly improve quality, value, or risk profile. Should be addressed but won't block progress.
- 🤔 Question: Ambiguity or assumption that needs stakeholder input. Cannot be resolved by the development team alone.
Generate Critique Report:
Ensure the directory FEATURE_DIR/critiques/ exists (create it if necessary), then create the critique report at FEATURE_DIR/critiques/critique-{timestamp}.md using .specify/templates/critique-template.md as the required structure. The report must include:
- Executive Summary: Overall assessment and readiness to proceed
- Product Lens Findings: Organized by subcategory (3a-3e)
- Engineering Lens Findings: Organized by subcategory (4a-4g)
- Cross-Lens Insights: Items where both perspectives converge
- Findings Summary Table: All items with ID, lens, severity, summary, suggestion
Findings Table Format:
| ID |
Lens |
Severity |
Category |
Finding |
Suggestion |
| P1 |
Product |
🎯 |
Problem Validation |
No evidence of user need |
Conduct 5 user interviews or reference support tickets |
| E1 |
Engineering |
💡 |
Failure Modes |
No retry strategy for API calls |
Add exponential backoff with circuit breaker |
| X1 |
Both |
🎯 |
Scope × Risk |
Feature X adds complexity with unclear value |
Defer to v2; reduces both scope and technical risk |
Provide Verdict:
Based on findings, provide one of:
- ✅ PROCEED: No must-address items. Spec and plan are solid. Run
/speckit.tasks to proceed.
- ⚠️ PROCEED WITH UPDATES: Must-address items found but are resolvable. Offer to apply fixes to spec/plan, then proceed.
- 🛑 RETHINK: Fundamental product or architecture concerns. Recommend revisiting the spec with
/speckit.specify or the plan with /speckit.plan.
Offer Remediation:
For each must-address item and recommendation:
- Provide a specific suggested edit to
spec.md or plan.md
- Ask: "Would you like me to apply these changes? (all / select / none)"
- If user approves, apply changes to the relevant files
- After applying changes, recommend re-running
/speckit.critique to verify
Post-Critique Actions
Suggest next steps based on verdict:
- If PROCEED: "Run
/speckit.tasks to break the plan into actionable tasks"
- If PROCEED WITH UPDATES: "Review the suggested changes, then run
/speckit.tasks"
- If RETHINK: "Consider running
/speckit.specify to refine the spec or /speckit.plan to revise the architecture"
Check for extension hooks (after critique):
- Check if
.specify/extensions.yml exists in the project root.
- If it exists, read it and look for entries under the
hooks.after_critique key
- If the YAML cannot be parsed or is invalid, skip hook checking silently and continue normally
- Filter out hooks where
enabled is explicitly false. Treat hooks without an enabled field as enabled by default.
- For each remaining hook, do not attempt to interpret or evaluate hook
condition expressions:
- If the hook has no
condition field, or it is null/empty, treat the hook as executable
- If the hook defines a non-empty
condition, skip the hook and leave condition evaluation to the HookExecutor implementation
- For each executable hook, output the following based on its
optional flag:
- Optional hook (
optional: true):## Extension Hooks
**Optional Hook**: {extension}
Command: `/{command}`
Description: {description}
Prompt: {prompt}
To execute: `/{command}`
- Mandatory hook (
optional: false):## Extension Hooks
**Automatic Hook**: {extension}
Executing: `/{command}`
EXECUTE_COMMAND: {command}
- If no hooks are registered or
.specify/extensions.yml does not exist, skip silently
1---2name: speckit-critique-run3description: Perform a dual-lens critical review of the specification and plan from both product strategy and engineering risk perspectives before implementation.4---56## User Input78```text9$ARGUMENTS10```1112You **MUST** consider the user input before proceeding (if not empty).1314## Pre-Execution Checks1516**Check for extension hooks (before critique)**:17- Check if `.specify/extensions.yml` exists in the project root.18- If it exists, read it and look for entries under the `hooks.before_critique` key19- If the YAML cannot be parsed or is invalid, skip hook checking silently and continue normally20- Filter out hooks where `enabled` is explicitly `false`. Treat hooks without an `enabled` field as enabled by default.21- For each remaining hook, do **not** attempt to interpret or evaluate hook `condition` expressions:22 - If the hook has no `condition` field, or it is null/empty, treat the hook as executable23 - If the hook defines a non-empty `condition`, skip the hook and leave condition evaluation to the HookExecutor implementation24- For each executable hook, output the following based on its `optional` flag:25 - **Optional hook** (`optional: true`):26 ```27 ## Extension Hooks2829 **Optional Pre-Hook**: {extension}30 Command: `/{command}`31 Description: {description}3233 Prompt: {prompt}34 To execute: `/{command}`35 ```36 - **Mandatory hook** (`optional: false`):37 ```38 ## Extension Hooks3940 **Automatic Pre-Hook**: {extension}41 Executing: `/{command}`42 EXECUTE_COMMAND: {command}4344 Wait for the result of the hook command before proceeding to the Outline.45 ```46- If no hooks are registered or `.specify/extensions.yml` does not exist, skip silently4748## Goal4950Challenge the specification and implementation plan through two distinct expert lenses BEFORE committing to implementation. The **Product Lens** evaluates whether the right problem is being solved in the right way for users. The **Engineering Lens** evaluates whether the technical approach is sound, scalable, and free of hidden risks. This dual review prevents costly mid-implementation pivots and catches strategic and technical blind spots early.5152## Operating Constraints5354**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.5556**CONSTRUCTIVE CHALLENGE**: The goal is to strengthen the spec and plan, not to block progress. Every critique item must include a constructive suggestion for improvement.5758**Constitution Authority**: The project constitution (`.specify/memory/constitution.md`) defines non-negotiable principles. Any spec/plan element conflicting with the constitution is automatically a 🎯 Must-Address item.5960## Outline61621. Run `.specify/scripts/bash/check-prerequisites.sh --json --include-tasks` from repo root and parse FEATURE_DIR and AVAILABLE_DOCS list. All paths must be absolute. For single quotes in args like "I'm Groot", use escape syntax: e.g 'I'''m Groot' (or double-quote if possible: "I'm Groot").63642. **Load Critique Context**:65 - **REQUIRED**: Read `spec.md` for requirements, user stories, and acceptance criteria66 - **REQUIRED**: Read `plan.md` for architecture, tech stack, and implementation phases67 - **IF EXISTS**: Read `.specify/memory/constitution.md` for governing principles68 - **IF EXISTS**: Read `tasks.md` for task breakdown (if already generated)69 - **IF EXISTS**: Read previous critique reports in FEATURE_DIR/critiques/ for context70713. **Product Lens Review** (CEO/Product Lead Perspective):7273 Adopt the mindset of an experienced product leader who cares deeply about user value, market fit, and business impact. Evaluate:7475 #### 3a. Problem Validation76 - Is the problem statement clear and well-defined?77 - Is this solving a real user pain point, or is it a solution looking for a problem?78 - What evidence supports the need for this feature? (user research, data, customer requests)79 - Is the scope appropriate — not too broad (trying to do everything) or too narrow (missing the core value)?8081 #### 3b. User Value Assessment82 - Does every user story deliver tangible user value?83 - Are the acceptance criteria written from the user's perspective (outcomes, not implementation)?84 - Is the user journey complete — or are there gaps where users would get stuck?85 - What's the simplest version that would deliver 80% of the value? (MVP analysis)86 - Are there unnecessary features that add complexity without proportional value?8788 #### 3c. Alternative Approaches89 - Could a simpler solution achieve the same outcome?90 - Are there existing tools, libraries, or services that could replace custom implementation?91 - What would a competitor's approach look like?92 - What would happen if this feature were NOT built? What's the cost of inaction?9394 #### 3d. Edge Cases & User Experience95 - What happens when things go wrong? (error states, empty states, loading states)96 - How does this feature interact with existing functionality?97 - Are accessibility considerations addressed?98 - Is the feature discoverable and intuitive?99 - What are the onboarding/migration implications for existing users?100101 #### 3e. Success Measurement102 - Are the success criteria measurable and time-bound?103 - How will you know if this feature is successful after launch?104 - What metrics should be tracked?105 - What would trigger a rollback decision?1061074. **Engineering Lens Review** (Staff Engineer Perspective):108109 Adopt the mindset of a senior staff engineer who has seen projects fail due to hidden technical risks. Evaluate:110111 #### 4a. Architecture Soundness112 - Does the architecture follow established patterns for this type of system?113 - Are boundaries and interfaces well-defined (separation of concerns)?114 - Is the architecture testable at each layer?115 - Are there circular dependencies or tight coupling risks?116 - Does the architecture support future evolution without major refactoring?117118 #### 4b. Failure Mode Analysis119 - What are the most likely failure modes? (network failures, data corruption, resource exhaustion)120 - How does the system degrade gracefully under each failure mode?121 - What happens under peak load? Is there a scaling bottleneck?122 - What are the blast radius implications — can a failure in this feature affect other parts of the system?123 - Are retry, timeout, and circuit-breaker strategies defined?124125 #### 4c. Security & Privacy Review126 - What is the threat model? What attack vectors does this feature introduce?127 - Are trust boundaries clearly defined (user input, API responses, third-party data)?128 - Is sensitive data handled appropriately (encryption, access control, retention)?129 - Are there compliance implications (GDPR, SOC2, HIPAA)?130 - Is the principle of least privilege followed?131132 #### 4d. Performance & Scalability133 - Are there potential bottlenecks in the data flow?134 - What are the expected data volumes? Will the design handle 10x growth?135 - Are caching strategies appropriate and cache invalidation well-defined?136 - Are database queries optimized (indexing, pagination, query complexity)?137 - Are there resource-intensive operations that should be async or batched?138139 #### 4e. Testing Strategy140 - Is the testing plan comprehensive (unit, integration, E2E)?141 - Are the critical paths identified for priority testing?142 - Is the test data strategy realistic?143 - Are there testability concerns (hard-to-mock dependencies, race conditions)?144 - Is the test coverage target appropriate for the risk level?145146 #### 4f. Operational Readiness147 - Is observability planned (logging, metrics, tracing)?148 - Are alerting thresholds defined?149 - Is there a rollback strategy?150 - Are database migrations reversible?151 - Is the deployment strategy clear (blue-green, canary, feature flags)?152153 #### 4g. Dependencies & Integration Risks154 - Are third-party dependencies well-understood (stability, licensing, maintenance)?155 - Are integration points with existing systems well-defined?156 - What happens if an external service is unavailable?157 - Are API versioning and backward compatibility considered?1581595. **Cross-Lens Synthesis**:160 Identify items where both lenses converge (these are highest priority):161 - Product simplification that also reduces engineering risk162 - Engineering constraints that affect user experience163 - Scope adjustments that improve both value delivery and technical feasibility1641656. **Severity Classification**:166 Classify each finding:167168 - 🎯 **Must-Address**: Blocks proceeding to implementation. Critical product gap, security vulnerability, architecture flaw, or constitution violation. Must be resolved before `/speckit.tasks`.169 - 💡 **Recommendation**: Strongly suggested improvement that would significantly improve quality, value, or risk profile. Should be addressed but won't block progress.170 - 🤔 **Question**: Ambiguity or assumption that needs stakeholder input. Cannot be resolved by the development team alone.1711727. **Generate Critique Report**:173 Ensure the directory `FEATURE_DIR/critiques/` exists (create it if necessary), then create the critique report at `FEATURE_DIR/critiques/critique-{timestamp}.md` using `.specify/templates/critique-template.md` as the required structure. The report must include:174175 - **Executive Summary**: Overall assessment and readiness to proceed176 - **Product Lens Findings**: Organized by subcategory (3a-3e)177 - **Engineering Lens Findings**: Organized by subcategory (4a-4g)178 - **Cross-Lens Insights**: Items where both perspectives converge179 - **Findings Summary Table**: All items with ID, lens, severity, summary, suggestion180181 **Findings Table Format**:182 | ID | Lens | Severity | Category | Finding | Suggestion |183 |----|------|----------|----------|---------|------------|184 | P1 | Product | 🎯 | Problem Validation | No evidence of user need | Conduct 5 user interviews or reference support tickets |185 | E1 | Engineering | 💡 | Failure Modes | No retry strategy for API calls | Add exponential backoff with circuit breaker |186 | X1 | Both | 🎯 | Scope × Risk | Feature X adds complexity with unclear value | Defer to v2; reduces both scope and technical risk |1871888. **Provide Verdict**:189 Based on findings, provide one of:190 - ✅ **PROCEED**: No must-address items. Spec and plan are solid. Run `/speckit.tasks` to proceed.191 - ⚠️ **PROCEED WITH UPDATES**: Must-address items found but are resolvable. Offer to apply fixes to spec/plan, then proceed.192 - 🛑 **RETHINK**: Fundamental product or architecture concerns. Recommend revisiting the spec with `/speckit.specify` or the plan with `/speckit.plan`.1931949. **Offer Remediation**:195 For each must-address item and recommendation:196 - Provide a specific suggested edit to `spec.md` or `plan.md`197 - Ask: "Would you like me to apply these changes? (all / select / none)"198 - If user approves, apply changes to the relevant files199 - After applying changes, recommend re-running `/speckit.critique` to verify200201## Post-Critique Actions202203Suggest next steps based on verdict:204- If PROCEED: "Run `/speckit.tasks` to break the plan into actionable tasks"205- If PROCEED WITH UPDATES: "Review the suggested changes, then run `/speckit.tasks`"206- If RETHINK: "Consider running `/speckit.specify` to refine the spec or `/speckit.plan` to revise the architecture"207208**Check for extension hooks (after critique)**:209- Check if `.specify/extensions.yml` exists in the project root.210- If it exists, read it and look for entries under the `hooks.after_critique` key211- If the YAML cannot be parsed or is invalid, skip hook checking silently and continue normally212- Filter out hooks where `enabled` is explicitly `false`. Treat hooks without an `enabled` field as enabled by default.213- For each remaining hook, do **not** attempt to interpret or evaluate hook `condition` expressions:214 - If the hook has no `condition` field, or it is null/empty, treat the hook as executable215 - If the hook defines a non-empty `condition`, skip the hook and leave condition evaluation to the HookExecutor implementation216- For each executable hook, output the following based on its `optional` flag:217 - **Optional hook** (`optional: true`):218 ```219 ## Extension Hooks220221 **Optional Hook**: {extension}222 Command: `/{command}`223 Description: {description}224225 Prompt: {prompt}226 To execute: `/{command}`227 ```228 - **Mandatory hook** (`optional: false`):229 ```230 ## Extension Hooks231232 **Automatic Hook**: {extension}233 Executing: `/{command}`234 EXECUTE_COMMAND: {command}235 ```236- If no hooks are registered or `.specify/extensions.yml` does not exist, skip silently