specpulse 1.4.2__tar.gz → 1.4.3__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 (78) hide show
  1. {specpulse-1.4.2/specpulse.egg-info → specpulse-1.4.3}/PKG-INFO +7 -2
  2. {specpulse-1.4.2 → specpulse-1.4.3}/README.md +6 -1
  3. {specpulse-1.4.2 → specpulse-1.4.3}/pyproject.toml +1 -1
  4. {specpulse-1.4.2 → specpulse-1.4.3}/setup.py +1 -1
  5. {specpulse-1.4.2 → specpulse-1.4.3}/specpulse/__init__.py +1 -1
  6. {specpulse-1.4.2 → specpulse-1.4.3}/specpulse/resources/commands/claude/sp-plan.md +6 -2
  7. {specpulse-1.4.2 → specpulse-1.4.3}/specpulse/resources/commands/claude/sp-spec.md +8 -4
  8. {specpulse-1.4.2 → specpulse-1.4.3}/specpulse/resources/scripts/sp-pulse-plan.sh +7 -10
  9. {specpulse-1.4.2 → specpulse-1.4.3}/specpulse/resources/scripts/sp-pulse-spec.ps1 +23 -21
  10. {specpulse-1.4.2 → specpulse-1.4.3}/specpulse/resources/scripts/sp-pulse-spec.sh +21 -23
  11. {specpulse-1.4.2 → specpulse-1.4.3}/specpulse/resources/scripts/sp-pulse-task.sh +7 -12
  12. {specpulse-1.4.2 → specpulse-1.4.3/specpulse.egg-info}/PKG-INFO +7 -2
  13. {specpulse-1.4.2 → specpulse-1.4.3}/LICENSE +0 -0
  14. {specpulse-1.4.2 → specpulse-1.4.3}/MANIFEST.in +0 -0
  15. {specpulse-1.4.2 → specpulse-1.4.3}/requirements.txt +0 -0
  16. {specpulse-1.4.2 → specpulse-1.4.3}/setup.cfg +0 -0
  17. {specpulse-1.4.2 → specpulse-1.4.3}/specpulse/cli/__init__.py +0 -0
  18. {specpulse-1.4.2 → specpulse-1.4.3}/specpulse/cli/main.py +0 -0
  19. {specpulse-1.4.2 → specpulse-1.4.3}/specpulse/core/__init__.py +0 -0
  20. {specpulse-1.4.2 → specpulse-1.4.3}/specpulse/core/specpulse.py +0 -0
  21. {specpulse-1.4.2 → specpulse-1.4.3}/specpulse/core/validator.py +0 -0
  22. {specpulse-1.4.2 → specpulse-1.4.3}/specpulse/resources/commands/claude/sp-continue.md +0 -0
  23. {specpulse-1.4.2 → specpulse-1.4.3}/specpulse/resources/commands/claude/sp-decompose.md +0 -0
  24. {specpulse-1.4.2 → specpulse-1.4.3}/specpulse/resources/commands/claude/sp-execute.md +0 -0
  25. {specpulse-1.4.2 → specpulse-1.4.3}/specpulse/resources/commands/claude/sp-pulse.md +0 -0
  26. {specpulse-1.4.2 → specpulse-1.4.3}/specpulse/resources/commands/claude/sp-status.md +0 -0
  27. {specpulse-1.4.2 → specpulse-1.4.3}/specpulse/resources/commands/claude/sp-task.md +0 -0
  28. {specpulse-1.4.2 → specpulse-1.4.3}/specpulse/resources/commands/gemini/sp-continue.toml +0 -0
  29. {specpulse-1.4.2 → specpulse-1.4.3}/specpulse/resources/commands/gemini/sp-decompose.toml +0 -0
  30. {specpulse-1.4.2 → specpulse-1.4.3}/specpulse/resources/commands/gemini/sp-execute.toml +0 -0
  31. {specpulse-1.4.2 → specpulse-1.4.3}/specpulse/resources/commands/gemini/sp-plan.toml +0 -0
  32. {specpulse-1.4.2 → specpulse-1.4.3}/specpulse/resources/commands/gemini/sp-pulse.toml +0 -0
  33. {specpulse-1.4.2 → specpulse-1.4.3}/specpulse/resources/commands/gemini/sp-spec.toml +0 -0
  34. {specpulse-1.4.2 → specpulse-1.4.3}/specpulse/resources/commands/gemini/sp-status.toml +0 -0
  35. {specpulse-1.4.2 → specpulse-1.4.3}/specpulse/resources/commands/gemini/sp-task.toml +0 -0
  36. {specpulse-1.4.2 → specpulse-1.4.3}/specpulse/resources/memory/constitution.md +0 -0
  37. {specpulse-1.4.2 → specpulse-1.4.3}/specpulse/resources/memory/context.md +0 -0
  38. {specpulse-1.4.2 → specpulse-1.4.3}/specpulse/resources/memory/decisions.md +0 -0
  39. {specpulse-1.4.2 → specpulse-1.4.3}/specpulse/resources/scripts/sp-pulse-decompose.ps1 +0 -0
  40. {specpulse-1.4.2 → specpulse-1.4.3}/specpulse/resources/scripts/sp-pulse-decompose.sh +0 -0
  41. {specpulse-1.4.2 → specpulse-1.4.3}/specpulse/resources/scripts/sp-pulse-execute.ps1 +0 -0
  42. {specpulse-1.4.2 → specpulse-1.4.3}/specpulse/resources/scripts/sp-pulse-execute.sh +0 -0
  43. {specpulse-1.4.2 → specpulse-1.4.3}/specpulse/resources/scripts/sp-pulse-init.ps1 +0 -0
  44. {specpulse-1.4.2 → specpulse-1.4.3}/specpulse/resources/scripts/sp-pulse-init.sh +0 -0
  45. {specpulse-1.4.2 → specpulse-1.4.3}/specpulse/resources/scripts/sp-pulse-plan.ps1 +0 -0
  46. {specpulse-1.4.2 → specpulse-1.4.3}/specpulse/resources/scripts/sp-pulse-task.ps1 +0 -0
  47. {specpulse-1.4.2 → specpulse-1.4.3}/specpulse/resources/templates/decomposition/api-contract.yaml +0 -0
  48. {specpulse-1.4.2 → specpulse-1.4.3}/specpulse/resources/templates/decomposition/integration-plan.md +0 -0
  49. {specpulse-1.4.2 → specpulse-1.4.3}/specpulse/resources/templates/decomposition/interface.ts +0 -0
  50. {specpulse-1.4.2 → specpulse-1.4.3}/specpulse/resources/templates/decomposition/microservice.md +0 -0
  51. {specpulse-1.4.2 → specpulse-1.4.3}/specpulse/resources/templates/decomposition/service-plan.md +0 -0
  52. {specpulse-1.4.2 → specpulse-1.4.3}/specpulse/resources/templates/plan.md +0 -0
  53. {specpulse-1.4.2 → specpulse-1.4.3}/specpulse/resources/templates/spec.md +0 -0
  54. {specpulse-1.4.2 → specpulse-1.4.3}/specpulse/resources/templates/task.md +0 -0
  55. {specpulse-1.4.2 → specpulse-1.4.3}/specpulse/utils/__init__.py +0 -0
  56. {specpulse-1.4.2 → specpulse-1.4.3}/specpulse/utils/console.py +0 -0
  57. {specpulse-1.4.2 → specpulse-1.4.3}/specpulse/utils/git_utils.py +0 -0
  58. {specpulse-1.4.2 → specpulse-1.4.3}/specpulse/utils/version_check.py +0 -0
  59. {specpulse-1.4.2 → specpulse-1.4.3}/specpulse.egg-info/SOURCES.txt +0 -0
  60. {specpulse-1.4.2 → specpulse-1.4.3}/specpulse.egg-info/dependency_links.txt +0 -0
  61. {specpulse-1.4.2 → specpulse-1.4.3}/specpulse.egg-info/entry_points.txt +0 -0
  62. {specpulse-1.4.2 → specpulse-1.4.3}/specpulse.egg-info/not-zip-safe +0 -0
  63. {specpulse-1.4.2 → specpulse-1.4.3}/specpulse.egg-info/requires.txt +0 -0
  64. {specpulse-1.4.2 → specpulse-1.4.3}/specpulse.egg-info/top_level.txt +0 -0
  65. {specpulse-1.4.2 → specpulse-1.4.3}/tests/test_all.py +0 -0
  66. {specpulse-1.4.2 → specpulse-1.4.3}/tests/test_cli.py +0 -0
  67. {specpulse-1.4.2 → specpulse-1.4.3}/tests/test_cli_fixed.py +0 -0
  68. {specpulse-1.4.2 → specpulse-1.4.3}/tests/test_complete_100.py +0 -0
  69. {specpulse-1.4.2 → specpulse-1.4.3}/tests/test_complete_coverage.py +0 -0
  70. {specpulse-1.4.2 → specpulse-1.4.3}/tests/test_console.py +0 -0
  71. {specpulse-1.4.2 → specpulse-1.4.3}/tests/test_coverage_100.py +0 -0
  72. {specpulse-1.4.2 → specpulse-1.4.3}/tests/test_final_100.py +0 -0
  73. {specpulse-1.4.2 → specpulse-1.4.3}/tests/test_full_coverage.py +0 -0
  74. {specpulse-1.4.2 → specpulse-1.4.3}/tests/test_git_utils.py +0 -0
  75. {specpulse-1.4.2 → specpulse-1.4.3}/tests/test_integration.py +0 -0
  76. {specpulse-1.4.2 → specpulse-1.4.3}/tests/test_specpulse.py +0 -0
  77. {specpulse-1.4.2 → specpulse-1.4.3}/tests/test_validator.py +0 -0
  78. {specpulse-1.4.2 → specpulse-1.4.3}/tests/test_version_utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: specpulse
