specpulse 1.3.2__tar.gz → 1.4.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.
Files changed (94) hide show
  1. {specpulse-1.3.2 → specpulse-1.4.0}/MANIFEST.in +1 -1
  2. {specpulse-1.3.2/specpulse.egg-info → specpulse-1.4.0}/PKG-INFO +70 -29
  3. {specpulse-1.3.2 → specpulse-1.4.0}/README.md +68 -28
  4. {specpulse-1.3.2 → specpulse-1.4.0}/pyproject.toml +2 -1
  5. {specpulse-1.3.2 → specpulse-1.4.0}/requirements.txt +2 -1
  6. {specpulse-1.3.2 → specpulse-1.4.0}/setup.py +1 -1
  7. {specpulse-1.3.2 → specpulse-1.4.0}/specpulse/__init__.py +1 -1
  8. {specpulse-1.3.2 → specpulse-1.4.0}/specpulse/cli/main.py +46 -9
  9. {specpulse-1.3.2 → specpulse-1.4.0}/specpulse/core/specpulse.py +24 -90
  10. {specpulse-1.3.2 → specpulse-1.4.0}/specpulse/core/validator.py +38 -34
  11. {specpulse-1.3.2 → specpulse-1.4.0}/specpulse/resources/commands/claude/sp-decompose.md +17 -17
  12. {specpulse-1.3.2 → specpulse-1.4.0}/specpulse/resources/commands/claude/sp-plan.md +47 -47
  13. {specpulse-1.3.2 → specpulse-1.4.0}/specpulse/resources/commands/claude/sp-pulse.md +10 -10
  14. {specpulse-1.3.2 → specpulse-1.4.0}/specpulse/resources/commands/claude/sp-spec.md +15 -10
  15. {specpulse-1.3.2 → specpulse-1.4.0}/specpulse/resources/commands/claude/sp-task.md +15 -15
  16. {specpulse-1.3.2 → specpulse-1.4.0}/specpulse/resources/commands/gemini/sp-plan.toml +17 -17
  17. specpulse-1.4.0/specpulse/resources/memory/constitution.md +346 -0
  18. specpulse-1.4.0/specpulse/resources/scripts/sp-pulse-init.ps1 +131 -0
  19. specpulse-1.4.0/specpulse/resources/scripts/sp-pulse-plan.ps1 +147 -0
  20. {specpulse-1.3.2 → specpulse-1.4.0}/specpulse/resources/scripts/sp-pulse-plan.sh +131 -138
  21. specpulse-1.4.0/specpulse/resources/scripts/sp-pulse-spec.ps1 +126 -0
  22. {specpulse-1.3.2 → specpulse-1.4.0}/specpulse/resources/scripts/sp-pulse-spec.sh +3 -14
  23. specpulse-1.4.0/specpulse/resources/scripts/sp-pulse-task.ps1 +166 -0
  24. {specpulse-1.3.2 → specpulse-1.4.0}/specpulse/resources/scripts/sp-pulse-task.sh +12 -24
  25. {specpulse-1.3.2 → specpulse-1.4.0}/specpulse/resources/templates/decomposition/integration-plan.md +6 -5
  26. {specpulse-1.3.2 → specpulse-1.4.0}/specpulse/resources/templates/decomposition/microservices.md +6 -5
  27. {specpulse-1.3.2 → specpulse-1.4.0}/specpulse/resources/templates/decomposition/service-plan.md +6 -5
  28. {specpulse-1.3.2 → specpulse-1.4.0}/specpulse/resources/templates/plan.md +229 -205
  29. {specpulse-1.3.2 → specpulse-1.4.0}/specpulse/resources/templates/task.md +165 -165
  30. specpulse-1.4.0/specpulse/utils/version_check.py +128 -0
  31. {specpulse-1.3.2 → specpulse-1.4.0/specpulse.egg-info}/PKG-INFO +70 -29
  32. {specpulse-1.3.2 → specpulse-1.4.0}/specpulse.egg-info/SOURCES.txt +14 -14
  33. {specpulse-1.3.2 → specpulse-1.4.0}/specpulse.egg-info/requires.txt +1 -0
  34. specpulse-1.4.0/tests/test_all.py +555 -0
  35. specpulse-1.4.0/tests/test_cli.py +339 -0
  36. specpulse-1.4.0/tests/test_cli_fixed.py +309 -0
  37. specpulse-1.4.0/tests/test_complete_100.py +981 -0
  38. specpulse-1.4.0/tests/test_complete_coverage.py +598 -0
  39. specpulse-1.4.0/tests/test_console.py +193 -0
  40. specpulse-1.4.0/tests/test_coverage_100.py +376 -0
  41. specpulse-1.4.0/tests/test_final_100.py +996 -0
  42. specpulse-1.4.0/tests/test_git_utils.py +291 -0
  43. specpulse-1.4.0/tests/test_integration.py +294 -0
  44. specpulse-1.4.0/tests/test_specpulse.py +202 -0
  45. specpulse-1.4.0/tests/test_validator.py +269 -0
  46. specpulse-1.4.0/tests/test_version_utils.py +129 -0
  47. specpulse-1.3.2/specpulse/resources/memory/constitution.md +0 -237
  48. specpulse-1.3.2/tests/test_100_complete.py +0 -358
  49. specpulse-1.3.2/tests/test_100_coverage.py +0 -275
  50. specpulse-1.3.2/tests/test_100_percent.py +0 -530
  51. specpulse-1.3.2/tests/test_cli.py +0 -245
  52. specpulse-1.3.2/tests/test_complete_coverage.py +0 -814
  53. specpulse-1.3.2/tests/test_core.py +0 -389
  54. specpulse-1.3.2/tests/test_coverage_100.py +0 -721
  55. specpulse-1.3.2/tests/test_decompose.py +0 -272
  56. specpulse-1.3.2/tests/test_final_100.py +0 -799
  57. specpulse-1.3.2/tests/test_final_80_percent.py +0 -345
  58. specpulse-1.3.2/tests/test_final_coverage.py +0 -417
  59. specpulse-1.3.2/tests/test_final_coverage_push.py +0 -618
  60. specpulse-1.3.2/tests/test_final_push_100.py +0 -521
  61. specpulse-1.3.2/tests/test_full_coverage.py +0 -439
  62. specpulse-1.3.2/tests/test_maximum_coverage.py +0 -391
  63. specpulse-1.3.2/tests/test_ultimate_coverage.py +0 -424
  64. specpulse-1.3.2/tests/test_utils.py +0 -403
  65. specpulse-1.3.2/tests/test_validator.py +0 -483
  66. {specpulse-1.3.2 → specpulse-1.4.0}/LICENSE +0 -0
  67. {specpulse-1.3.2 → specpulse-1.4.0}/setup.cfg +0 -0
  68. {specpulse-1.3.2 → specpulse-1.4.0}/specpulse/cli/__init__.py +0 -0
  69. {specpulse-1.3.2 → specpulse-1.4.0}/specpulse/core/__init__.py +0 -0
  70. {specpulse-1.3.2 → specpulse-1.4.0}/specpulse/resources/commands/claude/sp-continue.md +0 -0
  71. {specpulse-1.3.2 → specpulse-1.4.0}/specpulse/resources/commands/claude/sp-execute.md +0 -0
  72. {specpulse-1.3.2 → specpulse-1.4.0}/specpulse/resources/commands/claude/sp-status.md +0 -0
  73. {specpulse-1.3.2 → specpulse-1.4.0}/specpulse/resources/commands/gemini/sp-continue.toml +0 -0
  74. {specpulse-1.3.2 → specpulse-1.4.0}/specpulse/resources/commands/gemini/sp-decompose.toml +0 -0
  75. {specpulse-1.3.2 → specpulse-1.4.0}/specpulse/resources/commands/gemini/sp-execute.toml +0 -0
  76. {specpulse-1.3.2 → specpulse-1.4.0}/specpulse/resources/commands/gemini/sp-pulse.toml +0 -0
  77. {specpulse-1.3.2 → specpulse-1.4.0}/specpulse/resources/commands/gemini/sp-spec.toml +0 -0
  78. {specpulse-1.3.2 → specpulse-1.4.0}/specpulse/resources/commands/gemini/sp-status.toml +0 -0
  79. {specpulse-1.3.2 → specpulse-1.4.0}/specpulse/resources/commands/gemini/sp-task.toml +0 -0
  80. {specpulse-1.3.2 → specpulse-1.4.0}/specpulse/resources/memory/context.md +0 -0
  81. {specpulse-1.3.2 → specpulse-1.4.0}/specpulse/resources/memory/decisions.md +0 -0
  82. {specpulse-1.3.2 → specpulse-1.4.0}/specpulse/resources/scripts/sp-pulse-decompose.sh +0 -0
  83. {specpulse-1.3.2 → specpulse-1.4.0}/specpulse/resources/scripts/sp-pulse-execute.sh +0 -0
  84. {specpulse-1.3.2 → specpulse-1.4.0}/specpulse/resources/scripts/sp-pulse-init.sh +0 -0
  85. {specpulse-1.3.2 → specpulse-1.4.0}/specpulse/resources/templates/decomposition/api-contract.yaml +0 -0
  86. {specpulse-1.3.2 → specpulse-1.4.0}/specpulse/resources/templates/decomposition/interface.ts +0 -0
  87. {specpulse-1.3.2 → specpulse-1.4.0}/specpulse/resources/templates/spec.md +0 -0
  88. {specpulse-1.3.2 → specpulse-1.4.0}/specpulse/utils/__init__.py +0 -0
  89. {specpulse-1.3.2 → specpulse-1.4.0}/specpulse/utils/console.py +0 -0
  90. {specpulse-1.3.2 → specpulse-1.4.0}/specpulse/utils/git_utils.py +0 -0
  91. {specpulse-1.3.2 → specpulse-1.4.0}/specpulse.egg-info/dependency_links.txt +0 -0
  92. {specpulse-1.3.2 → specpulse-1.4.0}/specpulse.egg-info/entry_points.txt +0 -0
  93. {specpulse-1.3.2 → specpulse-1.4.0}/specpulse.egg-info/not-zip-safe +0 -0
  94. {specpulse-1.3.2 → specpulse-1.4.0}/specpulse.egg-info/top_level.txt +0 -0
