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,164 +1,165 @@
1
- <!-- SpecPulse Task List Template v3.0 - AI-Optimized -->
2
- <!-- AI Instructions: Generate from implementation plan using constitutional gates -->
3
-
4
- # Task List: {{ feature_name }}
5
-
6
- ## Metadata
7
- - **Plan Reference**: SPEC-{{ feature_id }}
8
- - **Total Tasks**: {{ task_count }}
9
- - **Estimated Duration**: {{ total_duration }}
10
- - **Parallel Groups**: {{ parallel_groups }}
11
-
12
- ## Task Organization
13
-
14
- {% for group in parallel_groups %}
15
- ### Parallel Group {{ loop.index }}
16
- *These tasks can be executed simultaneously*
17
-
18
- {% for task in group.tasks %}
19
- #### {{ task.id }}: {{ task.name }}
20
- - **Type**: {{ task.type }}
21
- - **Priority**: {{ task.priority }}
22
- - **Estimate**: {{ task.estimate }}
23
- - **Dependencies**: {{ task.dependencies | join(", ") | default("None") }}
24
- - **Description**: {{ task.description }}
25
- - **Acceptance**: {{ task.acceptance }}
26
- - **Files**: {{ task.files | join(", ") }}
27
- - **Assignable**: {{ task.assignable }}
28
- {% endfor %}
29
- {% endfor %}
30
-
31
- ### Sequential Tasks
32
- *These tasks must be completed in order*
33
-
34
- {% for task in sequential_tasks %}
35
- #### {{ task.id }}: {{ task.name }}
36
- - **Dependencies**: {{ task.dependencies | join(", ") }}
37
- - **Type**: {{ task.type }}
38
- - **Priority**: {{ task.priority }}
39
- - **Estimate**: {{ task.estimate }}
40
- - **Description**: {{ task.description }}
41
- - **Acceptance**: {{ task.acceptance }}
42
- {% endfor %}
43
-
44
- ### Critical Path
45
- *Tasks that directly impact timeline*
46
-
47
- {% for path in critical_path %}
48
- {{ loop.index }}. {{ path.tasks | join(" ") }}
49
- {% endfor %}
50
- - Estimated critical path duration: {{ critical_path_duration }}
51
-
52
- ## Constitutional Gates Compliance
53
-
54
- ### Pre-Implementation Validation
55
- {% for gate in constitutional_gates %}
56
- #### {{ gate.name }}
57
- - [ ] {{ gate.check_1 }}
58
- - [ ] {{ gate.check_2 }}
59
- - [ ] {{ gate.check_3 }}
60
- - [ ] {{ gate.check_4 }}
61
- **Status**: {{ gate.status | default("PENDING") }}
62
- {% endfor %}
63
-
64
- ## Task Details by Category
65
-
66
- {% for category in task_categories %}
67
- ### {{ category.name }} Tasks {% if category.parallel %}[P]{% endif %}
68
- {% for task in category.tasks %}
69
- - [ ] {{ task.id }}: {{ task.name }}
70
- {% endfor %}
71
- {% endfor %}
72
-
73
- ## Execution Schedule
74
-
75
- {% for phase in execution_schedule %}
76
- ### {{ phase.name }}
77
- {% for time_block in phase.time_blocks %}
78
- - {{ time_block.timing }}: {{ time_block.tasks | join(", ") }}{% if time_block.parallel %} (parallel){% endif %}
79
- {% endfor %}
80
- {% endfor %}
81
-
82
- ## Progress Tracking
83
- ```yaml
84
- status:
85
- total: {{ task_count }}
86
- completed: 0
87
- in_progress: 0
88
- blocked: 0
89
-
90
- metrics:
91
- velocity: {{ velocity | default("2-3 tasks/day") }}
92
- estimated_completion: {{ estimated_completion }}
93
- blockers: []
94
-
95
- parallel_groups:
96
- {% for group in parallel_groups %}
97
- - name: "{{ group.name }}"
98
- tasks: [{{ group.tasks | map(attribute='id') | join(", ") }}]
99
- can_start: {{ group.can_start }}
100
- {% endfor %}
101
-
102
- sequential_tasks:
103
- {% for task in sequential_tasks %}
104
- - name: "{{ task.name }}"
105
- id: {{ task.id }}
106
- dependencies: [{{ task.dependencies | join(", ") }}]
107
- {% endfor %}
108
- ```
109
-
110
- ## Task Execution Commands
111
-
112
- ### For parallel tasks:
113
- ```bash
114
- # Execute parallel tasks using SpecPulse scripts
115
- {% for group in parallel_groups %}
116
- # {{ group.name }} tasks
117
- parallel_tasks="{{ group.tasks | map(attribute='id') | join(" ") }}"
118
- for task in $parallel_tasks; do
119
- echo "Starting $task in parallel..."
120
- ./scripts/execute-task.sh "$task" &
121
- done
122
- wait # Wait for all parallel tasks to complete
123
- {% endfor %}
124
- ```
125
-
126
- ### For sequential tasks:
127
- ```bash
128
- # Execute tasks in dependency order
129
- {% for task in sequential_tasks %}
130
- # {{ task.name }} ({{ task.id }})
131
- echo "Executing {{ task.id }}..."
132
- ./scripts/execute-task.sh "{{ task.id }}"
133
- # Check success before proceeding
134
- if [ $? -eq 0 ]; then
135
- echo "{{ task.id }} completed successfully"
136
- else
137
- echo "{{ task.id }} failed - halting execution"
138
- exit 1
139
- fi
140
- {% endfor %}
141
- ```
142
-
143
- ## AI Integration Notes
144
-
145
- ### Constitutional Gates
146
- - All tasks MUST pass constitutional compliance before implementation
147
- - Use `/validate` command to check compliance status
148
- - Mark gates as completed only after actual validation
149
-
150
- ### Progress Tracking
151
- - Update task status in real-time using `/status` command
152
- - Document blockers immediately when identified
153
- - Use velocity metrics to refine future estimates
154
-
155
- ### Quality Assurance
156
- - Each task requires specific acceptance criteria
157
- - Test-first development mandated by Article III
158
- - Integration tests required before deployment
159
-
160
- ---
161
- **Generated by**: {{ ai_assistant }} on {{ date }}
162
- **Feature**: {{ feature_name }}
163
- **Constitutional Gates**: {{ constitutional_status | default("PENDING VALIDATION") }}
1
+ <!-- SpecPulse Task List Template v3.0 - AI-Optimized -->
2
+ <!-- AI Instructions: Generate from implementation plan using constitutional gates -->
3
+
4
+ # Task List: {{ feature_name }}
5
+
6
+ ## Metadata
7
+ - **Plan Reference**: SPEC-{{ feature_id }}
8
+ - **Total Tasks**: {{ task_count }}
9
+ - **Estimated Duration**: {{ total_duration }}
10
+ - **Parallel Groups**: {{ parallel_groups }}
11
+
12
+ ## Task Organization
13
+
14
+ {% for group in parallel_groups %}
15
+ ### Parallel Group {{ loop.index }}
16
+ *These tasks can be executed simultaneously*
17
+
18
+ {% for task in group.tasks %}
19
+ #### {{ task.id }}: {{ task.name }}
20
+ - **Type**: {{ task.type }}
21
+ - **Priority**: {{ task.priority }}
22
+ - **Estimate**: {{ task.estimate }}
23
+ - **Dependencies**: {{ task.dependencies | join(", ") | default("None") }}
24
+ - **Description**: {{ task.description }}
25
+ - **Acceptance**: {{ task.acceptance }}
26
+ - **Files**: {{ task.files | join(", ") }}
27
+ - **Assignable**: {{ task.assignable }}
28
+ {% endfor %}
29
+ {% endfor %}
30
+
31
+ ### Sequential Tasks
32
+ *These tasks must be completed in order*
33
+
34
+ {% for task in sequential_tasks %}
35
+ #### {{ task.id }}: {{ task.name }}
36
+ - **Dependencies**: {{ task.dependencies | join(", ") }}
37
+ - **Type**: {{ task.type }}
38
+ - **Priority**: {{ task.priority }}
39
+ - **Estimate**: {{ task.estimate }}
40
+ - **Description**: {{ task.description }}
41
+ - **Acceptance**: {{ task.acceptance }}
42
+ {% endfor %}
43
+
44
+ ### Critical Path
45
+ *Tasks that directly impact timeline*
46
+
47
+ {% for path in critical_path %}
48
+ {{ loop.index }}. {{ path.tasks | join(" -> ") }}
49
+ {% endfor %}
50
+ - Estimated critical path duration: {{ critical_path_duration }}
51
+
52
+ ## Constitutional Gates Compliance
53
+
54
+ ### Pre-Implementation Validation
55
+ {% for gate in constitutional_gates %}
56
+ #### {{ gate.name }}
57
+ - [ ] {{ gate.check_1 }}
58
+ - [ ] {{ gate.check_2 }}
59
+ - [ ] {{ gate.check_3 }}
60
+ - [ ] {{ gate.check_4 }}
61
+ **Status**: {{ gate.status | default("PENDING") }}
62
+ {% endfor %}
63
+
64
+ ## Task Details by Category
65
+
66
+ {% for category in task_categories %}
67
+ ### {{ category.name }} Tasks {% if category.parallel %}[P]{% endif %}
68
+ {% for task in category.tasks %}
69
+ - [ ] {{ task.id }}: {{ task.name }}
70
+ {% endfor %}
71
+ {% endfor %}
72
+
73
+ ## Execution Schedule
74
+
75
+ {% for phase in execution_schedule %}
76
+ ### {{ phase.name }}
77
+ {% for time_block in phase.time_blocks %}
78
+ - {{ time_block.timing }}: {{ time_block.tasks | join(", ") }}{% if time_block.parallel %} (parallel){% endif %}
79
+ {% endfor %}
80
+ {% endfor %}
81
+
82
+ ## Progress Tracking
83
+ ```yaml
84
+ status:
85
+ total: {{ task_count }}
86
+ completed: 0
87
+ in_progress: 0
88
+ blocked: 0
89
+
90
+ metrics:
91
+ velocity: {{ velocity | default("2-3 tasks/day") }}
92
+ estimated_completion: {{ estimated_completion }}
93
+ blockers: []
94
+
95
+ parallel_groups:
96
+ {% for group in parallel_groups %}
97
+ - name: "{{ group.name }}"
98
+ tasks: [{{ group.tasks | map(attribute='id') | join(", ") }}]
99
+ can_start: {{ group.can_start }}
100
+ {% endfor %}
101
+
102
+ sequential_tasks:
103
+ {% for task in sequential_tasks %}
104
+ - name: "{{ task.name }}"
105
+ id: {{ task.id }}
106
+ dependencies: [{{ task.dependencies | join(", ") }}]
107
+ {% endfor %}
108
+ ```
109
+
110
+ ## Task Execution Guidelines
111
+
112
+ ### AI-Assisted Development Process
113
+ All task execution should be handled by AI assistants (Claude or Gemini) following the SpecPulse methodology:
114
+
115
+ 1. **Task Selection**: AI assistants should select tasks based on:
116
+ - Dependency order (sequential tasks first)
117
+ - Parallel execution opportunities
118
+ - Current context and feature priorities
119
+ - Resource availability
120
+
121
+ 2. **Implementation Process**: For each task:
122
+ ```markdown
123
+ ## Task: {{ task.id }} - {{ task.name }}
124
+
125
+ **Status**: [ ] Pending / [x] Completed / [-] In Progress / [!] Blocked
126
+ **Dependencies**: {{ task.dependencies | join(", ") | default("None") }}
127
+ **Acceptance**: {{ task.acceptance }}
128
+ ```
129
+
130
+ 3. **Parallel Execution Strategy**: When tasks can be executed in parallel:
131
+ - AI assistants should work on multiple tasks simultaneously
132
+ - Coordinate task completion status
133
+ - Handle cross-task dependencies
134
+ - Maintain code consistency
135
+
136
+ ### Task Dependencies Management
137
+
138
+ - **Sequential Dependencies**: Tasks must be completed in specific order
139
+ - **Parallel Opportunities**: Independent tasks can be worked on simultaneously
140
+ - **Dependency Resolution**: AI should resolve conflicts and blocking issues
141
+ - **Progress Coordination**: Multiple AI assistants should coordinate task completion
142
+
143
+ ## AI Integration Notes
144
+
145
+ ### Constitutional Gates
146
+ - All tasks MUST pass constitutional compliance before implementation
147
+ - Use `/sp-validate` command to check compliance status
148
+ - Mark gates as completed only after actual validation
149
+
150
+ ### Progress Tracking
151
+ - Update task status in real-time using markdown checkboxes: `[ ]` → `[-]` → `[x]`
152
+ - Document blockers immediately with `[!]` status and resolution notes
153
+ - Use velocity metrics to refine future estimates
154
+ - Coordinate with other AI assistants for parallel task execution
155
+
156
+ ### Quality Assurance
157
+ - Each task requires specific acceptance criteria
158
+ - Test-first development mandated by Article III
159
+ - Integration tests required before deployment
160
+
161
+ ---
162
+ **Generated by**: {{ ai_assistant }} on {{ date }}
163
+ **Feature**: {{ feature_name }}
164
+ **Constitutional Gates**: {{ constitutional_status | default("PENDING VALIDATION") }}
164
165
  **Next Steps**: Execute tasks following constitutional order
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: specpulse
3
- Version: 1.0.6
3
+ Version: 1.2.0
4
4
  Summary: Specification-Driven Development Framework
