specpulse 1.0.5__tar.gz → 1.1.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.5/specpulse.egg-info → specpulse-1.1.0}/PKG-INFO +36 -45
- {specpulse-1.0.5 → specpulse-1.1.0}/README.md +417 -426
- {specpulse-1.0.5 → specpulse-1.1.0}/pyproject.toml +2 -1
- {specpulse-1.0.5 → specpulse-1.1.0}/setup.py +1 -1
- {specpulse-1.0.5 → specpulse-1.1.0}/specpulse/__init__.py +1 -1
- {specpulse-1.0.5 → specpulse-1.1.0}/specpulse/cli/main.py +60 -93
- {specpulse-1.0.5 → specpulse-1.1.0}/specpulse/core/specpulse.py +1110 -1099
- specpulse-1.1.0/specpulse/resources/commands/claude/sp-continue.md +203 -0
- specpulse-1.0.5/specpulse/resources/commands/claude/plan.md → specpulse-1.1.0/specpulse/resources/commands/claude/sp-plan.md +53 -38
- specpulse-1.1.0/specpulse/resources/commands/claude/sp-pulse.md +142 -0
- specpulse-1.0.5/specpulse/resources/commands/claude/spec.md → specpulse-1.1.0/specpulse/resources/commands/claude/sp-spec.md +36 -23
- specpulse-1.1.0/specpulse/resources/commands/claude/sp-status.md +170 -0
- specpulse-1.0.5/specpulse/resources/commands/claude/task.md → specpulse-1.1.0/specpulse/resources/commands/claude/sp-task.md +68 -48
- specpulse-1.1.0/specpulse/resources/commands/gemini/sp-continue.toml +56 -0
- specpulse-1.1.0/specpulse/resources/commands/gemini/sp-plan.toml +68 -0
- specpulse-1.0.5/specpulse/resources/commands/gemini/pulse.toml → specpulse-1.1.0/specpulse/resources/commands/gemini/sp-pulse.toml +12 -6
- specpulse-1.1.0/specpulse/resources/commands/gemini/sp-spec.toml +54 -0
- specpulse-1.1.0/specpulse/resources/commands/gemini/sp-status.toml +61 -0
- specpulse-1.1.0/specpulse/resources/commands/gemini/sp-task.toml +79 -0
- {specpulse-1.0.5 → specpulse-1.1.0}/specpulse/resources/memory/constitution.md +5 -5
- {specpulse-1.0.5 → specpulse-1.1.0}/specpulse/resources/memory/context.md +12 -1
- specpulse-1.0.5/specpulse/resources/scripts/pulse-init.py → specpulse-1.1.0/specpulse/resources/scripts/sp-pulse-init.py +6 -6
- specpulse-1.0.5/specpulse/resources/scripts/pulse-init.sh → specpulse-1.1.0/specpulse/resources/scripts/sp-pulse-init.sh +95 -95
- specpulse-1.0.5/specpulse/resources/scripts/pulse-plan.py → specpulse-1.1.0/specpulse/resources/scripts/sp-pulse-plan.py +32 -7
- specpulse-1.0.5/specpulse/resources/scripts/pulse-plan.sh → specpulse-1.1.0/specpulse/resources/scripts/sp-pulse-plan.sh +136 -126
- specpulse-1.0.5/specpulse/resources/scripts/pulse-spec.py → specpulse-1.1.0/specpulse/resources/scripts/sp-pulse-spec.py +26 -6
- specpulse-1.0.5/specpulse/resources/scripts/pulse-spec.sh → specpulse-1.1.0/specpulse/resources/scripts/sp-pulse-spec.sh +126 -103
- specpulse-1.0.5/specpulse/resources/scripts/pulse-task.py → specpulse-1.1.0/specpulse/resources/scripts/sp-pulse-task.py +42 -6
- specpulse-1.0.5/specpulse/resources/scripts/pulse-task.sh → specpulse-1.1.0/specpulse/resources/scripts/sp-pulse-task.sh +32 -16
- {specpulse-1.0.5 → specpulse-1.1.0}/specpulse/resources/templates/plan.md +206 -206
- {specpulse-1.0.5 → specpulse-1.1.0}/specpulse/resources/templates/spec.md +125 -125
- {specpulse-1.0.5 → specpulse-1.1.0}/specpulse/resources/templates/task.md +164 -163
- {specpulse-1.0.5 → specpulse-1.1.0/specpulse.egg-info}/PKG-INFO +36 -45
- specpulse-1.1.0/specpulse.egg-info/SOURCES.txt +48 -0
- specpulse-1.0.5/specpulse/resources/commands/claude/pulse.md +0 -91
- specpulse-1.0.5/specpulse/resources/commands/gemini/plan.toml +0 -59
- specpulse-1.0.5/specpulse/resources/commands/gemini/spec.toml +0 -45
- specpulse-1.0.5/specpulse/resources/commands/gemini/task.toml +0 -69
- specpulse-1.0.5/specpulse/resources/scripts/pulse-init.ps1 +0 -186
- specpulse-1.0.5/specpulse/resources/scripts/pulse-plan.ps1 +0 -251
- specpulse-1.0.5/specpulse/resources/scripts/pulse-spec.ps1 +0 -185
- specpulse-1.0.5/specpulse/resources/scripts/pulse-task.ps1 +0 -263
- specpulse-1.0.5/specpulse.egg-info/SOURCES.txt +0 -68
- specpulse-1.0.5/tests/test_100_coverage.py +0 -328
- specpulse-1.0.5/tests/test_100_percent_coverage.py +0 -461
- specpulse-1.0.5/tests/test_ai_commands.py +0 -136
- specpulse-1.0.5/tests/test_cli.py +0 -184
- specpulse-1.0.5/tests/test_cli_advanced.py +0 -277
- specpulse-1.0.5/tests/test_cli_comprehensive.py +0 -611
- specpulse-1.0.5/tests/test_command_integration.py +0 -182
- specpulse-1.0.5/tests/test_complete_coverage.py +0 -338
- specpulse-1.0.5/tests/test_console_advanced.py +0 -230
- specpulse-1.0.5/tests/test_console_comprehensive.py +0 -561
- specpulse-1.0.5/tests/test_core.py +0 -235
- specpulse-1.0.5/tests/test_core_comprehensive.py +0 -486
- specpulse-1.0.5/tests/test_cross_platform_scripts.py +0 -317
- specpulse-1.0.5/tests/test_full_coverage.py +0 -541
- specpulse-1.0.5/tests/test_gemini_commands.py +0 -130
- specpulse-1.0.5/tests/test_git_utils.py +0 -270
- specpulse-1.0.5/tests/test_git_utils_comprehensive.py +0 -698
- specpulse-1.0.5/tests/test_powershell_scripts.py +0 -464
- specpulse-1.0.5/tests/test_python_scripts.py +0 -470
- specpulse-1.0.5/tests/test_validator_comprehensive.py +0 -613
- {specpulse-1.0.5 → specpulse-1.1.0}/LICENSE +0 -0
- {specpulse-1.0.5 → specpulse-1.1.0}/MANIFEST.in +0 -0
- {specpulse-1.0.5 → specpulse-1.1.0}/requirements.txt +0 -0
- {specpulse-1.0.5 → specpulse-1.1.0}/setup.cfg +0 -0
- {specpulse-1.0.5 → specpulse-1.1.0}/specpulse/cli/__init__.py +0 -0
- {specpulse-1.0.5 → specpulse-1.1.0}/specpulse/core/__init__.py +0 -0
- {specpulse-1.0.5 → specpulse-1.1.0}/specpulse/core/validator.py +0 -0
- {specpulse-1.0.5 → specpulse-1.1.0}/specpulse/resources/memory/decisions.md +0 -0
- {specpulse-1.0.5 → specpulse-1.1.0}/specpulse/utils/__init__.py +0 -0
- {specpulse-1.0.5 → specpulse-1.1.0}/specpulse/utils/console.py +0 -0
- {specpulse-1.0.5 → specpulse-1.1.0}/specpulse/utils/git_utils.py +0 -0
- {specpulse-1.0.5 → specpulse-1.1.0}/specpulse.egg-info/dependency_links.txt +0 -0
- {specpulse-1.0.5 → specpulse-1.1.0}/specpulse.egg-info/entry_points.txt +0 -0
- {specpulse-1.0.5 → specpulse-1.1.0}/specpulse.egg-info/not-zip-safe +0 -0
- {specpulse-1.0.5 → specpulse-1.1.0}/specpulse.egg-info/requires.txt +0 -0
- {specpulse-1.0.5 → specpulse-1.1.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.1.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.1.0)**:
|
70
|
+
> - 🔧 **Command Prefix System**: All commands now use `sp-` prefix to avoid conflicts
|
71
|
+
> - 📋 **Multi-Spec Workflow**: Support for multiple specs/plans/tasks per feature
|
72
|
+
> - 🗂️ **Versioned File System**: Automatic spec-001.md, plan-001.md, task-001.md naming
|
73
|
+
> - 🎯 **Context Detection**: Automatic feature detection using git branches
|
74
|
+
> - 🤖 **Enhanced AI Integration**: Improved manual workflow control
|
75
|
+
> - ✅ **Improved Error Handling**: Better resource path resolution and script copying operations
|
75
76
|
|
76
77
|
### Why SpecPulse?
|
77
78
|
|
@@ -126,21 +127,21 @@ 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)
|
135
136
|
|
136
137
|
# Generate implementation plan
|
137
|
-
/plan generate
|
138
|
-
# Or: /plan validate (to check existing plan)
|
138
|
+
/sp-plan generate
|
139
|
+
# Or: /sp-plan validate (to check existing plan)
|
139
140
|
|
140
141
|
# Break down into tasks
|
141
|
-
/task breakdown
|
142
|
-
# Or: /task update (to update task status)
|
143
|
-
# Or: /task status (to see progress)
|
142
|
+
/sp-task breakdown
|
143
|
+
# Or: /sp-task update (to update task status)
|
144
|
+
# Or: /sp-task status (to see progress)
|
144
145
|
```
|
145
146
|
|
146
147
|
### Step 4: Validate & Ship
|
@@ -264,23 +265,22 @@ Claude and Gemini use slash commands that accept arguments via `$ARGUMENTS`:
|
|
264
265
|
- **Unicode Support**: Full international character support (≤, ≥, →, ←)
|
265
266
|
|
266
267
|
```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
|
268
|
+
/sp-pulse user-authentication # Start new feature with name
|
269
|
+
/sp-spec create OAuth2 login # Create specification with description
|
270
|
+
/sp-spec update # Update existing specification
|
271
|
+
/sp-spec validate # Validate specification completeness
|
272
|
+
/sp-plan generate # Generate plan from specification
|
273
|
+
/sp-plan validate # Validate plan against constitution
|
274
|
+
/sp-task breakdown # Create task list from plan
|
275
|
+
/sp-task update # Update task statuses
|
276
|
+
/sp-task status # Show current progress
|
276
277
|
```
|
277
278
|
|
278
279
|
**Behind the Scenes:**
|
279
280
|
- Commands capture arguments using `$ARGUMENTS` variable
|
280
281
|
- **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)
|
282
|
+
- `sp-pulse-*.py` - Python scripts (universal)
|
283
|
+
- `sp-pulse-*.sh` - Bash scripts (Linux/macOS)
|
284
284
|
- AI reads templates from `resources/templates/` folder
|
285
285
|
- Results are saved in `specs/`, `plans/`, `tasks/` folders
|
286
286
|
- Memory system tracks progress in `memory/` folder
|
@@ -325,19 +325,19 @@ my-project/
|
|
325
325
|
│ └── decisions.md # Architecture Decision Records
|
326
326
|
├── specs/ # Feature specifications
|
327
327
|
│ └── 001-feature/
|
328
|
-
│ └── spec.md
|
328
|
+
│ └── spec-001.md
|
329
329
|
├── plans/ # Implementation plans
|
330
330
|
│ └── 001-feature/
|
331
|
-
│ └── plan.md
|
331
|
+
│ └── plan-001.md
|
332
332
|
├── tasks/ # Task breakdowns
|
333
333
|
│ └── 001-feature/
|
334
|
-
│ └──
|
334
|
+
│ └── task-001.md
|
335
335
|
├── templates/ # Customizable templates
|
336
336
|
├── 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
|
337
|
+
│ ├── sp-pulse-init.sh # Feature initialization
|
338
|
+
│ ├── sp-pulse-spec.sh # Specification creation
|
339
|
+
│ ├── sp-pulse-plan.sh # Plan generation
|
340
|
+
│ └── sp-pulse-task.sh # Task breakdown
|
341
341
|
└── PULSE.md # Project manifest
|
342
342
|
```
|
343
343
|
|
@@ -349,7 +349,7 @@ Create project-specific templates:
|
|
349
349
|
|
350
350
|
```bash
|
351
351
|
# Copy and modify templates
|
352
|
-
cp templates/spec.md templates/custom-spec.md
|
352
|
+
cp templates/spec-001.md templates/custom-spec.md
|
353
353
|
# Edit to match your needs
|
354
354
|
```
|
355
355
|
|
@@ -413,7 +413,7 @@ specpulse validate --component constitution
|
|
413
413
|
**Solution**: Check template path in config.yaml
|
414
414
|
|
415
415
|
### AI Commands Not Working
|
416
|
-
**Problem**: `/pulse` commands not recognized
|
416
|
+
**Problem**: `/sp-pulse` commands not recognized
|
417
417
|
**Solution**: Ensure you ran `specpulse init --ai claude` or `--ai gemini`
|
418
418
|
|
419
419
|
</details>
|
@@ -439,21 +439,12 @@ pytest tests/
|
|
439
439
|
|
440
440
|
- **[PyPI Package](https://pypi.org/project/specpulse/)** - Official package page
|
441
441
|
- **[GitHub Repository](https://github.com/specpulse/specpulse)** - Source code and issues
|
442
|
-
- **[Examples](https://github.com/specpulse/specpulse/tree/main/examples)** - Real-world usage
|
443
442
|
- **Command Reference** - See AI Integration section above for full command list
|
444
443
|
|
445
444
|
## 📄 License
|
446
445
|
|
447
446
|
MIT License - see [LICENSE](LICENSE) file for details.
|
448
447
|
|
449
|
-
## 🙏 Acknowledgments
|
450
|
-
|
451
|
-
Built with inspiration from:
|
452
|
-
- Test-Driven Development principles
|
453
|
-
- Domain-Driven Design
|
454
|
-
- Clean Architecture
|
455
|
-
- Specification by Example
|
456
|
-
|
457
448
|
## 🚦 Project Status
|
458
449
|
|
459
450
|
[](https://github.com/specpulse/specpulse)
|