User Input
$ARGUMENTS
You MUST consider the user input before proceeding (if not empty).
Pre-Execution Checks
Check for extension hooks (before analysis):
- Check if
.specify/extensions.yml exists in the project root.
- If it exists, read it and look for entries under the
hooks.before_analyze 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
- When constructing slash commands from hook command names, replace dots (
.) with hyphens (-). For example, speckit.git.commit → /speckit-git-commit.
- 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 Goal.
- If no hooks are registered or
.specify/extensions.yml does not exist, skip silently
Goal
Identify inconsistencies, duplications, ambiguities, and underspecified items across the three core artifacts (spec.md, plan.md, tasks.md) before implementation. This command MUST run only after /speckit.tasks has successfully produced a complete tasks.md.
Operating Constraints
STRICTLY READ-ONLY: Do not modify any files. Output a structured analysis report. Offer an optional remediation plan (user must explicitly approve before any follow-up editing commands would be invoked manually).
Constitution Authority: The project constitution (.specify/memory/constitution.md) is non-negotiable within this analysis scope. Constitution conflicts are automatically CRITICAL and require adjustment of the spec, plan, or tasks—not dilution, reinterpretation, or silent ignoring of the principle. If a principle itself needs to change, that must occur in a separate, explicit constitution update outside /speckit.analyze.
Execution Steps
1. Initialize Analysis Context
Run .specify/scripts/powershell/check-prerequisites.ps1 -Json -RequireTasks -IncludeTasks once from repo root and parse JSON for FEATURE_DIR and AVAILABLE_DOCS. Derive absolute paths:
- SPEC = FEATURE_DIR/spec.md
- PLAN = FEATURE_DIR/plan.md
- TASKS = FEATURE_DIR/tasks.md
Abort with an error message if any required file is missing (instruct the user to run missing prerequisite command).
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").
2. Load Artifacts (Progressive Disclosure)
Load only the minimal necessary context from each artifact:
From spec.md:
- Overview/Context
- Functional Requirements
- Success Criteria (measurable outcomes — e.g., performance, security, availability, user success, business impact)
- User Stories
- Edge Cases (if present)
From plan.md:
- Architecture/stack choices
- Data Model references
- Phases
- Technical constraints
From tasks.md:
- Task IDs
- Descriptions
- Phase grouping
- Parallel markers [P]
- Referenced file paths
From constitution:
- Load
.specify/memory/constitution.md for principle validation
3. Build Semantic Models
Create internal representations (do not include raw artifacts in output):
- Requirements inventory: For each Functional Requirement (FR-###) and Success Criterion (SC-###), record a stable key. Use the explicit FR-/SC- identifier as the primary key when present, and optionally also derive an imperative-phrase slug for readability (e.g., "User can upload file" →
user-can-upload-file). Include only Success Criteria items that require buildable work (e.g., load-testing infrastructure, security audit tooling), and exclude post-launch outcome metrics and business KPIs (e.g., "Reduce support tickets by 50%").
- User story/action inventory: Discrete user actions with acceptance criteria
- Task coverage mapping: Map each task to one or more requirements or stories (inference by keyword / explicit reference patterns like IDs or key phrases)
- Constitution rule set: Extract principle names and MUST/SHOULD normative statements
4. Detection Passes (Token-Efficient Analysis)
Focus on high-signal findings. Limit to 50 findings total; aggregate remainder in overflow summary.
A. Duplication Detection
- Identify near-duplicate requirements
- Mark lower-quality phrasing for consolidation
B. Ambiguity Detection
- Flag vague adjectives (fast, scalable, secure, intuitive, robust) lacking measurable criteria
- Flag unresolved placeholders (TODO, TKTK, ???,
<placeholder>, etc.)
C. Underspecification
- Requirements with verbs but missing object or measurable outcome
- User stories missing acceptance criteria alignment
- Tasks referencing files or components not defined in spec/plan
D. Constitution Alignment
- Any requirement or plan element conflicting with a MUST principle
- Missing mandated sections or quality gates from constitution
E. Coverage Gaps
- Requirements with zero associated tasks
- Tasks with no mapped requirement/story
- Success Criteria requiring buildable work (performance, security, availability) not reflected in tasks
F. Inconsistency
- Terminology drift (same concept named differently across files)
- Data entities referenced in plan but absent in spec (or vice versa)
- Task ordering contradictions (e.g., integration tasks before foundational setup tasks without dependency note)
- Conflicting requirements (e.g., one requires Next.js while other specifies Vue)
5. Severity Assignment
Use this heuristic to prioritize findings:
- CRITICAL: Violates constitution MUST, missing core spec artifact, or requirement with zero coverage that blocks baseline functionality
- HIGH: Duplicate or conflicting requirement, ambiguous security/performance attribute, untestable acceptance criterion
- MEDIUM: Terminology drift, missing non-functional task coverage, underspecified edge case
- LOW: Style/wording improvements, minor redundancy not affecting execution order
6. Produce Compact Analysis Report
Output a Markdown report (no file writes) with the following structure:
Specification Analysis Report
| ID |
Category |
Severity |
Location(s) |
Summary |
Recommendation |
| A1 |
Duplication |
HIGH |
spec.md:L120-134 |
Two similar requirements ... |
Merge phrasing; keep clearer version |
(Add one row per finding; generate stable IDs prefixed by category initial.)
Coverage Summary Table:
| Requirement Key |
Has Task? |
Task IDs |
Notes |
Constitution Alignment Issues: (if any)
Unmapped Tasks: (if any)
Metrics:
- Total Requirements
- Total Tasks
- Coverage % (requirements with >=1 task)
- Ambiguity Count
- Duplication Count
- Critical Issues Count
7. Provide Next Actions
At end of report, output a concise Next Actions block:
- If CRITICAL issues exist: Recommend resolving before
/speckit.implement
- If only LOW/MEDIUM: User may proceed, but provide improvement suggestions
- Provide explicit command suggestions: e.g., "Run /speckit.specify with refinement", "Run /speckit.plan to adjust architecture", "Manually edit tasks.md to add coverage for 'performance-metrics'"
8. Offer Remediation
Ask the user: "Would you like me to suggest concrete remediation edits for the top N issues?" (Do NOT apply them automatically.)
9. Check for extension hooks
After reporting, check if .specify/extensions.yml exists in the project root.
- If it exists, read it and look for entries under the
hooks.after_analyze 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
- When constructing slash commands from hook command names, replace dots (
.) with hyphens (-). For example, speckit.git.commit → /speckit-git-commit.
- 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
Operating Principles
Context Efficiency
- Minimal high-signal tokens: Focus on actionable findings, not exhaustive documentation
- Progressive disclosure: Load artifacts incrementally; don't dump all content into analysis
- Token-efficient output: Limit findings table to 50 rows; summarize overflow
- Deterministic results: Rerunning without changes should produce consistent IDs and counts
Analysis Guidelines
- NEVER modify files (this is read-only analysis)
- NEVER hallucinate missing sections (if absent, report them accurately)
- Prioritize constitution violations (these are always CRITICAL)
- Use examples over exhaustive rules (cite specific instances, not generic patterns)
- Report zero issues gracefully (emit success report with coverage statistics)
Context
$ARGUMENTS
1---2name: speckit-analyze3description: Perform a non-destructive cross-artifact consistency and quality analysis across spec.md, plan.md, and tasks.md after task generation.4---5
6
7## User Input
8
9```text
10$ARGUMENTS
11```
12
13You **MUST** consider the user input before proceeding (if not empty).
14
15## Pre-Execution Checks
16
17**Check for extension hooks (before analysis)**:
18- Check if `.specify/extensions.yml` exists in the project root.
19- If it exists, read it and look for entries under the `hooks.before_analyze` key
20- If the YAML cannot be parsed or is invalid, skip hook checking silently and continue normally
21- Filter out hooks where `enabled` is explicitly `false`. Treat hooks without an `enabled` field as enabled by default.
22- For each remaining hook, do **not** attempt to interpret or evaluate hook `condition` expressions:
23 - If the hook has no `condition` field, or it is null/empty, treat the hook as executable
24 - If the hook defines a non-empty `condition`, skip the hook and leave condition evaluation to the HookExecutor implementation
25- When constructing slash commands from hook command names, replace dots (`.`) with hyphens (`-`). For example, `speckit.git.commit` → `/speckit-git-commit`.
26- For each executable hook, output the following based on its `optional` flag:
27 - **Optional hook** (`optional: true`):
28 ```
29 ## Extension Hooks
30
31 **Optional Pre-Hook**: {extension}
32 Command: `/{command}`
33 Description: {description}
34
35 Prompt: {prompt}
36 To execute: `/{command}`
37 ```
38 - **Mandatory hook** (`optional: false`):
39 ```
40 ## Extension Hooks
41
42 **Automatic Pre-Hook**: {extension}
43 Executing: `/{command}`
44 EXECUTE_COMMAND: {command}
45
46 Wait for the result of the hook command before proceeding to the Goal.
47 ```
48- If no hooks are registered or `.specify/extensions.yml` does not exist, skip silently
49
50## Goal
51
52Identify inconsistencies, duplications, ambiguities, and underspecified items across the three core artifacts (`spec.md`, `plan.md`, `tasks.md`) before implementation. This command MUST run only after `/speckit.tasks` has successfully produced a complete `tasks.md`.
53
54## Operating Constraints
55
56**STRICTLY READ-ONLY**: Do **not** modify any files. Output a structured analysis report. Offer an optional remediation plan (user must explicitly approve before any follow-up editing commands would be invoked manually).
57
58**Constitution Authority**: The project constitution (`.specify/memory/constitution.md`) is **non-negotiable** within this analysis scope. Constitution conflicts are automatically CRITICAL and require adjustment of the spec, plan, or tasks—not dilution, reinterpretation, or silent ignoring of the principle. If a principle itself needs to change, that must occur in a separate, explicit constitution update outside `/speckit.analyze`.
59
60## Execution Steps
61
62### 1. Initialize Analysis Context
63
64Run `.specify/scripts/powershell/check-prerequisites.ps1 -Json -RequireTasks -IncludeTasks` once from repo root and parse JSON for FEATURE_DIR and AVAILABLE_DOCS. Derive absolute paths:
65
66- SPEC = FEATURE_DIR/spec.md
67- PLAN = FEATURE_DIR/plan.md
68- TASKS = FEATURE_DIR/tasks.md
69
70Abort with an error message if any required file is missing (instruct the user to run missing prerequisite command).
71For single quotes in args like "I'm Groot", use escape syntax: e.g 'I'''m Groot' (or double-quote if possible: "I'm Groot").
72
73### 2. Load Artifacts (Progressive Disclosure)
74
75Load only the minimal necessary context from each artifact:
76
77**From spec.md:**
78
79- Overview/Context
80- Functional Requirements
81- Success Criteria (measurable outcomes — e.g., performance, security, availability, user success, business impact)
82- User Stories
83- Edge Cases (if present)
84
85**From plan.md:**
86
87- Architecture/stack choices
88- Data Model references
89- Phases
90- Technical constraints
91
92**From tasks.md:**
93
94- Task IDs
95- Descriptions
96- Phase grouping
97- Parallel markers [P]
98- Referenced file paths
99
100**From constitution:**
101
102- Load `.specify/memory/constitution.md` for principle validation
103
104### 3. Build Semantic Models
105
106Create internal representations (do not include raw artifacts in output):
107
108- **Requirements inventory**: For each Functional Requirement (FR-###) and Success Criterion (SC-###), record a stable key. Use the explicit FR-/SC- identifier as the primary key when present, and optionally also derive an imperative-phrase slug for readability (e.g., "User can upload file" → `user-can-upload-file`). Include only Success Criteria items that require buildable work (e.g., load-testing infrastructure, security audit tooling), and exclude post-launch outcome metrics and business KPIs (e.g., "Reduce support tickets by 50%").
109- **User story/action inventory**: Discrete user actions with acceptance criteria
110- **Task coverage mapping**: Map each task to one or more requirements or stories (inference by keyword / explicit reference patterns like IDs or key phrases)
111- **Constitution rule set**: Extract principle names and MUST/SHOULD normative statements
112
113### 4. Detection Passes (Token-Efficient Analysis)
114
115Focus on high-signal findings. Limit to 50 findings total; aggregate remainder in overflow summary.
116
117#### A. Duplication Detection
118
119- Identify near-duplicate requirements
120- Mark lower-quality phrasing for consolidation
121
122#### B. Ambiguity Detection
123
124- Flag vague adjectives (fast, scalable, secure, intuitive, robust) lacking measurable criteria
125- Flag unresolved placeholders (TODO, TKTK, ???, `<placeholder>`, etc.)
126
127#### C. Underspecification
128
129- Requirements with verbs but missing object or measurable outcome
130- User stories missing acceptance criteria alignment
131- Tasks referencing files or components not defined in spec/plan
132
133#### D. Constitution Alignment
134
135- Any requirement or plan element conflicting with a MUST principle
136- Missing mandated sections or quality gates from constitution
137
138#### E. Coverage Gaps
139
140- Requirements with zero associated tasks
141- Tasks with no mapped requirement/story
142- Success Criteria requiring buildable work (performance, security, availability) not reflected in tasks
143
144#### F. Inconsistency
145
146- Terminology drift (same concept named differently across files)
147- Data entities referenced in plan but absent in spec (or vice versa)
148- Task ordering contradictions (e.g., integration tasks before foundational setup tasks without dependency note)
149- Conflicting requirements (e.g., one requires Next.js while other specifies Vue)
150
151### 5. Severity Assignment
152
153Use this heuristic to prioritize findings:
154
155- **CRITICAL**: Violates constitution MUST, missing core spec artifact, or requirement with zero coverage that blocks baseline functionality
156- **HIGH**: Duplicate or conflicting requirement, ambiguous security/performance attribute, untestable acceptance criterion
157- **MEDIUM**: Terminology drift, missing non-functional task coverage, underspecified edge case
158- **LOW**: Style/wording improvements, minor redundancy not affecting execution order
159
160### 6. Produce Compact Analysis Report
161
162Output a Markdown report (no file writes) with the following structure:
163
164## Specification Analysis Report
165
166| ID | Category | Severity | Location(s) | Summary | Recommendation |
167|----|----------|----------|-------------|---------|----------------|
168| A1 | Duplication | HIGH | spec.md:L120-134 | Two similar requirements ... | Merge phrasing; keep clearer version |
169
170(Add one row per finding; generate stable IDs prefixed by category initial.)
171
172**Coverage Summary Table:**
173
174| Requirement Key | Has Task? | Task IDs | Notes |
175|-----------------|-----------|----------|-------|
176
177**Constitution Alignment Issues:** (if any)
178
179**Unmapped Tasks:** (if any)
180
181**Metrics:**
182
183- Total Requirements
184- Total Tasks
185- Coverage % (requirements with >=1 task)
186- Ambiguity Count
187- Duplication Count
188- Critical Issues Count
189
190### 7. Provide Next Actions
191
192At end of report, output a concise Next Actions block:
193
194- If CRITICAL issues exist: Recommend resolving before `/speckit.implement`
195- If only LOW/MEDIUM: User may proceed, but provide improvement suggestions
196- Provide explicit command suggestions: e.g., "Run /speckit.specify with refinement", "Run /speckit.plan to adjust architecture", "Manually edit tasks.md to add coverage for 'performance-metrics'"
197
198### 8. Offer Remediation
199
200Ask the user: "Would you like me to suggest concrete remediation edits for the top N issues?" (Do NOT apply them automatically.)
201
202### 9. Check for extension hooks
203
204After reporting, check if `.specify/extensions.yml` exists in the project root.
205- If it exists, read it and look for entries under the `hooks.after_analyze` key
206- If the YAML cannot be parsed or is invalid, skip hook checking silently and continue normally
207- Filter out hooks where `enabled` is explicitly `false`. Treat hooks without an `enabled` field as enabled by default.
208- For each remaining hook, do **not** attempt to interpret or evaluate hook `condition` expressions:
209 - If the hook has no `condition` field, or it is null/empty, treat the hook as executable
210 - If the hook defines a non-empty `condition`, skip the hook and leave condition evaluation to the HookExecutor implementation
211- When constructing slash commands from hook command names, replace dots (`.`) with hyphens (`-`). For example, `speckit.git.commit` → `/speckit-git-commit`.
212- For each executable hook, output the following based on its `optional` flag:
213 - **Optional hook** (`optional: true`):
214 ```
215 ## Extension Hooks
216
217 **Optional Hook**: {extension}
218 Command: `/{command}`
219 Description: {description}
220
221 Prompt: {prompt}
222 To execute: `/{command}`
223 ```
224 - **Mandatory hook** (`optional: false`):
225 ```
226 ## Extension Hooks
227
228 **Automatic Hook**: {extension}
229 Executing: `/{command}`
230 EXECUTE_COMMAND: {command}
231 ```
232- If no hooks are registered or `.specify/extensions.yml` does not exist, skip silently
233
234## Operating Principles
235
236### Context Efficiency
237
238- **Minimal high-signal tokens**: Focus on actionable findings, not exhaustive documentation
239- **Progressive disclosure**: Load artifacts incrementally; don't dump all content into analysis
240- **Token-efficient output**: Limit findings table to 50 rows; summarize overflow
241- **Deterministic results**: Rerunning without changes should produce consistent IDs and counts
242
243### Analysis Guidelines
244
245- **NEVER modify files** (this is read-only analysis)
246- **NEVER hallucinate missing sections** (if absent, report them accurately)
247- **Prioritize constitution violations** (these are always CRITICAL)
248- **Use examples over exhaustive rules** (cite specific instances, not generic patterns)
249- **Report zero issues gracefully** (emit success report with coverage statistics)
250
251## Context
252
253$ARGUMENTS