5
5
  Home-page: https://github.com/specpulse
6
6
  Author: SpecPulse
@@ -66,12 +66,13 @@ Dynamic: requires-python
66
66
 
67
67
  SpecPulse revolutionizes AI-assisted development by enforcing a **specification-first approach**. Instead of jumping straight into code, SpecPulse ensures every feature starts with clear specifications, validated plans, and tracked tasks - guaranteeing quality from day one.
68
68
 
69
- > **Latest Update (v1.0.6)**:
70
- > - 🐛 **Critical Bug Fix**: Fixed cross-platform template initialization bug
71
- > - **Proper Resource Management**: All cross-platform scripts now correctly copied from @specpulse/resources
72
- > - **Complete Script Availability**: All 12 scripts (4 types × 3 platforms) properly installed
73
- > - **Enhanced Package Configuration**: Fixed package data inclusion for Python and PowerShell scripts
74
- > - **Improved Error Handling**: Better resource path resolution and script copying operations
69
+ > **Latest Update (v1.2.0)**:
70
+ > - 🔀 **Microservice Decomposition**: New `/sp-decompose` command to break large specs into services
71
+ > - 🏗️ **Service-Based Planning**: Automatic service-specific plans and integration plans
72
+ > - 📊 **Service Task Management**: Task prefixes per service (AUTH-T001, USER-T001, INT-T001)
73
+ > - 🎯 **Smart Workflow Detection**: Automatic monolithic vs decomposed architecture handling
74
+ > - 📝 **Rich Templates**: New templates for services, APIs, interfaces, and integration
75
+ > - 🔧 **Previous (v1.1.0)**: Command prefix system, multi-spec workflow, versioned files
75
76
 
