specpulse 1.0.6__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.6/specpulse.egg-info → specpulse-1.1.0}/PKG-INFO +35 -35
- {specpulse-1.0.6 → specpulse-1.1.0}/README.md +34 -34
- {specpulse-1.0.6 → specpulse-1.1.0}/pyproject.toml +1 -2
- {specpulse-1.0.6 → specpulse-1.1.0}/setup.py +1 -1
- {specpulse-1.0.6 → specpulse-1.1.0}/specpulse/__init__.py +1 -1
- {specpulse-1.0.6 → specpulse-1.1.0}/specpulse/cli/main.py +598 -617
- {specpulse-1.0.6 → specpulse-1.1.0}/specpulse/core/specpulse.py +1110 -1105
- specpulse-1.1.0/specpulse/resources/commands/claude/sp-continue.md +203 -0
- specpulse-1.0.6/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.6/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.6/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.6/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.6 → specpulse-1.1.0}/specpulse/resources/memory/constitution.md +5 -5
- {specpulse-1.0.6 → specpulse-1.1.0}/specpulse/resources/memory/context.md +12 -1
- specpulse-1.0.6/specpulse/resources/scripts/pulse-init.py → specpulse-1.1.0/specpulse/resources/scripts/sp-pulse-init.py +6 -6
- specpulse-1.0.6/specpulse/resources/scripts/pulse-init.sh → specpulse-1.1.0/specpulse/resources/scripts/sp-pulse-init.sh +95 -95
- specpulse-1.0.6/specpulse/resources/scripts/pulse-plan.py → specpulse-1.1.0/specpulse/resources/scripts/sp-pulse-plan.py +32 -7
- specpulse-1.0.6/specpulse/resources/scripts/pulse-plan.sh → specpulse-1.1.0/specpulse/resources/scripts/sp-pulse-plan.sh +136 -126
- specpulse-1.0.6/specpulse/resources/scripts/pulse-spec.py → specpulse-1.1.0/specpulse/resources/scripts/sp-pulse-spec.py +26 -6
- specpulse-1.0.6/specpulse/resources/scripts/pulse-spec.sh → specpulse-1.1.0/specpulse/resources/scripts/sp-pulse-spec.sh +126 -103
- specpulse-1.0.6/specpulse/resources/scripts/pulse-task.py → specpulse-1.1.0/specpulse/resources/scripts/sp-pulse-task.py +42 -6
- specpulse-1.0.6/specpulse/resources/scripts/pulse-task.sh → specpulse-1.1.0/specpulse/resources/scripts/sp-pulse-task.sh +32 -16
- {specpulse-1.0.6 → specpulse-1.1.0}/specpulse/resources/templates/plan.md +206 -206
- {specpulse-1.0.6 → specpulse-1.1.0}/specpulse/resources/templates/spec.md +125 -125
- {specpulse-1.0.6 → specpulse-1.1.0}/specpulse/resources/templates/task.md +164 -163
- {specpulse-1.0.6 → specpulse-1.1.0/specpulse.egg-info}/PKG-INFO +35 -35
- specpulse-1.1.0/specpulse.egg-info/SOURCES.txt +48 -0
- specpulse-1.0.6/specpulse/resources/commands/claude/pulse.md +0 -91
- 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/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.1.0}/LICENSE +0 -0
- {specpulse-1.0.6 → specpulse-1.1.0}/MANIFEST.in +0 -0
- {specpulse-1.0.6 → specpulse-1.1.0}/requirements.txt +0 -0
- {specpulse-1.0.6 → specpulse-1.1.0}/setup.cfg +0 -0
- {specpulse-1.0.6 → specpulse-1.1.0}/specpulse/cli/__init__.py +0 -0
- {specpulse-1.0.6 → specpulse-1.1.0}/specpulse/core/__init__.py +0 -0
- {specpulse-1.0.6 → specpulse-1.1.0}/specpulse/core/validator.py +0 -0
- {specpulse-1.0.6 → specpulse-1.1.0}/specpulse/resources/memory/decisions.md +0 -0
- {specpulse-1.0.6 → specpulse-1.1.0}/specpulse/utils/__init__.py +0 -0
- {specpulse-1.0.6 → specpulse-1.1.0}/specpulse/utils/console.py +0 -0
- {specpulse-1.0.6 → specpulse-1.1.0}/specpulse/utils/git_utils.py +0 -0
- {specpulse-1.0.6 → specpulse-1.1.0}/specpulse.egg-info/dependency_links.txt +0 -0
- {specpulse-1.0.6 → specpulse-1.1.0}/specpulse.egg-info/entry_points.txt +0 -0
- {specpulse-1.0.6 → specpulse-1.1.0}/specpulse.egg-info/not-zip-safe +0 -0
- {specpulse-1.0.6 → specpulse-1.1.0}/specpulse.egg-info/requires.txt +0 -0
- {specpulse-1.0.6 → 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,11 +66,12 @@ 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
|
-
> -
|
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
|
74
75
|
> - ✅ **Improved Error Handling**: Better resource path resolution and script copying operations
|
75
76
|
|
76
77
|
### Why SpecPulse?
|
@@ -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>
|
@@ -21,11 +21,12 @@
|
|
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
|
-
> -
|
24
|
+
> **Latest Update (v1.1.0)**:
|
25
|
+
> - 🔧 **Command Prefix System**: All commands now use `sp-` prefix to avoid conflicts
|
26
|
+
> - 📋 **Multi-Spec Workflow**: Support for multiple specs/plans/tasks per feature
|
27
|
+
> - 🗂️ **Versioned File System**: Automatic spec-001.md, plan-001.md, task-001.md naming
|
28
|
+
> - 🎯 **Context Detection**: Automatic feature detection using git branches
|
29
|
+
> - 🤖 **Enhanced AI Integration**: Improved manual workflow control
|
29
30
|
> - ✅ **Improved Error Handling**: Better resource path resolution and script copying operations
|
30
31
|
|
31
32
|
### Why SpecPulse?
|
@@ -81,21 +82,21 @@ 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)
|
90
91
|
|
91
92
|
# Generate implementation plan
|
92
|
-
/plan generate
|
93
|
-
# Or: /plan validate (to check existing plan)
|
93
|
+
/sp-plan generate
|
94
|
+
# Or: /sp-plan validate (to check existing plan)
|
94
95
|
|
95
96
|
# Break down into tasks
|
96
|
-
/task breakdown
|
97
|
-
# Or: /task update (to update task status)
|
98
|
-
# Or: /task status (to see progress)
|
97
|
+
/sp-task breakdown
|
98
|
+
# Or: /sp-task update (to update task status)
|
99
|
+
# Or: /sp-task status (to see progress)
|
99
100
|
```
|
100
101
|
|
101
102
|
### Step 4: Validate & Ship
|
@@ -219,23 +220,22 @@ Claude and Gemini use slash commands that accept arguments via `$ARGUMENTS`:
|
|
219
220
|
- **Unicode Support**: Full international character support (≤, ≥, →, ←)
|
220
221
|
|
221
222
|
```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
|
-
/plan generate # Generate plan from specification
|
227
|
-
/plan validate # Validate plan against constitution
|
228
|
-
/task breakdown # Create task list from plan
|
229
|
-
/task update # Update task statuses
|
230
|
-
/task status # Show current progress
|
223
|
+
/sp-pulse user-authentication # Start new feature with name
|
224
|
+
/sp-spec create OAuth2 login # Create specification with description
|
225
|
+
/sp-spec update # Update existing specification
|
226
|
+
/sp-spec validate # Validate specification completeness
|
227
|
+
/sp-plan generate # Generate plan from specification
|
228
|
+
/sp-plan validate # Validate plan against constitution
|
229
|
+
/sp-task breakdown # Create task list from plan
|
230
|
+
/sp-task update # Update task statuses
|
231
|
+
/sp-task status # Show current progress
|
231
232
|
```
|
232
233
|
|
233
234
|
**Behind the Scenes:**
|
234
235
|
- Commands capture arguments using `$ARGUMENTS` variable
|
235
236
|
- **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)
|
237
|
+
- `sp-pulse-*.py` - Python scripts (universal)
|
238
|
+
- `sp-pulse-*.sh` - Bash scripts (Linux/macOS)
|
239
239
|
- AI reads templates from `resources/templates/` folder
|
240
240
|
- Results are saved in `specs/`, `plans/`, `tasks/` folders
|
241
241
|
- Memory system tracks progress in `memory/` folder
|
@@ -280,19 +280,19 @@ my-project/
|
|
280
280
|
│ └── decisions.md # Architecture Decision Records
|
281
281
|
├── specs/ # Feature specifications
|
282
282
|
│ └── 001-feature/
|
283
|
-
│ └── spec.md
|
283
|
+
│ └── spec-001.md
|
284
284
|
├── plans/ # Implementation plans
|
285
285
|
│ └── 001-feature/
|
286
|
-
│ └── plan.md
|
286
|
+
│ └── plan-001.md
|
287
287
|
├── tasks/ # Task breakdowns
|
288
288
|
│ └── 001-feature/
|
289
|
-
│ └──
|
289
|
+
│ └── task-001.md
|
290
290
|
├── templates/ # Customizable templates
|
291
291
|
├── 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
|
292
|
+
│ ├── sp-pulse-init.sh # Feature initialization
|
293
|
+
│ ├── sp-pulse-spec.sh # Specification creation
|
294
|
+
│ ├── sp-pulse-plan.sh # Plan generation
|
295
|
+
│ └── sp-pulse-task.sh # Task breakdown
|
296
296
|
└── PULSE.md # Project manifest
|
297
297
|
```
|
298
298
|
|
@@ -304,7 +304,7 @@ Create project-specific templates:
|
|
304
304
|
|
305
305
|
```bash
|
306
306
|
# Copy and modify templates
|
307
|
-
cp templates/spec.md templates/custom-spec.md
|
307
|
+
cp templates/spec-001.md templates/custom-spec.md
|
308
308
|
# Edit to match your needs
|
309
309
|
```
|
310
310
|
|
@@ -368,7 +368,7 @@ specpulse validate --component constitution
|
|
368
368
|
**Solution**: Check template path in config.yaml
|
369
369
|
|
370
370
|
### AI Commands Not Working
|
371
|
-
**Problem**: `/pulse` commands not recognized
|
371
|
+
**Problem**: `/sp-pulse` commands not recognized
|
372
372
|
**Solution**: Ensure you ran `specpulse init --ai claude` or `--ai gemini`
|
373
373
|
|
374
374
|
</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.1.0"
|
8
8
|
description = "Specification-Driven Development Framework"
|
9
9
|
readme = "README.md"
|
10
10
|
requires-python = ">=3.11"
|
@@ -89,7 +89,6 @@ specpulse = [
|
|
89
89
|
"resources/memory/*.md",
|
90
90
|
"resources/scripts/*.sh",
|
91
91
|
"resources/scripts/*.py",
|
92
|
-
"resources/scripts/*.ps1",
|
93
92
|
"resources/commands/claude/*.md",
|
94
93
|
"resources/commands/gemini/*.toml",
|
95
94
|
]
|
@@ -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.1.0",
|
15
15
|
author="SpecPulse",
|
16
16
|
author_email="",
|
17
17
|
description="Next-Generation Specification-Driven Development Framework",
|