specpulse 1.0.6__py3-none-any.whl → 1.2.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (54) hide show
  1. specpulse/__init__.py +1 -1
  2. specpulse/cli/main.py +809 -617
  3. specpulse/core/specpulse.py +1140 -1105
  4. specpulse/resources/commands/claude/sp-continue.md +203 -0
  5. specpulse/resources/commands/claude/sp-decompose.md +227 -0
  6. specpulse/resources/commands/claude/sp-plan.md +220 -0
  7. specpulse/resources/commands/claude/sp-pulse.md +142 -0
  8. specpulse/resources/commands/claude/{spec.md → sp-spec.md} +36 -23
  9. specpulse/resources/commands/claude/sp-status.md +170 -0
  10. specpulse/resources/commands/claude/sp-task.md +315 -0
  11. specpulse/resources/commands/gemini/sp-continue.toml +56 -0
  12. specpulse/resources/commands/gemini/sp-decompose.toml +54 -0
  13. specpulse/resources/commands/gemini/sp-plan.toml +68 -0
  14. specpulse/resources/commands/gemini/{pulse.toml → sp-pulse.toml} +12 -6
  15. specpulse/resources/commands/gemini/sp-spec.toml +54 -0
  16. specpulse/resources/commands/gemini/sp-status.toml +61 -0
  17. specpulse/resources/commands/gemini/sp-task.toml +79 -0
  18. specpulse/resources/memory/constitution.md +5 -5
  19. specpulse/resources/memory/context.md +53 -1
  20. specpulse/resources/scripts/sp-pulse-decompose.py +66 -0
  21. specpulse/resources/scripts/sp-pulse-decompose.sh +56 -0
  22. specpulse/resources/scripts/{pulse-init.py → sp-pulse-init.py} +6 -6
  23. specpulse/resources/scripts/{pulse-init.sh → sp-pulse-init.sh} +95 -95
  24. specpulse/resources/scripts/{pulse-plan.py → sp-pulse-plan.py} +32 -7
  25. specpulse/resources/scripts/{pulse-plan.sh → sp-pulse-plan.sh} +136 -126
  26. specpulse/resources/scripts/{pulse-spec.py → sp-pulse-spec.py} +26 -6
  27. specpulse/resources/scripts/{pulse-spec.sh → sp-pulse-spec.sh} +126 -103
  28. specpulse/resources/scripts/{pulse-task.py → sp-pulse-task.py} +42 -6
  29. specpulse/resources/scripts/{pulse-task.sh → sp-pulse-task.sh} +32 -16
  30. specpulse/resources/templates/decomposition/api-contract.yaml +22 -0
  31. specpulse/resources/templates/decomposition/integration-plan.md +134 -0
  32. specpulse/resources/templates/decomposition/interface.ts +20 -0
  33. specpulse/resources/templates/decomposition/microservices.md +34 -0
  34. specpulse/resources/templates/decomposition/service-plan.md +168 -0
  35. specpulse/resources/templates/plan.md +206 -206
  36. specpulse/resources/templates/spec.md +125 -125
  37. specpulse/resources/templates/task.md +164 -163
  38. {specpulse-1.0.6.dist-info → specpulse-1.2.0.dist-info}/METADATA +95 -36
  39. specpulse-1.2.0.dist-info/RECORD +50 -0
  40. specpulse/resources/commands/claude/plan.md +0 -184
  41. specpulse/resources/commands/claude/pulse.md +0 -91
  42. specpulse/resources/commands/claude/task.md +0 -237
  43. specpulse/resources/commands/gemini/plan.toml +0 -59
  44. specpulse/resources/commands/gemini/spec.toml +0 -45
  45. specpulse/resources/commands/gemini/task.toml +0 -69
  46. specpulse/resources/scripts/pulse-init.ps1 +0 -186
  47. specpulse/resources/scripts/pulse-plan.ps1 +0 -251
  48. specpulse/resources/scripts/pulse-spec.ps1 +0 -185
  49. specpulse/resources/scripts/pulse-task.ps1 +0 -263
  50. specpulse-1.0.6.dist-info/RECORD +0 -41
  51. {specpulse-1.0.6.dist-info → specpulse-1.2.0.dist-info}/WHEEL +0 -0
  52. {specpulse-1.0.6.dist-info → specpulse-1.2.0.dist-info}/entry_points.txt +0 -0
  53. {specpulse-1.0.6.dist-info → specpulse-1.2.0.dist-info}/licenses/LICENSE +0 -0
  54. {specpulse-1.0.6.dist-info → specpulse-1.2.0.dist-info}/top_level.txt +0 -0