76
77
  ### Why SpecPulse?
77
78
 
@@ -126,21 +127,26 @@ specpulse init --ai gemini
126
127
 
127
128
  ```bash
128
129
  # Initialize a new feature
129
- /pulse user-authentication
130
+ /sp-pulse user-authentication
130
131
  # Creates structure for 001-user-authentication feature
131
132
 
132
133
  # Create the specification
133
- /spec create user login with OAuth2 and email/password
134
- # Or just: /spec (for interactive mode)
134
+ /sp-spec create user login with OAuth2 and email/password
135
+ # Or just: /sp-spec (for interactive mode)
136
+
137
+ # [NEW] Decompose large specs into microservices (optional)
138
+ /sp-decompose 001
139
+ # Creates service boundaries, API contracts, and interfaces
135
140
 
136
141
  # Generate implementation plan
137
- /plan generate
138
- # Or: /plan validate (to check existing plan)
142
+ /sp-plan generate
143
+ # For decomposed: Creates service-specific plans + integration plan
144
+ # For monolithic: Creates single comprehensive plan
139
145
 
140
146
  # Break down into tasks
141
- /task breakdown
142
- # Or: /task update (to update task status)
143
- # Or: /task status (to see progress)
147
+ /sp-task breakdown
148
+ # For decomposed: Creates AUTH-T001, USER-T001, INT-T001 tasks
149
+ # For monolithic: Creates T001, T002, T003 tasks
144
150
  ```
