specpulse 1.0.3__py3-none-any.whl → 1.0.5__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- specpulse/__init__.py +1 -1
- specpulse/resources/commands/claude/plan.md +180 -50
- specpulse/resources/commands/claude/pulse.md +79 -24
- specpulse/resources/commands/claude/spec.md +156 -43
- specpulse/resources/commands/claude/task.md +229 -48
- specpulse/resources/commands/gemini/plan.toml +59 -48
- specpulse/resources/commands/gemini/pulse.toml +21 -39
- specpulse/resources/commands/gemini/spec.toml +40 -28
- specpulse/resources/commands/gemini/task.toml +69 -51
- specpulse/resources/memory/constitution.md +2 -2
- specpulse/resources/scripts/pulse-init.ps1 +186 -0
- specpulse/resources/scripts/pulse-init.py +171 -0
- specpulse/resources/scripts/pulse-init.sh +80 -21
- specpulse/resources/scripts/pulse-plan.ps1 +251 -0
- specpulse/resources/scripts/pulse-plan.py +191 -0
- specpulse/resources/scripts/pulse-plan.sh +113 -12
- specpulse/resources/scripts/pulse-spec.ps1 +185 -0
- specpulse/resources/scripts/pulse-spec.py +167 -0
- specpulse/resources/scripts/pulse-spec.sh +86 -11
- specpulse/resources/scripts/pulse-task.ps1 +263 -0
- specpulse/resources/scripts/pulse-task.py +237 -0
- specpulse/resources/scripts/pulse-task.sh +123 -9
- specpulse/resources/templates/plan.md +142 -287
- specpulse/resources/templates/spec.md +80 -246
- specpulse/resources/templates/task.md +114 -93
- {specpulse-1.0.3.dist-info → specpulse-1.0.5.dist-info}/METADATA +67 -34
- specpulse-1.0.5.dist-info/RECORD +41 -0
- specpulse-1.0.3.dist-info/RECORD +0 -33
- {specpulse-1.0.3.dist-info → specpulse-1.0.5.dist-info}/WHEEL +0 -0
- {specpulse-1.0.3.dist-info → specpulse-1.0.5.dist-info}/entry_points.txt +0 -0
- {specpulse-1.0.3.dist-info → specpulse-1.0.5.dist-info}/licenses/LICENSE +0 -0
- {specpulse-1.0.3.dist-info → specpulse-1.0.5.dist-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.0.5
|
4
4
|
Summary: Specification-Driven Development Framework
|
5
5
|
Home-page: https://github.com/specpulse
|
6
6
|
Author: SpecPulse
|
@@ -66,7 +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.
|
69
|
+
> **Latest Update (v1.0.5)**:
|
70
|
+
> - ✅ **Complete Cross-Platform Support**: Works seamlessly on Windows, Linux, and macOS
|
71
|
+
> - ✅ **100% Test Success Rate**: Comprehensive test suite with 37+ tests across all platforms
|
72
|
+
> - ✅ **Python & PowerShell Scripts**: Full script compatibility beyond bash
|
73
|
+
> - ✅ **Automatic Platform Detection**: AI commands choose the right script automatically
|
74
|
+
> - ✅ **Unicode Support**: Full international character support (≤, ≥, →, ←)
|
70
75
|
|
71
76
|
### Why SpecPulse?
|
72
77
|
|
@@ -87,6 +92,13 @@ pip install specpulse --upgrade
|
|
87
92
|
- Git (optional, for version control features)
|
88
93
|
- Claude or Gemini CLI (for AI integration)
|
89
94
|
|
95
|
+
**Cross-Platform Support:**
|
96
|
+
- **Windows**: Python scripts + PowerShell fallback + Bash compatibility
|
97
|
+
- **Linux**: Python scripts + Bash fallback
|
98
|
+
- **macOS**: Python scripts + Bash fallback
|
99
|
+
- **Source Installation**: Works perfectly from source code (not just PyPI)
|
100
|
+
- **Automatic Detection**: AI commands automatically detect OS and choose appropriate script
|
101
|
+
|
90
102
|
## 🚀 Quick Start
|
91
103
|
|
92
104
|
### Step 1: Initialize Your Project
|
@@ -114,25 +126,21 @@ specpulse init --ai gemini
|
|
114
126
|
|
115
127
|
```bash
|
116
128
|
# Initialize a new feature
|
117
|
-
/pulse
|
118
|
-
|
119
|
-
# Create the specification
|
120
|
-
/spec create "User login with OAuth2 and email/password"
|
129
|
+
/pulse user-authentication
|
130
|
+
# Creates structure for 001-user-authentication feature
|
121
131
|
|
122
|
-
#
|
123
|
-
/spec
|
132
|
+
# Create the specification
|
133
|
+
/spec create user login with OAuth2 and email/password
|
134
|
+
# Or just: /spec (for interactive mode)
|
124
135
|
|
125
136
|
# Generate implementation plan
|
126
137
|
/plan generate
|
127
|
-
|
128
|
-
# Validate plan against constitution
|
129
|
-
/plan validate
|
138
|
+
# Or: /plan validate (to check existing plan)
|
130
139
|
|
131
140
|
# Break down into tasks
|
132
141
|
/task breakdown
|
133
|
-
|
134
|
-
#
|
135
|
-
/task status
|
142
|
+
# Or: /task update (to update task status)
|
143
|
+
# Or: /task status (to see progress)
|
136
144
|
```
|
137
145
|
|
138
146
|
### Step 4: Validate & Ship
|
@@ -244,28 +252,52 @@ Stop guessing what users want:
|
|
244
252
|
|
245
253
|
### 🤖 Deep AI Integration
|
246
254
|
|
247
|
-
**
|
255
|
+
**How AI Commands Work:**
|
256
|
+
|
257
|
+
Claude and Gemini use slash commands that accept arguments via `$ARGUMENTS`:
|
258
|
+
|
259
|
+
**Cross-Platform Script Execution:**
|
260
|
+
- **Windows**: PowerShell (.ps1) → Python (.py) → Bash (.sh) fallback
|
261
|
+
- **Linux/macOS**: Python (.py) → Bash (.sh) fallback
|
262
|
+
- **Automatic Detection**: AI commands detect OS and choose appropriate script
|
263
|
+
- **Universal Compatibility**: Works whether installed via PyPI or source code
|
264
|
+
- **Unicode Support**: Full international character support (≤, ≥, →, ←)
|
265
|
+
|
248
266
|
```bash
|
249
|
-
#
|
250
|
-
/
|
251
|
-
|
252
|
-
#
|
253
|
-
/
|
254
|
-
/
|
255
|
-
/
|
256
|
-
|
257
|
-
#
|
258
|
-
/plan generate # Create implementation plan from spec
|
259
|
-
/plan validate # Validate plan against constitution
|
260
|
-
|
261
|
-
# Task management
|
262
|
-
/task breakdown # Generate tasks from plan
|
263
|
-
/task update # Update task status
|
264
|
-
/task status # Show task progress
|
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
|
265
276
|
```
|
266
277
|
|
267
|
-
**
|
268
|
-
|
278
|
+
**Behind the Scenes:**
|
279
|
+
- Commands capture arguments using `$ARGUMENTS` variable
|
280
|
+
- **Multi-platform scripts** in `resources/scripts/` folder process the arguments:
|
281
|
+
- `pulse-*.py` - Python scripts (universal)
|
282
|
+
- `pulse-*.ps1` - PowerShell scripts (Windows)
|
283
|
+
- `pulse-*.sh` - Bash scripts (Linux/macOS)
|
284
|
+
- AI reads templates from `resources/templates/` folder
|
285
|
+
- Results are saved in `specs/`, `plans/`, `tasks/` folders
|
286
|
+
- Memory system tracks progress in `memory/` folder
|
287
|
+
- **Automatic platform detection** ensures the right script runs on each OS
|
288
|
+
|
289
|
+
**Claude vs Gemini:**
|
290
|
+
- **Claude**: Uses Markdown command files (`.claude/commands/*.md`) with YAML frontmatter
|
291
|
+
- Arguments passed via `$ARGUMENTS` variable to shell scripts
|
292
|
+
- **Gemini**: Uses TOML command files (`.gemini/commands/*.toml`) with simple format
|
293
|
+
- Arguments handled via `{{args}}` placeholder in prompts
|
294
|
+
- Both support arguments and work the same way from user perspective
|
295
|
+
|
296
|
+
**Command Arguments:**
|
297
|
+
- Commands can accept arguments: `/command arg1 arg2`
|
298
|
+
- Claude: Arguments passed to scripts via `$ARGUMENTS`
|
299
|
+
- Gemini: Arguments injected via `{{args}}` placeholder
|
300
|
+
- Commands can be used without arguments for interactive mode
|
269
301
|
|
270
302
|
## 📊 Real-World Impact
|
271
303
|
|
@@ -425,7 +457,8 @@ Built with inspiration from:
|
|
425
457
|
## 🚦 Project Status
|
426
458
|
|
427
459
|
[](https://github.com/specpulse/specpulse)
|
428
|
-
[](https://github.com/specpulse/specpulse)
|
461
|
+
[](https://github.com/specpulse/specpulse)
|
429
462
|
[](https://github.com/specpulse/specpulse)
|
430
463
|
|
431
464
|
---
|
@@ -0,0 +1,41 @@
|
|
1
|
+
specpulse/__init__.py,sha256=mFqNY7y8V56Bi5jEyLNImuQO17yO4h91E6tE90ZxWN0,270
|
2
|
+
specpulse/cli/__init__.py,sha256=DpX6FoRJtSNjudsmZ3mTih_RIaWyiIgxew4-f8mOmFY,70
|
3
|
+
specpulse/cli/main.py,sha256=bnf9xka3AIAyhkjCXGKI-T45eTKyzx0bwE68TOkTfU0,24486
|
4
|
+
specpulse/core/__init__.py,sha256=VKHGdPDM38QM9yDIq05jxol4q8WFlFAeltOzYLsPuto,132
|
5
|
+
specpulse/core/specpulse.py,sha256=YVqZMDO3AIbCsAHY32wIuUV1cH-hIKAcFkqR5WrInVw,29962
|
6
|
+
specpulse/core/validator.py,sha256=dnaNUx7tj8V2K1TE6WPwrNWEiCpqC_b_DKryq6-A7Hk,12057
|
7
|
+
specpulse/resources/commands/claude/plan.md,sha256=G5V97UcTms6KgU4N2o8Chay64DMGoxUvq4xqhdv7Lfg,5958
|
8
|
+
specpulse/resources/commands/claude/pulse.md,sha256=Ki4iz5c4emXPHfIVMaXAuYEynHE8gmvWlnu3RXTvtNw,3116
|
9
|
+
specpulse/resources/commands/claude/spec.md,sha256=xGnyT-7xcp2-NvBrbdcNsrbcHGN6--Z6doUMre-9wvE,5365
|
10
|
+
specpulse/resources/commands/claude/task.md,sha256=R9gyuiQh4J5SlqWp1RMjEPdKELwXISmC4JZ4flio8oI,7643
|
11
|
+
specpulse/resources/commands/gemini/plan.toml,sha256=JdS03OYTxJ2i8CXV5EJ4y-dV1A4ybjykf8ulkd3EbvU,1752
|
12
|
+
specpulse/resources/commands/gemini/pulse.toml,sha256=qQVbgg00LYDrtNPMyGNlrgeIeAKHyWCws5AKmT1f4sg,1006
|
13
|
+
specpulse/resources/commands/gemini/spec.toml,sha256=x0oPTewcqJWef3VDRmwbNyezGggENGw52-lwcQSQRU8,1790
|
14
|
+
specpulse/resources/commands/gemini/task.toml,sha256=omnRxtLlBXNOz7sWmQAactFU_sPxUIYBbKBBlFubfC4,2062
|
15
|
+
specpulse/resources/memory/constitution.md,sha256=uPqK-3petpoKXmjoPf3x4L-kRzDO7zXeYYjW6_fFFEI,8286
|
16
|
+
specpulse/resources/memory/context.md,sha256=6021CJIJNTMOIB6xTxc3ehEGOUglIfl_IyJQXwzjw3U,562
|
17
|
+
specpulse/resources/memory/decisions.md,sha256=ZwzVyOPB2mIzwveWpGmedej7ncI81GALg8WVy6AeZA4,686
|
18
|
+
specpulse/resources/scripts/pulse-init.ps1,sha256=3_2Fj-glwgWO8XzdKGC_TklAGtO_20zE5vABofiGmEI,5494
|
19
|
+
specpulse/resources/scripts/pulse-init.py,sha256=LL2IJOmADj0x5mXnWCYyfUmdrHkk60UG96hGRl91NeM,6695
|
20
|
+
specpulse/resources/scripts/pulse-init.sh,sha256=bxA0HN0D3TXYKQ9qFtzTFuuhhRnQ1sVvaTXTwMbDfxg,3042
|
21
|
+
specpulse/resources/scripts/pulse-plan.ps1,sha256=i2CzT6dGY0bVXQG1iscOk6HZBdDf4wikUcVhYDtBPLY,7572
|
22
|
+
specpulse/resources/scripts/pulse-plan.py,sha256=8VuBK8eFg-LFu6EseYsTnG8sIynfmonbF2LIPFptiso,7561
|
23
|
+
specpulse/resources/scripts/pulse-plan.sh,sha256=YIc-HQgZNY-sngIiNe9_wJh08PHnSQ_KB4UEzaMjUTk,3703
|
24
|
+
specpulse/resources/scripts/pulse-spec.ps1,sha256=6C71kPpXCOF_DWH1sbmjiOSG9v-us2r2dppX0Ids2fI,5496
|
25
|
+
specpulse/resources/scripts/pulse-spec.py,sha256=rC52OJpcy2ist3mFRK2UFGCtTH6A6VrtDgdbB8hKy3M,6502
|
26
|
+
specpulse/resources/scripts/pulse-spec.sh,sha256=W7c9HvgvuK6CW3KkN-LezuQa9nTOmcSM1wVuUFXKsS4,3129
|
27
|
+
specpulse/resources/scripts/pulse-task.ps1,sha256=CO7PkHiFHp-WvbkIv-bHRsoQq4JM7THhdBvpBG1wCKs,7841
|
28
|
+
specpulse/resources/scripts/pulse-task.py,sha256=JyZVjPpDb9DaZf8Id3du29XLGTRPLdqan0FCSQCdPuc,9381
|
29
|
+
specpulse/resources/scripts/pulse-task.sh,sha256=pOGO_TK5V73UuIHTWX_GOt0I1LHYkTQA6_mMPFy-ZT0,4446
|
30
|
+
specpulse/resources/templates/plan.md,sha256=nym4lCmf9TzQ2XbIJGdx1H5zUd_2dF85RZoYiekk48g,6465
|
31
|
+
specpulse/resources/templates/spec.md,sha256=kAR4OIoBg0127c5nA_wcmVko6pY6SRAx8ZGmk9QZr8M,3612
|
32
|
+
specpulse/resources/templates/task.md,sha256=J1k2LksoXVubrYDuar36VXlA_YB_JCFUm-_aG6pzMVo,4595
|
33
|
+
specpulse/utils/__init__.py,sha256=VTGRDsVLl2JIXYyHB9Sidxj5acY_W-LJI2MMtY1pwb0,122
|
34
|
+
specpulse/utils/console.py,sha256=xn4Koc1_ph61bvBTlvPOwAbqZ5ac7TZ51xTWJbwG0sc,12973
|
35
|
+
specpulse/utils/git_utils.py,sha256=RzJBZoyWp5on1_wq2lY1bs__UJsGKSDpAUeDKFdRYlQ,6095
|
36
|
+
specpulse-1.0.5.dist-info/licenses/LICENSE,sha256=ImSFezK-Phy0oTBqZipcajsJfPZT8mmg8m3jkgNdNhA,1066
|
37
|
+
specpulse-1.0.5.dist-info/METADATA,sha256=UswKYeF4ZBCpQ4ADB5p8JEr49elKb-JhiM_Ryr_tBCM,16768
|
38
|
+
specpulse-1.0.5.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
39
|
+
specpulse-1.0.5.dist-info/entry_points.txt,sha256=GwMaCKWSCFZlJMrTNavEYrnREynIS6dM3B0ILxnaouA,83
|
40
|
+
specpulse-1.0.5.dist-info/top_level.txt,sha256=pEfkFil5xe38J00OHrBrJ07xpbm6bRnGhI8B07O9KeI,10
|
41
|
+
specpulse-1.0.5.dist-info/RECORD,,
|
specpulse-1.0.3.dist-info/RECORD
DELETED
@@ -1,33 +0,0 @@
|
|
1
|
-
specpulse/__init__.py,sha256=jyEZnW74ap-Myn1nXo5LOSr7bZ2uRw-hHKJzQe4vQcY,270
|
2
|
-
specpulse/cli/__init__.py,sha256=DpX6FoRJtSNjudsmZ3mTih_RIaWyiIgxew4-f8mOmFY,70
|
3
|
-
specpulse/cli/main.py,sha256=bnf9xka3AIAyhkjCXGKI-T45eTKyzx0bwE68TOkTfU0,24486
|
4
|
-
specpulse/core/__init__.py,sha256=VKHGdPDM38QM9yDIq05jxol4q8WFlFAeltOzYLsPuto,132
|
5
|
-
specpulse/core/specpulse.py,sha256=YVqZMDO3AIbCsAHY32wIuUV1cH-hIKAcFkqR5WrInVw,29962
|
6
|
-
specpulse/core/validator.py,sha256=dnaNUx7tj8V2K1TE6WPwrNWEiCpqC_b_DKryq6-A7Hk,12057
|
7
|
-
specpulse/resources/commands/claude/plan.md,sha256=X9VZjJn5_BFDdAEsZDajDY3jIka71O-7UzuZrkhDuUM,1097
|
8
|
-
specpulse/resources/commands/claude/pulse.md,sha256=ZP5ro49q-vTlILhvSs-yVG3KrPDHxnepqM12s5CT-fQ,854
|
9
|
-
specpulse/resources/commands/claude/spec.md,sha256=CqbsQ0iyOVXPx0Shw7LCwD1U5ArLTuQkLwG_qaXenKI,1095
|
10
|
-
specpulse/resources/commands/claude/task.md,sha256=fmWx9Un_gN3QpRpcTuN7IBjuCKfN27vX9EeKSgaAtVw,973
|
11
|
-
specpulse/resources/commands/gemini/plan.toml,sha256=W6BtdGu6as7bBgaRQjvMpehraLnnk9MGw6bE0dzDMgY,1056
|
12
|
-
specpulse/resources/commands/gemini/pulse.toml,sha256=3lfbWMBC2tVOanGQ1uNaLozUj9rAgcyNIgvAmgWCJVI,1078
|
13
|
-
specpulse/resources/commands/gemini/spec.toml,sha256=5xL6lWzLncedC6KKAidZ9OBDheKcEWcxCYfOuRcR_Pk,822
|
14
|
-
specpulse/resources/commands/gemini/task.toml,sha256=HRMB11jTENZ0iWNUDKQfKXThJmU96wCNYGtRW-J-l-c,1048
|
15
|
-
specpulse/resources/memory/constitution.md,sha256=MUrX9a6inWAa58Oas-Ff_s1sIs04ehr7sSGOYjdAFv4,8286
|
16
|
-
specpulse/resources/memory/context.md,sha256=6021CJIJNTMOIB6xTxc3ehEGOUglIfl_IyJQXwzjw3U,562
|
17
|
-
specpulse/resources/memory/decisions.md,sha256=ZwzVyOPB2mIzwveWpGmedej7ncI81GALg8WVy6AeZA4,686
|
18
|
-
specpulse/resources/scripts/pulse-init.sh,sha256=eImg2T7hpJ_yU761Nq23CpjtGuHKnWWE2Vj0nBRDxM8,1121
|
19
|
-
specpulse/resources/scripts/pulse-plan.sh,sha256=XqAoQ_41pxGeCpAX0Fz87J2GTEU978sKhd1lMo0Nuhs,607
|
20
|
-
specpulse/resources/scripts/pulse-spec.sh,sha256=fAHplatF6PghfGlmvjLQViBHIP4c0HbifdPrIv1TnEE,746
|
21
|
-
specpulse/resources/scripts/pulse-task.sh,sha256=KLKigNYNHhu252r8OyBt8sNgWYKDwOwME8J3_sMR3Bs,533
|
22
|
-
specpulse/resources/templates/plan.md,sha256=GOwXF2B4F1sssO8JqQxmLGDazTiUIbT39wEmHv-epnA,9707
|
23
|
-
specpulse/resources/templates/spec.md,sha256=iCtcKUA31p4MHbvnWefkCY_T53EI5HLuU-3YsQ5E4BI,9160
|
24
|
-
specpulse/resources/templates/task.md,sha256=TBR0BSbQFWKwFZBx1NU6wmzeRVdzrydS4X4I3hFlbCY,3300
|
25
|
-
specpulse/utils/__init__.py,sha256=VTGRDsVLl2JIXYyHB9Sidxj5acY_W-LJI2MMtY1pwb0,122
|
26
|
-
specpulse/utils/console.py,sha256=xn4Koc1_ph61bvBTlvPOwAbqZ5ac7TZ51xTWJbwG0sc,12973
|
27
|
-
specpulse/utils/git_utils.py,sha256=RzJBZoyWp5on1_wq2lY1bs__UJsGKSDpAUeDKFdRYlQ,6095
|
28
|
-
specpulse-1.0.3.dist-info/licenses/LICENSE,sha256=ImSFezK-Phy0oTBqZipcajsJfPZT8mmg8m3jkgNdNhA,1066
|
29
|
-
specpulse-1.0.3.dist-info/METADATA,sha256=45aL3igvbm_kSF04qBSu3hhMepngB9B9VOT5mWmkgoI,14325
|
30
|
-
specpulse-1.0.3.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
31
|
-
specpulse-1.0.3.dist-info/entry_points.txt,sha256=GwMaCKWSCFZlJMrTNavEYrnREynIS6dM3B0ILxnaouA,83
|
32
|
-
specpulse-1.0.3.dist-info/top_level.txt,sha256=pEfkFil5xe38J00OHrBrJ07xpbm6bRnGhI8B07O9KeI,10
|
33
|
-
specpulse-1.0.3.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|