specpulse 1.0.6__tar.gz → 1.2.0__tar.gz
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-1.0.6/specpulse.egg-info → specpulse-1.2.0}/PKG-INFO +95 -36
- {specpulse-1.0.6 → specpulse-1.2.0}/README.md +94 -35
- {specpulse-1.0.6 → specpulse-1.2.0}/pyproject.toml +5 -2
- {specpulse-1.0.6 → specpulse-1.2.0}/setup.py +5 -1
- {specpulse-1.0.6 → specpulse-1.2.0}/specpulse/__init__.py +1 -1
- {specpulse-1.0.6 → specpulse-1.2.0}/specpulse/cli/main.py +809 -617
- {specpulse-1.0.6 → specpulse-1.2.0}/specpulse/core/specpulse.py +1140 -1105
- specpulse-1.2.0/specpulse/resources/commands/claude/sp-continue.md +203 -0
- specpulse-1.2.0/specpulse/resources/commands/claude/sp-decompose.md +227 -0
- specpulse-1.2.0/specpulse/resources/commands/claude/sp-plan.md +220 -0
- specpulse-1.2.0/specpulse/resources/commands/claude/sp-pulse.md +142 -0
- specpulse-1.0.6/specpulse/resources/commands/claude/spec.md → specpulse-1.2.0/specpulse/resources/commands/claude/sp-spec.md +36 -23
- specpulse-1.2.0/specpulse/resources/commands/claude/sp-status.md +170 -0
- specpulse-1.2.0/specpulse/resources/commands/claude/sp-task.md +315 -0
- specpulse-1.2.0/specpulse/resources/commands/gemini/sp-continue.toml +56 -0
- specpulse-1.2.0/specpulse/resources/commands/gemini/sp-decompose.toml +54 -0
- specpulse-1.2.0/specpulse/resources/commands/gemini/sp-plan.toml +68 -0
- specpulse-1.0.6/specpulse/resources/commands/gemini/pulse.toml → specpulse-1.2.0/specpulse/resources/commands/gemini/sp-pulse.toml +12 -6
- specpulse-1.2.0/specpulse/resources/commands/gemini/sp-spec.toml +54 -0
- specpulse-1.2.0/specpulse/resources/commands/gemini/sp-status.toml +61 -0
- specpulse-1.2.0/specpulse/resources/commands/gemini/sp-task.toml +79 -0
- {specpulse-1.0.6 → specpulse-1.2.0}/specpulse/resources/memory/constitution.md +5 -5
- specpulse-1.2.0/specpulse/resources/memory/context.md +79 -0
- specpulse-1.2.0/specpulse/resources/scripts/sp-pulse-decompose.py +66 -0
- specpulse-1.2.0/specpulse/resources/scripts/sp-pulse-decompose.sh +56 -0
- specpulse-1.0.6/specpulse/resources/scripts/pulse-init.py → specpulse-1.2.0/specpulse/resources/scripts/sp-pulse-init.py +6 -6
- specpulse-1.0.6/specpulse/resources/scripts/pulse-init.sh → specpulse-1.2.0/specpulse/resources/scripts/sp-pulse-init.sh +95 -95
- specpulse-1.0.6/specpulse/resources/scripts/pulse-plan.py → specpulse-1.2.0/specpulse/resources/scripts/sp-pulse-plan.py +32 -7
- specpulse-1.0.6/specpulse/resources/scripts/pulse-plan.sh → specpulse-1.2.0/specpulse/resources/scripts/sp-pulse-plan.sh +136 -126
- specpulse-1.0.6/specpulse/resources/scripts/pulse-spec.py → specpulse-1.2.0/specpulse/resources/scripts/sp-pulse-spec.py +26 -6
- specpulse-1.0.6/specpulse/resources/scripts/pulse-spec.sh → specpulse-1.2.0/specpulse/resources/scripts/sp-pulse-spec.sh +126 -103
- specpulse-1.0.6/specpulse/resources/scripts/pulse-task.py → specpulse-1.2.0/specpulse/resources/scripts/sp-pulse-task.py +42 -6
- specpulse-1.0.6/specpulse/resources/scripts/pulse-task.sh → specpulse-1.2.0/specpulse/resources/scripts/sp-pulse-task.sh +32 -16
- specpulse-1.2.0/specpulse/resources/templates/decomposition/api-contract.yaml +22 -0
- specpulse-1.2.0/specpulse/resources/templates/decomposition/integration-plan.md +134 -0
- specpulse-1.2.0/specpulse/resources/templates/decomposition/interface.ts +20 -0
- specpulse-1.2.0/specpulse/resources/templates/decomposition/microservices.md +34 -0
- specpulse-1.2.0/specpulse/resources/templates/decomposition/service-plan.md +168 -0
- {specpulse-1.0.6 → specpulse-1.2.0}/specpulse/resources/templates/plan.md +206 -206
- {specpulse-1.0.6 → specpulse-1.2.0}/specpulse/resources/templates/spec.md +125 -125
- {specpulse-1.0.6 → specpulse-1.2.0}/specpulse/resources/templates/task.md +164 -163
- {specpulse-1.0.6 → specpulse-1.2.0/specpulse.egg-info}/PKG-INFO +95 -36
- specpulse-1.2.0/specpulse.egg-info/SOURCES.txt +57 -0
- specpulse-1.0.6/specpulse/resources/commands/claude/plan.md +0 -184
- specpulse-1.0.6/specpulse/resources/commands/claude/pulse.md +0 -91
- specpulse-1.0.6/specpulse/resources/commands/claude/task.md +0 -237
- specpulse-1.0.6/specpulse/resources/commands/gemini/plan.toml +0 -59
- specpulse-1.0.6/specpulse/resources/commands/gemini/spec.toml +0 -45
- specpulse-1.0.6/specpulse/resources/commands/gemini/task.toml +0 -69
- specpulse-1.0.6/specpulse/resources/memory/context.md +0 -27
- specpulse-1.0.6/specpulse/resources/scripts/pulse-init.ps1 +0 -186
- specpulse-1.0.6/specpulse/resources/scripts/pulse-plan.ps1 +0 -251
- specpulse-1.0.6/specpulse/resources/scripts/pulse-spec.ps1 +0 -185
- specpulse-1.0.6/specpulse/resources/scripts/pulse-task.ps1 +0 -263
- specpulse-1.0.6/specpulse.egg-info/SOURCES.txt +0 -68
- specpulse-1.0.6/tests/test_100_coverage.py +0 -328
- specpulse-1.0.6/tests/test_100_percent_coverage.py +0 -461
- specpulse-1.0.6/tests/test_ai_commands.py +0 -136
- specpulse-1.0.6/tests/test_cli.py +0 -184
- specpulse-1.0.6/tests/test_cli_advanced.py +0 -277
- specpulse-1.0.6/tests/test_cli_comprehensive.py +0 -611
- specpulse-1.0.6/tests/test_command_integration.py +0 -182
- specpulse-1.0.6/tests/test_complete_coverage.py +0 -338
- specpulse-1.0.6/tests/test_console_advanced.py +0 -230
- specpulse-1.0.6/tests/test_console_comprehensive.py +0 -561
- specpulse-1.0.6/tests/test_core.py +0 -235
- specpulse-1.0.6/tests/test_core_comprehensive.py +0 -486
- specpulse-1.0.6/tests/test_cross_platform_scripts.py +0 -317
- specpulse-1.0.6/tests/test_full_coverage.py +0 -541
- specpulse-1.0.6/tests/test_gemini_commands.py +0 -130
- specpulse-1.0.6/tests/test_git_utils.py +0 -270
- specpulse-1.0.6/tests/test_git_utils_comprehensive.py +0 -698
- specpulse-1.0.6/tests/test_powershell_scripts.py +0 -464
- specpulse-1.0.6/tests/test_python_scripts.py +0 -470
- specpulse-1.0.6/tests/test_validator_comprehensive.py +0 -613
- {specpulse-1.0.6 → specpulse-1.2.0}/LICENSE +0 -0
- {specpulse-1.0.6 → specpulse-1.2.0}/MANIFEST.in +0 -0
- {specpulse-1.0.6 → specpulse-1.2.0}/requirements.txt +0 -0
- {specpulse-1.0.6 → specpulse-1.2.0}/setup.cfg +0 -0
- {specpulse-1.0.6 → specpulse-1.2.0}/specpulse/cli/__init__.py +0 -0
- {specpulse-1.0.6 → specpulse-1.2.0}/specpulse/core/__init__.py +0 -0
- {specpulse-1.0.6 → specpulse-1.2.0}/specpulse/core/validator.py +0 -0
- {specpulse-1.0.6 → specpulse-1.2.0}/specpulse/resources/memory/decisions.md +0 -0
- {specpulse-1.0.6 → specpulse-1.2.0}/specpulse/utils/__init__.py +0 -0
- {specpulse-1.0.6 → specpulse-1.2.0}/specpulse/utils/console.py +0 -0
- {specpulse-1.0.6 → specpulse-1.2.0}/specpulse/utils/git_utils.py +0 -0
- {specpulse-1.0.6 → specpulse-1.2.0}/specpulse.egg-info/dependency_links.txt +0 -0
- {specpulse-1.0.6 → specpulse-1.2.0}/specpulse.egg-info/entry_points.txt +0 -0
- {specpulse-1.0.6 → specpulse-1.2.0}/specpulse.egg-info/not-zip-safe +0 -0
- {specpulse-1.0.6 → specpulse-1.2.0}/specpulse.egg-info/requires.txt +0 -0
- {specpulse-1.0.6 → specpulse-1.2.0}/specpulse.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: specpulse
|
3
|
-
Version: 1.0
|
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
|
70
|
-
> -
|
71
|
-
> -
|
72
|
-
> -
|
73
|
-
> -
|
74
|
-
> -
|
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
|
-
#
|
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
|
-
#
|
143
|
-
#
|
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
|
-
/
|
272
|
-
/plan
|
273
|
-
/
|
274
|
-
/task
|
275
|
-
/task
|
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-*.
|
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
|
-
│
|
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
|
-
│
|
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
|
-
│
|
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>
|
@@ -21,12 +21,13 @@
|
|
21
21
|
|
22
22
|
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.
|
23
23
|
|
24
|
-
> **Latest Update (v1.0
|
25
|
-
> -
|
26
|
-
> -
|
27
|
-
> -
|
28
|
-
> -
|
29
|
-
> -
|
24
|
+
> **Latest Update (v1.2.0)**:
|
25
|
+
> - 🔀 **Microservice Decomposition**: New `/sp-decompose` command to break large specs into services
|
26
|
+
> - 🏗️ **Service-Based Planning**: Automatic service-specific plans and integration plans
|
27
|
+
> - 📊 **Service Task Management**: Task prefixes per service (AUTH-T001, USER-T001, INT-T001)
|
28
|
+
> - 🎯 **Smart Workflow Detection**: Automatic monolithic vs decomposed architecture handling
|
29
|
+
> - 📝 **Rich Templates**: New templates for services, APIs, interfaces, and integration
|
30
|
+
> - 🔧 **Previous (v1.1.0)**: Command prefix system, multi-spec workflow, versioned files
|
30
31
|
|
31
32
|
### Why SpecPulse?
|
32
33
|
|
@@ -81,21 +82,26 @@ specpulse init --ai gemini
|
|
81
82
|
|
82
83
|
```bash
|
83
84
|
# Initialize a new feature
|
84
|
-
/pulse user-authentication
|
85
|
+
/sp-pulse user-authentication
|
85
86
|
# Creates structure for 001-user-authentication feature
|
86
87
|
|
87
88
|
# Create the specification
|
88
|
-
/spec create user login with OAuth2 and email/password
|
89
|
-
# Or just: /spec (for interactive mode)
|
89
|
+
/sp-spec create user login with OAuth2 and email/password
|
90
|
+
# Or just: /sp-spec (for interactive mode)
|
91
|
+
|
92
|
+
# [NEW] Decompose large specs into microservices (optional)
|
93
|
+
/sp-decompose 001
|
94
|
+
# Creates service boundaries, API contracts, and interfaces
|
90
95
|
|
91
96
|
# Generate implementation plan
|
92
|
-
/plan generate
|
93
|
-
#
|
97
|
+
/sp-plan generate
|
98
|
+
# For decomposed: Creates service-specific plans + integration plan
|
99
|
+
# For monolithic: Creates single comprehensive plan
|
94
100
|
|
95
101
|
# Break down into tasks
|
96
|
-
/task breakdown
|
97
|
-
#
|
98
|
-
#
|
102
|
+
/sp-task breakdown
|
103
|
+
# For decomposed: Creates AUTH-T001, USER-T001, INT-T001 tasks
|
104
|
+
# For monolithic: Creates T001, T002, T003 tasks
|
99
105
|
```
|
100
106
|
|
101
107
|
### Step 4: Validate & Ship
|
@@ -104,6 +110,13 @@ specpulse init --ai gemini
|
|
104
110
|
# Validate everything
|
105
111
|
specpulse validate
|
106
112
|
|
113
|
+
# [NEW] Decompose specifications
|
114
|
+
specpulse decompose 001
|
115
|
+
# Or with options:
|
116
|
+
specpulse decompose --microservices
|
117
|
+
specpulse decompose --apis
|
118
|
+
specpulse decompose --interfaces
|
119
|
+
|
107
120
|
# Run diagnostics
|
108
121
|
specpulse doctor
|
109
122
|
|
@@ -219,23 +232,24 @@ Claude and Gemini use slash commands that accept arguments via `$ARGUMENTS`:
|
|
219
232
|
- **Unicode Support**: Full international character support (≤, ≥, →, ←)
|
220
233
|
|
221
234
|
```bash
|
222
|
-
/pulse user-authentication # Start new feature with name
|
223
|
-
/spec create OAuth2 login # Create specification with description
|
224
|
-
/spec update # Update existing specification
|
225
|
-
/spec validate # Validate specification completeness
|
226
|
-
/
|
227
|
-
/plan
|
228
|
-
/
|
229
|
-
/task
|
230
|
-
/task
|
235
|
+
/sp-pulse user-authentication # Start new feature with name
|
236
|
+
/sp-spec create OAuth2 login # Create specification with description
|
237
|
+
/sp-spec update # Update existing specification
|
238
|
+
/sp-spec validate # Validate specification completeness
|
239
|
+
/sp-decompose 001 # [NEW] Decompose spec into microservices
|
240
|
+
/sp-plan generate # Generate plan(s) - detects decomposition
|
241
|
+
/sp-plan validate # Validate plan against constitution
|
242
|
+
/sp-task breakdown # Create task list(s) - per service if decomposed
|
243
|
+
/sp-task update # Update task statuses
|
244
|
+
/sp-task status # Show current progress
|
245
|
+
/sp-task execute AUTH-T001 # [NEW] Execute service-specific task
|
231
246
|
```
|
232
247
|
|
233
248
|
**Behind the Scenes:**
|
234
249
|
- Commands capture arguments using `$ARGUMENTS` variable
|
235
250
|
- **Multi-platform scripts** in `resources/scripts/` folder process the arguments:
|
236
|
-
- `pulse-*.py` - Python scripts (universal)
|
237
|
-
- `pulse-*.
|
238
|
-
- `pulse-*.sh` - Bash scripts (Linux/macOS)
|
251
|
+
- `sp-pulse-*.py` - Python scripts (universal)
|
252
|
+
- `sp-pulse-*.sh` - Bash scripts (Linux/macOS)
|
239
253
|
- AI reads templates from `resources/templates/` folder
|
240
254
|
- Results are saved in `specs/`, `plans/`, `tasks/` folders
|
241
255
|
- Memory system tracks progress in `memory/` folder
|
@@ -264,6 +278,39 @@ Claude and Gemini use slash commands that accept arguments via `$ARGUMENTS`:
|
|
264
278
|
| **Technical Debt** | Accumulates | **Tracked & Managed** |
|
265
279
|
| **Documentation** | Often outdated | **Always current** |
|
266
280
|
|
281
|
+
## 🎯 Microservice Decomposition (NEW)
|
282
|
+
|
283
|
+
For large, complex specifications, SpecPulse can automatically decompose them into microservices:
|
284
|
+
|
285
|
+
```bash
|
286
|
+
# Decompose a specification
|
287
|
+
/sp-decompose 001
|
288
|
+
```
|
289
|
+
|
290
|
+
This creates:
|
291
|
+
- **Service Boundaries**: Using Domain-Driven Design principles
|
292
|
+
- **API Contracts**: OpenAPI 3.0 specifications for each service
|
293
|
+
- **Interface Definitions**: TypeScript/Java/Go interfaces
|
294
|
+
- **Integration Map**: Service communication architecture
|
295
|
+
- **Migration Plan**: Strategy for breaking down monoliths
|
296
|
+
|
297
|
+
### Workflow Adaptation
|
298
|
+
|
299
|
+
SpecPulse automatically adapts based on architecture:
|
300
|
+
|
301
|
+
**Monolithic Flow:**
|
302
|
+
```
|
303
|
+
spec-001.md → plan-001.md → task-001.md (T001, T002...)
|
304
|
+
```
|
305
|
+
|
306
|
+
**Decomposed Flow:**
|
307
|
+
```
|
308
|
+
spec-001.md → decomposition/ → service plans → service tasks
|
309
|
+
├── microservices.md ├── auth-service-plan.md ├── AUTH-T001
|
310
|
+
├── api-contracts/ ├── user-service-plan.md ├── USER-T001
|
311
|
+
└── interfaces/ └── integration-plan.md └── INT-T001
|
312
|
+
```
|
313
|
+
|
267
314
|
## 🏗️ Project Structure
|
268
315
|
|
269
316
|
```
|
@@ -280,19 +327,31 @@ my-project/
|
|
280
327
|
│ └── decisions.md # Architecture Decision Records
|
281
328
|
├── specs/ # Feature specifications
|
282
329
|
│ └── 001-feature/
|
283
|
-
│
|
330
|
+
│ ├── spec-001.md
|
331
|
+
│ └── decomposition/ # [NEW] Microservice decomposition
|
332
|
+
│ ├── microservices.md
|
333
|
+
│ ├── api-contracts/
|
334
|
+
│ └── interfaces/
|
284
335
|
├── plans/ # Implementation plans
|
285
336
|
│ └── 001-feature/
|
286
|
-
│
|
337
|
+
│ ├── plan-001.md # Monolithic plan
|
338
|
+
│ # OR for decomposed:
|
339
|
+
│ ├── auth-service-plan.md
|
340
|
+
│ ├── user-service-plan.md
|
341
|
+
│ └── integration-plan.md
|
287
342
|
├── tasks/ # Task breakdowns
|
288
343
|
│ └── 001-feature/
|
289
|
-
│
|
344
|
+
│ ├── task-001.md # Monolithic tasks
|
345
|
+
│ # OR for decomposed:
|
346
|
+
│ ├── auth-service-tasks.md
|
347
|
+
│ ├── user-service-tasks.md
|
348
|
+
│ └── integration-tasks.md
|
290
349
|
├── templates/ # Customizable templates
|
291
350
|
├── scripts/ # Shell scripts for AI execution
|
292
|
-
│ ├── pulse-init.sh # Feature initialization
|
293
|
-
│ ├── pulse-spec.sh # Specification creation
|
294
|
-
│ ├── pulse-plan.sh # Plan generation
|
295
|
-
│ └── pulse-task.sh # Task breakdown
|
351
|
+
│ ├── sp-pulse-init.sh # Feature initialization
|
352
|
+
│ ├── sp-pulse-spec.sh # Specification creation
|
353
|
+
│ ├── sp-pulse-plan.sh # Plan generation
|
354
|
+
│ └── sp-pulse-task.sh # Task breakdown
|
296
355
|
└── PULSE.md # Project manifest
|
297
356
|
```
|
298
357
|
|
@@ -304,7 +363,7 @@ Create project-specific templates:
|
|
304
363
|
|
305
364
|
```bash
|
306
365
|
# Copy and modify templates
|
307
|
-
cp templates/spec.md templates/custom-spec.md
|
366
|
+
cp templates/spec-001.md templates/custom-spec.md
|
308
367
|
# Edit to match your needs
|
309
368
|
```
|
310
369
|
|
@@ -368,7 +427,7 @@ specpulse validate --component constitution
|
|
368
427
|
**Solution**: Check template path in config.yaml
|
369
428
|
|
370
429
|
### AI Commands Not Working
|
371
|
-
**Problem**: `/pulse` commands not recognized
|
430
|
+
**Problem**: `/sp-pulse` commands not recognized
|
372
431
|
**Solution**: Ensure you ran `specpulse init --ai claude` or `--ai gemini`
|
373
432
|
|
374
433
|
</details>
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
4
4
|
|
5
5
|
[project]
|
6
6
|
name = "specpulse"
|
7
|
-
version = "1.0
|
7
|
+
version = "1.2.0"
|
8
8
|
description = "Specification-Driven Development Framework"
|
9
9
|
readme = "README.md"
|
10
10
|
requires-python = ">=3.11"
|
@@ -81,15 +81,18 @@ packages = [
|
|
81
81
|
"specpulse.resources.memory",
|
82
82
|
"specpulse.resources.scripts",
|
83
83
|
"specpulse.resources.templates",
|
84
|
+
"specpulse.resources.templates.decomposition",
|
84
85
|
]
|
85
86
|
|
86
87
|
[tool.setuptools.package-data]
|
87
88
|
specpulse = [
|
88
89
|
"resources/templates/*.md",
|
90
|
+
"resources/templates/decomposition/*.md",
|
91
|
+
"resources/templates/decomposition/*.yaml",
|
92
|
+
"resources/templates/decomposition/*.ts",
|
89
93
|
"resources/memory/*.md",
|
90
94
|
"resources/scripts/*.sh",
|
91
95
|
"resources/scripts/*.py",
|
92
|
-
"resources/scripts/*.ps1",
|
93
96
|
"resources/commands/claude/*.md",
|
94
97
|
"resources/commands/gemini/*.toml",
|
95
98
|
]
|
@@ -11,7 +11,7 @@ long_description = (this_directory / "README.md").read_text(encoding="utf-8")
|
|
11
11
|
|
12
12
|
setup(
|
13
13
|
name="specpulse",
|
14
|
-
version="1.0
|
14
|
+
version="1.2.0",
|
15
15
|
author="SpecPulse",
|
16
16
|
author_email="",
|
17
17
|
description="Next-Generation Specification-Driven Development Framework",
|
@@ -59,8 +59,12 @@ setup(
|
|
59
59
|
package_data={
|
60
60
|
"specpulse": [
|
61
61
|
"resources/templates/*.md",
|
62
|
+
"resources/templates/decomposition/*.md",
|
63
|
+
"resources/templates/decomposition/*.yaml",
|
64
|
+
"resources/templates/decomposition/*.ts",
|
62
65
|
"resources/memory/*.md",
|
63
66
|
"resources/scripts/*.sh",
|
67
|
+
"resources/scripts/*.py",
|
64
68
|
"resources/commands/claude/*.md",
|
65
69
|
"resources/commands/gemini/*.toml",
|
66
70
|
],
|