145
151
 
146
152
  ### Step 4: Validate & Ship
@@ -149,6 +155,13 @@ specpulse init --ai gemini
149
155
  # Validate everything
150
156
  specpulse validate
151
157
 
158
+ # [NEW] Decompose specifications
159
+ specpulse decompose 001
160
+ # Or with options:
161
+ specpulse decompose --microservices
162
+ specpulse decompose --apis
163
+ specpulse decompose --interfaces
164
+
152
165
  # Run diagnostics
153
166
  specpulse doctor
154
167
 
@@ -264,23 +277,24 @@ Claude and Gemini use slash commands that accept arguments via `$ARGUMENTS`:
264
277
  - **Unicode Support**: Full international character support (≤, ≥, →, ←)
265
278
 
266
279
  ```bash
267
- /pulse user-authentication # Start new feature with name
268
- /spec create OAuth2 login # Create specification with description
269
- /spec update # Update existing specification
270
- /spec validate # Validate specification completeness
271
- /plan generate # Generate plan from specification
272
- /plan validate # Validate plan against constitution
273
- /task breakdown # Create task list from plan
274
- /task update # Update task statuses
275
- /task status # Show current progress
280
+ /sp-pulse user-authentication # Start new feature with name
281
+ /sp-spec create OAuth2 login # Create specification with description
282
+ /sp-spec update # Update existing specification
283
+ /sp-spec validate # Validate specification completeness
284
+ /sp-decompose 001 # [NEW] Decompose spec into microservices
285
+ /sp-plan generate # Generate plan(s) - detects decomposition
286
+ /sp-plan validate # Validate plan against constitution
287
+ /sp-task breakdown # Create task list(s) - per service if decomposed
288
+ /sp-task update # Update task statuses
289
+ /sp-task status # Show current progress
290
+ /sp-task execute AUTH-T001 # [NEW] Execute service-specific task
276
291
  ```