3
- Version: 1.4.2
3
+ Version: 1.4.3
4
4
  Summary: Specification-Driven Development Framework
5
5
  Home-page: https://github.com/specpulse
6
6
  Author: SpecPulse
@@ -67,7 +67,12 @@ Dynamic: requires-python
67
67
 
68
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.
69
69
 
70
- > **Latest Update (v1.4.2)** - Template System Enhancement:
70
+ > **Latest Update (v1.4.3)** - Script Numbering Fix:
71
+ > - 🔢 **Fixed Numbering Logic**: Spec, plan, and task files now number correctly (001, 002, 003...)
72
+ > - 📝 **No Empty First Files**: spec-001.md, plan-001.md, task-001.md always contain content
73
+ > - 🎯 **Proper Interactive Mode**: Scripts create placeholder files for AI to fill
74
+ >
75
+ > **v1.4.2** - Template System Enhancement:
71
76
  > - 📁 **Physical Template Files**: Templates now exist as physical files for AI tools to read
72
77
  > - 🔧 **Complete PowerShell Support**: Added PowerShell scripts matching all Bash functionality
73
78
  > - 📝 **Enhanced Decomposition Templates**: Full microservice decomposition template support
@@ -21,7 +21,12 @@
21
21
 
22
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.4.2)** - Template System Enhancement:
24
+ > **Latest Update (v1.4.3)** - Script Numbering Fix:
25
+ > - 🔢 **Fixed Numbering Logic**: Spec, plan, and task files now number correctly (001, 002, 003...)
26
+ > - 📝 **No Empty First Files**: spec-001.md, plan-001.md, task-001.md always contain content
27
+ > - 🎯 **Proper Interactive Mode**: Scripts create placeholder files for AI to fill
28
+ >
29
+ > **v1.4.2** - Template System Enhancement:
25
30
  > - 📁 **Physical Template Files**: Templates now exist as physical files for AI tools to read
