specweave 0.6.8 β†’ 0.7.0

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 (255) hide show
  1. package/.claude-plugin/README.md +1 -1
  2. package/CLAUDE.md +903 -99
  3. package/README.md +143 -207
  4. package/bin/specweave.js +67 -0
  5. package/dist/cli/commands/abandon.d.ts +13 -0
  6. package/dist/cli/commands/abandon.d.ts.map +1 -0
  7. package/dist/cli/commands/abandon.js +15 -0
  8. package/dist/cli/commands/abandon.js.map +1 -0
  9. package/dist/cli/commands/init.d.ts.map +1 -1
  10. package/dist/cli/commands/init.js +90 -18
  11. package/dist/cli/commands/init.js.map +1 -1
  12. package/dist/cli/commands/pause.d.ts +13 -0
  13. package/dist/cli/commands/pause.d.ts.map +1 -0
  14. package/dist/cli/commands/pause.js +15 -0
  15. package/dist/cli/commands/pause.js.map +1 -0
  16. package/dist/cli/commands/qa.d.ts +54 -0
  17. package/dist/cli/commands/qa.d.ts.map +1 -0
  18. package/dist/cli/commands/qa.js +98 -0
  19. package/dist/cli/commands/qa.js.map +1 -0
  20. package/dist/cli/commands/resume.d.ts +12 -0
  21. package/dist/cli/commands/resume.d.ts.map +1 -0
  22. package/dist/cli/commands/resume.js +14 -0
  23. package/dist/cli/commands/resume.js.map +1 -0
  24. package/dist/cli/commands/status.d.ts +12 -0
  25. package/dist/cli/commands/status.d.ts.map +1 -0
  26. package/dist/cli/commands/status.js +23 -0
  27. package/dist/cli/commands/status.js.map +1 -0
  28. package/dist/cli/helpers/issue-tracker/ado.d.ts +57 -0
  29. package/dist/cli/helpers/issue-tracker/ado.d.ts.map +1 -0
  30. package/dist/cli/helpers/issue-tracker/ado.js +223 -0
  31. package/dist/cli/helpers/issue-tracker/ado.js.map +1 -0
  32. package/dist/cli/helpers/issue-tracker/github.d.ts +65 -0
  33. package/dist/cli/helpers/issue-tracker/github.d.ts.map +1 -0
  34. package/dist/cli/helpers/issue-tracker/github.js +284 -0
  35. package/dist/cli/helpers/issue-tracker/github.js.map +1 -0
  36. package/dist/cli/helpers/issue-tracker/index.d.ts +22 -0
  37. package/dist/cli/helpers/issue-tracker/index.d.ts.map +1 -0
  38. package/dist/cli/helpers/issue-tracker/index.js +270 -0
  39. package/dist/cli/helpers/issue-tracker/index.js.map +1 -0
  40. package/dist/cli/helpers/issue-tracker/jira.d.ts +61 -0
  41. package/dist/cli/helpers/issue-tracker/jira.d.ts.map +1 -0
  42. package/dist/cli/helpers/issue-tracker/jira.js +265 -0
  43. package/dist/cli/helpers/issue-tracker/jira.js.map +1 -0
  44. package/dist/cli/helpers/issue-tracker/types.d.ts +86 -0
  45. package/dist/cli/helpers/issue-tracker/types.d.ts.map +1 -0
  46. package/dist/cli/helpers/issue-tracker/types.js +16 -0
  47. package/dist/cli/helpers/issue-tracker/types.js.map +1 -0
  48. package/dist/cli/helpers/issue-tracker/utils.d.ts +103 -0
  49. package/dist/cli/helpers/issue-tracker/utils.d.ts.map +1 -0
  50. package/dist/cli/helpers/issue-tracker/utils.js +240 -0
  51. package/dist/cli/helpers/issue-tracker/utils.js.map +1 -0
  52. package/dist/core/increment/limits.d.ts +68 -0
  53. package/dist/core/increment/limits.d.ts.map +1 -0
  54. package/dist/core/increment/limits.js +224 -0
  55. package/dist/core/increment/limits.js.map +1 -0
  56. package/dist/core/increment/metadata-manager.d.ts +114 -0
  57. package/dist/core/increment/metadata-manager.d.ts.map +1 -0
  58. package/dist/core/increment/metadata-manager.js +320 -0
  59. package/dist/core/increment/metadata-manager.js.map +1 -0
  60. package/dist/core/increment/status-commands.d.ts +43 -0
  61. package/dist/core/increment/status-commands.d.ts.map +1 -0
  62. package/dist/core/increment/status-commands.js +277 -0
  63. package/dist/core/increment/status-commands.js.map +1 -0
  64. package/dist/core/plugin-detector.d.ts +1 -0
  65. package/dist/core/plugin-detector.d.ts.map +1 -1
  66. package/dist/core/plugin-detector.js +25 -0
  67. package/dist/core/plugin-detector.js.map +1 -1
  68. package/dist/core/qa/qa-runner.d.ts +16 -0
  69. package/dist/core/qa/qa-runner.d.ts.map +1 -0
  70. package/dist/core/qa/qa-runner.js +404 -0
  71. package/dist/core/qa/qa-runner.js.map +1 -0
  72. package/dist/core/qa/quality-gate-decider.d.ts +53 -0
  73. package/dist/core/qa/quality-gate-decider.d.ts.map +1 -0
  74. package/dist/core/qa/quality-gate-decider.js +268 -0
  75. package/dist/core/qa/quality-gate-decider.js.map +1 -0
  76. package/dist/core/qa/risk-calculator.d.ts +126 -0
  77. package/dist/core/qa/risk-calculator.d.ts.map +1 -0
  78. package/dist/core/qa/risk-calculator.js +247 -0
  79. package/dist/core/qa/risk-calculator.js.map +1 -0
  80. package/dist/core/qa/types.d.ts +315 -0
  81. package/dist/core/qa/types.d.ts.map +1 -0
  82. package/dist/core/qa/types.js +8 -0
  83. package/dist/core/qa/types.js.map +1 -0
  84. package/dist/core/types/config.d.ts +35 -0
  85. package/dist/core/types/config.d.ts.map +1 -1
  86. package/dist/core/types/config.js +16 -0
  87. package/dist/core/types/config.js.map +1 -1
  88. package/dist/core/types/increment-metadata.d.ts +120 -0
  89. package/dist/core/types/increment-metadata.d.ts.map +1 -0
  90. package/dist/core/types/increment-metadata.js +138 -0
  91. package/dist/core/types/increment-metadata.js.map +1 -0
  92. package/dist/hooks/lib/invoke-translator-skill.d.ts +60 -0
  93. package/dist/hooks/lib/invoke-translator-skill.d.ts.map +1 -0
  94. package/dist/hooks/lib/invoke-translator-skill.js +201 -0
  95. package/dist/hooks/lib/invoke-translator-skill.js.map +1 -0
  96. package/dist/hooks/lib/translate-file.d.ts +59 -0
  97. package/dist/hooks/lib/translate-file.d.ts.map +1 -0
  98. package/dist/hooks/lib/translate-file.js +350 -0
  99. package/dist/hooks/lib/translate-file.js.map +1 -0
  100. package/dist/locales/en/cli.json +3 -1
  101. package/dist/metrics/calculators/change-failure-rate.d.ts +22 -0
  102. package/dist/metrics/calculators/change-failure-rate.d.ts.map +1 -0
  103. package/dist/metrics/calculators/change-failure-rate.js +70 -0
  104. package/dist/metrics/calculators/change-failure-rate.js.map +1 -0
  105. package/dist/metrics/calculators/deployment-frequency.d.ts +20 -0
  106. package/dist/metrics/calculators/deployment-frequency.d.ts.map +1 -0
  107. package/dist/metrics/calculators/deployment-frequency.js +61 -0
  108. package/dist/metrics/calculators/deployment-frequency.js.map +1 -0
  109. package/dist/metrics/calculators/lead-time.d.ts +22 -0
  110. package/dist/metrics/calculators/lead-time.d.ts.map +1 -0
  111. package/dist/metrics/calculators/lead-time.js +82 -0
  112. package/dist/metrics/calculators/lead-time.js.map +1 -0
  113. package/dist/metrics/calculators/mttr.d.ts +21 -0
  114. package/dist/metrics/calculators/mttr.d.ts.map +1 -0
  115. package/dist/metrics/calculators/mttr.js +60 -0
  116. package/dist/metrics/calculators/mttr.js.map +1 -0
  117. package/dist/metrics/dora-calculator.d.ts +24 -0
  118. package/dist/metrics/dora-calculator.d.ts.map +1 -0
  119. package/dist/metrics/dora-calculator.js +104 -0
  120. package/dist/metrics/dora-calculator.js.map +1 -0
  121. package/dist/metrics/github-client.d.ts +51 -0
  122. package/dist/metrics/github-client.d.ts.map +1 -0
  123. package/dist/metrics/github-client.js +133 -0
  124. package/dist/metrics/github-client.js.map +1 -0
  125. package/dist/metrics/types.d.ts +112 -0
  126. package/dist/metrics/types.d.ts.map +1 -0
  127. package/dist/metrics/types.js +10 -0
  128. package/dist/metrics/types.js.map +1 -0
  129. package/dist/metrics/utils/percentile.d.ts +25 -0
  130. package/dist/metrics/utils/percentile.d.ts.map +1 -0
  131. package/dist/metrics/utils/percentile.js +46 -0
  132. package/dist/metrics/utils/percentile.js.map +1 -0
  133. package/dist/metrics/utils/tier-classifier.d.ts +61 -0
  134. package/dist/metrics/utils/tier-classifier.d.ts.map +1 -0
  135. package/dist/metrics/utils/tier-classifier.js +100 -0
  136. package/dist/metrics/utils/tier-classifier.js.map +1 -0
  137. package/dist/utils/auth-helpers.d.ts +58 -0
  138. package/dist/utils/auth-helpers.d.ts.map +1 -0
  139. package/dist/utils/auth-helpers.js +108 -0
  140. package/dist/utils/auth-helpers.js.map +1 -0
  141. package/dist/utils/env-file.d.ts +88 -0
  142. package/dist/utils/env-file.d.ts.map +1 -0
  143. package/dist/utils/env-file.js +180 -0
  144. package/dist/utils/env-file.js.map +1 -0
  145. package/dist/utils/plugin-detection.d.ts +50 -0
  146. package/dist/utils/plugin-detection.d.ts.map +1 -0
  147. package/dist/utils/plugin-detection.js +229 -0
  148. package/dist/utils/plugin-detection.js.map +1 -0
  149. package/dist/utils/secrets-loader.d.ts +88 -0
  150. package/dist/utils/secrets-loader.d.ts.map +1 -0
  151. package/dist/utils/secrets-loader.js +271 -0
  152. package/dist/utils/secrets-loader.js.map +1 -0
  153. package/dist/utils/translation.d.ts +187 -0
  154. package/dist/utils/translation.d.ts.map +1 -0
  155. package/dist/utils/translation.js +414 -0
  156. package/dist/utils/translation.js.map +1 -0
  157. package/package.json +28 -44
  158. package/plugins/specweave/.claude-plugin/plugin.json +3 -3
  159. package/plugins/specweave/agents/pm/AGENT.md +330 -54
  160. package/plugins/specweave/agents/test-aware-planner/AGENT.md +1035 -0
  161. package/plugins/specweave/agents/test-aware-planner/templates/README.md +118 -0
  162. package/plugins/specweave/agents/test-aware-planner/templates/task-non-testable.md.template +24 -0
  163. package/plugins/specweave/agents/test-aware-planner/templates/task-testable.md.template +53 -0
  164. package/plugins/specweave/agents/test-aware-planner/templates/tasks-frontmatter.md.template +11 -0
  165. package/plugins/specweave/commands/README.md +88 -163
  166. package/plugins/specweave/commands/specweave-abandon.md +314 -0
  167. package/plugins/specweave/commands/specweave-check-tests.md +546 -0
  168. package/plugins/specweave/commands/{do.md β†’ specweave-do.md} +5 -7
  169. package/plugins/specweave/commands/{increment.md β†’ specweave-increment.md} +231 -4
  170. package/plugins/specweave/commands/specweave-pause.md +189 -0
  171. package/plugins/specweave/commands/specweave-qa.md +245 -0
  172. package/plugins/specweave/commands/specweave-resume.md +216 -0
  173. package/plugins/specweave/commands/specweave-status.md +397 -0
  174. package/plugins/specweave/commands/specweave-sync-tasks.md +256 -0
  175. package/plugins/specweave/commands/{translate.md β†’ specweave-translate.md} +3 -3
  176. package/plugins/specweave/commands/specweave-update-scope.md +351 -0
  177. package/plugins/specweave/commands/specweave.md +21 -21
  178. package/plugins/specweave/hooks/post-increment-planning.sh +335 -0
  179. package/plugins/specweave/hooks/post-task-completion.sh +141 -0
  180. package/plugins/specweave/skills/SKILLS-INDEX.md +1 -1
  181. package/plugins/specweave/skills/brownfield-analyzer/SKILL.md +9 -9
  182. package/plugins/specweave/skills/increment-planner/SKILL.md +400 -212
  183. package/plugins/specweave/skills/increment-quality-judge-v2/SKILL.md +499 -0
  184. package/plugins/specweave/skills/plugin-detector/SKILL.md +114 -1
  185. package/plugins/specweave/skills/project-kickstarter/SKILL.md +74 -1
  186. package/plugins/specweave/skills/{rfc-generator β†’ spec-generator}/SKILL.md +22 -29
  187. package/plugins/specweave/skills/specweave-detector/SKILL.md +3 -3
  188. package/plugins/specweave/skills/specweave-framework/SKILL.md +2 -2
  189. package/plugins/specweave-ado/.claude-plugin/plugin.json +18 -4
  190. package/plugins/specweave-ado/agents/ado-manager/AGENT.md +426 -0
  191. package/plugins/specweave-ado/commands/close-workitem.md +52 -0
  192. package/plugins/specweave-ado/commands/create-workitem.md +53 -0
  193. package/plugins/specweave-ado/commands/status.md +53 -0
  194. package/plugins/specweave-ado/commands/sync.md +55 -0
  195. package/plugins/specweave-ado/lib/ado-client.ts +361 -0
  196. package/plugins/specweave-ado/reference/ado-specweave-mapping.md +552 -0
  197. package/plugins/specweave-ado/skills/ado-sync/SKILL.md +344 -193
  198. package/plugins/specweave-docs/skills/docusaurus/SKILL.md +73 -0
  199. package/plugins/specweave-github/agents/github-manager/AGENT.md +49 -0
  200. package/plugins/specweave-github/commands/{github-close-issue.md β†’ close-issue.md} +1 -1
  201. package/plugins/specweave-github/commands/{github-create-issue.md β†’ create-issue.md} +1 -1
  202. package/plugins/specweave-github/commands/{github-status.md β†’ status.md} +1 -1
  203. package/plugins/specweave-github/commands/{github-sync-tasks.md β†’ sync-tasks.md} +1 -1
  204. package/plugins/specweave-github/commands/{github-sync.md β†’ sync.md} +1 -1
  205. package/plugins/specweave-github/reference/github-specweave-mapping.md +377 -0
  206. package/plugins/specweave-github/skills/github-sync/SKILL.md +11 -3
  207. package/plugins/specweave-infrastructure/commands/{specweave.monitor-setup.md β†’ monitor-setup.md} +5 -0
  208. package/plugins/specweave-infrastructure/commands/{specweave.slo-implement.md β†’ slo-implement.md} +5 -0
  209. package/plugins/specweave-jira/agents/jira-manager/AGENT.md +380 -0
  210. package/plugins/specweave-jira/commands/{specweave.sync-jira.md β†’ sync.md} +1 -1
  211. package/plugins/specweave-jira/reference/jira-specweave-mapping.md +508 -0
  212. package/plugins/specweave-ml/commands/ml-deploy.md +1 -1
  213. package/plugins/specweave-ml/commands/ml-evaluate.md +1 -1
  214. package/plugins/specweave-ml/commands/ml-explain.md +1 -1
  215. package/plugins/specweave-ml/commands/{specweave.ml-pipeline.md β†’ ml-pipeline.md} +5 -0
  216. package/src/templates/AGENTS.md.template +331 -31
  217. package/src/templates/CLAUDE.md.template +36 -21
  218. package/src/templates/COMPLETION-REPORT.template.md +128 -0
  219. package/src/templates/README.md.template +17 -16
  220. package/src/templates/docs/README.md +11 -9
  221. package/src/templates/docs/spec-template.md +229 -0
  222. package/plugins/specweave/commands/inc.md +0 -85
  223. package/plugins/specweave/commands/list-increments.md +0 -180
  224. package/src/adapters/README.md +0 -275
  225. package/src/adapters/adapter-base.ts +0 -182
  226. package/src/adapters/adapter-interface.ts +0 -166
  227. package/src/adapters/adapter-loader.ts +0 -256
  228. package/src/adapters/agents-md-generator.ts +0 -228
  229. package/src/adapters/claude/README.md +0 -233
  230. package/src/adapters/claude/adapter.ts +0 -468
  231. package/src/adapters/claude-md-generator.ts +0 -377
  232. package/src/adapters/codex/README.md +0 -105
  233. package/src/adapters/codex/adapter.ts +0 -333
  234. package/src/adapters/cursor/.cursor/context/docs-context.md +0 -62
  235. package/src/adapters/cursor/.cursor/context/increments-context.md +0 -71
  236. package/src/adapters/cursor/.cursor/context/strategy-context.md +0 -73
  237. package/src/adapters/cursor/.cursor/context/tests-context.md +0 -89
  238. package/src/adapters/cursor/README.md +0 -283
  239. package/src/adapters/cursor/adapter.ts +0 -451
  240. package/src/adapters/doc-generator.ts +0 -331
  241. package/src/adapters/gemini/README.md +0 -97
  242. package/src/adapters/gemini/adapter.ts +0 -298
  243. package/src/adapters/generic/README.md +0 -277
  244. package/src/adapters/generic/adapter.ts +0 -378
  245. package/src/adapters/registry.yaml +0 -187
  246. /package/plugins/specweave/commands/{costs.md β†’ specweave-costs.md} +0 -0
  247. /package/plugins/specweave/commands/{done.md β†’ specweave-done.md} +0 -0
  248. /package/plugins/specweave/commands/{next.md β†’ specweave-next.md} +0 -0
  249. /package/plugins/specweave/commands/{progress.md β†’ specweave-progress.md} +0 -0
  250. /package/plugins/specweave/commands/{sync-docs.md β†’ specweave-sync-docs.md} +0 -0
  251. /package/plugins/specweave/commands/{tdd-cycle.md β†’ specweave-tdd-cycle.md} +0 -0
  252. /package/plugins/specweave/commands/{tdd-green.md β†’ specweave-tdd-green.md} +0 -0
  253. /package/plugins/specweave/commands/{tdd-red.md β†’ specweave-tdd-red.md} +0 -0
  254. /package/plugins/specweave/commands/{tdd-refactor.md β†’ specweave-tdd-refactor.md} +0 -0
  255. /package/plugins/specweave/commands/{validate.md β†’ specweave-validate.md} +0 -0
