specweave 0.22.0 → 0.22.3
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.
- package/CLAUDE.md +373 -13
- package/README.md +5 -5
- package/bin/specweave.js +5 -8
- package/dist/plugins/specweave-github/lib/CodeValidator.d.ts +1 -1
- package/dist/plugins/specweave-github/lib/CodeValidator.js +1 -1
- package/dist/plugins/specweave-github/lib/github-client-v2.d.ts +10 -0
- package/dist/plugins/specweave-github/lib/github-client-v2.d.ts.map +1 -1
- package/dist/plugins/specweave-github/lib/github-client-v2.js +26 -0
- package/dist/plugins/specweave-github/lib/github-client-v2.js.map +1 -1
- package/dist/plugins/specweave-github/lib/task-sync.d.ts.map +1 -1
- package/dist/plugins/specweave-github/lib/task-sync.js +7 -0
- package/dist/plugins/specweave-github/lib/task-sync.js.map +1 -1
- package/dist/src/cli/commands/migrate-to-profiles.d.ts +1 -0
- package/dist/src/cli/commands/migrate-to-profiles.d.ts.map +1 -1
- package/dist/src/cli/commands/migrate-to-profiles.js +12 -1
- package/dist/src/cli/commands/migrate-to-profiles.js.map +1 -1
- package/dist/src/cli/commands/next-command.d.ts +52 -0
- package/dist/src/cli/commands/next-command.d.ts.map +1 -0
- package/dist/src/cli/commands/next-command.js +204 -0
- package/dist/src/cli/commands/next-command.js.map +1 -0
- package/dist/src/cli/commands/repair-status-desync.d.ts +69 -0
- package/dist/src/cli/commands/repair-status-desync.d.ts.map +1 -0
- package/dist/src/cli/commands/repair-status-desync.js +221 -0
- package/dist/src/cli/commands/repair-status-desync.js.map +1 -0
- package/dist/src/cli/commands/sync-specs.d.ts +16 -0
- package/dist/src/cli/commands/sync-specs.d.ts.map +1 -0
- package/dist/src/cli/commands/sync-specs.js +130 -0
- package/dist/src/cli/commands/sync-specs.js.map +1 -0
- package/dist/src/cli/commands/validate-status-sync.d.ts +52 -0
- package/dist/src/cli/commands/validate-status-sync.d.ts.map +1 -0
- package/dist/src/cli/commands/validate-status-sync.js +176 -0
- package/dist/src/cli/commands/validate-status-sync.js.map +1 -0
- package/dist/src/cli/count-tasks.d.ts +20 -0
- package/dist/src/cli/count-tasks.d.ts.map +1 -0
- package/dist/src/cli/count-tasks.js +50 -0
- package/dist/src/cli/count-tasks.js.map +1 -0
- package/dist/src/cli/update-status-line.d.ts +16 -0
- package/dist/src/cli/update-status-line.d.ts.map +1 -0
- package/dist/src/cli/update-status-line.js +44 -0
- package/dist/src/cli/update-status-line.js.map +1 -0
- package/dist/src/config/ConfigManager.d.ts.map +1 -1
- package/dist/src/config/ConfigManager.js +2 -1
- package/dist/src/config/ConfigManager.js.map +1 -1
- package/dist/src/config/types.d.ts +50 -50
- package/dist/src/core/cicd/state-manager.d.ts +8 -0
- package/dist/src/core/cicd/state-manager.d.ts.map +1 -1
- package/dist/src/core/cicd/state-manager.js +60 -15
- package/dist/src/core/cicd/state-manager.js.map +1 -1
- package/dist/src/core/cost-tracker.d.ts.map +1 -1
- package/dist/src/core/cost-tracker.js +2 -1
- package/dist/src/core/cost-tracker.js.map +1 -1
- package/dist/src/core/iac/template-engine.d.ts.map +1 -1
- package/dist/src/core/iac/template-engine.js +28 -0
- package/dist/src/core/iac/template-engine.js.map +1 -1
- package/dist/src/core/iac/template-generator.d.ts +53 -0
- package/dist/src/core/iac/template-generator.d.ts.map +1 -0
- package/dist/src/core/iac/template-generator.js +125 -0
- package/dist/src/core/iac/template-generator.js.map +1 -0
- package/dist/src/core/increment/completion-validator.d.ts +56 -0
- package/dist/src/core/increment/completion-validator.d.ts.map +1 -0
- package/dist/src/core/increment/completion-validator.js +102 -0
- package/dist/src/core/increment/completion-validator.js.map +1 -0
- package/dist/src/core/increment/metadata-manager.d.ts.map +1 -1
- package/dist/src/core/increment/metadata-manager.js +10 -0
- package/dist/src/core/increment/metadata-manager.js.map +1 -1
- package/dist/src/core/increment/spec-frontmatter-updater.d.ts +78 -0
- package/dist/src/core/increment/spec-frontmatter-updater.d.ts.map +1 -0
- package/dist/src/core/increment/spec-frontmatter-updater.js +152 -0
- package/dist/src/core/increment/spec-frontmatter-updater.js.map +1 -0
- package/dist/src/core/increment/status-auto-transition.js +3 -3
- package/dist/src/core/increment/status-auto-transition.js.map +1 -1
- package/dist/src/core/living-docs/CodeValidator.js +1 -1
- package/dist/src/core/living-docs/CodeValidator.js.map +1 -1
- package/dist/src/core/living-docs/content-distributor.d.ts.map +1 -1
- package/dist/src/core/living-docs/content-distributor.js +11 -1
- package/dist/src/core/living-docs/content-distributor.js.map +1 -1
- package/dist/src/core/living-docs/living-docs-sync.d.ts +166 -0
- package/dist/src/core/living-docs/living-docs-sync.d.ts.map +1 -0
- package/dist/src/core/living-docs/living-docs-sync.js +727 -0
- package/dist/src/core/living-docs/living-docs-sync.js.map +1 -0
- package/dist/src/core/living-docs/task-project-specific-generator.d.ts +7 -3
- package/dist/src/core/living-docs/task-project-specific-generator.d.ts.map +1 -1
- package/dist/src/core/living-docs/task-project-specific-generator.js +40 -24
- package/dist/src/core/living-docs/task-project-specific-generator.js.map +1 -1
- package/dist/src/core/plugin-loader.d.ts +7 -0
- package/dist/src/core/plugin-loader.d.ts.map +1 -1
- package/dist/src/core/plugin-loader.js +18 -1
- package/dist/src/core/plugin-loader.js.map +1 -1
- package/dist/src/core/serverless/platform-data-loader.d.ts +8 -0
- package/dist/src/core/serverless/platform-data-loader.d.ts.map +1 -1
- package/dist/src/core/serverless/platform-data-loader.js +14 -0
- package/dist/src/core/serverless/platform-data-loader.js.map +1 -1
- package/dist/src/core/serverless/types.d.ts +1 -1
- package/dist/src/core/serverless/types.d.ts.map +1 -1
- package/dist/src/core/status-line/status-line-manager.d.ts +7 -2
- package/dist/src/core/status-line/status-line-manager.d.ts.map +1 -1
- package/dist/src/core/status-line/status-line-manager.js +47 -18
- package/dist/src/core/status-line/status-line-manager.js.map +1 -1
- package/dist/src/core/status-line/status-line-updater.d.ts +67 -0
- package/dist/src/core/status-line/status-line-updater.d.ts.map +1 -0
- package/dist/src/core/status-line/status-line-updater.js +203 -0
- package/dist/src/core/status-line/status-line-updater.js.map +1 -0
- package/dist/src/core/status-line/task-counter.d.ts +69 -0
- package/dist/src/core/status-line/task-counter.d.ts.map +1 -0
- package/dist/src/core/status-line/task-counter.js +107 -0
- package/dist/src/core/status-line/task-counter.js.map +1 -0
- package/dist/src/core/status-line/types.d.ts +19 -5
- package/dist/src/core/status-line/types.d.ts.map +1 -1
- package/dist/src/core/status-line/types.js +3 -3
- package/dist/src/core/status-line/types.js.map +1 -1
- package/dist/src/core/workflow/autonomous-executor.d.ts +111 -0
- package/dist/src/core/workflow/autonomous-executor.d.ts.map +1 -0
- package/dist/src/core/workflow/autonomous-executor.js +275 -0
- package/dist/src/core/workflow/autonomous-executor.js.map +1 -0
- package/dist/src/core/workflow/backlog-scanner.d.ts +94 -0
- package/dist/src/core/workflow/backlog-scanner.d.ts.map +1 -0
- package/dist/src/core/workflow/backlog-scanner.js +170 -0
- package/dist/src/core/workflow/backlog-scanner.js.map +1 -0
- package/dist/src/core/workflow/command-invoker.d.ts +86 -0
- package/dist/src/core/workflow/command-invoker.d.ts.map +1 -0
- package/dist/src/core/workflow/command-invoker.js +131 -0
- package/dist/src/core/workflow/command-invoker.js.map +1 -0
- package/dist/src/core/workflow/cost-estimator.d.ts +120 -0
- package/dist/src/core/workflow/cost-estimator.d.ts.map +1 -0
- package/dist/src/core/workflow/cost-estimator.js +222 -0
- package/dist/src/core/workflow/cost-estimator.js.map +1 -0
- package/dist/src/core/workflow/index.d.ts +20 -0
- package/dist/src/core/workflow/index.d.ts.map +1 -0
- package/dist/src/core/workflow/index.js +24 -0
- package/dist/src/core/workflow/index.js.map +1 -0
- package/dist/src/core/workflow/state-manager.d.ts +107 -0
- package/dist/src/core/workflow/state-manager.d.ts.map +1 -0
- package/dist/src/core/workflow/state-manager.js +126 -0
- package/dist/src/core/workflow/state-manager.js.map +1 -0
- package/dist/src/core/workflow/workflow-orchestrator.d.ts +93 -0
- package/dist/src/core/workflow/workflow-orchestrator.d.ts.map +1 -0
- package/dist/src/core/workflow/workflow-orchestrator.js +195 -0
- package/dist/src/core/workflow/workflow-orchestrator.js.map +1 -0
- package/dist/src/init/architecture/types.d.ts +10 -10
- package/dist/src/metrics/dora-calculator.js +2 -2
- package/dist/src/metrics/dora-calculator.js.map +1 -1
- package/dist/src/utils/pricing-constants.d.ts +5 -2
- package/dist/src/utils/pricing-constants.d.ts.map +1 -1
- package/dist/src/utils/pricing-constants.js +3 -2
- package/dist/src/utils/pricing-constants.js.map +1 -1
- package/package.json +4 -4
- package/plugins/specweave/agents/infrastructure/AGENT.md +88 -46
- package/plugins/specweave/agents/pm/AGENT.md +58 -1
- package/plugins/specweave/commands/specweave-archive-features.md +1 -1
- package/plugins/specweave/commands/specweave-archive-increments.md +1 -1
- package/plugins/specweave/commands/specweave-check-hooks.md +5 -0
- package/plugins/specweave/commands/specweave-done.md +72 -4
- package/plugins/specweave/commands/specweave-plan.md +1 -1
- package/plugins/specweave/commands/specweave-progress.md +108 -379
- package/plugins/specweave/commands/specweave-reopen.md +30 -3
- package/plugins/specweave/commands/specweave-restore-feature.md +1 -1
- package/plugins/specweave/commands/specweave-sync-docs.md +71 -4
- package/plugins/specweave/commands/specweave-sync-specs.md +20 -48
- package/plugins/specweave/commands/specweave-update-status.md +151 -0
- package/plugins/specweave/hooks/lib/update-status-line.sh +78 -41
- package/plugins/specweave/hooks/lib/validate-spec-status.sh +163 -0
- package/plugins/specweave/hooks/user-prompt-submit.sh +38 -35
- package/plugins/specweave/hooks/validate-increment-completion.sh +113 -0
- package/plugins/specweave/lib/hooks/update-tasks-md.js +52 -9
- package/plugins/specweave/lib/hooks/update-tasks-md.ts +77 -16
- package/plugins/specweave/templates/iac/aws-lambda/defaults.json +24 -0
- package/plugins/specweave/templates/iac/aws-lambda/templates/README.md.hbs +260 -0
- package/plugins/specweave/templates/iac/aws-lambda/templates/environments/dev.tfvars.hbs +34 -0
- package/plugins/specweave/templates/iac/aws-lambda/templates/environments/prod.tfvars.hbs +37 -0
- package/plugins/specweave/templates/iac/aws-lambda/templates/environments/staging.tfvars.hbs +35 -0
- package/plugins/specweave/templates/iac/aws-lambda/templates/outputs.tf.hbs +77 -0
- package/plugins/specweave/templates/iac/aws-lambda/templates/providers.tf.hbs +36 -0
- package/plugins/specweave/templates/iac/aws-lambda/templates/variables.tf.hbs +115 -0
- package/plugins/specweave/templates/iac/azure-functions/defaults.json +25 -0
- package/plugins/specweave/templates/iac/azure-functions/templates/README.md.hbs +268 -0
- package/plugins/specweave/templates/iac/azure-functions/templates/environments/dev.tfvars.hbs +34 -0
- package/plugins/specweave/templates/iac/azure-functions/templates/environments/prod.tfvars.hbs +46 -0
- package/plugins/specweave/templates/iac/azure-functions/templates/environments/staging.tfvars.hbs +34 -0
- package/plugins/specweave/templates/iac/azure-functions/templates/main.tf.hbs +225 -0
- package/plugins/specweave/templates/iac/azure-functions/templates/outputs.tf.hbs +89 -0
- package/plugins/specweave/templates/iac/azure-functions/templates/provider.tf.hbs +27 -0
- package/plugins/specweave/templates/iac/azure-functions/templates/providers.tf.hbs +35 -0
- package/plugins/specweave/templates/iac/azure-functions/templates/variables.tf.hbs +124 -0
- package/plugins/specweave/templates/iac/firebase/defaults.json +29 -0
- package/plugins/specweave/templates/iac/firebase/templates/README.md.hbs +35 -0
- package/plugins/specweave/templates/iac/firebase/templates/environments/dev.tfvars.hbs +7 -0
- package/plugins/specweave/templates/iac/firebase/templates/environments/prod.tfvars.hbs +7 -0
- package/plugins/specweave/templates/iac/firebase/templates/environments/staging.tfvars.hbs +7 -0
- package/plugins/specweave/templates/iac/firebase/templates/main.tf.hbs +90 -0
- package/plugins/specweave/templates/iac/firebase/templates/outputs.tf.hbs +15 -0
- package/plugins/specweave/templates/iac/firebase/templates/providers.tf.hbs +23 -0
- package/plugins/specweave/templates/iac/firebase/templates/variables.tf.hbs +42 -0
- package/plugins/specweave/templates/iac/gcp-cloud-functions/defaults.json +26 -0
- package/plugins/specweave/templates/iac/gcp-cloud-functions/templates/README.md.hbs +299 -0
- package/plugins/specweave/templates/iac/gcp-cloud-functions/templates/environments/dev.tfvars.hbs +36 -0
- package/plugins/specweave/templates/iac/gcp-cloud-functions/templates/environments/prod.tfvars.hbs +48 -0
- package/plugins/specweave/templates/iac/gcp-cloud-functions/templates/environments/staging.tfvars.hbs +41 -0
- package/plugins/specweave/templates/iac/gcp-cloud-functions/templates/main.tf.hbs +192 -0
- package/plugins/specweave/templates/iac/gcp-cloud-functions/templates/outputs.tf.hbs +66 -0
- package/plugins/specweave/templates/iac/gcp-cloud-functions/templates/providers.tf.hbs +25 -0
- package/plugins/specweave/templates/iac/gcp-cloud-functions/templates/variables.tf.hbs +119 -0
- package/plugins/specweave/templates/iac/supabase/defaults.json +15 -0
- package/plugins/specweave/templates/iac/supabase/templates/README.md.hbs +46 -0
- package/plugins/specweave/templates/iac/supabase/templates/main.tf.hbs +50 -0
- package/plugins/specweave-ado/lib/ado-multi-project-sync.js +0 -1
- package/plugins/specweave-github/agents/github-manager/AGENT.md +39 -7
- package/plugins/specweave-github/commands/specweave-github-cleanup-duplicates.md +21 -0
- package/plugins/specweave-github/commands/specweave-github-create-issue.md +5 -5
- package/plugins/specweave-github/lib/CodeValidator.ts +1 -1
- package/plugins/specweave-github/lib/github-client-v2.js +29 -0
- package/plugins/specweave-github/lib/github-client-v2.ts +30 -0
- package/plugins/specweave-github/lib/task-sync.js +4 -0
- package/plugins/specweave-github/lib/task-sync.ts +7 -0
- package/src/templates/CLAUDE.md.template +31 -0
- package/dist/src/core/living-docs/ThreeLayerSyncManager.d.ts +0 -116
- package/dist/src/core/living-docs/ThreeLayerSyncManager.d.ts.map +0 -1
- package/dist/src/core/living-docs/ThreeLayerSyncManager.js +0 -356
- package/dist/src/core/living-docs/ThreeLayerSyncManager.js.map +0 -1
- package/plugins/specweave-ado/lib/enhanced-ado-sync.js +0 -170
- package/plugins/specweave-release/hooks/.specweave/logs/dora-tracking.log +0 -1200
|
@@ -1,407 +1,136 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: specweave:progress
|
|
3
|
-
description: Show progress for
|
|
3
|
+
description: Show progress for all active increments with task completion status
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Progress Tracking
|
|
7
7
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
**NEW**: Now shows **ALL active increments** (max 2) with full progress for each!
|
|
11
|
-
|
|
12
|
-
Shows:
|
|
13
|
-
- **ALL active increment statuses** (not just one!)
|
|
14
|
-
- Task completion percentage (per increment)
|
|
15
|
-
- PM gate preview (tasks, tests, docs)
|
|
16
|
-
- Next action to take
|
|
17
|
-
- Time tracking
|
|
18
|
-
- WIP limit warnings (if >2 active)
|
|
19
|
-
|
|
20
|
-
---
|
|
21
|
-
|
|
22
|
-
## Quick Start
|
|
23
|
-
|
|
24
|
-
```bash
|
|
25
|
-
# Check progress for all active increments (recommended)
|
|
26
|
-
specweave progress
|
|
27
|
-
|
|
28
|
-
# Or use the full command name
|
|
29
|
-
specweave status --verbose
|
|
30
|
-
|
|
31
|
-
# Filter by increment type
|
|
32
|
-
specweave progress --type feature
|
|
33
|
-
```
|
|
34
|
-
|
|
35
|
-
**Note**: `progress` is an alias for `status --verbose` with automatic verbose mode enabled.
|
|
36
|
-
|
|
37
|
-
---
|
|
8
|
+
Simple, fast progress check for all active increments.
|
|
38
9
|
|
|
39
10
|
## Usage
|
|
40
11
|
|
|
41
12
|
```bash
|
|
42
|
-
# Check current progress
|
|
43
13
|
/specweave:progress
|
|
44
|
-
|
|
45
|
-
# Show progress for specific increment
|
|
46
|
-
/specweave:progress 0001
|
|
47
|
-
```
|
|
48
|
-
|
|
49
|
-
---
|
|
50
|
-
|
|
51
|
-
## What It Shows
|
|
52
|
-
|
|
53
|
-
### 1. Active Increment Info
|
|
54
|
-
- Increment ID and name
|
|
55
|
-
- Current status (planned, in-progress, completed)
|
|
56
|
-
- Time started and last activity
|
|
57
|
-
|
|
58
|
-
### 2. Task Progress (with %)
|
|
59
|
-
- Visual task list with completion indicators
|
|
60
|
-
- Percentage complete (P1 tasks weighted higher)
|
|
61
|
-
- Next incomplete task highlighted
|
|
62
|
-
- Stuck/blocked task warnings
|
|
63
|
-
|
|
64
|
-
### 3. PM Gates Preview
|
|
65
|
-
- **Gate 1**: Tasks completed (P1 required)
|
|
66
|
-
- **Gate 2**: Tests passing (>80% coverage)
|
|
67
|
-
- **Gate 3**: Documentation updated
|
|
68
|
-
|
|
69
|
-
### 4. Next Action Guidance
|
|
70
|
-
- Suggests exact command to run next
|
|
71
|
-
- Warns about WIP limit violations
|
|
72
|
-
- Alerts for long-inactive increments
|
|
73
|
-
|
|
74
|
-
---
|
|
75
|
-
|
|
76
|
-
## Example Output
|
|
77
|
-
|
|
78
|
-
### Normal Progress
|
|
79
|
-
|
|
80
|
-
```
|
|
81
|
-
📊 Current Progress
|
|
82
|
-
|
|
83
|
-
Active Increment: 0001-user-authentication
|
|
84
|
-
Status: in-progress (started 2 hours ago)
|
|
85
|
-
|
|
86
|
-
Task Progress: 3/12 completed (25%)
|
|
87
|
-
├─ [✅] T001: Setup auth module (P1) - 5 min ago
|
|
88
|
-
├─ [✅] T002: Create user model (P1) - 10 min ago
|
|
89
|
-
├─ [✅] T003: Implement JWT tokens (P1) - 15 min ago
|
|
90
|
-
├─ [⏳] T004: Add password hashing (P1) ← NEXT
|
|
91
|
-
├─ [ ] T005: Create login endpoint (P1)
|
|
92
|
-
├─ [ ] T006: Add logout endpoint (P2)
|
|
93
|
-
└─ 6 more tasks...
|
|
94
|
-
|
|
95
|
-
PM Gates Preview:
|
|
96
|
-
├─ Gate 1 (Tasks): 3/8 P1 tasks done (38%) ⏳
|
|
97
|
-
├─ Gate 2 (Tests): 2/5 passing (40%) ⏳
|
|
98
|
-
└─ Gate 3 (Docs): CLAUDE.md ✅, README.md ⏳
|
|
99
|
-
|
|
100
|
-
Last Activity: 5 minutes ago
|
|
101
|
-
Next Action: Run `/do 0001` to resume at T004
|
|
102
|
-
|
|
103
|
-
💡 Tip: `/do` auto-resumes from last incomplete task!
|
|
104
|
-
```
|
|
105
|
-
|
|
106
|
-
### No Active Work
|
|
107
|
-
|
|
108
|
-
```
|
|
109
|
-
📊 Current Progress
|
|
110
|
-
|
|
111
|
-
No active increment found.
|
|
112
|
-
|
|
113
|
-
Recent Increments:
|
|
114
|
-
├─ 0003-payment-flow (completed) - 1 day ago
|
|
115
|
-
├─ 0002-user-profile (completed) - 2 days ago
|
|
116
|
-
└─ 0001-auth (closed) - 3 days ago
|
|
117
|
-
|
|
118
|
-
Next Action: Run `/specweave inc "feature description"` to start new work
|
|
119
|
-
|
|
120
|
-
💡 Tip: `/inc` is your starting point for all new features
|
|
121
|
-
```
|
|
122
|
-
|
|
123
|
-
### Multiple In-Progress (WIP Limit Warning)
|
|
124
|
-
|
|
125
|
-
```
|
|
126
|
-
📊 Current Progress
|
|
127
|
-
|
|
128
|
-
⚠️ Warning: 2 increments in-progress (exceeds recommended WIP limit: 1)
|
|
129
|
-
|
|
130
|
-
Active Increments:
|
|
131
|
-
1. 0002-payment-flow (in-progress)
|
|
132
|
-
└─ Task Progress: 5/10 completed (50%)
|
|
133
|
-
|
|
134
|
-
2. 0003-notifications (in-progress)
|
|
135
|
-
└─ Task Progress: 2/8 completed (25%)
|
|
136
|
-
|
|
137
|
-
Recommendation: Focus on completing 0002 before starting new work.
|
|
138
|
-
|
|
139
|
-
Next Action: Run `/do 0002` to continue payment-flow
|
|
140
|
-
```
|
|
141
|
-
|
|
142
|
-
### Stuck/Inactive Increment
|
|
143
|
-
|
|
144
|
-
```
|
|
145
|
-
📊 Current Progress
|
|
146
|
-
|
|
147
|
-
Active Increment: 0001-user-authentication
|
|
148
|
-
Status: in-progress (started 2 days ago)
|
|
149
|
-
|
|
150
|
-
⚠️ Warning: Last activity was 6 hours ago
|
|
151
|
-
└─ Current task T005 may be stuck or blocked
|
|
152
|
-
|
|
153
|
-
Task Progress: 4/12 completed (33%)
|
|
154
|
-
├─ [✅] T001: Setup auth module (P1)
|
|
155
|
-
├─ [✅] T002: Create user model (P1)
|
|
156
|
-
├─ [✅] T003: Implement JWT tokens (P1)
|
|
157
|
-
├─ [✅] T004: Add password hashing (P1)
|
|
158
|
-
├─ [🔄] T005: Create login endpoint (P1) ← STUCK? (6 hours)
|
|
159
|
-
├─ [ ] T006: Add logout endpoint (P2)
|
|
160
|
-
└─ 6 more tasks...
|
|
161
|
-
|
|
162
|
-
Next Action:
|
|
163
|
-
1. Run `/do 0001` to retry T005
|
|
164
|
-
2. Or manually review T005 for blockers
|
|
165
|
-
3. Or skip T005 and defer to next increment
|
|
166
|
-
|
|
167
|
-
💡 Tip: Long-running tasks may need breaking down
|
|
168
14
|
```
|
|
169
15
|
|
|
170
|
-
---
|
|
171
|
-
|
|
172
16
|
## Implementation
|
|
173
17
|
|
|
174
|
-
**How `/progress` works** (UPGRADED for multi-active support):
|
|
175
|
-
|
|
176
|
-
### Step 1: Find ALL Active Increments (FAST!)
|
|
177
|
-
|
|
178
|
-
```typescript
|
|
179
|
-
// NEW: Use ActiveIncrementManager cache (10x faster!)
|
|
180
|
-
import { MetadataManager } from './src/core/increment/metadata-manager.js';
|
|
181
|
-
|
|
182
|
-
// Get ALL active increments (from cache, not scan!)
|
|
183
|
-
const activeIncrements = MetadataManager.getActive();
|
|
184
|
-
|
|
185
|
-
// Performance:
|
|
186
|
-
// - OLD: Scan 31 metadata files (~50ms)
|
|
187
|
-
// - NEW: Read 1 cache + 1-2 metadata files (~5ms) ✅
|
|
188
|
-
```
|
|
189
|
-
|
|
190
|
-
### Step 2: Parse Tasks and Calculate %
|
|
191
|
-
|
|
192
|
-
```bash
|
|
193
|
-
# Read tasks.md
|
|
194
|
-
# Count completed vs total
|
|
195
|
-
# Weight P1 tasks higher (2x), P2 (1.5x), P3 (1x)
|
|
196
|
-
# Calculate percentage
|
|
197
|
-
|
|
198
|
-
Example:
|
|
199
|
-
- P1 tasks: 3/8 complete = 3*2 / 8*2 = 6/16 (37.5%)
|
|
200
|
-
- P2 tasks: 2/3 complete = 2*1.5 / 3*1.5 = 3/4.5 (66%)
|
|
201
|
-
- P3 tasks: 1/1 complete = 1*1 / 1*1 = 1/1 (100%)
|
|
202
|
-
|
|
203
|
-
Overall: (6 + 3 + 1) / (16 + 4.5 + 1) = 10/21.5 = 46.5%
|
|
204
|
-
```
|
|
205
|
-
|
|
206
|
-
### Step 3: Check PM Gates
|
|
207
|
-
|
|
208
18
|
```bash
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
#
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
#
|
|
221
|
-
|
|
19
|
+
#!/bin/bash
|
|
20
|
+
|
|
21
|
+
echo ""
|
|
22
|
+
echo "📊 Increment Progress"
|
|
23
|
+
echo "================================"
|
|
24
|
+
echo ""
|
|
25
|
+
|
|
26
|
+
# Counters
|
|
27
|
+
active_count=0
|
|
28
|
+
other_count=0
|
|
29
|
+
|
|
30
|
+
# Scan all increments
|
|
31
|
+
for dir in .specweave/increments/*/; do
|
|
32
|
+
[ ! -d "$dir" ] && continue
|
|
33
|
+
|
|
34
|
+
increment=$(basename "$dir")
|
|
35
|
+
metadata="$dir/metadata.json"
|
|
36
|
+
|
|
37
|
+
# Skip if no metadata
|
|
38
|
+
[ ! -f "$metadata" ] && continue
|
|
39
|
+
|
|
40
|
+
# Get status
|
|
41
|
+
inc_status=$(jq -r '.status' "$metadata" 2>/dev/null)
|
|
42
|
+
|
|
43
|
+
# Skip completed/archived
|
|
44
|
+
[ "$inc_status" = "completed" ] && continue
|
|
45
|
+
[ "$inc_status" = "archived" ] && continue
|
|
46
|
+
|
|
47
|
+
# Count for summary
|
|
48
|
+
if [ "$inc_status" = "in-progress" ]; then
|
|
49
|
+
active_count=$((active_count + 1))
|
|
50
|
+
else
|
|
51
|
+
other_count=$((other_count + 1))
|
|
52
|
+
fi
|
|
53
|
+
|
|
54
|
+
# Get task stats from tasks.md
|
|
55
|
+
tasks_file="$dir/tasks.md"
|
|
56
|
+
if [ -f "$tasks_file" ]; then
|
|
57
|
+
# Count tasks (headers with T-NNN format - both ### and ####)
|
|
58
|
+
total=$(grep -cE '^#{3,4}\s*T-[0-9]' "$tasks_file" 2>/dev/null | tr -d '\n' || echo "0")
|
|
59
|
+
# Count completed (various formats)
|
|
60
|
+
completed=$(grep -cE '(✅ COMPLETE|\[COMPLETED\]|\[x\] Completed)' "$tasks_file" 2>/dev/null | tr -d '\n' || echo "0")
|
|
61
|
+
|
|
62
|
+
# Ensure we have valid numbers (fallback to 0 if empty)
|
|
63
|
+
total=${total:-0}
|
|
64
|
+
completed=${completed:-0}
|
|
65
|
+
|
|
66
|
+
if [ "$total" -gt 0 ] 2>/dev/null; then
|
|
67
|
+
percent=$((completed * 100 / total))
|
|
68
|
+
else
|
|
69
|
+
percent=0
|
|
70
|
+
fi
|
|
71
|
+
else
|
|
72
|
+
total=0
|
|
73
|
+
completed=0
|
|
74
|
+
percent=0
|
|
75
|
+
fi
|
|
76
|
+
|
|
77
|
+
# Display based on status
|
|
78
|
+
if [ "$inc_status" = "in-progress" ]; then
|
|
79
|
+
echo "🟢 ACTIVE: $increment"
|
|
80
|
+
echo " Status: $inc_status"
|
|
81
|
+
echo " Tasks: $completed/$total completed ($percent%)"
|
|
82
|
+
echo " Next: /specweave:do $increment"
|
|
83
|
+
echo ""
|
|
84
|
+
else
|
|
85
|
+
echo "⏸️ $inc_status: $increment"
|
|
86
|
+
echo " Tasks: $completed/$total ($percent%)"
|
|
87
|
+
echo ""
|
|
88
|
+
fi
|
|
89
|
+
done
|
|
90
|
+
|
|
91
|
+
echo "================================"
|
|
92
|
+
echo "Summary:"
|
|
93
|
+
echo " Active increments: $active_count"
|
|
94
|
+
echo " Other non-completed: $other_count"
|
|
95
|
+
|
|
96
|
+
if [ "$active_count" -eq 0 ]; then
|
|
97
|
+
echo ""
|
|
98
|
+
echo "💡 No active work. Run /specweave:increment to start new work"
|
|
99
|
+
elif [ "$active_count" -gt 0 ]; then
|
|
100
|
+
echo ""
|
|
101
|
+
echo "💡 Continue with /specweave:do"
|
|
102
|
+
fi
|
|
103
|
+
|
|
104
|
+
echo ""
|
|
222
105
|
```
|
|
223
106
|
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
```typescript
|
|
227
|
-
// NEW: Display progress for EACH active increment
|
|
228
|
-
for (const increment of activeIncrements) {
|
|
229
|
-
console.log(`\n📊 ${increment.id}`);
|
|
230
|
-
console.log(`Status: ${increment.status}`);
|
|
231
|
-
console.log(`Task Progress: ${completed}/${total} (${percent}%)`);
|
|
232
|
-
console.log(`Next: /specweave:do ${increment.id}`);
|
|
233
|
-
}
|
|
107
|
+
## Example Output
|
|
234
108
|
|
|
235
|
-
// Show WIP limit info
|
|
236
|
-
if (activeIncrements.length === 0) {
|
|
237
|
-
console.log('No active increments. Run /specweave:increment to start new work.');
|
|
238
|
-
} else if (activeIncrements.length === 1) {
|
|
239
|
-
console.log('✅ 1 active increment (optimal focus)');
|
|
240
|
-
} else if (activeIncrements.length === 2) {
|
|
241
|
-
console.log('✅ 2 active increments (at WIP limit, but OK)');
|
|
242
|
-
} else if (activeIncrements.length > 2) {
|
|
243
|
-
console.log('⚠️ >2 active increments (exceeds WIP limit!)');
|
|
244
|
-
}
|
|
245
109
|
```
|
|
110
|
+
📊 Increment Progress
|
|
111
|
+
================================
|
|
246
112
|
|
|
247
|
-
|
|
113
|
+
🟢 ACTIVE: 0037-project-specific-tasks
|
|
114
|
+
Status: in-progress
|
|
115
|
+
Tasks: 72/85 completed (84%)
|
|
116
|
+
Next: /specweave:do 0037-project-specific-tasks
|
|
248
117
|
|
|
249
|
-
|
|
118
|
+
⏸️ planning: 0039-ultra-smart-next-command
|
|
119
|
+
Tasks: 0/45 (0%)
|
|
250
120
|
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
-
|
|
255
|
-
- ✅ Forgot which increment you're working on
|
|
256
|
-
- ✅ Want to check if PM gates will pass
|
|
257
|
-
- ✅ Suspect a task is stuck or blocked
|
|
258
|
-
- ✅ Have multiple increments and need to prioritize
|
|
121
|
+
================================
|
|
122
|
+
Summary:
|
|
123
|
+
Active increments: 1
|
|
124
|
+
Other non-completed: 1
|
|
259
125
|
|
|
260
|
-
|
|
261
|
-
```bash
|
|
262
|
-
# Morning: Check what you were working on
|
|
263
|
-
/specweave:progress
|
|
264
|
-
|
|
265
|
-
# Shows: "Active: 0002-payments, Task 5/10 (50%)"
|
|
266
|
-
# Shows: "Next: /specweave:do 0002 to resume at T006"
|
|
267
|
-
|
|
268
|
-
/specweave:do 0002
|
|
269
|
-
# Auto-resumes from T006
|
|
126
|
+
💡 Continue with /specweave:do
|
|
270
127
|
```
|
|
271
128
|
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
## Pro Tips
|
|
275
|
-
|
|
276
|
-
1. **Shows ALL active increments** - `/specweave:progress` displays up to 2 active increments with full progress
|
|
277
|
-
2. **10x faster** - Uses cache instead of scanning 31 metadata files (5ms vs 50ms)
|
|
278
|
-
3. **Smart resume** - `/specweave:do` picks up where you left off (no task ID needed)
|
|
279
|
-
4. **WIP limits** - 2 active increments allowed (feature + hotfix/bug)
|
|
280
|
-
5. **Completion %** - P1 tasks weighted higher (they're critical path)
|
|
281
|
-
6. **Time tracking** - Warns if tasks are stuck (>2 hours inactive)
|
|
282
|
-
|
|
283
|
-
---
|
|
284
|
-
|
|
285
|
-
## Related Commands
|
|
286
|
-
|
|
287
|
-
- `/inc` - Start new increment (auto-closes previous if ready)
|
|
288
|
-
- `/do` - Execute tasks (auto-resumes from next incomplete)
|
|
289
|
-
- `/validate` - Run quality checks (optional)
|
|
290
|
-
- `/done` - Explicitly close increment (optional if `/inc` auto-closes)
|
|
291
|
-
|
|
292
|
-
---
|
|
293
|
-
|
|
294
|
-
**💡 Remember**: `/progress` is your "where am I?" command. Use it anytime you need orientation!
|
|
295
|
-
|
|
296
|
-
---
|
|
297
|
-
|
|
298
|
-
## Executable Implementation
|
|
299
|
-
|
|
300
|
-
```typescript
|
|
301
|
-
import { Task } from '@claude/types';
|
|
302
|
-
|
|
303
|
-
const task = new Task('progress-check', 'Show progress for all active increments');
|
|
304
|
-
|
|
305
|
-
task.run(async () => {
|
|
306
|
-
const { MetadataManager } = await import('../../../dist/src/core/increment/metadata-manager.js');
|
|
307
|
-
const fs = await import('fs-extra');
|
|
308
|
-
const path = await import('path');
|
|
309
|
-
|
|
310
|
-
// Step 1: Get ALL active increments (FAST via cache!)
|
|
311
|
-
const activeIncrements = MetadataManager.getActive();
|
|
312
|
-
|
|
313
|
-
// Step 2: Check if specific increment requested
|
|
314
|
-
const requestedId = process.argv[2]?.replace(/^0+/, '').padStart(4, '0');
|
|
315
|
-
const increments = requestedId
|
|
316
|
-
? activeIncrements.filter(inc => inc.id === requestedId)
|
|
317
|
-
: activeIncrements;
|
|
318
|
-
|
|
319
|
-
// Step 3: Display results
|
|
320
|
-
console.log('\n📊 Current Progress\n');
|
|
321
|
-
|
|
322
|
-
if (increments.length === 0) {
|
|
323
|
-
if (requestedId) {
|
|
324
|
-
console.log(`❌ Increment ${requestedId} is not active`);
|
|
325
|
-
} else {
|
|
326
|
-
console.log('No active increments found.\n');
|
|
327
|
-
console.log('Recent Increments:');
|
|
328
|
-
const allIncrements = MetadataManager.getAll()
|
|
329
|
-
.filter(m => m.status === 'completed' || m.status === 'closed')
|
|
330
|
-
.sort((a, b) => new Date(b.lastActivity).getTime() - new Date(a.lastActivity).getTime())
|
|
331
|
-
.slice(0, 3);
|
|
332
|
-
|
|
333
|
-
allIncrements.forEach(inc => {
|
|
334
|
-
const age = Math.floor((Date.now() - new Date(inc.lastActivity).getTime()) / (1000 * 60 * 60 * 24));
|
|
335
|
-
console.log(`├─ ${inc.id} (${inc.status}) - ${age} day${age === 1 ? '' : 's'} ago`);
|
|
336
|
-
});
|
|
337
|
-
|
|
338
|
-
console.log('\nNext Action: Run /specweave:increment "feature description" to start new work');
|
|
339
|
-
}
|
|
340
|
-
return;
|
|
341
|
-
}
|
|
342
|
-
|
|
343
|
-
// Step 4: Show progress for each active increment
|
|
344
|
-
for (const increment of increments) {
|
|
345
|
-
console.log(`📦 Increment: ${increment.id}`);
|
|
346
|
-
console.log(`Status: ${increment.status}`);
|
|
347
|
-
|
|
348
|
-
const started = new Date(increment.created);
|
|
349
|
-
const lastActivity = new Date(increment.lastActivity);
|
|
350
|
-
const ageHours = Math.floor((Date.now() - started.getTime()) / (1000 * 60 * 60));
|
|
351
|
-
const lastActivityHours = Math.floor((Date.now() - lastActivity.getTime()) / (1000 * 60 * 60));
|
|
352
|
-
|
|
353
|
-
console.log(`Started: ${ageHours} hours ago`);
|
|
354
|
-
console.log(`Last Activity: ${lastActivityHours} hours ago`);
|
|
355
|
-
|
|
356
|
-
// Try to read tasks.md for progress
|
|
357
|
-
const incrementPath = path.default.join(process.cwd(), '.specweave/increments', increment.id);
|
|
358
|
-
const tasksPath = path.default.join(incrementPath, 'tasks.md');
|
|
359
|
-
|
|
360
|
-
if (await fs.default.pathExists(tasksPath)) {
|
|
361
|
-
const tasksContent = await fs.default.readFile(tasksPath, 'utf-8');
|
|
362
|
-
|
|
363
|
-
// Count tasks
|
|
364
|
-
const taskLines = tasksContent.split('\n').filter(line =>
|
|
365
|
-
line.match(/^#+\s+(T-?\d+|Task-?\d+):/i)
|
|
366
|
-
);
|
|
367
|
-
const completedTasks = tasksContent.split('\n').filter(line =>
|
|
368
|
-
line.includes('[✅]') || line.includes('[x]') || line.includes('[X]')
|
|
369
|
-
);
|
|
370
|
-
|
|
371
|
-
const total = taskLines.length;
|
|
372
|
-
const completed = completedTasks.length;
|
|
373
|
-
const percent = total > 0 ? Math.round((completed / total) * 100) : 0;
|
|
374
|
-
|
|
375
|
-
console.log(`\nTask Progress: ${completed}/${total} completed (${percent}%)`);
|
|
376
|
-
|
|
377
|
-
if (total > 0) {
|
|
378
|
-
console.log('\nTasks:');
|
|
379
|
-
taskLines.slice(0, 10).forEach(line => {
|
|
380
|
-
const isComplete = line.includes('[✅]') || line.includes('[x]') || line.includes('[X]');
|
|
381
|
-
const marker = isComplete ? '✅' : '⏳';
|
|
382
|
-
const taskName = line.replace(/^#+\s+/, '').replace(/\s*\[.*?\]\s*/, '').trim();
|
|
383
|
-
console.log(` ${marker} ${taskName}`);
|
|
384
|
-
});
|
|
385
|
-
|
|
386
|
-
if (taskLines.length > 10) {
|
|
387
|
-
console.log(` ... and ${taskLines.length - 10} more tasks`);
|
|
388
|
-
}
|
|
389
|
-
}
|
|
390
|
-
}
|
|
391
|
-
|
|
392
|
-
console.log(`\nNext Action: Run /specweave:do ${increment.id} to continue work\n`);
|
|
393
|
-
}
|
|
129
|
+
## What It Shows
|
|
394
130
|
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
} else if (activeIncrements.length === 2) {
|
|
400
|
-
console.log('✅ 2 active increments (at WIP limit, but OK)\n');
|
|
401
|
-
} else if (activeIncrements.length === 1) {
|
|
402
|
-
console.log('✅ 1 active increment (optimal focus)\n');
|
|
403
|
-
}
|
|
404
|
-
});
|
|
131
|
+
- **Active increments** (in-progress): Shown first with green indicator
|
|
132
|
+
- **Other non-completed**: planning, paused, blocked, etc.
|
|
133
|
+
- **Task completion**: X/Y completed (Z%)
|
|
134
|
+
- **Next action**: Which command to run
|
|
405
135
|
|
|
406
|
-
|
|
407
|
-
```
|
|
136
|
+
**Note**: Skips completed and archived increments.
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
name: specweave
|
|
2
|
+
name: specweave:reopen
|
|
3
3
|
description: |
|
|
4
4
|
Reopen completed increments, tasks, or user stories when issues are discovered.
|
|
5
5
|
Validates WIP limits, creates audit trail, and syncs to external tools.
|
|
@@ -13,7 +13,10 @@ Reopen completed work when issues are discovered after completion.
|
|
|
13
13
|
## Quick Start
|
|
14
14
|
|
|
15
15
|
```bash
|
|
16
|
-
# Reopen entire increment
|
|
16
|
+
# Reopen entire increment (natural language - RECOMMENDED)
|
|
17
|
+
/specweave:reopen 0043 Bug found in AC sync implementation
|
|
18
|
+
|
|
19
|
+
# OR with explicit --reason flag
|
|
17
20
|
/specweave:reopen 0031 --reason "GitHub sync failing"
|
|
18
21
|
|
|
19
22
|
# Reopen specific task
|
|
@@ -23,6 +26,23 @@ Reopen completed work when issues are discovered after completion.
|
|
|
23
26
|
/specweave:reopen 0031 --user-story US-001 --reason "Acceptance criteria not met"
|
|
24
27
|
```
|
|
25
28
|
|
|
29
|
+
### Natural Language Syntax (NEW!)
|
|
30
|
+
|
|
31
|
+
You can now use natural language without the `--reason` flag:
|
|
32
|
+
|
|
33
|
+
```bash
|
|
34
|
+
# ✅ WORKS: Natural language (everything after increment ID is the reason)
|
|
35
|
+
/specweave:reopen 0043 Bug found in implementation, need to fix
|
|
36
|
+
|
|
37
|
+
# ✅ WORKS: Traditional syntax with flag
|
|
38
|
+
/specweave:reopen 0043 --reason "Bug found in implementation"
|
|
39
|
+
|
|
40
|
+
# ✅ WORKS: With task ID
|
|
41
|
+
/specweave:reopen 0043 --task T-005 Found edge case not covered
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
**How it works**: All text after the increment ID (and any flags) is treated as the reason. No quotes needed!
|
|
45
|
+
|
|
26
46
|
## Smart Detection First!
|
|
27
47
|
|
|
28
48
|
**Before using this command manually**, try reporting your issue naturally:
|
|
@@ -119,11 +139,18 @@ Use `--force` to bypass WIP limit checks (use sparingly!).
|
|
|
119
139
|
| Parameter | Required | Description |
|
|
120
140
|
|-----------|----------|-------------|
|
|
121
141
|
| `<increment-id>` | Yes | Increment to reopen (e.g., `0031` or `0031-external-tool-status-sync`) |
|
|
122
|
-
| `--reason <text>` |
|
|
142
|
+
| `--reason <text>` | Optional* | Why reopening (for audit trail). *Can use natural language instead! |
|
|
123
143
|
| `--task <id>` | No | Reopen specific task (e.g., `T-003`) |
|
|
124
144
|
| `--user-story <id>` | No | Reopen user story + related tasks (e.g., `US-001`) |
|
|
125
145
|
| `--force` | No | Bypass WIP limit checks |
|
|
126
146
|
|
|
147
|
+
**Natural Language**: If `--reason` is not provided, all remaining text is used as the reason.
|
|
148
|
+
|
|
149
|
+
Examples:
|
|
150
|
+
- `/specweave:reopen 0043 Bug found` → reason = "Bug found"
|
|
151
|
+
- `/specweave:reopen 0043 --task T-005 Edge case` → reason = "Edge case"
|
|
152
|
+
- `/specweave:reopen 0043 --reason "Formal reason"` → reason = "Formal reason" (explicit)
|
|
153
|
+
|
|
127
154
|
## WIP Limit Validation
|
|
128
155
|
|
|
129
156
|
The command automatically checks WIP limits before reopening increments.
|
|
@@ -243,6 +243,57 @@ Synchronize living documentation in `.specweave/docs/` with learnings and decisi
|
|
|
243
243
|
|
|
244
244
|
### Execution Steps:
|
|
245
245
|
|
|
246
|
+
#### 0. 🔄 SYNC LIVING SPECS (User Stories, ACs, Tasks) - CRITICAL FIRST STEP
|
|
247
|
+
|
|
248
|
+
**🚨 MANDATORY: This MUST run FIRST before syncing strategic docs!**
|
|
249
|
+
|
|
250
|
+
Execute the living specs sync using the TypeScript CLI:
|
|
251
|
+
|
|
252
|
+
```typescript
|
|
253
|
+
import { syncSpecs } from './dist/src/cli/commands/sync-specs.js';
|
|
254
|
+
|
|
255
|
+
console.log('═══════════════════════════════════════════════════════');
|
|
256
|
+
console.log('📋 STEP 0: SYNCING LIVING SPECS');
|
|
257
|
+
console.log('═══════════════════════════════════════════════════════\n');
|
|
258
|
+
console.log('🔄 Syncing user stories, acceptance criteria, and tasks...\n');
|
|
259
|
+
|
|
260
|
+
// Call sync-specs to sync living docs structure
|
|
261
|
+
await syncSpecs(['{increment_id}']);
|
|
262
|
+
|
|
263
|
+
console.log('\n✅ Living specs synced successfully!');
|
|
264
|
+
console.log(' - User stories created/updated in .specweave/docs/internal/specs/');
|
|
265
|
+
console.log(' - Acceptance criteria synchronized with completion status');
|
|
266
|
+
console.log(' - Tasks linked to user stories\n');
|
|
267
|
+
```
|
|
268
|
+
|
|
269
|
+
**What this step does**:
|
|
270
|
+
- ✅ Parses increment spec.md and extracts user stories with ACs
|
|
271
|
+
- ✅ Syncs AC completion status from spec.md to user story files
|
|
272
|
+
- ✅ Updates task mappings in user story files
|
|
273
|
+
- ✅ Creates/updates feature files and README
|
|
274
|
+
- ✅ Ensures living specs are in sync BEFORE strategic docs
|
|
275
|
+
|
|
276
|
+
**Output**:
|
|
277
|
+
```
|
|
278
|
+
🎯 Target increment: {increment_id}
|
|
279
|
+
📁 Increment path: .specweave/increments/{increment_id}
|
|
280
|
+
🔄 Mode: Specs-only sync (Universal Hierarchy)
|
|
281
|
+
|
|
282
|
+
Processing...
|
|
283
|
+
📚 Syncing {increment_id} → {FS-XXX}...
|
|
284
|
+
✅ Synced 3 tasks to US-001
|
|
285
|
+
✅ Synced 2 tasks to US-002
|
|
286
|
+
|
|
287
|
+
✅ Synced {increment_id} → {FS-XXX}
|
|
288
|
+
Created: 5 files
|
|
289
|
+
|
|
290
|
+
═══════════════════════════════════════════════════════
|
|
291
|
+
```
|
|
292
|
+
|
|
293
|
+
**CRITICAL**: If this step fails, STOP and report error. Do not proceed to strategic docs sync.
|
|
294
|
+
|
|
295
|
+
---
|
|
296
|
+
|
|
246
297
|
#### 1. Analyze Increment Artifacts
|
|
247
298
|
|
|
248
299
|
```bash
|
|
@@ -510,7 +561,16 @@ Increment: {increment_id} ({title})
|
|
|
510
561
|
Status: {status} → Documentation Updated
|
|
511
562
|
|
|
512
563
|
───────────────────────────────────────────────────────
|
|
513
|
-
|
|
564
|
+
📋 LIVING SPECS SYNCED (Step 0)
|
|
565
|
+
───────────────────────────────────────────────────────
|
|
566
|
+
|
|
567
|
+
✅ User Stories: {count} created/updated in .specweave/docs/internal/specs/
|
|
568
|
+
✅ Acceptance Criteria: Synchronized with completion status from spec.md
|
|
569
|
+
✅ Tasks: Linked to user stories with completion tracking
|
|
570
|
+
✅ Feature Files: Created/updated in .specweave/docs/internal/specs/_features/
|
|
571
|
+
|
|
572
|
+
───────────────────────────────────────────────────────
|
|
573
|
+
📊 STRATEGIC DOCS CHANGES (Steps 1-5)
|
|
514
574
|
───────────────────────────────────────────────────────
|
|
515
575
|
|
|
516
576
|
Created:
|
|
@@ -544,20 +604,27 @@ To restore: cp {file}.backup {file}
|
|
|
544
604
|
───────────────────────────────────────────────────────
|
|
545
605
|
|
|
546
606
|
1. Review updated documentation:
|
|
607
|
+
- Living specs: .specweave/docs/internal/specs/
|
|
547
608
|
- Public docs: .specweave/docs/public/
|
|
548
609
|
- Internal docs: .specweave/docs/internal/
|
|
549
610
|
- New ADRs: .specweave/docs/internal/architecture/adr/
|
|
550
611
|
|
|
551
|
-
2.
|
|
612
|
+
2. Verify living specs sync:
|
|
613
|
+
- Check user story files for updated AC checkboxes
|
|
614
|
+
- Verify tasks are linked correctly
|
|
615
|
+
- Confirm feature files are up to date
|
|
616
|
+
|
|
617
|
+
3. (Optional) Generate Docusaurus site:
|
|
552
618
|
- Use 'docusaurus' skill to publish updated docs
|
|
553
619
|
|
|
554
|
-
|
|
620
|
+
4. Commit changes:
|
|
555
621
|
git add .specweave/docs/
|
|
556
622
|
git commit -m "docs: sync from increment {increment_id}"
|
|
557
623
|
|
|
558
624
|
═══════════════════════════════════════════════════════
|
|
559
625
|
|
|
560
|
-
|
|
626
|
+
ALL documentation is now in sync with increment {increment_id}! 🎉
|
|
627
|
+
(Living specs + Strategic docs)
|
|
561
628
|
```
|
|
562
629
|
|
|
563
630
|
---
|