26
31
  > - 🔧 **Complete PowerShell Support**: Added PowerShell scripts matching all Bash functionality
27
32
  > - 📝 **Enhanced Decomposition Templates**: Full microservice decomposition template support
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "specpulse"
7
- version = "1.4.2"
7
+ version = "1.4.3"
8
8
  description = "Specification-Driven Development Framework"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.11"
@@ -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.4.2",
14
+ version="1.4.3",
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.4.2"
6
+ __version__ = "1.4.3"
7
7
  __author__ = "SpecPulse"
8
8
  __url__ = "https://github.com/specpulse"
9
9
 
@@ -96,8 +96,12 @@ When called with `/sp-plan $ARGUMENTS`, I will:
96
96
  - Create improvement strategies for technical debt
97
97
  - Track future enhancement opportunities
98
98
 
99
- i. **Version management**: Check existing plan files and create next version (plan-001.md, plan-002.md, etc.)
100
- j. **Write NEW plan file** to `plans/XXX-feature/plan-XXX.md`
99
+ i. **CRITICAL NUMBERING LOGIC**:
100
+ - Check if `plans/XXX-feature/plan-001.md` exists
101
+ - If plan-001.md does NOT exist: Create plan-001.md with full content from template
102
+ - If plan-001.md EXISTS: Create plan-002.md (or next number) with new content
103
+ - NEVER leave plan-001.md as placeholder if it's the first plan
104
+ j. **Write FULL plan content** to `plans/XXX-feature/plan-XXX.md`
101
105
  k. **IMPORTANT**: Can EDIT files in plans/ folder, but NEVER modify templates/, scripts/, or commands/ folders