@@ -2,7 +2,7 @@ include README.md
2
2
  include LICENSE
3
3
  include pyproject.toml
4
4
  include requirements.txt
5
- recursive-include specpulse/resources *.md *.sh *.toml *.yaml
5
+ recursive-include specpulse/resources *.md *.sh *.ps1 *.toml *.yaml
6
6
  recursive-include specpulse/resources/templates *
7
7
  recursive-include specpulse/resources/memory *
8
8
  recursive-include specpulse/resources/scripts *
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: specpulse
3
- Version: 1.3.2
3
+ Version: 1.4.0
4
4
  Summary: Specification-Driven Development Framework
5
5
  Home-page: https://github.com/specpulse
6
6
  Author: SpecPulse
@@ -32,6 +32,7 @@ Requires-Dist: rich>=13.0
32
32
  Requires-Dist: jinja2>=3.0
33
33
  Requires-Dist: gitpython>=3.1
34
34
  Requires-Dist: toml>=0.10
35
+ Requires-Dist: packaging>=21.0
35
36
  Provides-Extra: dev
36
37
  Requires-Dist: pytest>=7.0; extra == "dev"
37
38
  Requires-Dist: pytest-cov>=4.0; extra == "dev"
@@ -56,7 +57,7 @@ Dynamic: requires-python
56
57
 