@@ -0,0 +1,216 @@
1
+ ---
2
+ name: resume
3
+ description: Resume a paused increment
4
+ usage: /specweave:resume <increment-id>
5
+ ---
6
+
7
+ # Resume Increment Command
8
+
9
+ **Usage**: `/specweave:resume <increment-id>`
10
+
11
+ ---
12
+
13
+ ## Purpose
14
+
15
+ Resume a paused increment when:
16
+ - **Blocker resolved** (API keys arrived, approval granted)
17
+ - **Ready to continue** after deprioritization
18
+ - **Prerequisite completed** (can now proceed)
19
+
20
+ ---
21
+
22
+ ## Behavior
23
+
24
+ 1. **Validates** increment exists and is "paused"
25
+ 2. **Calculates** pause duration (days, hours)
26
+ 3. **Updates** metadata.json:
27
+ - `status`: "paused" β†’ "active"
28
+ - Clears `pausedReason` and `pausedAt`
29
+ - Updates `lastActivity` timestamp
30
+ 4. **Displays** context (pause duration, last activity)
31
+ 5. **Suggests** next actions (/do to continue work)
32
+
33
+ ---
34
+
35
+ ## Examples
36
+
37
+ ### Resume after a few days
38
+ ```bash
39
+ /resume 0006
40
+
41
+ βœ… Increment 0006 resumed
42
+ ⏱️ Was paused for: 3 days, 4 hours
43
+ πŸ’‘ Last activity: Created translation pipeline
44
+ πŸ“‹ Continue with: /do
45
+ ```
46
+
47
+ ### Resume after a few hours
48
+ ```bash
49
+ /resume 0007
50
+
51
+ βœ… Increment 0007 resumed
52
+ ⏱️ Was paused for: 2 hours
53
+ πŸ“‹ Continue with: /do
54
+ ```
55
+
56
+ ---
57
+
58
+ ## Edge Cases
59
+
60
+ ### Already Active
61
+ ```bash
62
+ /resume 0006
63
+
64
+ ⚠️ Increment 0006 is already active
65
+ No action needed. Continue with: /do
66
+ ```
67
+
68
+ ### Cannot Resume Completed
69
+ ```bash
70
+ /resume 0005
71
+
72
+ ❌ Cannot resume increment 0005
73
+ Status: completed
74
+ Increment is already complete
75
+ ```
76
+
77
+ ### Resume Abandoned (Confirmation Required)
78
+ ```bash
79
+ /resume 0008
80
+
81
+ ⚠️ Increment 0008 is abandoned
82
+ Reason: Requirements changed
83
+
84
+ Are you sure you want to resume? [y/N]: y
85
+
86
+ βœ… Increment 0008 resumed
87
+ ⚠️ Note: Was abandoned 5 days ago
88
+ πŸ’‘ Review spec.md to ensure still relevant
89
+ πŸ“‹ Continue with: /do
90
+ ```
91
+
92
+ ### Increment Not Found
93
+ ```bash
94
+ /resume 9999
95
+
96
+ ❌ Increment not found: 9999
97
+ πŸ’‘ Check paused increments: /status --paused
98
+ ```
99
+
100
+ ---
101
+
102
+ ## Implementation
103
+
104
+ This command uses the MetadataManager to update increment status:
105
+
106
+ ```typescript
107
+ import { MetadataManager, IncrementStatus } from '../src/core/increment/metadata-manager';
108
+
109
+ // Read current metadata
110
+ const metadata = MetadataManager.read(incrementId);
111
+
112
+ // Validate can resume
113
+ if (metadata.status === IncrementStatus.COMPLETED) {
114
+ throw new Error('Cannot resume completed increment');
115
+ }
116
+
117
+ // Calculate pause duration
118
+ const pauseDuration = calculateDuration(metadata.pausedAt, new Date());
119
+
120
+ // Update status
121
+ MetadataManager.updateStatus(incrementId, IncrementStatus.ACTIVE);
122
+
123
+ // Display context
124
+ console.log(`Was paused for: ${pauseDuration}`);
125
+ console.log(`Last activity: ${getLastActivity(incrementId)}`);
126
+ ```
127
+
128
+ ---
129
+
130
+ ## Status Flow
131
+
132
+ ```
133
+ paused ──resume──> active
134
+ β”‚
135
+ abandoned ──resume──> active (with confirmation)
136
+ ```
137
+
138
+ ---
139
+
140
+ ## Related Commands
141
+
142
+ - `/pause <id>` - Pause active increment
143
+ - `/status` - Show all increment statuses
144
+ - `/status --paused` - Show only paused increments
145
+ - `/do` - Continue work after resuming
146
+
147
+ ---
148
+
149
+ ## Best Practices
150
+
151
+ βœ… **Review spec.md first** - Especially after long pauses
152
+
153
+ βœ… **Check for changes** - Dependencies, requirements may have changed
154
+
155
+ βœ… **Update estimates** - If scope changed during pause
156
+
157
+ βœ… **Communicate** - Let team know you're resuming (if collaborative)
158
+
159
+ ❌ **Don't blindly resume** - Re-validate context first
160
+
161
+ ❌ **Don't resume abandoned without review** - Understand why it was abandoned
162
+
163
+ ---
164
+
165
+ ## Automatic Suggestions
166
+
167
+ When you run `/status`, stale paused increments trigger suggestions:
168
+
169
+ ```bash
170
+ /status
171
+
172
+ ⏸️ Paused (2):
173
+ πŸ”„ 0006-stripe [feature]
174
+ Paused: 3 days ago
175
+ Reason: Waiting for API keys
176
+ πŸ’‘ Check if API keys arrived β†’ /resume 0006
177
+
178
+ πŸ”„ 0007-refactor [refactor]
179
+ Paused: 10 days ago
180
+ Reason: Deprioritized
181
+ ⚠️ STALE! Consider resuming or abandoning
182
+ ```
183
+
184
+ ---
185
+
186
+ ## Context Recovery
187
+
188
+ After resuming, the command shows helpful context:
189
+
190
+ ```bash
191
+ /resume 0006
192
+
193
+ βœ… Increment 0006 resumed
194
+
195
+ πŸ“Š Status before pause:
196
+ - Progress: 30% (6/20 tasks done)
197
+ - Last completed: T-005 (Create translation pipeline)
198
+ - Paused reason: Waiting for Stripe API keys
199
+
200
+ πŸ’‘ Next steps:
201
+ 1. Review spec.md (requirements may have changed)
202
+ 2. Check dependencies (are API keys available?)
203
+ 3. Continue with: /do
204
+
205
+ πŸ“‹ Quick commands:
206
+ /do # Resume work
207
+ /progress # See detailed progress
208
+ /validate # Check increment health
209
+ ```
210
+
211
+ ---
212
+
213
+ **Command**: `/specweave:resume` (or `/resume`)
214
+ **Plugin**: specweave (core)
215
+ **Version**: v0.7.0+
216
+ **Part of**: Increment 0007 - Smart Status Management
@@ -0,0 +1,397 @@
1
+ ---
2
+ name: status
3
+ description: Show increment status overview with rich details (active, paused, completed, abandoned)
4
+ usage: /specweave:status [--active|--paused|--completed|--abandoned|--stale]
5
+ ---
6
+
7
+ # Increment Status Command
8
+
9
+ **Usage**: `/specweave:status [filter]`
10
+
11
+ ---
12
+
13
+ ## Purpose
14
+
15
+ Display comprehensive increment status overview:
16
+ - **Active** increments (currently working)
17
+ - **Paused** increments (blocked/deprioritized)
18
+ - **Completed** increments (done)
19
+ - **Abandoned** increments (obsolete)
20
+ - **Warnings** for stale increments (paused >7 days, active >30 days)
21
+ - **Suggestions** for next actions
22
+
23
+ ---
24
+
25
+ ## Output Format
26
+
27
+ ### Default (All Increments)
28
+
29
+ ```bash
30
+ /status
31
+
32
+ πŸ“Š Increment Status Overview
33
+
34
+ πŸ”₯ Active (2):
35
+ 🚨 0005-payment-hotfix [hotfix]
36
+ Progress: 90% (18/20 tasks)
37
+ Age: 6 hours
38
+ Last: Fixed Stripe webhook signature
39
+
40
+ πŸ”§ 0006-i18n [feature]
41
+ Progress: 50% (10/20 tasks)
42
+ Age: 2 days
43
+ Last: Created translation pipeline
44
+
45
+ ⏸️ Paused (1):
46
+ πŸ”„ 0007-stripe-integration [feature]
47
+ Progress: 30% (6/20 tasks)
48
+ Paused: 3 days ago
49
+ Reason: Waiting for Stripe API keys
50
+ ⚠️ Review or abandon?
51
+
52
+ βœ… Completed (4):
53
+ 0001-core-framework
54
+ 0002-core-enhancements
55
+ 0003-intelligent-model-selection
56
+ 0004-plugin-architecture
57
+
58
+ πŸ“Š Summary:
59
+ - Active: 2 increments (1 hotfix, 1 feature)
60
+ - Paused: 1 increment
61
+ - Completed: 4 increments
62
+ - Context switching: 20-40% cost (2 active)
63
+
64
+ πŸ“‹ Type Limits (v0.7.0+):
65
+ βœ… hotfix: 1/unlimited active
66
+ βœ… feature: 1/2 active
67
+ βœ… refactor: 0/1 active
68
+ βœ… bug: 0/unlimited active
69
+ βœ… change-request: 0/2 active
70
+ βœ… experiment: 0/unlimited active
71
+
72
+ πŸ’‘ Suggestions:
73
+ - Complete 0005 first (90% done, almost there!)
74
+ - Resume or abandon 0007 (stale)
75
+
76
+ Commands:
77
+ /do # Continue current work
78
+ /resume 0007 # Resume paused increment
79
+ /abandon 0007 # Abandon if obsolete
80
+ ```
81
+
82
+ ### Filtered Views
83
+
84
+ ```bash
85
+ # Active only
86
+ /status --active
87
+
88
+ πŸ”₯ Active Increments (2):
89
+ 🚨 0005-payment-hotfix [hotfix] (90% done, 6 hours)
90
+ πŸ”§ 0006-i18n [feature] (50% done, 2 days)
91
+
92
+ # Paused only
93
+ /status --paused
94
+
95
+ ⏸️ Paused Increments (1):
96
+ πŸ”„ 0007-stripe [feature] (paused 3 days)
97
+ Reason: Waiting for API keys
98
+
99
+ # Stale only (paused >7 days OR active >30 days)
100
+ /status --stale
101
+
102
+ ⚠️ Stale Increments (2):
103
+ πŸ”„ 0008-experiment [experiment] (paused 10 days)
104
+ 🚨 AUTO-ABANDON WARNING (14 days inactive)
105
+
106
+ πŸ”§ 0009-big-refactor [refactor] (active 35 days)
107
+ ⚠️ Long-running - consider breaking into smaller increments
108
+ ```
109
+
110
+ ---
111
+
112
+ ## Implementation
113
+
114
+ Uses MetadataManager and Limits to query and display:
115
+
116
+ ```typescript
117
+ import { MetadataManager, IncrementStatus } from '../src/core/increment/metadata-manager';
118
+ import { checkAllLimits, getLimitsSummary } from '../src/core/increment/limits';
119
+
120
+ // Get all increments
121
+ const allIncrements = MetadataManager.getAll();
122
+
123
+ // Group by status
124
+ const active = allIncrements.filter(m => m.status === IncrementStatus.ACTIVE);
125
+ const paused = allIncrements.filter(m => m.status === IncrementStatus.PAUSED);
126
+ const completed = allIncrements.filter(m => m.status === IncrementStatus.COMPLETED);
127
+ const abandoned = allIncrements.filter(m => m.status === IncrementStatus.ABANDONED);
128
+
129
+ // Get extended metadata (with progress%)
130
+ const extended = active.map(m => MetadataManager.getExtended(m.id));
131
+
132
+ // Display rich output
133
+ console.log('πŸ“Š Increment Status Overview\n');
134
+
135
+ // Active
136
+ if (active.length > 0) {
137
+ console.log(`πŸ”₯ Active (${active.length}):`);
138
+ extended.forEach(inc => {
139
+ const icon = inc.type === 'hotfix' ? '🚨' : 'πŸ”§';
140
+ console.log(` ${icon} ${inc.id} [${inc.type}]`);
141
+ console.log(` Progress: ${inc.progress}% (${inc.completedTasks}/${inc.totalTasks} tasks)`);
142
+ console.log(` Age: ${formatAge(inc.ageInDays)}`);
143
+ });
144
+ }
145
+
146
+ // ... similar for paused, completed, abandoned
147
+
148
+ // Summary with type limits (v0.7.0+)
149
+ console.log('\nπŸ“Š Summary:');
150
+ console.log(` - Active: ${active.length} increments`);
151
+ console.log(` - Paused: ${paused.length} increments`);
152
+ console.log(` - Completed: ${completed.length} increments`);
153
+
154
+ // Type limits breakdown
155
+ console.log('\nπŸ“‹ Type Limits (v0.7.0+):');
156
+ const limitsCheck = checkAllLimits();
157
+ for (const [type, check] of Object.entries(limitsCheck)) {
158
+ const icon = check.exceeded ? '⚠️ ' : 'βœ…';
159
+ const limitStr = check.limit === null ? 'unlimited' : check.limit.toString();
160
+ console.log(` ${icon} ${type}: ${check.current}/${limitStr} active`);
161
+ }
162
+
163
+ // Context switching warning if multiple active
164
+ if (active.length > 1) {
165
+ const cost = active.length === 2 ? '20-30%' : '40%';
166
+ console.log(`\n⚠️ Context switching: ${cost} productivity cost`);
167
+ }
168
+ ```
169
+
170
+ ---
171
+
172
+ ## Progress Calculation
173
+
174
+ Progress percentage calculated from tasks.md:
175
+
176
+ ```typescript
177
+ // Count completed tasks: [x] or [X]
178
+ const completedMatches = tasksContent.match(/\[x\]/gi);
179
+ const completedTasks = completedMatches ? completedMatches.length : 0;
180
+
181
+ // Count total tasks: [ ] or [x]
182
+ const totalMatches = tasksContent.match(/\[ \]|\[x\]/gi);
183
+ const totalTasks = totalMatches ? totalMatches.length : 0;
184
+
185
+ // Calculate percentage
186
+ const progress = Math.round((completedTasks / totalTasks) * 100);
187
+ ```
188
+
189
+ ---
190
+
191
+ ## Warnings and Suggestions
192
+
193
+ ### Stale Paused Increments
194
+
195
+ Paused >7 days β†’ warning:
196
+
197
+ ```
198
+ ⏸️ Paused (1):
199
+ πŸ”„ 0007-stripe [feature]
200
+ Paused: 10 days ago
201
+ ⚠️ STALE! Review or abandon?
202
+
203
+ πŸ’‘ Actions:
204
+ /resume 0007 # If unblocked
205
+ /abandon 0007 # If no longer needed
206
+ ```
207
+
208
+ ### Long-Running Active Increments
209
+
210
+ Active >30 days β†’ warning:
211
+
212
+ ```
213
+ πŸ”₯ Active (1):
214
+ πŸ”§ 0009-big-refactor [refactor]
215
+ Progress: 45% (23/50 tasks)
216
+ Age: 35 days
217
+ ⚠️ Long-running! Consider breaking into smaller increments
218
+
219
+ πŸ’‘ Suggestion: Large increments increase risk and reduce velocity
220
+ ```
221
+
222
+ ### Context Switching Cost
223
+
224
+ Multiple active features β†’ warning:
225
+
226
+ ```
227
+ πŸ“Š Summary:
228
+ - Active: 3 features (0010, 0011, 0012)
229
+ - Context switching: 40-60% productivity cost
230
+
231
+ ⚠️ High context switching detected!
232
+ Research shows: 3+ concurrent tasks = 40% productivity loss
233
+ Suggestion: Complete or pause one before continuing
234
+ ```
235
+
236
+ ### Auto-Abandon Warning (Experiments)
237
+
238
+ Experiments inactive >14 days β†’ warning:
239
+
240
+ ```
241
+ πŸ§ͺ Experiments (1):
242
+ πŸ”¬ 0010-graphql-experiment [experiment]
243
+ Last activity: 15 days ago
244
+ 🚨 AUTO-ABANDON WARNING
245
+
246
+ πŸ’‘ Experiments auto-abandon after 14 days of inactivity
247
+ To prevent: Update via /do or /touch 0010
248
+ ```
249
+
250
+ ---
251
+
252
+ ## Filters
253
+
254
+ ### --active
255
+
256
+ Show only active increments
257
+
258
+ ```bash
259
+ /status --active
260
+
261
+ πŸ”₯ Active (2):
262
+ 🚨 0005-hotfix [hotfix] (90% done)
263
+ πŸ”§ 0006-i18n [feature] (50% done)
264
+ ```
265
+
266
+ ### --paused
267
+
268
+ Show only paused increments
269
+
270
+ ```bash
271
+ /status --paused
272
+
273
+ ⏸️ Paused (2):
274
+ πŸ”„ 0007-stripe [feature] (paused 3 days)
275
+ Reason: Waiting for API keys
276
+
277
+ πŸ”„ 0008-refactor [refactor] (paused 10 days)
278
+ Reason: Deprioritized
279
+ ⚠️ STALE
280
+ ```
281
+
282
+ ### --completed
283
+
284
+ Show only completed increments
285
+
286
+ ```bash
287
+ /status --completed
288
+
289
+ βœ… Completed (5):
290
+ 0001-core-framework (completed 30 days ago)
291
+ 0002-core-enhancements (completed 25 days ago)
292
+ 0003-model-selection (completed 20 days ago)
293
+ 0004-plugin-architecture (completed 15 days ago)
294
+ 0005-cross-platform (completed 10 days ago)
295
+ ```
296
+
297
+ ### --abandoned
298
+
299
+ Show only abandoned increments
300
+
301
+ ```bash
302
+ /status --abandoned
303
+
304
+ ❌ Abandoned (3):
305
+ 0008-old-approach (Requirements changed)
306
+ 0009-failed-experiment (Experiment failed)
307
+ 0010-superseded (Replaced by 0011)
308
+
309
+ πŸ“Š Stats:
310
+ - Abandonment rate: 30% (3/10 total)
311
+ - Common reasons: Requirements changed (2), Experiment failed (1)
312
+
313
+ πŸ’‘ Periodically review _abandoned/ for learnings
314
+ ```
315
+
316
+ ### --stale
317
+
318
+ Show only stale increments (paused >7 days OR active >30 days)
319
+
320
+ ```bash
321
+ /status --stale
322
+
323
+ ⚠️ Stale Increments (3):
324
+ πŸ”„ 0007-stripe [feature] (paused 10 days)
325
+ πŸ”„ 0008-experiment [experiment] (paused 15 days)
326
+ 🚨 AUTO-ABANDON WARNING
327
+ πŸ”§ 0009-refactor [refactor] (active 35 days)
328
+ ⚠️ Long-running
329
+
330
+ πŸ’‘ Review stale increments weekly
331
+ Paused >7 days: Resume or abandon
332
+ Active >30 days: Consider breaking into smaller increments
333
+ ```
334
+
335
+ ---
336
+
337
+ ## Related Commands
338
+
339
+ - `/do` - Continue work on active increment
340
+ - `/progress` - Detailed progress for current increment
341
+ - `/pause <id>` - Pause active increment
342
+ - `/resume <id>` - Resume paused increment
343
+ - `/abandon <id>` - Abandon increment (move to _abandoned/)
344
+
345
+ ---
346
+
347
+ ## Best Practices
348
+
349
+ βœ… **Check status regularly** - Daily or before starting work
350
+
351
+ βœ… **Address warnings promptly** - Don't let stale increments pile up
352
+
353
+ βœ… **Complete before starting new** - Minimize context switching
354
+
355
+ βœ… **Review abandoned for learnings** - Understand patterns
356
+
357
+ ❌ **Don't ignore stale warnings** - They indicate blocked or forgotten work
358
+
359
+ ❌ **Don't accumulate paused increments** - Resume or abandon
360
+
361
+ ---
362
+
363
+ ## Statistics and Analytics
364
+
365
+ Future enhancement (v0.8.0+):
366
+
367
+ ```bash
368
+ /status --analytics
369
+
370
+ πŸ“Š Increment Analytics (Last 90 Days):
371
+
372
+ Velocity:
373
+ - Completed: 8 increments
374
+ - Avg cycle time: 4.2 days
375
+ - Completion rate: 80%
376
+
377
+ Quality:
378
+ - Avg coverage: 85%
379
+ - Avg tasks/increment: 25
380
+
381
+ Patterns:
382
+ - Most common type: feature (70%)
383
+ - Context switching: 1.5 active avg
384
+ - Stale rate: 15% (paused >7 days)
385
+
386
+ Recommendations:
387
+ - βœ… Good velocity (8 increments/90 days)
388
+ - ⚠️ High abandonment (20%) - review scoping
389
+ - βœ… Low context switching (1.5 avg)
390
+ ```
391
+
392
+ ---
393
+
394
+ **Command**: `/specweave:status` (or `/status`)
395
+ **Plugin**: specweave (core)
396
+ **Version**: v0.7.0+
397
+ **Part of**: Increment 0007 - Smart Status Management