102
106
 
103
107
  4. **For `/sp-plan validate`:**
@@ -43,7 +43,12 @@ When called with `/sp-spec $ARGUMENTS`, I will:
43
43
  - If no action specified: Default to `create` with full arguments as description
44
44
 
45
45
  3. **For `/sp-spec create [description]` or `/sp-spec [description]`:**
46
- - COPY template from `templates/spec.md` to create NEW file in `specs/XXX-feature/`
46
+ - **CRITICAL NUMBERING LOGIC**:
47
+ - Check if `specs/XXX-feature/spec-001.md` exists
48
+ - If spec-001.md does NOT exist: Create spec-001.md with full content from template
49
+ - If spec-001.md EXISTS: Create spec-002.md (or next number) with new content
50
+ - NEVER leave spec-001.md as placeholder if it's the first spec
51
+ - READ template from `templates/spec.md` and use it to generate content
47
52
  - IMPORTANT: Only edit files in specs/, plans/, tasks/ folders. NEVER edit templates/, scripts/, or commands/
48
53
  - Parse the description to identify:
49
54
  - Functional requirements (Must/Should/Could/Won't have)
@@ -60,11 +65,10 @@ When called with `/sp-spec $ARGUMENTS`, I will:
60
65
  ```
61
66
  - Mark any uncertainties with `[NEEDS CLARIFICATION: specific question]`
62
67
  - Use detected feature context to determine target directory
63
- - **Version management**: Check existing spec files and create next version (spec-001.md, spec-002.md, etc.)
64
- - Write NEW specification to `specs/ID-feature-name/spec-XXX.md`
68
+ - Write FULL specification content to `specs/ID-feature-name/spec-XXX.md`
65
69
  - Can EDIT files in specs/ folder, but NEVER modify templates/, scripts/, or commands/ folders
66
70
  - Run validation:
67
- - `bash scripts/sp-pulse-spec.sh "$FEATURE_DIR"`
71
+ - `bash scripts/sp-pulse-spec.sh "$FEATURE_DIR" "$SPEC_CONTENT"`
68
72
 
69
73
  4. **For `/sp-spec update`:**
70
74
  - **Show existing spec files**: List all spec-XXX.md files in current feature directory
@@ -59,14 +59,14 @@ else
59
59
  error_exit "Specifications directory not found: $SPEC_DIR. Please create specification first."
60
60
  fi
61
61
 
62
- # Find next available plan number or create new one
63
- if [ -d "$PLAN_DIR" ]; then
64
- # Get the highest plan number and increment it
62
+ # Check if plan-001.md exists
63
+ if [ -f "$PLAN_DIR/plan-001.md" ]; then
64
+ # Find next available plan number
65
65
  highest_plan=$(find "$PLAN_DIR" -name "plan-*.md" -exec basename {} .md \; | sed 's/plan-//' | sort -n | tail -1)
66
66
  if [ -n "$highest_plan" ]; then
67
67
  plan_number=$((highest_plan + 1))
68
68
  else
69
- plan_number=1
69
+ plan_number=2
70
70
  fi
71
71
  else
72
72
  plan_number=1
@@ -78,17 +78,14 @@ if [ ! -f "$TEMPLATE_FILE" ]; then
78
78
  error_exit "Template not found: $TEMPLATE_FILE"
79
79
  fi
80
80
 
81
- # Create plan marker for AI generation
82
- log "Creating implementation plan marker: $PLAN_FILE"
81
+ # Create placeholder file for AI to generate plan
82
+ log "Creating implementation plan: $PLAN_FILE"
83
83
  echo "# Implementation Plan - $FEATURE_DIR" > "$PLAN_FILE"
84
84
  echo "" >> "$PLAN_FILE"
85
- echo "<!-- AI: Please generate plan using template: $TEMPLATE_FILE -->" >> "$PLAN_FILE"
85
+ echo "<!-- INSTRUCTION: Generate plan using template: $TEMPLATE_FILE -->" >> "$PLAN_FILE"
86
86
  echo "<!-- SPEC_FILE: $SPEC_FILE -->" >> "$PLAN_FILE"
87
87
  echo "<!-- FEATURE_DIR: $FEATURE_DIR -->" >> "$PLAN_FILE"
88
88
  echo "<!-- FEATURE_ID: $FEATURE_ID -->" >> "$PLAN_FILE"
89
- echo "" >> "$PLAN_FILE"
90
- echo "## Awaiting AI Generation" >> "$PLAN_FILE"
91
- echo "This plan needs to be generated from the template based on specification: $SPEC_FILE" >> "$PLAN_FILE"
92
89
 
93
90
  # Validate plan structure
94
91
  log "Validating implementation plan..."
@@ -48,8 +48,13 @@ if (-not (Test-Path $SpecDir)) {
48
48
  # Find latest spec file or create new one
49
49
  if ($SpecContent) {
50
50
  # Find next available spec number
51
- $existingSpecs = Get-ChildItem -Path $SpecDir -Filter "spec-*.md" -ErrorAction SilentlyContinue
52
- $specNumber = if ($existingSpecs) { $existingSpecs.Count + 1 } else { 1 }
51
+ $existingSpecs = Get-ChildItem -Path $SpecDir -Filter "spec-*.md" -ErrorAction SilentlyContinue | Sort-Object Name
52
+ if ($existingSpecs) {
53
+ $highestSpec = [int]($existingSpecs[-1].BaseName -replace 'spec-', '')
54
+ $specNumber = $highestSpec + 1
55
+ } else {
56
+ $specNumber = 1
57
+ }
53
58
  $SpecFile = Join-Path $SpecDir ("spec-{0:D3}.md" -f $specNumber)
54
59
 
55
60
  # Update specification with provided content
@@ -60,27 +65,24 @@ if ($SpecContent) {
60
65
  Exit-WithError "Failed to write specification content: $_"
61
66
  }
62
67
  } else {
63
- # Find latest spec file
64
- $latestSpec = Get-ChildItem -Path $SpecDir -Filter "spec-*.md" -ErrorAction SilentlyContinue |
65
- Sort-Object LastWriteTime -Descending |
66
- Select-Object -First 1
67
-
68
- if ($latestSpec) {
69
- $SpecFile = $latestSpec.FullName
70
- Log-Message "Using latest specification: $SpecFile"
71
- } else {
72
- # No spec files found, create first one
73
- $SpecFile = Join-Path $SpecDir "spec-001.md"
74
- if (-not (Test-Path $TemplateFile)) {
75
- Exit-WithError "Template not found: $TemplateFile"
76
- }
77
- Log-Message "Creating specification from template: $SpecFile"
78
- try {
79
- Copy-Item -Path $TemplateFile -Destination $SpecFile -Force
80
- } catch {
81
- Exit-WithError "Failed to copy specification template: $_"
68
+ # Interactive mode - AI should generate spec content
69
+ # Check if spec-001.md exists
70
+ $FirstSpec = Join-Path $SpecDir "spec-001.md"
71
+ if (Test-Path $FirstSpec) {
72
+ # Find next available spec number
73
+ $existingSpecs = Get-ChildItem -Path $SpecDir -Filter "spec-*.md" -ErrorAction SilentlyContinue | Sort-Object Name
74
+ if ($existingSpecs) {
75
+ $highestSpec = [int]($existingSpecs[-1].BaseName -replace 'spec-', '')
76
+ $specNumber = $highestSpec + 1
77
+ } else {
78
+ $specNumber = 2
82
79
  }
80
+ } else {
81
+ $specNumber = 1
83
82
  }
83
+ $SpecFile = Join-Path $SpecDir ("spec-{0:D3}.md" -f $specNumber)
84
+ Log-Message "Creating specification file for AI generation: $SpecFile"
85
+ "INSTRUCTION: Generate specification content using template at $TemplateFile" | Set-Content -Path "$SpecFile.instruction"
84
86
  }
85
87
 
86
88
  # Validate specification
@@ -64,41 +64,39 @@ if [ -n "$SPEC_CONTENT" ]; then
64
64
  spec_number=1
65
65
  fi
66
66
  SPEC_FILE="$SPEC_DIR/spec-$(printf "%03d" $spec_number).md"
67
-
67
+
68
68
  # Update specification with provided content
69
69
  log "Creating specification: $SPEC_FILE"
70
70
  echo "$SPEC_CONTENT" > "$SPEC_FILE" || error_exit "Failed to write specification content"
71
71
  else
72
- # Find latest spec file
73
- if [ -d "$SPEC_DIR" ]; then
74
- SPEC_FILE=$(find "$SPEC_DIR" -name "spec-*.md" -printf "%T@ %p\n" | sort -n | tail -1 | cut -d' ' -f2-)
75
- if [ -z "$SPEC_FILE" ]; then
76
- # No spec files found, create first one with marker for AI
77
- SPEC_FILE="$SPEC_DIR/spec-001.md"
78
- log "Creating first specification marker: $SPEC_FILE"
79
- echo "# Specification - $FEATURE_DIR" > "$SPEC_FILE"
80
- echo "" >> "$SPEC_FILE"
81
- echo "<!-- AI: Please generate specification using template: $TEMPLATE_FILE -->" >> "$SPEC_FILE"
82
- echo "<!-- FEATURE_DIR: $FEATURE_DIR -->" >> "$SPEC_FILE"
83
- echo "<!-- FEATURE_ID: $FEATURE_ID -->" >> "$SPEC_FILE"
84
- echo "" >> "$SPEC_FILE"
85
- echo "## Awaiting AI Generation" >> "$SPEC_FILE"
86
- echo "This specification needs to be generated from the template." >> "$SPEC_FILE"
72
+ # Interactive mode - AI should generate spec content
73
+ # Check if spec-001.md exists
74
+ if [ -f "$SPEC_DIR/spec-001.md" ]; then
75
+ # Find next available spec number
76
+ highest_spec=$(find "$SPEC_DIR" -name "spec-*.md" -exec basename {} .md \; | sed 's/spec-//' | sort -n | tail -1)
77
+ if [ -n "$highest_spec" ]; then
78
+ spec_number=$((highest_spec + 1))
87
79
  else
88
- log "Using latest specification: $SPEC_FILE"
80
+ spec_number=2
89
81
  fi
82
+ SPEC_FILE="$SPEC_DIR/spec-$(printf "%03d" $spec_number).md"
83
+ log "Creating specification file for AI generation: $SPEC_FILE"
84
+ # Create placeholder file for AI to fill
85
+ echo "# Specification - $FEATURE_DIR" > "$SPEC_FILE"
86
+ echo "" >> "$SPEC_FILE"
87
+ echo "<!-- INSTRUCTION: Generate specification content using template: $TEMPLATE_FILE -->" >> "$SPEC_FILE"
88
+ echo "<!-- FEATURE_DIR: $FEATURE_DIR -->" >> "$SPEC_FILE"
89
+ echo "<!-- FEATURE_ID: $FEATURE_ID -->" >> "$SPEC_FILE"
90
90
  else
91
- # Create directory and first spec with marker for AI
91
+ # Create first spec
92
92
  SPEC_FILE="$SPEC_DIR/spec-001.md"
93
- log "Creating first specification marker: $SPEC_FILE"
93
+ log "Creating first specification file for AI generation: $SPEC_FILE"
94
+ # Create placeholder file for AI to fill
94
95
  echo "# Specification - $FEATURE_DIR" > "$SPEC_FILE"
95
96
  echo "" >> "$SPEC_FILE"
96
- echo "<!-- AI: Please generate specification using template: $TEMPLATE_FILE -->" >> "$SPEC_FILE"
97
+ echo "<!-- INSTRUCTION: Generate specification content using template: $TEMPLATE_FILE -->" >> "$SPEC_FILE"
97
98
  echo "<!-- FEATURE_DIR: $FEATURE_DIR -->" >> "$SPEC_FILE"
98
99
  echo "<!-- FEATURE_ID: $FEATURE_ID -->" >> "$SPEC_FILE"
99
- echo "" >> "$SPEC_FILE"
100
- echo "## Awaiting AI Generation" >> "$SPEC_FILE"
101
- echo "This specification needs to be generated from the template." >> "$SPEC_FILE"
102
100
  fi
103
101
  fi
104
102
 
@@ -70,14 +70,14 @@ else
70
70
  error_exit "Plans directory not found: $PLAN_DIR. Please create plan first."
71
71
  fi
72
72
 
73
- # Find next available task number or create new one
74
- if [ -d "$TASK_DIR" ]; then
75
- # Get the highest task number and increment it
73
+ # Check if task-001.md exists
74
+ if [ -f "$TASK_DIR/task-001.md" ]; then
75
+ # Find next available task number
76
76
  highest_task=$(find "$TASK_DIR" -name "task-*.md" -exec basename {} .md \; | sed 's/task-//' | sort -n | tail -1)
77
77
  if [ -n "$highest_task" ]; then
78
78
  task_number=$((highest_task + 1))
79
79
  else
80
- task_number=1
80
+ task_number=2
81
81
  fi
82
82
  else
83
83
  task_number=1
@@ -89,20 +89,15 @@ if [ ! -f "$TEMPLATE_FILE" ]; then
89
89
  error_exit "Template not found: $TEMPLATE_FILE"
90
90
  fi
91
91
 
92
- # Create task file marker for AI generation
93
- log "Creating task breakdown marker: $TASK_FILE"
92
+ # Create placeholder file for AI to generate tasks
93
+ log "Creating task breakdown: $TASK_FILE"
94
94
  echo "# Task Breakdown - $FEATURE_DIR" > "$TASK_FILE"
95
95
  echo "" >> "$TASK_FILE"
96
- echo "<!-- AI: Please generate tasks using template: $TEMPLATE_FILE -->" >> "$TASK_FILE"
96
+ echo "<!-- INSTRUCTION: Generate tasks using template: $TEMPLATE_FILE -->" >> "$TASK_FILE"
97
97
  echo "<!-- SPEC_FILE: $SPEC_FILE -->" >> "$TASK_FILE"
98
98
  echo "<!-- PLAN_FILE: $PLAN_FILE -->" >> "$TASK_FILE"
99
99
  echo "<!-- FEATURE_DIR: $FEATURE_DIR -->" >> "$TASK_FILE"
100
100
  echo "<!-- FEATURE_ID: $FEATURE_ID -->" >> "$TASK_FILE"
101
- echo "" >> "$TASK_FILE"
102
- echo "## Awaiting AI Generation" >> "$TASK_FILE"
103
- echo "Tasks need to be generated from the template based on:" >> "$TASK_FILE"
104
- echo "- Specification: $SPEC_FILE" >> "$TASK_FILE"
105
- echo "- Plan: $PLAN_FILE" >> "$TASK_FILE"
106
101
 
107
102
  # Validate task structure
108
103
  log "Validating task breakdown..."
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: specpulse
3
- Version: 1.4.2
3
+ Version: 1.4.3
4
4
  Summary: Specification-Driven Development Framework
5
5
  Home-page: https://github.com/specpulse
6
6
  Author: SpecPulse
@@ -67,7 +67,12 @@ Dynamic: requires-python
67
67
 
68
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.
69
69
 
70
- > **Latest Update (v1.4.2)** - Template System Enhancement:
70
+ > **Latest Update (v1.4.3)** - Script Numbering Fix:
71
+ > - 🔢 **Fixed Numbering Logic**: Spec, plan, and task files now number correctly (001, 002, 003...)
72
+ > - 📝 **No Empty First Files**: spec-001.md, plan-001.md, task-001.md always contain content
73
+ > - 🎯 **Proper Interactive Mode**: Scripts create placeholder files for AI to fill
74
+ >
75
+ > **v1.4.2** - Template System Enhancement:
71
76
  > - 📁 **Physical Template Files**: Templates now exist as physical files for AI tools to read
72
77
  > - 🔧 **Complete PowerShell Support**: Added PowerShell scripts matching all Bash functionality
73
78
  > - 📝 **Enhanced Decomposition Templates**: Full microservice decomposition template support
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes