一键导入
speckit-critique-run
// Perform a dual-lens critical review of the specification and plan from both product strategy and engineering risk perspectives before implementation.
// Perform a dual-lens critical review of the specification and plan from both product strategy and engineering risk perspectives before implementation.
Archive a feature specification into main project memory after merge, resolving gaps and conflicts
Run the full speckit workflow end-to-end — specify, plan, critique, tasks, implement, review, extract — making all decisions autonomously.
Extract knowledge, guidelines, and ADRs from one or more completed spec directories into the project documentation system.
Run a session retrospective that surfaces context-management gaps and routes them to approved follow-up actions.
Produce a flow-level summary of the current Claude Code session — executive summary, chronological timeline, and outcomes — written into the active feature directory next to spec.md / plan.md.
| name | speckit-critique-run |
| description | Perform a dual-lens critical review of the specification and plan from both product strategy and engineering risk perspectives before implementation. |
| compatibility | Requires spec-kit project structure with .specify/ directory |
| metadata | {"author":"github-spec-kit","source":"critique:commands/run.md"} |
$ARGUMENTS
You MUST consider the user input before proceeding (if not empty).
Check for extension hooks (before critique):
.specify/extensions.yml exists in the project root.hooks.before_critique keyenabled is explicitly false. Treat hooks without an enabled field as enabled by default.condition expressions:
condition field, or it is null/empty, treat the hook as executablecondition, skip the hook and leave condition evaluation to the HookExecutor implementationoptional flag:
optional: true):
## Extension Hooks
**Optional Pre-Hook**: {extension}
Command: `/{command}`
Description: {description}
Prompt: {prompt}
To execute: `/{command}`
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.
.specify/extensions.yml does not exist, skip silentlyChallenge 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.
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.
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:
spec.md for requirements, user stories, and acceptance criteriaplan.md for architecture, tech stack, and implementation phases.specify/memory/constitution.md for governing principlestasks.md for task breakdown (if already generated)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:
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:
Cross-Lens Synthesis: Identify items where both lenses converge (these are highest priority):
Severity Classification: Classify each finding:
/speckit.tasks.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:
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:
/speckit.tasks to proceed./speckit.specify or the plan with /speckit.plan.Offer Remediation: For each must-address item and recommendation:
spec.md or plan.md/speckit.critique to verifySuggest next steps based on verdict:
/speckit.tasks to break the plan into actionable tasks"/speckit.tasks"/speckit.specify to refine the spec or /speckit.plan to revise the architecture"Check for extension hooks (after critique):
.specify/extensions.yml exists in the project root.hooks.after_critique keyenabled is explicitly false. Treat hooks without an enabled field as enabled by default.condition expressions:
condition field, or it is null/empty, treat the hook as executablecondition, skip the hook and leave condition evaluation to the HookExecutor implementationoptional flag:
optional: true):
## Extension Hooks
**Optional Hook**: {extension}
Command: `/{command}`
Description: {description}
Prompt: {prompt}
To execute: `/{command}`
optional: false):
## Extension Hooks
**Automatic Hook**: {extension}
Executing: `/{command}`
EXECUTE_COMMAND: {command}
.specify/extensions.yml does not exist, skip silently