57
58
  *Build better software faster by putting specifications first and letting AI handle the implementation details.*
58
59
 
59
- [Installation](#-installation) • [Quick Start](#-quick-start) • [Features](#-features) • [Documentation](#-documentation) • [Contributing](#-contributing)
60
+ [Installation](#-installation) • [Quick Start](#-quick-start) • [Usage Guide](#-usage-guide) • [Features](#-features) • [Documentation](#-documentation) • [Contributing](#-contributing)
60
61
 
61
62
  </div>
62
63
 
@@ -64,21 +65,22 @@ Dynamic: requires-python
64
65
 
65
66
  ## 🎯 What is SpecPulse?
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
+ SpecPulse is a universal **Specification-Driven Development (SDD)** framework that works with ANY software project - web apps, mobile apps, desktop software, games, APIs, ML projects, and more. It ensures every feature starts with clear specifications, validated plans, and tracked tasks.
68
69
 
69
- > **Latest Update (v1.3.0)**:
70
- > - 🚀 **Continuous Task Execution**: New `/sp-execute` command for non-stop task completion
71
- > - **Flow State Development**: Execute all tasks without interruptions
72
- > - 🔄 **Smart Task Progression**: Automatic advancement through task lists
73
- > - 🎯 **Batch Processing**: Complete entire features in one command
74
- > - **Previous (v1.2.0)**: Microservice decomposition, service-based planning, smart workflow detection
75
- > - **Previous (v1.1.0)**: Command prefix system, multi-spec workflow, versioned files
70
+ > **Latest Update (v1.4.0)** - Complete Framework Revolution:
71
+ > - 🚀 **Universal SDD Framework**: Transformed from Constitutional to Specification-Driven Development
72
+ > - 🎯 **No Technology Restrictions**: Support for ANY technology stack - web, mobile, desktop, games, ML
73
+ > - 🧪 **86% Test Coverage**: Complete test suite rewrite with 98.3% success rate
74
+ > - **9 Universal Principles**: Flexible principles replacing rigid articles
75
+ > - 🔄 **Major API Updates**: All methods renamed from `constitution` to `sdd_compliance`
76
+ > - 📝 **Enhanced Documentation**: Complete overhaul of docs and templates
76
77
 
77
78
  ### Why SpecPulse?
78
79
 
80
+ - **🎯 Universal**: Works with ANY project type - web, mobile, desktop, games, APIs, ML
79
81
  - **🔍 Clarity First**: No more ambiguous requirements or scope creep
80
82
  - **🤖 AI-Optimized**: Designed specifically for Claude and Gemini workflows
81
- - **✅ Quality Gates**: Built-in checks prevent bad code from entering your codebase
83
+ - **✅ Quality Gates**: Built-in checks ensure quality for your specific project type
82
84
  - **📊 Full Traceability**: Every decision, change, and requirement is tracked
83
85
  - **🚀 Faster Delivery**: Structured approach reduces rework and debugging time
84
86
 
@@ -175,21 +177,21 @@ specpulse sync
175
177
 
176
178
  ## ✨ Features
177
179
 
178
- ### 🏛️ Constitutional Development
180
+ ### 🏛️ Universal SDD Principles
179
181
 
180
- Nine immutable principles guide every line of code:
182
+ Nine principles that enable Specification-Driven Development for ANY project:
181
183
 
182
- | Article | Principle | Benefit |
183
- |---------|-----------|---------|
184
- | **I** | Library-First | Every feature is modular and reusable |
185
- | **II** | CLI Interface | Text-based interaction for automation |
186
- | **III** | Test-First | Tests before code, always |
187
- | **IV** | Staged Implementation | Incremental, validated progress |
188
- | **V** | Direct Framework Usage | No unnecessary abstractions |
189
- | **VI** | No Abstraction Layers | Keep it simple, keep it maintainable |
190
- | **VII** | Simplicity Enforcement | Maximum 3 modules per feature |
191
- | **VIII** | Complexity Tracking | Document and justify exceptions |
192
- | **IX** | Framework-First | Don't reinvent the wheel |
184
+ | # | Principle | Purpose | Applies To |
185
+ |---|-----------|---------|------------|
186
+ | **1** | Specification First | Start with clear requirements | All projects |
187
+ | **2** | Incremental Planning | Phased implementation | Web, mobile, desktop, games |
188
+ | **3** | Task Decomposition | Concrete, executable tasks | Any technology stack |
189
+ | **4** | Traceable Implementation | Link code to specs | All languages |
190
+ | **5** | Continuous Validation | Ensure spec alignment | Any framework |
191
+ | **6** | Quality Assurance | Appropriate testing | GUI, CLI, API, games |
192
+ | **7** | Architecture Documentation | Record decisions | Any architecture |
193
+ | **8** | Iterative Refinement | Evolve with learnings | All methodologies |
194
+ | **9** | Stakeholder Alignment | Shared understanding | Any team size |
193
195
 
194
196
  ### 🚦 Phase Gates System
195
197
 
@@ -201,10 +203,10 @@ Before any code is written, features must pass:
201
203
  └────────┬────────┘
202
204
 
203
205
  ┌─────────────────┐
204
- │ Phase Gates │ → Constitutional compliance check
205
- └────────┬────────┘ Simplicity validation (≤3 modules)
206
- Test strategy defined
207
- ┌─────────────────┐ Framework selected
206
+ │ Phase Gates │ → SDD compliance check
207
+ └────────┬────────┘ Quality assurance strategy defined
208
+ Architecture documented
209
+ ┌─────────────────┐ Stakeholder alignment confirmed
208
210
  │ Implementation │ Research completed
209
211
  └────────┬────────┘
210
212
 
@@ -253,7 +255,7 @@ memory/
253
255
 
254
256
  - **Persistent Context**: Never lose track of project state
255
257
  - **Decision History**: Understand why choices were made
256
- - **Constitutional Enforcement**: Principles that can't be violated
258
+ - **SDD Enforcement**: Universal principles for any software project
257
259
 
258
260
  ### 🔍 [NEEDS CLARIFICATION] Markers
259
261
 
@@ -573,6 +575,45 @@ pytest tests/
573
575
  - **[GitHub Repository](https://github.com/specpulse/specpulse)** - Source code and issues
574
576
  - **Command Reference** - See AI Integration section above for full command list
575
577
 
578
+ ## 📚 Usage Guide
579
+
580
+ ### How to Break Your Project into Features (Pulses)
581
+
582
+ A complete guide is available in **[SPECPULSE_USAGE_GUIDE.md](SPECPULSE_USAGE_GUIDE.md)** which covers:
583
+ - Feature decomposition strategies
584
+ - Sizing guidelines (3-15 tasks per pulse)
585
+ - Naming conventions (001-feature-name format)
586
+ - Real-world examples for different project types
587
+ - Best practices for feature boundaries
588
+
589
+ #### Quick Examples
590
+
591
+ **E-Commerce Platform:**
592
+ ```
593
+ 001-user-authentication # Registration, login, sessions
594
+ 002-product-catalog # Products, categories, search
595
+ 003-shopping-cart # Cart management, calculations
596
+ 004-payment-processing # Gateway, transactions, receipts
597
+ 005-order-management # History, tracking, refunds
598
+ ```
599
+
600
+ **SaaS Application:**
601
+ ```
602
+ 001-tenant-management # Multi-tenancy, workspaces
603
+ 002-subscription-billing # Plans, payments, invoices
604
+ 003-api-management # Keys, rate limiting, docs
605
+ 004-admin-dashboard # Analytics, reports, settings
606
+ 005-webhook-system # Events, notifications, logs
607
+ ```
608
+
609
+ **Key Principles:**
610
+ - Each pulse should be **independent** and **testable**
611
+ - Size appropriately for your project type
612
+ - Use **sequential numbering** (001, 002, 003...)
613
+ - Follow the **9 universal SDD principles**
614
+
615
+ See the full guide for detailed breakdowns and strategies.
616
+
576
617
  ## 📄 License
577
618
 
578
619
  MIT License - see [LICENSE](LICENSE) file for details.
@@ -11,7 +11,7 @@
11
11
 
12
12
  *Build better software faster by putting specifications first and letting AI handle the implementation details.*
13
13
 
14
- [Installation](#-installation) • [Quick Start](#-quick-start) • [Features](#-features) • [Documentation](#-documentation) • [Contributing](#-contributing)
14
+ [Installation](#-installation) • [Quick Start](#-quick-start) • [Usage Guide](#-usage-guide) • [Features](#-features) • [Documentation](#-documentation) • [Contributing](#-contributing)
15
15
 
16
16
  </div>
17
17
 
@@ -19,21 +19,22 @@
19
19
 
20
20
  ## 🎯 What is SpecPulse?
21
21
 
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.
22
+ SpecPulse is a universal **Specification-Driven Development (SDD)** framework that works with ANY software project - web apps, mobile apps, desktop software, games, APIs, ML projects, and more. It ensures every feature starts with clear specifications, validated plans, and tracked tasks.
23
23
 
24
- > **Latest Update (v1.3.0)**:
25
- > - 🚀 **Continuous Task Execution**: New `/sp-execute` command for non-stop task completion
26
- > - **Flow State Development**: Execute all tasks without interruptions
27
- > - 🔄 **Smart Task Progression**: Automatic advancement through task lists
28
- > - 🎯 **Batch Processing**: Complete entire features in one command
29
- > - **Previous (v1.2.0)**: Microservice decomposition, service-based planning, smart workflow detection
30
- > - **Previous (v1.1.0)**: Command prefix system, multi-spec workflow, versioned files
24
+ > **Latest Update (v1.4.0)** - Complete Framework Revolution:
25
+ > - 🚀 **Universal SDD Framework**: Transformed from Constitutional to Specification-Driven Development
26
+ > - 🎯 **No Technology Restrictions**: Support for ANY technology stack - web, mobile, desktop, games, ML
27
+ > - 🧪 **86% Test Coverage**: Complete test suite rewrite with 98.3% success rate
28
+ > - **9 Universal Principles**: Flexible principles replacing rigid articles
29
+ > - 🔄 **Major API Updates**: All methods renamed from `constitution` to `sdd_compliance`
30
+ > - 📝 **Enhanced Documentation**: Complete overhaul of docs and templates
31
31
 
32
32
  ### Why SpecPulse?
33
33
 
34
+ - **🎯 Universal**: Works with ANY project type - web, mobile, desktop, games, APIs, ML
34
35
  - **🔍 Clarity First**: No more ambiguous requirements or scope creep
35
36
  - **🤖 AI-Optimized**: Designed specifically for Claude and Gemini workflows
36
- - **✅ Quality Gates**: Built-in checks prevent bad code from entering your codebase
37
+ - **✅ Quality Gates**: Built-in checks ensure quality for your specific project type
37
38
  - **📊 Full Traceability**: Every decision, change, and requirement is tracked
38
39
  - **🚀 Faster Delivery**: Structured approach reduces rework and debugging time
39
40
 
@@ -130,21 +131,21 @@ specpulse sync
130
131
 
131
132
  ## ✨ Features
132
133
 
133
- ### 🏛️ Constitutional Development
134
+ ### 🏛️ Universal SDD Principles
134
135
 
135
- Nine immutable principles guide every line of code:
136
+ Nine principles that enable Specification-Driven Development for ANY project:
136
137
 
137
- | Article | Principle | Benefit |
138
- |---------|-----------|---------|
139
- | **I** | Library-First | Every feature is modular and reusable |
140
- | **II** | CLI Interface | Text-based interaction for automation |
141
- | **III** | Test-First | Tests before code, always |
142
- | **IV** | Staged Implementation | Incremental, validated progress |
143
- | **V** | Direct Framework Usage | No unnecessary abstractions |
144
- | **VI** | No Abstraction Layers | Keep it simple, keep it maintainable |
145
- | **VII** | Simplicity Enforcement | Maximum 3 modules per feature |
146
- | **VIII** | Complexity Tracking | Document and justify exceptions |
147
- | **IX** | Framework-First | Don't reinvent the wheel |
138
+ | # | Principle | Purpose | Applies To |
139
+ |---|-----------|---------|------------|
140
+ | **1** | Specification First | Start with clear requirements | All projects |
141
+ | **2** | Incremental Planning | Phased implementation | Web, mobile, desktop, games |
142
+ | **3** | Task Decomposition | Concrete, executable tasks | Any technology stack |
143
+ | **4** | Traceable Implementation | Link code to specs | All languages |
144
+ | **5** | Continuous Validation | Ensure spec alignment | Any framework |
145
+ | **6** | Quality Assurance | Appropriate testing | GUI, CLI, API, games |
146
+ | **7** | Architecture Documentation | Record decisions | Any architecture |
147
+ | **8** | Iterative Refinement | Evolve with learnings | All methodologies |
148
+ | **9** | Stakeholder Alignment | Shared understanding | Any team size |
148
149
 
149
150
  ### 🚦 Phase Gates System
150
151
 
@@ -156,10 +157,10 @@ Before any code is written, features must pass:
156
157
  └────────┬────────┘
157
158
 
158
159
  ┌─────────────────┐
159
- │ Phase Gates │ → Constitutional compliance check
160
- └────────┬────────┘ Simplicity validation (≤3 modules)
161
- Test strategy defined
162
- ┌─────────────────┐ Framework selected
160
+ │ Phase Gates │ → SDD compliance check
161
+ └────────┬────────┘ Quality assurance strategy defined
162
+ Architecture documented
163
+ ┌─────────────────┐ Stakeholder alignment confirmed
163
164
  │ Implementation │ Research completed
164
165
  └────────┬────────┘
165
166
 
@@ -208,7 +209,7 @@ memory/
208
209
 
209
210
  - **Persistent Context**: Never lose track of project state
210
211
  - **Decision History**: Understand why choices were made
211
- - **Constitutional Enforcement**: Principles that can't be violated
212
+ - **SDD Enforcement**: Universal principles for any software project
212
213
 
213
214
  ### 🔍 [NEEDS CLARIFICATION] Markers
214
215
 
@@ -528,6 +529,45 @@ pytest tests/
528
529
  - **[GitHub Repository](https://github.com/specpulse/specpulse)** - Source code and issues
529
530
  - **Command Reference** - See AI Integration section above for full command list
530
531
 
532
+ ## 📚 Usage Guide
533
+
534
+ ### How to Break Your Project into Features (Pulses)
535
+
536
+ A complete guide is available in **[SPECPULSE_USAGE_GUIDE.md](SPECPULSE_USAGE_GUIDE.md)** which covers:
537
+ - Feature decomposition strategies
538
+ - Sizing guidelines (3-15 tasks per pulse)
539
+ - Naming conventions (001-feature-name format)
540
+ - Real-world examples for different project types
541
+ - Best practices for feature boundaries
542
+
543
+ #### Quick Examples
544
+
545
+ **E-Commerce Platform:**
546
+ ```
547
+ 001-user-authentication # Registration, login, sessions
548
+ 002-product-catalog # Products, categories, search
549
+ 003-shopping-cart # Cart management, calculations
550
+ 004-payment-processing # Gateway, transactions, receipts
551
+ 005-order-management # History, tracking, refunds
552
+ ```
553
+
554
+ **SaaS Application:**
555
+ ```
556
+ 001-tenant-management # Multi-tenancy, workspaces
557
+ 002-subscription-billing # Plans, payments, invoices
558
+ 003-api-management # Keys, rate limiting, docs
559
+ 004-admin-dashboard # Analytics, reports, settings
560
+ 005-webhook-system # Events, notifications, logs
561
+ ```
562
+
563
+ **Key Principles:**
564
+ - Each pulse should be **independent** and **testable**
565
+ - Size appropriately for your project type
566
+ - Use **sequential numbering** (001, 002, 003...)
567
+ - Follow the **9 universal SDD principles**
568
+
569
+ See the full guide for detailed breakdowns and strategies.
570
+
531
571
  ## 📄 License
532
572
 
533
573
  MIT License - see [LICENSE](LICENSE) file for details.
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "specpulse"
7
- version = "1.3.2"
7
+ version = "1.4.0"
8
8
  description = "Specification-Driven Development Framework"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.11"
@@ -45,6 +45,7 @@ dependencies = [
45
45
  "jinja2>=3.0",
46
46
  "gitpython>=3.1",
47
47
  "toml>=0.10",
48
+ "packaging>=21.0",
48
49
  ]
49
50
 
50
51
  [project.optional-dependencies]
@@ -3,4 +3,5 @@ click>=8.0
3
3
  rich>=13.0
4
4
  jinja2>=3.0
5
5
  gitpython>=3.1
6
- toml>=0.10
6
+ toml>=0.10
7
+ packaging>=21.0
@@ -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.3.2",
14
+ version="1.3.4",
15
15
  author="SpecPulse",
16
16
  author_email="",
17
17
  description="Next-Generation Specification-Driven Development Framework",
@@ -3,7 +3,7 @@ SpecPulse: Specification-Driven Development Framework
3
3
  Built for the AI era
4
4
  """
5
5
 
6
- __version__ = "1.3.2"
6
+ __version__ = "1.4.0"
7
7
  __author__ = "SpecPulse"
8
8
  __url__ = "https://github.com/specpulse"
9
9
 
@@ -17,6 +17,7 @@ from ..core.specpulse import SpecPulse
17
17
  from ..core.validator import Validator
18
18
  from ..utils.console import Console
19
19
  from ..utils.git_utils import GitUtils
20
+ from ..utils.version_check import check_pypi_version, compare_versions, get_update_message, should_check_version
20
21
 
21
22
 
22
23
  class SpecPulseCLI:
@@ -24,7 +25,32 @@ class SpecPulseCLI:
24
25
  self.console = Console(no_color=no_color, verbose=verbose)
25
26
  self.specpulse = SpecPulse()
26
27
  self.validator = Validator()
27
-
28
+
29
+ # Check for updates (non-blocking)
30
+ self._check_for_updates()
31
+
32
+ def _check_for_updates(self):
33
+ """Check for available updates on PyPI"""
34
+ try:
35
+ if not should_check_version():
36
+ return
37
+
38
+ latest = check_pypi_version(timeout=1)
39
+ if latest:
40
+ current = __version__
41
+ is_outdated, is_major = compare_versions(current, latest)
42
+
43
+ if is_outdated:
44
+ message, color = get_update_message(current, latest, is_major)
45
+ # Only show for init command or when verbose
46
+ # Don't spam on every command
47
+ import sys
48
+ if len(sys.argv) > 1 and sys.argv[1] in ['init', '--version']:
49
+ self.console.info(message, style=color)
50
+ except:
51
+ # Never fail due to version check
52
+ pass
53
+
28
54
  def init(self, project_name: Optional[str] = None,
29
55
  here: bool = False,
30
56
  ai: str = "claude",
@@ -67,10 +93,11 @@ class SpecPulseCLI:
67
93
  ".gemini/commands",
68
94
  "memory",
69
95
  "specs",
70
- "plans",
96
+ "plans",
71
97
  "tasks",
72
98
  "scripts",
73
- "templates"
99
+ "templates",
100
+ "templates/decomposition"
74
101
  ]
75
102
 
76
103
  # Create directories with progress bar
@@ -198,7 +225,17 @@ class SpecPulseCLI:
198
225
  task_template = self.specpulse.get_task_template()
199
226
  with open(templates_dir / "task.md", 'w', encoding='utf-8') as f:
200
227
  f.write(task_template)
201
-
228
+
229
+ # Copy decomposition templates
230
+ decomp_dir = templates_dir / "decomposition"
231
+ decomp_dir.mkdir(parents=True, exist_ok=True)
232
+
233
+ resources_decomp_dir = self.specpulse.resources_dir / "templates" / "decomposition"
234
+ if resources_decomp_dir.exists():
235
+ for template_file in resources_decomp_dir.iterdir():
236
+ if template_file.is_file():
237
+ shutil.copy2(template_file, decomp_dir / template_file.name)
238
+
202
239
  self.console.success("Created templates")
203
240
 
204
241
  def _create_memory_files(self, project_path: Path):
@@ -228,20 +265,20 @@ class SpecPulseCLI:
228
265
  resources_scripts_dir = self.specpulse.resources_dir / "scripts"
229
266
 
230
267
  # Copy all script files from resources
231
- script_extensions = [".sh", ".py"]
268
+ script_extensions = [".sh", ".ps1", ".py"]
232
269
  scripts_copied = 0
233
-
270
+
234
271
  for script_file in resources_scripts_dir.iterdir():
235
272
  if script_file.suffix in script_extensions:
236
273
  dest_path = scripts_dir / script_file.name
237
274
  shutil.copy2(script_file, dest_path)
238
-
275
+
239
276
  # Make shell scripts executable
240
- if script_file.suffix == ".sh":
277
+ if script_file.suffix in [".sh", ".ps1"]:
241
278
  try:
242
279
  os.chmod(dest_path, 0o755)
243
280
  except:
244
- pass # Windows may not support chmod
281
+ pass # Windows may not support chmod for .sh files
245
282
 
246
283
  scripts_copied += 1
247
284
 
@@ -41,7 +41,7 @@ class SpecPulse:
41
41
 
42
42
  def get_spec_template(self) -> str:
43
43
  """Get specification template from file"""
44
- template_path = self.resources_dir / "templates" / "spec-001.md"
44
+ template_path = self.resources_dir / "templates" / "spec.md"
45
45
  if template_path.exists():
46
46
  with open(template_path, 'r', encoding='utf-8') as f:
47
47
  return f.read()
@@ -125,7 +125,7 @@ FR-001: [Requirement]
125
125
 
126
126
  def get_plan_template(self) -> str:
127
127
  """Get implementation plan template from file"""
128
- template_path = self.resources_dir / "templates" / "plan-001.md"
128
+ template_path = self.resources_dir / "templates" / "plan.md"
129
129
  if template_path.exists():
130
130
  with open(template_path, 'r', encoding='utf-8') as f:
131
131
  return f.read()
@@ -294,14 +294,14 @@ indexes:
294
294
  - Performance Benchmarks
295
295
  - Security Scenarios
296
296
 
297
- ## Constitution Compliance
297
+ ## SDD Compliance
298
298
 
299
299
  ### Principle Validation
300
- - [ ] Single Responsibility: Each component has one purpose
301
- - [ ] Test-First: Tests written before implementation
302
- - [ ] Documentation: All code is documented
303
- - [ ] Security: Security considered by design
304
- - [ ] Performance: Meets performance targets
300
+ - [ ] Specification First: Requirements clearly defined
301
+ - [ ] Incremental Planning: Phased approach planned
302
+ - [ ] Task Decomposition: Broken into executable tasks
303
+ - [ ] Quality Assurance: Appropriate testing strategy
304
+ - [ ] Architecture Documentation: Decisions recorded
305
305
 
306
306
  ## Risk Assessment
307
307
 
@@ -317,7 +317,7 @@ indexes:
317
317
 
318
318
  ## Success Criteria
319
319
  - [ ] All functional requirements implemented
320
- - [ ] Test coverage > 80%
320
+ - [ ] Appropriate test coverage for project type
321
321
  - [ ] Performance targets met
322
322
  - [ ] Security audit passed
323
323
  - [ ] Documentation complete
@@ -419,79 +419,9 @@ metrics:
419
419
  if template_path.exists():
420
420
  with open(template_path, 'r', encoding='utf-8') as f:
421
421
  return f.read()
422
- # Fallback to embedded template if file not found
423
- return """# Project Constitution
424
-
425
- ## Immutable Principles
426
-
427
- ### Principle 1: Simplicity First
428
- Every solution must start with the simplest approach that could work.
429
- Complexity is added only when proven necessary.
430
-
431
- ### Principle 2: Test-Driven Development
432
- No production code without tests.
433
- Tests are written first, implementation follows.
434
-
435
- ### Principle 3: Single Responsibility
436
- Each module, function, and component does one thing well.
437
- If you need "and" to describe it, split it.
438
-
439
- ### Principle 4: Documentation as Code
440
- Documentation lives with code.
441
- If it's not documented, it doesn't exist.
442
-
443
- ### Principle 5: Security by Design
444
- Security is not an afterthought.
445
- Every feature considers security implications from the start.
446
-
447
- ## Technical Standards
448
-
449
- ### Code Style
450
- - Python: PEP 8 with type hints
451
- - JavaScript: StandardJS
452
- - Go: Official Go formatting
453
-
454
- ### Testing Requirements
455
- - Minimum 80% code coverage
456
- - All API endpoints must have contract tests
457
- - Critical paths require E2E tests
458
-
459
- ### Performance Targets
460
- - API response time: < 200ms (p95)
461
- - Page load time: < 2 seconds
462
- - Database queries: < 50ms
463
-
464
- ### Security Requirements
465
- - All data encrypted in transit (TLS 1.3+)
466
- - Sensitive data encrypted at rest
467
- - Authentication: OAuth 2.0 / JWT
468
- - Authorization: RBAC with least privilege
469
-
470
- ## Architecture Rules
471
-
472
- ### Service Boundaries
473
- - Services communicate only through defined APIs
474
- - No shared databases between services
475
- - Each service owns its data
476
-
477
- ### Data Management
478
- - Single source of truth for each data type
479
- - Event sourcing for audit requirements
480
- - CQRS where read/write patterns differ
481
-
482
- ### Error Handling
483
- - All errors are handled explicitly
484
- - User-facing errors are helpful and actionable
485
- - System errors are logged with context
486
-
487
- ## Amendment Process
488
-
489
- Changes to this constitution require:
490
- 1. Documented rationale
491
- 2. Team consensus
492
- 3. Gradual migration plan
493
- 4. Update to all affected documentation
494
- """
422
+ # Fallback - return empty if template not found
423
+ # Templates should always be loaded from resources/memory/constitution.md
424
+ return ""
495
425
 
496
426
  def get_context_template(self) -> str:
497
427
  """Get context template from file"""
@@ -915,20 +845,24 @@ Validates specifications, plans, or project.
915
845
  4. Plan approved → Use `/sp-task breakdown`
916
846
  5. Before implementation → Use `/validate all`
917
847
 
918
- ## Constitution Rules
848
+ ## SDD Principles
919
849
 
920
- Always enforce these principles:
921
- 1. Simplicity first
922
- 2. Test-driven development
923
- 3. Single responsibility
924
- 4. Documentation as code
925
- 5. Security by design
850
+ Follow these universal principles:
851
+ 1. Specification First
852
+ 2. Incremental Planning
853
+ 3. Task Decomposition
854
+ 4. Traceable Implementation
855
+ 5. Continuous Validation
856
+ 6. Quality Assurance
857
+ 7. Architecture Documentation
858
+ 8. Iterative Refinement
859
+ 9. Stakeholder Alignment
926
860
 
927
861
  ## Context Management
928
862
 
929
863
  - Read `memory/context.md` for project state
930
864
  - Update context after major decisions
931
- - Check `memory/constitution.md` for principles
865
+ - Check `memory/constitution.md` for SDD principles
932
866
  - Reference previous specs for consistency
933
867
 
934
868
  ## Templates