277
292
 
278
293
  **Behind the Scenes:**
279
294
  - Commands capture arguments using `$ARGUMENTS` variable
280
295
  - **Multi-platform scripts** in `resources/scripts/` folder process the arguments:
281
- - `pulse-*.py` - Python scripts (universal)
282
- - `pulse-*.ps1` - PowerShell scripts (Windows)
283
- - `pulse-*.sh` - Bash scripts (Linux/macOS)
296
+ - `sp-pulse-*.py` - Python scripts (universal)
297
+ - `sp-pulse-*.sh` - Bash scripts (Linux/macOS)
284
298
  - AI reads templates from `resources/templates/` folder
285
299
  - Results are saved in `specs/`, `plans/`, `tasks/` folders
286
300
  - Memory system tracks progress in `memory/` folder
@@ -309,6 +323,39 @@ Claude and Gemini use slash commands that accept arguments via `$ARGUMENTS`:
309
323
  | **Technical Debt** | Accumulates | **Tracked & Managed** |
310
324
  | **Documentation** | Often outdated | **Always current** |
311
325
 
326
+ ## 🎯 Microservice Decomposition (NEW)
327
+
328
+ For large, complex specifications, SpecPulse can automatically decompose them into microservices:
329
+
330
+ ```bash
331
+ # Decompose a specification
332
+ /sp-decompose 001
333
+ ```
334
+
335
+ This creates:
336
+ - **Service Boundaries**: Using Domain-Driven Design principles
337
+ - **API Contracts**: OpenAPI 3.0 specifications for each service
338
+ - **Interface Definitions**: TypeScript/Java/Go interfaces
339
+ - **Integration Map**: Service communication architecture
340
+ - **Migration Plan**: Strategy for breaking down monoliths
341
+
342
+ ### Workflow Adaptation
343
+
344
+ SpecPulse automatically adapts based on architecture:
345
+
346
+ **Monolithic Flow:**
347
+ ```
348
+ spec-001.md → plan-001.md → task-001.md (T001, T002...)
349
+ ```
350
+
351
+ **Decomposed Flow:**
352
+ ```
353
+ spec-001.md → decomposition/ → service plans → service tasks
354
+ ├── microservices.md ├── auth-service-plan.md ├── AUTH-T001
355
+ ├── api-contracts/ ├── user-service-plan.md ├── USER-T001
356
+ └── interfaces/ └── integration-plan.md └── INT-T001
357
+ ```
358
+
312
359
  ## 🏗️ Project Structure
