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.
- specpulse/__init__.py +1 -1
- specpulse/cli/main.py +809 -617
- specpulse/core/specpulse.py +1140 -1105
- specpulse/resources/commands/claude/sp-continue.md +203 -0
- specpulse/resources/commands/claude/sp-decompose.md +227 -0
- specpulse/resources/commands/claude/sp-plan.md +220 -0
- specpulse/resources/commands/claude/sp-pulse.md +142 -0
- specpulse/resources/commands/claude/{spec.md → sp-spec.md} +36 -23
- specpulse/resources/commands/claude/sp-status.md +170 -0
- specpulse/resources/commands/claude/sp-task.md +315 -0
- specpulse/resources/commands/gemini/sp-continue.toml +56 -0
- specpulse/resources/commands/gemini/sp-decompose.toml +54 -0
- specpulse/resources/commands/gemini/sp-plan.toml +68 -0
- specpulse/resources/commands/gemini/{pulse.toml → sp-pulse.toml} +12 -6
- specpulse/resources/commands/gemini/sp-spec.toml +54 -0
- specpulse/resources/commands/gemini/sp-status.toml +61 -0
- specpulse/resources/commands/gemini/sp-task.toml +79 -0
- specpulse/resources/memory/constitution.md +5 -5
- specpulse/resources/memory/context.md +53 -1
- specpulse/resources/scripts/sp-pulse-decompose.py +66 -0
- specpulse/resources/scripts/sp-pulse-decompose.sh +56 -0
- specpulse/resources/scripts/{pulse-init.py → sp-pulse-init.py} +6 -6
- specpulse/resources/scripts/{pulse-init.sh → sp-pulse-init.sh} +95 -95
- specpulse/resources/scripts/{pulse-plan.py → sp-pulse-plan.py} +32 -7
- specpulse/resources/scripts/{pulse-plan.sh → sp-pulse-plan.sh} +136 -126
- specpulse/resources/scripts/{pulse-spec.py → sp-pulse-spec.py} +26 -6
- specpulse/resources/scripts/{pulse-spec.sh → sp-pulse-spec.sh} +126 -103
- specpulse/resources/scripts/{pulse-task.py → sp-pulse-task.py} +42 -6
- specpulse/resources/scripts/{pulse-task.sh → sp-pulse-task.sh} +32 -16
- specpulse/resources/templates/decomposition/api-contract.yaml +22 -0
- specpulse/resources/templates/decomposition/integration-plan.md +134 -0
- specpulse/resources/templates/decomposition/interface.ts +20 -0
- specpulse/resources/templates/decomposition/microservices.md +34 -0
- specpulse/resources/templates/decomposition/service-plan.md +168 -0
- specpulse/resources/templates/plan.md +206 -206
- specpulse/resources/templates/spec.md +125 -125
- specpulse/resources/templates/task.md +164 -163
- {specpulse-1.0.6.dist-info → specpulse-1.2.0.dist-info}/METADATA +95 -36
- specpulse-1.2.0.dist-info/RECORD +50 -0
- specpulse/resources/commands/claude/plan.md +0 -184
- specpulse/resources/commands/claude/pulse.md +0 -91
- specpulse/resources/commands/claude/task.md +0 -237
- specpulse/resources/commands/gemini/plan.toml +0 -59
- specpulse/resources/commands/gemini/spec.toml +0 -45
- specpulse/resources/commands/gemini/task.toml +0 -69
- specpulse/resources/scripts/pulse-init.ps1 +0 -186
- specpulse/resources/scripts/pulse-plan.ps1 +0 -251
- specpulse/resources/scripts/pulse-spec.ps1 +0 -185
- specpulse/resources/scripts/pulse-task.ps1 +0 -263
- specpulse-1.0.6.dist-info/RECORD +0 -41
- {specpulse-1.0.6.dist-info → specpulse-1.2.0.dist-info}/WHEEL +0 -0
- {specpulse-1.0.6.dist-info → specpulse-1.2.0.dist-info}/entry_points.txt +0 -0
- {specpulse-1.0.6.dist-info → specpulse-1.2.0.dist-info}/licenses/LICENSE +0 -0
- {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
|
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
|