@@ -1,206 +1,206 @@
1
- <!-- SpecPulse Implementation Plan Template v4.0 - AI-Optimized -->
2
- <!-- AI Instructions: Generate plan from specification following constitutional gates -->
3
-
4
- # Implementation Plan: {{ feature_name }}
5
-
6
- ## Specification Reference
7
- - **Spec ID**: SPEC-{{ feature_id }}
8
- - **Branch**: {{ branch_name }}
9
- - **Generated**: {{ date }}
10
- - **Optimization Focus**: {{ optimization_focus | default("SIMPLICITY") }}
11
-
12
- ## Phase -1: Pre-Implementation Gates
13
-
14
- ### Constitutional Compliance Check
15
- **THIS SECTION MUST BE COMPLETED BEFORE ANY IMPLEMENTATION**
16
-
17
- #### Simplicity Gate (Article VII)
18
- - [ ] Using 3 projects/modules for initial implementation?
19
- - [ ] No future-proofing without documented need?
20
- - [ ] Direct framework usage (no unnecessary wrappers)?
21
- - [ ] Single model representation per concept?
22
-
23
- #### Anti-Abstraction Gate (Article VII)
24
- - [ ] Using framework features directly?
25
- - [ ] No unnecessary abstraction layers?
26
- - [ ] Clear, simple interfaces?
27
- - [ ] Avoiding premature optimization?
28
-
29
- #### Test-First Gate (Article III)
30
- - [ ] Test specifications written?
31
- - [ ] Tests reviewed and approved?
32
- - [ ] Tests confirmed to FAIL before implementation?
33
- - [ ] TDD cycle planned (Red-Green-Refactor)?
34
-
35
- #### Integration-First Gate (Article VIII)
36
- - [ ] Contract tests defined?
37
- - [ ] Using real services over mocks?
38
- - [ ] Production-like test environment planned?
39
- - [ ] End-to-end test scenarios identified?
40
-
41
- #### Research Gate (Article VI)
42
- - [ ] Library options researched?
43
- - [ ] Performance implications documented?
44
- - [ ] Security considerations analyzed?
45
- - [ ] Trade-offs documented?
46
-
47
- **Gate Status**: {{ gate_status | default("[ ] PENDING") }}
48
-
49
- ## Complexity Tracking
50
- {% if complexity_exceptions %}
51
- {% for exception in complexity_exceptions %}
52
- ### Exception {{ loop.index }}
53
- - **Article**: {{ exception.article }}
54
- - **Violation**: {{ exception.violation }}
55
- - **Justification**: {{ exception.justification }}
56
- - **Mitigation**: {{ exception.mitigation }}
57
- {% endfor %}
58
- {% else %}
59
- No complexity exceptions documented.
60
- {% endif %}
61
-
62
- ## Technology Stack
63
-
64
- ### Core Technologies
65
- {% for tech in core_technologies %}
66
- - **{{ tech.name }}**: {{ tech.version }} - {{ tech.purpose }}
67
- {% endfor %}
68
-
69
- ### Dependencies
70
- {% for dep in dependencies %}
71
- - **{{ dep.name }}**: {{ dep.reason }}
72
- {% endfor %}
73
-
74
- ## Architecture Overview
75
-
76
- ### System Components
77
- {% for component in components %}
78
- #### {{ component.name }}
79
- - **Purpose**: {{ component.purpose }}
80
- - **Key Features**: {{ component.features }}
81
- - **Dependencies**: {{ component.dependencies | join(", ") }}
82
- {% endfor %}
83
-
84
- ### Data Models
85
- {% for model in data_models %}
86
- #### {{ model.name }}
87
- - **Fields**: {{ model.fields | join(", ") }}
88
- - **Relationships**: {{ model.relationships }}
89
- - **Validation**: {{ model.validation }}
90
- {% endfor %}
91
-
92
- ## Implementation Phases
93
-
94
- ### Phase 0: Critical Path (Week {{ phase_0.weeks | default(1) }})
95
- {% for task in phase_0.tasks %}
96
- - [ ] {{ task.description }}
97
- {% endfor %}
98
-
99
- ### Phase 1: Foundation (Week {{ phase_1.weeks | default(2) }})
100
- {% for task in phase_1.tasks %}
101
- - [ ] {{ task.description }}
102
- {% endfor %}
103
-
104
- ### Phase 2: Core Features (Week {{ phase_2.weeks | default(3) }})
105
- {% for task in phase_2.tasks %}
106
- - [ ] {{ task.description }}
107
- {% endfor %}
108
-
109
- ### Phase 3: Polish (Week {{ phase_3.weeks | default(1) }})
110
- {% for task in phase_3.tasks %}
111
- - [ ] {{ task.description }}
112
- {% endfor %}
113
-
114
- ## API Contracts
115
-
116
- ### Endpoints
117
- {% for endpoint in endpoints %}
118
- #### {{ endpoint.method }} {{ endpoint.path }}
119
- - **Description**: {{ endpoint.description }}
120
- - **Request**: {{ endpoint.request }}
121
- - **Response**: {{ endpoint.response }}
122
- - **Authentication**: {{ endpoint.auth | default("Required") }}
123
- {% endfor %}
124
-
125
- ### Data Schemas
126
- {% for schema in schemas %}
127
- #### {{ schema.name }}
128
- ```json
129
- {{ schema.json | indent(4) }}
130
- ```
131
- {% endfor %}
132
-
133
- ## Testing Strategy
134
-
135
- ### Test Categories
136
- - **Unit Tests**: {{ testing.unit.target | default("80% coverage") }}
137
- - **Integration Tests**: {{ testing.integration.target | default("Critical paths") }}
138
- - **E2E Tests**: {{ testing.e2e.target | default("Key user workflows") }}
139
- - **Performance Tests**: {{ testing.performance.target | default("Load testing") }}
140
-
141
- ### Test Environment
142
- - **Database**: {{ testing.environment.database | default("PostgreSQL") }}
143
- - **Services**: {{ testing.environment.services | join(", ") }}
144
- - **Test Data**: {{ testing.environment.data_strategy | default("Seed with realistic data") }}
145
-
146
- ## Security Considerations
147
-
148
- ### Authentication & Authorization
149
- - **Method**: {{ security.auth_method | default("JWT tokens") }}
150
- - **Roles**: {{ security.roles | join(", ") }}
151
- - **Permissions**: {{ security.permissions_model | default("Role-based access control") }}
152
-
153
- ### Data Protection
154
- - **Encryption**: {{ security.encryption.transit | default("TLS 1.3") }} in transit, {{ security.encryption.at_rest | default("AES-256") }} at rest
155
- - **Compliance**: {{ security.compliance | join(", ") }}
156
-
157
- ## Deployment Strategy
158
-
159
- ### Environments
160
- {% for env in environments %}
161
- #### {{ env.name }}
162
- - **URL**: {{ env.url }}
163
- - **Auto-deploy**: {{ env.auto_deploy | default("Manual") }}
164
- - **Health Checks**: {{ env.health_checks | default("Basic monitoring") }}
165
- {% endfor %}
166
-
167
- ### Rollback Plan
168
- - **Strategy**: {{ rollback.strategy | default("Blue-green deployment") }}
169
- - **Triggers**: {{ rollback.triggers | join(", ") }}
170
- - **Recovery Time**: {{ rollback.recovery_time | default("< 5 minutes") }}
171
-
172
- ## Success Criteria
173
-
174
- ### Must-Have Metrics
175
- {% for metric in success_criteria.must %}
176
- - {{ metric.name }}: {{ metric.target }} ({{ metric.measurement }})
177
- {% endfor %}
178
-
179
- ### Should-Have Metrics
180
- {% for metric in success_criteria.should %}
181
- - {{ metric.name }}: {{ metric.target }} ({{ metric.measurement }})
182
- {% endfor %}
183
-
184
- ## Risk Assessment
185
-
186
- | Risk | Probability | Impact | Mitigation | Owner |
187
- |------|------------|--------|------------|-------|
188
- {% for risk in risks %}
189
- | {{ risk.description }} | {{ risk.probability }} | {{ risk.impact }} | {{ risk.mitigation }} | {{ risk.owner }} |
190
- {% endfor %}
191
-
192
- ## Monitoring & Observability
193
-
194
- ### Key Metrics
195
- {% for metric in monitoring.metrics %}
196
- - **{{ metric.name }}**: {{ metric.target }} ({{ metric.unit }})
197
- {% endfor %}
198
-
199
- ### Alerting
200
- - **Critical Alerts**: {{ monitoring.alerts.critical | join(", ") }}
201
- - **Warning Alerts**: {{ monitoring.alerts.warnings | join(", ") }}
202
-
203
- ---
204
- **Generated by**: {{ ai_assistant }} on {{ date }}
205
- **Constitutional Gates**: {{ gate_status | default("PENDING") }}
206
- **Next Steps**: Use `/task` to break down into executable tasks
1
+ <!-- SpecPulse Implementation Plan Template v4.0 - AI-Optimized -->
2
+ <!-- AI Instructions: Generate plan from specification following constitutional gates -->
3
+
4
+ # Implementation Plan: {{ feature_name }}
5
+
6
+ ## Specification Reference
7
+ - **Spec ID**: SPEC-{{ feature_id }}
8
+ - **Branch**: {{ branch_name }}
9
+ - **Generated**: {{ date }}
10
+ - **Optimization Focus**: {{ optimization_focus | default("SIMPLICITY") }}
11
+
12
+ ## Phase -1: Pre-Implementation Gates
13
+
14
+ ### Constitutional Compliance Check
15
+ **THIS SECTION MUST BE COMPLETED BEFORE ANY IMPLEMENTATION**
16
+
17
+ #### Simplicity Gate (Article VII)
18
+ - [ ] Using 3 or fewer projects/modules for initial implementation?
19
+ - [ ] No future-proofing without documented need?
20
+ - [ ] Direct framework usage (no unnecessary wrappers)?
21
+ - [ ] Single model representation per concept?
22
+
23
+ #### Anti-Abstraction Gate (Article VII)
24
+ - [ ] Using framework features directly?
25
+ - [ ] No unnecessary abstraction layers?
26
+ - [ ] Clear, simple interfaces?
27
+ - [ ] Avoiding premature optimization?
28
+
29
+ #### Test-First Gate (Article III)
30
+ - [ ] Test specifications written?
31
+ - [ ] Tests reviewed and approved?
32
+ - [ ] Tests confirmed to FAIL before implementation?
33
+ - [ ] TDD cycle planned (Red-Green-Refactor)?
34
+
35
+ #### Integration-First Gate (Article VIII)
36
+ - [ ] Contract tests defined?
37
+ - [ ] Using real services over mocks?
38
+ - [ ] Production-like test environment planned?
39
+ - [ ] End-to-end test scenarios identified?
40
+
41
+ #### Research Gate (Article VI)
42
+ - [ ] Library options researched?
43
+ - [ ] Performance implications documented?
44
+ - [ ] Security considerations analyzed?
45
+ - [ ] Trade-offs documented?
46
+
47
+ **Gate Status**: {{ gate_status | default("[ ] PENDING") }}
48
+
49
+ ## Complexity Tracking
50
+ {% if complexity_exceptions %}
51
+ {% for exception in complexity_exceptions %}
52
+ ### Exception {{ loop.index }}
53
+ - **Article**: {{ exception.article }}
54
+ - **Violation**: {{ exception.violation }}
55
+ - **Justification**: {{ exception.justification }}
56
+ - **Mitigation**: {{ exception.mitigation }}
57
+ {% endfor %}
58
+ {% else %}
59
+ No complexity exceptions documented.
60
+ {% endif %}
61
+
62
+ ## Technology Stack
63
+
64
+ ### Core Technologies
65
+ {% for tech in core_technologies %}
66
+ - **{{ tech.name }}**: {{ tech.version }} - {{ tech.purpose }}
67
+ {% endfor %}
68
+
69
+ ### Dependencies
70
+ {% for dep in dependencies %}
71
+ - **{{ dep.name }}**: {{ dep.reason }}
72
+ {% endfor %}
73
+
74
+ ## Architecture Overview
75
+
76
+ ### System Components
77
+ {% for component in components %}
78
+ #### {{ component.name }}
79
+ - **Purpose**: {{ component.purpose }}
80
+ - **Key Features**: {{ component.features }}
81
+ - **Dependencies**: {{ component.dependencies | join(", ") }}
82
+ {% endfor %}
83
+
84
+ ### Data Models
85
+ {% for model in data_models %}
86
+ #### {{ model.name }}
87
+ - **Fields**: {{ model.fields | join(", ") }}
88
+ - **Relationships**: {{ model.relationships }}
89
+ - **Validation**: {{ model.validation }}
90
+ {% endfor %}
91
+
92
+ ## Implementation Phases
93
+
94
+ ### Phase 0: Critical Path (Week {{ phase_0.weeks | default(1) }})
95
+ {% for task in phase_0.tasks %}
96
+ - [ ] {{ task.description }}
97
+ {% endfor %}
98
+
99
+ ### Phase 1: Foundation (Week {{ phase_1.weeks | default(2) }})
100
+ {% for task in phase_1.tasks %}
101
+ - [ ] {{ task.description }}
102
+ {% endfor %}
103
+
104
+ ### Phase 2: Core Features (Week {{ phase_2.weeks | default(3) }})
105
+ {% for task in phase_2.tasks %}
106
+ - [ ] {{ task.description }}
107
+ {% endfor %}
108
+
109
+ ### Phase 3: Polish (Week {{ phase_3.weeks | default(1) }})
110
+ {% for task in phase_3.tasks %}
111
+ - [ ] {{ task.description }}
112
+ {% endfor %}
113
+
114
+ ## API Contracts
115
+
116
+ ### Endpoints
117
+ {% for endpoint in endpoints %}
118
+ #### {{ endpoint.method }} {{ endpoint.path }}
119
+ - **Description**: {{ endpoint.description }}
120
+ - **Request**: {{ endpoint.request }}
121
+ - **Response**: {{ endpoint.response }}
122
+ - **Authentication**: {{ endpoint.auth | default("Required") }}
123
+ {% endfor %}
124
+
125
+ ### Data Schemas
126
+ {% for schema in schemas %}
127
+ #### {{ schema.name }}
128
+ ```json
129
+ {{ schema.json | indent(4) }}
130
+ ```
131
+ {% endfor %}
132
+
133
+ ## Testing Strategy
134
+
135
+ ### Test Categories
136
+ - **Unit Tests**: {{ testing.unit.target | default("80% coverage") }}
137
+ - **Integration Tests**: {{ testing.integration.target | default("Critical paths") }}
138
+ - **E2E Tests**: {{ testing.e2e.target | default("Key user workflows") }}
139
+ - **Performance Tests**: {{ testing.performance.target | default("Load testing") }}
140
+
141
+ ### Test Environment
142
+ - **Database**: {{ testing.environment.database | default("PostgreSQL") }}
143
+ - **Services**: {{ testing.environment.services | join(", ") }}
144
+ - **Test Data**: {{ testing.environment.data_strategy | default("Seed with realistic data") }}
145
+
146
+ ## Security Considerations
147
+
148
+ ### Authentication & Authorization
149
+ - **Method**: {{ security.auth_method | default("JWT tokens") }}
150
+ - **Roles**: {{ security.roles | join(", ") }}
151
+ - **Permissions**: {{ security.permissions_model | default("Role-based access control") }}
152
+
153
+ ### Data Protection
154
+ - **Encryption**: {{ security.encryption.transit | default("TLS 1.3") }} in transit, {{ security.encryption.at_rest | default("AES-256") }} at rest
155
+ - **Compliance**: {{ security.compliance | join(", ") }}
156
+
157
+ ## Deployment Strategy
158
+
159
+ ### Environments
160
+ {% for env in environments %}
161
+ #### {{ env.name }}
162
+ - **URL**: {{ env.url }}
163
+ - **Auto-deploy**: {{ env.auto_deploy | default("Manual") }}
164
+ - **Health Checks**: {{ env.health_checks | default("Basic monitoring") }}
165
+ {% endfor %}
166
+
167
+ ### Rollback Plan
168
+ - **Strategy**: {{ rollback.strategy | default("Blue-green deployment") }}
169
+ - **Triggers**: {{ rollback.triggers | join(", ") }}
170
+ - **Recovery Time**: {{ rollback.recovery_time | default("< 5 minutes") }}
171
+
172
+ ## Success Criteria
173
+
174
+ ### Must-Have Metrics
175
+ {% for metric in success_criteria.must %}
176
+ - {{ metric.name }}: {{ metric.target }} ({{ metric.measurement }})
177
+ {% endfor %}
178
+
179
+ ### Should-Have Metrics
180
+ {% for metric in success_criteria.should %}
181
+ - {{ metric.name }}: {{ metric.target }} ({{ metric.measurement }})
182
+ {% endfor %}
183
+
184
+ ## Risk Assessment
185
+
186
+ | Risk | Probability | Impact | Mitigation | Owner |
187
+ |------|------------|--------|------------|-------|
188
+ {% for risk in risks %}
189
+ | {{ risk.description }} | {{ risk.probability }} | {{ risk.impact }} | {{ risk.mitigation }} | {{ risk.owner }} |
190
+ {% endfor %}
191
+
192
+ ## Monitoring & Observability
193
+
194
+ ### Key Metrics
195
+ {% for metric in monitoring.metrics %}
196
+ - **{{ metric.name }}**: {{ metric.target }} ({{ metric.unit }})
197
+ {% endfor %}
198
+
199
+ ### Alerting
200
+ - **Critical Alerts**: {{ monitoring.alerts.critical | join(", ") }}
201
+ - **Warning Alerts**: {{ monitoring.alerts.warnings | join(", ") }}
202
+
203
+ ---
204
+ **Generated by**: {{ ai_assistant }} on {{ date }}
205
+ **Constitutional Gates**: {{ gate_status | default("PENDING") }}
206
+ **Next Steps**: Use `/sp-task breakdown` to break down into executable tasks
@@ -1,125 +1,125 @@
1
- <!-- SpecPulse Specification Template v4.0 - AI-Optimized -->
2
- <!-- AI Instructions:
3
- 1. Replace all {{variable}} placeholders with actual values
4
- 2. Fill sections based on user input and requirements analysis
5
- 3. Mark ALL uncertainties with [NEEDS CLARIFICATION: specific question]
6
- 4. Keep requirements testable and unambiguous
7
- 5. Focus on WHAT and WHY, not HOW
8
- -->
9
-
10
- # Specification: {{ feature_name }}
11
-
12
- ## Metadata
13
- - **ID**: SPEC-{{ feature_id }}
14
- - **Branch**: {{ branch_name }}
15
- - **Created**: {{ date }}
16
- - **Author**: {{ author }}
17
- - **AI Assistant**: {{ ai_assistant }}
18
- - **Version**: 1.0.0
19
- - **Status**: DRAFT
20
-
21
- ## Executive Summary
22
- {{ executive_summary | default("Brief description of what this feature does and why it's needed") }}
23
-
24
- ## User Request
25
- ```
26
- {{ user_input }}
27
- ```
28
-
29
- ## Problem Statement
30
-
31
- ### Current State
32
- {{ current_state | default("Describe the current situation and pain points") }}
33
-
34
- ### Desired State
35
- {{ desired_state | default("Describe what should be achieved after implementation") }}
36
-
37
- ## Clarifications Needed
38
- <!-- List ALL ambiguities from user input -->
39
- {% if clarifications %}
40
- {% for clarification in clarifications %}
41
- - [NEEDS CLARIFICATION: {{ clarification }}]
42
- {% endfor %}
43
- {% else %}
44
- - [NEEDS CLARIFICATION: Add specific questions based on user input]
45
- {% endif %}
46
-
47
- ## User Stories
48
-
49
- ### Primary Stories
50
- {% for story in user_stories %}
51
- #### Story {{ loop.index }}: {{ story.title }}
52
- **As a** {{ story.user_type }}
53
- **I want to** {{ story.action }}
54
- **So that** {{ story.benefit }}
55
-
56
- **Acceptance Criteria:**
57
- {% for criteria in story.acceptance_criteria %}
58
- - Given {{ criteria.given }}, when {{ criteria.when }}, then {{ criteria.then }}
59
- {% endfor %}
60
- {% endfor %}
61
-
62
- ## Functional Requirements
63
-
64
- ### MUST Have Requirements
65
- {% for req in must_requirements %}
66
- **FR-{{ "%03d" | format(loop.index0 + 1) }}**: {{ req.statement }}
67
- - **Rationale**: {{ req.rationale }}
68
- - **Testable**: Yes
69
- {% endfor %}
70
-
71
- ### SHOULD Have Requirements
72
- {% for req in should_requirements %}
73
- **FR-{{ "%03d" | format(loop.index0 + len(must_requirements) + 1) }}**: {{ req.statement }}
74
- - **Rationale**: {{ req.rationale }}
75
- - **Testable**: Yes
76
- {% endfor %}
77
-
78
- ## Non-Functional Requirements
79
-
80
- ### Performance
81
- - Response time < {{ performance.response_time | default("200ms") }}
82
- - Support {{ performance.concurrent_users | default("1000") }} concurrent users
83
-
84
- ### Security
85
- - All data encrypted in transit
86
- - {{ security.authentication | default("Authentication required for sensitive actions") }}
87
-
88
- ## Acceptance Scenarios
89
-
90
- ### Critical Path
91
- 1. **Scenario**: {{ primary_scenario.name }}
92
- - **When**: {{ primary_scenario.action }}
93
- - **Then**: {{ primary_scenario.result }}
94
-
95
- ### Error Cases
96
- 1. **Scenario**: {{ error_scenario.name }}
97
- - **When**: {{ error_scenario.action }}
98
- - **Then**: {{ error_scenario.result }}
99
-
100
- ## Success Metrics
101
- - Adoption rate: {{ metrics.adoption_rate | default("80% within 30 days") }}
102
- - Success rate: {{ metrics.success_rate | default("95% of attempts") }}
103
- - User satisfaction: {{ metrics.satisfaction | default("8/10 NPS") }}
104
-
105
- ## Out of Scope
106
- <!-- Explicitly state what this feature will NOT do -->
107
- {% for item in out_of_scope %}
108
- - This feature will NOT {{ item }}
109
- {% endfor %}
110
-
111
- ## Dependencies
112
- {% for dep in dependencies %}
113
- - {{ dep }}
114
- {% endfor %}
115
-
116
- ## Validation Checklist
117
- - [ ] All MUST requirements implemented
118
- - [ ] All acceptance criteria pass
119
- - [ ] No [NEEDS CLARIFICATION] markers remain
120
- - [ ] Performance targets met
121
- - [ ] Security requirements validated
122
-
123
- ---
124
- **Generated by**: {{ ai_assistant }} on {{ date }}
125
- **Next Steps**: Use `/plan` to create implementation plan
1
+ <!-- SpecPulse Specification Template v4.0 - AI-Optimized -->
2
+ <!-- AI Instructions:
3
+ 1. Replace all {{variable}} placeholders with actual values
4
+ 2. Fill sections based on user input and requirements analysis
5
+ 3. Mark ALL uncertainties with [NEEDS CLARIFICATION: specific question]
6
+ 4. Keep requirements testable and unambiguous
7
+ 5. Focus on WHAT and WHY, not HOW
8
+ -->
9
+
10
+ # Specification: {{ feature_name }}
11
+
12
+ ## Metadata
13
+ - **ID**: SPEC-{{ feature_id }}
14
+ - **Branch**: {{ branch_name }}
15
+ - **Created**: {{ date }}
16
+ - **Author**: {{ author }}
17
+ - **AI Assistant**: {{ ai_assistant }}
18
+ - **Version**: 1.0.0
19
+ - **Status**: DRAFT
20
+
21
+ ## Executive Summary
22
+ {{ executive_summary | default("Brief description of what this feature does and why it's needed") }}
23
+
24
+ ## User Request
25
+ ```
26
+ {{ user_input }}
27
+ ```
28
+
29
+ ## Problem Statement
30
+
31
+ ### Current State
32
+ {{ current_state | default("Describe the current situation and pain points") }}
33
+
34
+ ### Desired State
35
+ {{ desired_state | default("Describe what should be achieved after implementation") }}
36
+
37
+ ## Clarifications Needed
38
+ <!-- List ALL ambiguities from user input -->
39
+ {% if clarifications %}
40
+ {% for clarification in clarifications %}
41
+ - [NEEDS CLARIFICATION: {{ clarification }}]
42
+ {% endfor %}
43
+ {% else %}
44
+ - [NEEDS CLARIFICATION: Add specific questions based on user input]
45
+ {% endif %}
46
+
47
+ ## User Stories
48
+
49
+ ### Primary Stories
50
+ {% for story in user_stories %}
51
+ #### Story {{ loop.index }}: {{ story.title }}
52
+ **As a** {{ story.user_type }}
53
+ **I want to** {{ story.action }}
54
+ **So that** {{ story.benefit }}
55
+
56
+ **Acceptance Criteria:**
57
+ {% for criteria in story.acceptance_criteria %}
58
+ - Given {{ criteria.given }}, when {{ criteria.when }}, then {{ criteria.then }}
59
+ {% endfor %}
60
+ {% endfor %}
61
+
62
+ ## Functional Requirements
63
+
64
+ ### MUST Have Requirements
65
+ {% for req in must_requirements %}
66
+ **FR-{{ "%03d" | format(loop.index0 + 1) }}**: {{ req.statement }}
67
+ - **Rationale**: {{ req.rationale }}
68
+ - **Testable**: Yes
69
+ {% endfor %}
70
+
71
+ ### SHOULD Have Requirements
72
+ {% for req in should_requirements %}
73
+ **FR-{{ "%03d" | format(loop.index0 + len(must_requirements) + 1) }}**: {{ req.statement }}
74
+ - **Rationale**: {{ req.rationale }}
75
+ - **Testable**: Yes
76
+ {% endfor %}
77
+
78
+ ## Non-Functional Requirements
79
+
80
+ ### Performance
81
+ - Response time < {{ performance.response_time | default("200ms") }}
82
+ - Support {{ performance.concurrent_users | default("1000") }} concurrent users
83
+
84
+ ### Security
85
+ - All data encrypted in transit
86
+ - {{ security.authentication | default("Authentication required for sensitive actions") }}
87
+
88
+ ## Acceptance Scenarios
89
+
90
+ ### Critical Path
91
+ 1. **Scenario**: {{ primary_scenario.name }}
92
+ - **When**: {{ primary_scenario.action }}
93
+ - **Then**: {{ primary_scenario.result }}
94
+
95
+ ### Error Cases
96
+ 1. **Scenario**: {{ error_scenario.name }}
97
+ - **When**: {{ error_scenario.action }}
98
+ - **Then**: {{ error_scenario.result }}
99
+
100
+ ## Success Metrics
101
+ - Adoption rate: {{ metrics.adoption_rate | default("80% within 30 days") }}
102
+ - Success rate: {{ metrics.success_rate | default("95% of attempts") }}
103
+ - User satisfaction: {{ metrics.satisfaction | default("8/10 NPS") }}
104
+
105
+ ## Out of Scope
106
+ <!-- Explicitly state what this feature will NOT do -->
107
+ {% for item in out_of_scope %}
108
+ - This feature will NOT {{ item }}
109
+ {% endfor %}
110
+
111
+ ## Dependencies
112
+ {% for dep in dependencies %}
113
+ - {{ dep }}
114
+ {% endfor %}
115
+
116
+ ## Validation Checklist
117
+ - [ ] All MUST requirements implemented
118
+ - [ ] All acceptance criteria pass
119
+ - [ ] No [NEEDS CLARIFICATION] markers remain
120
+ - [ ] Performance targets met
121
+ - [ ] Security requirements validated
122
+
123
+ ---
124
+ **Generated by**: {{ ai_assistant }} on {{ date }}
125
+ **Next Steps**: Use `/sp-plan generate` to create implementation plan