313
360
 
314
361
  ```
@@ -325,19 +372,31 @@ my-project/
325
372
  │ └── decisions.md # Architecture Decision Records
326
373
  ├── specs/ # Feature specifications
327
374
  │ └── 001-feature/
328
- └── spec.md
375
+ ├── spec-001.md
376
+ │ └── decomposition/ # [NEW] Microservice decomposition
377
+ │ ├── microservices.md
378
+ │ ├── api-contracts/
379
+ │ └── interfaces/
329
380
  ├── plans/ # Implementation plans
330
381
  │ └── 001-feature/
331
- └── plan.md
382
+ ├── plan-001.md # Monolithic plan
383
+ │ # OR for decomposed:
384
+ │ ├── auth-service-plan.md
385
+ │ ├── user-service-plan.md
386
+ │ └── integration-plan.md
332
387
  ├── tasks/ # Task breakdowns
333
388
  │ └── 001-feature/
334
- └── tasks.md
389
+ ├── task-001.md # Monolithic tasks
390
+ │ # OR for decomposed:
391
+ │ ├── auth-service-tasks.md
392
+ │ ├── user-service-tasks.md
393
+ │ └── integration-tasks.md
335
394
  ├── templates/ # Customizable templates
336
395
  ├── scripts/ # Shell scripts for AI execution
337
- │ ├── pulse-init.sh # Feature initialization
338
- │ ├── pulse-spec.sh # Specification creation
339
- │ ├── pulse-plan.sh # Plan generation
340
- │ └── pulse-task.sh # Task breakdown
396
+ │ ├── sp-pulse-init.sh # Feature initialization
397
+ │ ├── sp-pulse-spec.sh # Specification creation
398
+ │ ├── sp-pulse-plan.sh # Plan generation
399
+ │ └── sp-pulse-task.sh # Task breakdown
341
400
  └── PULSE.md # Project manifest
342
401
  ```
343
402
 
@@ -349,7 +408,7 @@ Create project-specific templates:
349
408
 
350
409
  ```bash
351
410
  # Copy and modify templates
352
- cp templates/spec.md templates/custom-spec.md
411
+ cp templates/spec-001.md templates/custom-spec.md
353
412
  # Edit to match your needs
354
413
  ```
355
414
 
@@ -413,7 +472,7 @@ specpulse validate --component constitution
413
472
  **Solution**: Check template path in config.yaml
414
473
 
415
474
  ### AI Commands Not Working
416
- **Problem**: `/pulse` commands not recognized
475
+ **Problem**: `/sp-pulse` commands not recognized
417
476
  **Solution**: Ensure you ran `specpulse init --ai claude` or `--ai gemini`
418
477
 
419
478
  </details>
@@ -0,0 +1,50 @@
1
+ specpulse/__init__.py,sha256=S9i2N7RizTFgCe7PsAehlM3Ba_FtbAQPxCDSKcO_tbQ,270
2
+ specpulse/cli/__init__.py,sha256=DpX6FoRJtSNjudsmZ3mTih_RIaWyiIgxew4-f8mOmFY,70
3
+ specpulse/cli/main.py,sha256=dzUiUW7vmRRv_scaahgnywA-EQge-ntIm0vBckRsBew,31389
4
+ specpulse/core/__init__.py,sha256=VKHGdPDM38QM9yDIq05jxol4q8WFlFAeltOzYLsPuto,132
5
+ specpulse/core/specpulse.py,sha256=glEYB-AiXN6wTKgVc3Yu0BHjUMByNBzcjMds7CA-FBo,32717
6
+ specpulse/core/validator.py,sha256=dnaNUx7tj8V2K1TE6WPwrNWEiCpqC_b_DKryq6-A7Hk,12057
7
+ specpulse/resources/commands/claude/sp-continue.md,sha256=3_vikDSNRN0slNtKQGWl9dWEgkT-Q7nFpUxHKnzBCKs,5175
8
+ specpulse/resources/commands/claude/sp-decompose.md,sha256=bYn1KHYvab64ajgPkWw4aiJMKkucxAwhWmaLtaclX_8,7657
9
+ specpulse/resources/commands/claude/sp-plan.md,sha256=kQ5-WgpJAI21VHYemrTvE6HVmF12d7I9FDjA4e8CeJc,7760
10
+ specpulse/resources/commands/claude/sp-pulse.md,sha256=IjoB2NeoTIjJEATcxG0mCfagRuzlRb7CwHawiotAIjk,5023
11
+ specpulse/resources/commands/claude/sp-spec.md,sha256=i3NmQbzbWlFSlu9jJpg6j3TyfW2TCAoMH9qVtJvIWW0,6242
12
+ specpulse/resources/commands/claude/sp-status.md,sha256=pUcFsYdmvAPTA1BdRjiN-AWi9I8IN4GiEErjfK4wNOU,4633
13
+ specpulse/resources/commands/claude/sp-task.md,sha256=j-2hbxq-wLxcwBu2mQbO2HhGXkoiwLmgXyiGwTX1q_w,10920
14
+ specpulse/resources/commands/gemini/sp-continue.toml,sha256=_iyo_g9IV0-FtIpiVknKNaegmhyc3DHb41lvfpf7anU,1784
15
+ specpulse/resources/commands/gemini/sp-decompose.toml,sha256=uQdx0tavjUGRns9yNaz9Hlbk6eCip801bi-ijH88Rj4,1495
16
+ specpulse/resources/commands/gemini/sp-plan.toml,sha256=ROG9G3V9VGahHmQqdxs2znQgnrYx_8Hg4Wu3Yzp0Fpo,2271
17
+ specpulse/resources/commands/gemini/sp-pulse.toml,sha256=YFpp1V_jCnP1mODU-9jpXyoGW61oSX-Y1YXewDCYYac,1307
18
+ specpulse/resources/commands/gemini/sp-spec.toml,sha256=0U5BIiCMGaXDvp4KoXEKu08VpL54iCiMMuoVoxRG1BE,2284
19
+ specpulse/resources/commands/gemini/sp-status.toml,sha256=PNZvCwwbzTYyA5Bm2M4SYw1ndz0vRqCkqT-_3pYJ_Qs,1979
20
+ specpulse/resources/commands/gemini/sp-task.toml,sha256=fuQkdK8wI279wy_qAOKGqxJQqIQc5C9xCDf7oNoCah8,2663
21
+ specpulse/resources/memory/constitution.md,sha256=34M0dMDzeE9JfAaNjK1S9uxVSD1I8KIaEtb8C3_7Ru8,8341
22
+ specpulse/resources/memory/context.md,sha256=B-6m5f4WP8x_VXp0S9fbqm8tHH-2PZ7d9VWzW934hpo,1957
23
+ specpulse/resources/memory/decisions.md,sha256=ZwzVyOPB2mIzwveWpGmedej7ncI81GALg8WVy6AeZA4,686
24
+ specpulse/resources/scripts/sp-pulse-decompose.py,sha256=CH360Rp3dRprNnwd_XeNblfcGYjhW8dyfF9v3K8bDaM,2013
25
+ specpulse/resources/scripts/sp-pulse-decompose.sh,sha256=EN8iF02pij4yse3of3fgO8ZI6YKFUV7Z7f4epEmaKXI,1431
26
+ specpulse/resources/scripts/sp-pulse-init.py,sha256=-_L9TOr1zKCSJOS8dBUbeKOkWBlR5I6kB5ZUuEF3GBQ,6688
27
+ specpulse/resources/scripts/sp-pulse-init.sh,sha256=Be3ogbKQCy2WMONC22Ht-15gxgQS0sB7U74EoSrDnMU,3164
28
+ specpulse/resources/scripts/sp-pulse-plan.py,sha256=PYyvVPP0Wo-6VAAnRAeesfv6gV2qegs6nEWwLeqBTj4,8614
29
+ specpulse/resources/scripts/sp-pulse-plan.sh,sha256=0G6WMDV2ChO4kkulgEL49qZFg7adwf3-lqeH3Rvs7T4,4199
30
+ specpulse/resources/scripts/sp-pulse-spec.py,sha256=IzThoWPcfgApJ_FeTGoA54_LEoWahQkgLeEHpHx0bKs,7485
31
+ specpulse/resources/scripts/sp-pulse-spec.sh,sha256=TVA1ktylZZy_9yj-4inncP1_FoVp8vteP5kaWelLeks,4194
32
+ specpulse/resources/scripts/sp-pulse-task.py,sha256=hVi7E81azLWqRuzEYtzz_uIJKahfh-mGu8zxOvwjsVY,10826
33
+ specpulse/resources/scripts/sp-pulse-task.sh,sha256=RmV6fIVIssK9QR4jAKzHhghrl4voG7PpXXC0yPi6_Rk,5039
34
+ specpulse/resources/templates/plan.md,sha256=KSCB5HvYRjqrM-VTe7nwJgR1MjGI748YE2BJtn41g4Q,6689
35
+ specpulse/resources/templates/spec.md,sha256=yVWn2LhZn0IMLJ9XuBjPWSWNS4GYJFowRrqRMT2wJf4,3748
36
+ specpulse/resources/templates/task.md,sha256=mGRlE4WD2E1Lh5gGr7kyOEmoXDbjLhUVMG9D7ZGCpmw,5357
37
+ specpulse/resources/templates/decomposition/api-contract.yaml,sha256=bi-Gkm_YN-ghequB2qDg9ZZ3xHFdWngZ9RXODyP0EG8,322
38
+ specpulse/resources/templates/decomposition/integration-plan.md,sha256=BDi2aJ0THf-XbdrBZVOPS8g4QV409i9W__razgFU4LE,2618
39
+ specpulse/resources/templates/decomposition/interface.ts,sha256=hctQVneU8If19dP3b1_pQG-1P0qrr2HTa1JJZFn6x3w,324
40
+ specpulse/resources/templates/decomposition/microservices.md,sha256=YqCcRPRAF1AlntuptG6QuaP9FJ4Tz8dHIV00ZvKE-lk,787
41
+ specpulse/resources/templates/decomposition/service-plan.md,sha256=YCAu0-jRKNQ-GJQa_qlqTYMfzPXPd9-GxKob0fHABfU,3001
42
+ specpulse/utils/__init__.py,sha256=VTGRDsVLl2JIXYyHB9Sidxj5acY_W-LJI2MMtY1pwb0,122
43
+ specpulse/utils/console.py,sha256=xn4Koc1_ph61bvBTlvPOwAbqZ5ac7TZ51xTWJbwG0sc,12973
44
+ specpulse/utils/git_utils.py,sha256=RzJBZoyWp5on1_wq2lY1bs__UJsGKSDpAUeDKFdRYlQ,6095
45
+ specpulse-1.2.0.dist-info/licenses/LICENSE,sha256=ImSFezK-Phy0oTBqZipcajsJfPZT8mmg8m3jkgNdNhA,1066
46
+ specpulse-1.2.0.dist-info/METADATA,sha256=w5JwHZzcqxWgAQDShF2DG-lnT3wsAXTWdGIcM4RI94k,18950
47
+ specpulse-1.2.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
48
+ specpulse-1.2.0.dist-info/entry_points.txt,sha256=GwMaCKWSCFZlJMrTNavEYrnREynIS6dM3B0ILxnaouA,83
49
+ specpulse-1.2.0.dist-info/top_level.txt,sha256=pEfkFil5xe38J00OHrBrJ07xpbm6bRnGhI8B07O9KeI,10
50
+ specpulse-1.2.0.dist-info/RECORD,,