@tuan_son.dinh/gsd 2.6.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 (227) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +453 -0
  3. package/dist/app-paths.d.ts +4 -0
  4. package/dist/app-paths.js +6 -0
  5. package/dist/cli.d.ts +1 -0
  6. package/dist/cli.js +269 -0
  7. package/dist/loader.d.ts +2 -0
  8. package/dist/loader.js +70 -0
  9. package/dist/logo.d.ts +16 -0
  10. package/dist/logo.js +25 -0
  11. package/dist/onboarding.d.ts +43 -0
  12. package/dist/onboarding.js +418 -0
  13. package/dist/pi-migration.d.ts +14 -0
  14. package/dist/pi-migration.js +57 -0
  15. package/dist/resource-loader.d.ts +22 -0
  16. package/dist/resource-loader.js +60 -0
  17. package/dist/tool-bootstrap.d.ts +4 -0
  18. package/dist/tool-bootstrap.js +74 -0
  19. package/dist/wizard.d.ts +7 -0
  20. package/dist/wizard.js +25 -0
  21. package/package.json +60 -0
  22. package/patches/@mariozechner+pi-coding-agent+0.57.1.patch +108 -0
  23. package/patches/@mariozechner+pi-tui+0.57.1.patch +47 -0
  24. package/pkg/dist/modes/interactive/theme/dark.json +85 -0
  25. package/pkg/dist/modes/interactive/theme/light.json +84 -0
  26. package/pkg/dist/modes/interactive/theme/theme-schema.json +335 -0
  27. package/pkg/dist/modes/interactive/theme/theme.d.ts +78 -0
  28. package/pkg/dist/modes/interactive/theme/theme.d.ts.map +1 -0
  29. package/pkg/dist/modes/interactive/theme/theme.js +949 -0
  30. package/pkg/dist/modes/interactive/theme/theme.js.map +1 -0
  31. package/pkg/package.json +8 -0
  32. package/scripts/postinstall.js +127 -0
  33. package/src/resources/GSD-WORKFLOW.md +661 -0
  34. package/src/resources/agents/researcher.md +29 -0
  35. package/src/resources/agents/scout.md +56 -0
  36. package/src/resources/agents/worker.md +31 -0
  37. package/src/resources/extensions/ask-user-questions.ts +249 -0
  38. package/src/resources/extensions/bg-shell/index.ts +2808 -0
  39. package/src/resources/extensions/browser-tools/BROWSER-TOOLS-V2-PROPOSAL.md +1277 -0
  40. package/src/resources/extensions/browser-tools/core.js +1057 -0
  41. package/src/resources/extensions/browser-tools/index.ts +4989 -0
  42. package/src/resources/extensions/browser-tools/package.json +20 -0
  43. package/src/resources/extensions/context7/index.ts +428 -0
  44. package/src/resources/extensions/context7/package.json +11 -0
  45. package/src/resources/extensions/get-secrets-from-user.ts +352 -0
  46. package/src/resources/extensions/google-search/index.ts +323 -0
  47. package/src/resources/extensions/google-search/package.json +9 -0
  48. package/src/resources/extensions/gsd/activity-log.ts +69 -0
  49. package/src/resources/extensions/gsd/auto.ts +2744 -0
  50. package/src/resources/extensions/gsd/commands.ts +313 -0
  51. package/src/resources/extensions/gsd/crash-recovery.ts +85 -0
  52. package/src/resources/extensions/gsd/dashboard-overlay.ts +521 -0
  53. package/src/resources/extensions/gsd/docs/preferences-reference.md +176 -0
  54. package/src/resources/extensions/gsd/doctor.ts +690 -0
  55. package/src/resources/extensions/gsd/files.ts +732 -0
  56. package/src/resources/extensions/gsd/git-service.ts +597 -0
  57. package/src/resources/extensions/gsd/gitignore.ts +168 -0
  58. package/src/resources/extensions/gsd/guided-flow.ts +817 -0
  59. package/src/resources/extensions/gsd/index.ts +558 -0
  60. package/src/resources/extensions/gsd/metrics.ts +374 -0
  61. package/src/resources/extensions/gsd/migrate/command.ts +218 -0
  62. package/src/resources/extensions/gsd/migrate/index.ts +42 -0
  63. package/src/resources/extensions/gsd/migrate/parser.ts +323 -0
  64. package/src/resources/extensions/gsd/migrate/parsers.ts +624 -0
  65. package/src/resources/extensions/gsd/migrate/preview.ts +48 -0
  66. package/src/resources/extensions/gsd/migrate/transformer.ts +346 -0
  67. package/src/resources/extensions/gsd/migrate/types.ts +370 -0
  68. package/src/resources/extensions/gsd/migrate/validator.ts +55 -0
  69. package/src/resources/extensions/gsd/migrate/writer.ts +539 -0
  70. package/src/resources/extensions/gsd/observability-validator.ts +408 -0
  71. package/src/resources/extensions/gsd/package.json +11 -0
  72. package/src/resources/extensions/gsd/paths.ts +308 -0
  73. package/src/resources/extensions/gsd/preferences.ts +757 -0
  74. package/src/resources/extensions/gsd/prompt-loader.ts +50 -0
  75. package/src/resources/extensions/gsd/prompts/complete-milestone.md +25 -0
  76. package/src/resources/extensions/gsd/prompts/complete-slice.md +29 -0
  77. package/src/resources/extensions/gsd/prompts/discuss.md +189 -0
  78. package/src/resources/extensions/gsd/prompts/doctor-heal.md +29 -0
  79. package/src/resources/extensions/gsd/prompts/execute-task.md +61 -0
  80. package/src/resources/extensions/gsd/prompts/guided-complete-slice.md +1 -0
  81. package/src/resources/extensions/gsd/prompts/guided-discuss-milestone.md +3 -0
  82. package/src/resources/extensions/gsd/prompts/guided-discuss-slice.md +59 -0
  83. package/src/resources/extensions/gsd/prompts/guided-execute-task.md +1 -0
  84. package/src/resources/extensions/gsd/prompts/guided-plan-milestone.md +23 -0
  85. package/src/resources/extensions/gsd/prompts/guided-plan-slice.md +1 -0
  86. package/src/resources/extensions/gsd/prompts/guided-research-slice.md +11 -0
  87. package/src/resources/extensions/gsd/prompts/guided-resume-task.md +1 -0
  88. package/src/resources/extensions/gsd/prompts/plan-milestone.md +65 -0
  89. package/src/resources/extensions/gsd/prompts/plan-slice.md +51 -0
  90. package/src/resources/extensions/gsd/prompts/queue.md +85 -0
  91. package/src/resources/extensions/gsd/prompts/reassess-roadmap.md +48 -0
  92. package/src/resources/extensions/gsd/prompts/replan-slice.md +39 -0
  93. package/src/resources/extensions/gsd/prompts/research-milestone.md +37 -0
  94. package/src/resources/extensions/gsd/prompts/research-slice.md +28 -0
  95. package/src/resources/extensions/gsd/prompts/review-migration.md +66 -0
  96. package/src/resources/extensions/gsd/prompts/run-uat.md +109 -0
  97. package/src/resources/extensions/gsd/prompts/system.md +187 -0
  98. package/src/resources/extensions/gsd/prompts/worktree-merge.md +123 -0
  99. package/src/resources/extensions/gsd/session-forensics.ts +487 -0
  100. package/src/resources/extensions/gsd/skill-discovery.ts +137 -0
  101. package/src/resources/extensions/gsd/state.ts +460 -0
  102. package/src/resources/extensions/gsd/templates/context.md +76 -0
  103. package/src/resources/extensions/gsd/templates/decisions.md +8 -0
  104. package/src/resources/extensions/gsd/templates/milestone-summary.md +73 -0
  105. package/src/resources/extensions/gsd/templates/plan.md +131 -0
  106. package/src/resources/extensions/gsd/templates/preferences.md +24 -0
  107. package/src/resources/extensions/gsd/templates/project.md +31 -0
  108. package/src/resources/extensions/gsd/templates/reassessment.md +28 -0
  109. package/src/resources/extensions/gsd/templates/requirements.md +81 -0
  110. package/src/resources/extensions/gsd/templates/research.md +46 -0
  111. package/src/resources/extensions/gsd/templates/roadmap.md +118 -0
  112. package/src/resources/extensions/gsd/templates/slice-context.md +58 -0
  113. package/src/resources/extensions/gsd/templates/slice-summary.md +99 -0
  114. package/src/resources/extensions/gsd/templates/state.md +19 -0
  115. package/src/resources/extensions/gsd/templates/task-plan.md +52 -0
  116. package/src/resources/extensions/gsd/templates/task-summary.md +57 -0
  117. package/src/resources/extensions/gsd/templates/uat.md +54 -0
  118. package/src/resources/extensions/gsd/tests/activity-log-prune.test.ts +327 -0
  119. package/src/resources/extensions/gsd/tests/auto-preflight.test.ts +56 -0
  120. package/src/resources/extensions/gsd/tests/auto-supervisor.test.mjs +53 -0
  121. package/src/resources/extensions/gsd/tests/complete-milestone.test.ts +225 -0
  122. package/src/resources/extensions/gsd/tests/cost-projection.test.ts +160 -0
  123. package/src/resources/extensions/gsd/tests/derive-state-deps.test.ts +341 -0
  124. package/src/resources/extensions/gsd/tests/derive-state.test.ts +689 -0
  125. package/src/resources/extensions/gsd/tests/discuss-prompt.test.ts +38 -0
  126. package/src/resources/extensions/gsd/tests/doctor.test.ts +505 -0
  127. package/src/resources/extensions/gsd/tests/git-service.test.ts +1313 -0
  128. package/src/resources/extensions/gsd/tests/idle-recovery.test.ts +308 -0
  129. package/src/resources/extensions/gsd/tests/metrics-io.test.ts +201 -0
  130. package/src/resources/extensions/gsd/tests/metrics.test.ts +217 -0
  131. package/src/resources/extensions/gsd/tests/migrate-command.test.ts +390 -0
  132. package/src/resources/extensions/gsd/tests/migrate-parser.test.ts +786 -0
  133. package/src/resources/extensions/gsd/tests/migrate-transformer.test.ts +657 -0
  134. package/src/resources/extensions/gsd/tests/migrate-validator-parsers.test.ts +443 -0
  135. package/src/resources/extensions/gsd/tests/migrate-writer-integration.test.ts +318 -0
  136. package/src/resources/extensions/gsd/tests/migrate-writer.test.ts +420 -0
  137. package/src/resources/extensions/gsd/tests/must-have-parser.test.ts +309 -0
  138. package/src/resources/extensions/gsd/tests/parsers.test.ts +1351 -0
  139. package/src/resources/extensions/gsd/tests/plan-milestone.test.ts +163 -0
  140. package/src/resources/extensions/gsd/tests/plan-quality-validator.test.ts +386 -0
  141. package/src/resources/extensions/gsd/tests/reassess-prompt.test.ts +171 -0
  142. package/src/resources/extensions/gsd/tests/remote-questions.test.ts +155 -0
  143. package/src/resources/extensions/gsd/tests/remote-status.test.ts +99 -0
  144. package/src/resources/extensions/gsd/tests/replan-slice.test.ts +521 -0
  145. package/src/resources/extensions/gsd/tests/requirements.test.ts +125 -0
  146. package/src/resources/extensions/gsd/tests/resolve-ts-hooks.mjs +34 -0
  147. package/src/resources/extensions/gsd/tests/resolve-ts.mjs +11 -0
  148. package/src/resources/extensions/gsd/tests/run-uat.test.ts +348 -0
  149. package/src/resources/extensions/gsd/tests/unit-runtime.test.ts +247 -0
  150. package/src/resources/extensions/gsd/tests/workflow-config.test.mjs +53 -0
  151. package/src/resources/extensions/gsd/tests/workspace-index.test.ts +94 -0
  152. package/src/resources/extensions/gsd/tests/worktree-integration.test.ts +253 -0
  153. package/src/resources/extensions/gsd/tests/worktree-manager.test.ts +160 -0
  154. package/src/resources/extensions/gsd/tests/worktree.test.ts +264 -0
  155. package/src/resources/extensions/gsd/types.ts +159 -0
  156. package/src/resources/extensions/gsd/unit-runtime.ts +184 -0
  157. package/src/resources/extensions/gsd/workspace-index.ts +203 -0
  158. package/src/resources/extensions/gsd/worktree-command.ts +845 -0
  159. package/src/resources/extensions/gsd/worktree-manager.ts +392 -0
  160. package/src/resources/extensions/gsd/worktree.ts +183 -0
  161. package/src/resources/extensions/mac-tools/index.ts +852 -0
  162. package/src/resources/extensions/mac-tools/swift-cli/Package.swift +22 -0
  163. package/src/resources/extensions/mac-tools/swift-cli/Sources/main.swift +1318 -0
  164. package/src/resources/extensions/mcporter/index.ts +429 -0
  165. package/src/resources/extensions/remote-questions/config.ts +81 -0
  166. package/src/resources/extensions/remote-questions/discord-adapter.ts +128 -0
  167. package/src/resources/extensions/remote-questions/format.ts +163 -0
  168. package/src/resources/extensions/remote-questions/manager.ts +192 -0
  169. package/src/resources/extensions/remote-questions/remote-command.ts +307 -0
  170. package/src/resources/extensions/remote-questions/slack-adapter.ts +92 -0
  171. package/src/resources/extensions/remote-questions/status.ts +31 -0
  172. package/src/resources/extensions/remote-questions/store.ts +77 -0
  173. package/src/resources/extensions/remote-questions/types.ts +75 -0
  174. package/src/resources/extensions/search-the-web/cache.ts +78 -0
  175. package/src/resources/extensions/search-the-web/command-search-provider.ts +95 -0
  176. package/src/resources/extensions/search-the-web/format.ts +258 -0
  177. package/src/resources/extensions/search-the-web/http.ts +238 -0
  178. package/src/resources/extensions/search-the-web/index.ts +65 -0
  179. package/src/resources/extensions/search-the-web/native-search.ts +157 -0
  180. package/src/resources/extensions/search-the-web/provider.ts +118 -0
  181. package/src/resources/extensions/search-the-web/tavily.ts +116 -0
  182. package/src/resources/extensions/search-the-web/tool-fetch-page.ts +519 -0
  183. package/src/resources/extensions/search-the-web/tool-llm-context.ts +561 -0
  184. package/src/resources/extensions/search-the-web/tool-search.ts +576 -0
  185. package/src/resources/extensions/search-the-web/url-utils.ts +91 -0
  186. package/src/resources/extensions/shared/confirm-ui.ts +126 -0
  187. package/src/resources/extensions/shared/interview-ui.ts +613 -0
  188. package/src/resources/extensions/shared/next-action-ui.ts +197 -0
  189. package/src/resources/extensions/shared/progress-widget.ts +282 -0
  190. package/src/resources/extensions/shared/terminal.ts +23 -0
  191. package/src/resources/extensions/shared/thinking-widget.ts +107 -0
  192. package/src/resources/extensions/shared/ui.ts +400 -0
  193. package/src/resources/extensions/shared/wizard-ui.ts +551 -0
  194. package/src/resources/extensions/slash-commands/audit.ts +88 -0
  195. package/src/resources/extensions/slash-commands/clear.ts +10 -0
  196. package/src/resources/extensions/slash-commands/create-extension.ts +297 -0
  197. package/src/resources/extensions/slash-commands/create-slash-command.ts +234 -0
  198. package/src/resources/extensions/slash-commands/index.ts +12 -0
  199. package/src/resources/extensions/subagent/agents.ts +126 -0
  200. package/src/resources/extensions/subagent/index.ts +1020 -0
  201. package/src/resources/extensions/voice/index.ts +195 -0
  202. package/src/resources/extensions/voice/speech-recognizer.swift +154 -0
  203. package/src/resources/skills/debug-like-expert/SKILL.md +231 -0
  204. package/src/resources/skills/debug-like-expert/references/debugging-mindset.md +253 -0
  205. package/src/resources/skills/debug-like-expert/references/hypothesis-testing.md +373 -0
  206. package/src/resources/skills/debug-like-expert/references/investigation-techniques.md +337 -0
  207. package/src/resources/skills/debug-like-expert/references/verification-patterns.md +425 -0
  208. package/src/resources/skills/debug-like-expert/references/when-to-research.md +361 -0
  209. package/src/resources/skills/frontend-design/SKILL.md +45 -0
  210. package/src/resources/skills/swiftui/SKILL.md +208 -0
  211. package/src/resources/skills/swiftui/references/animations.md +921 -0
  212. package/src/resources/skills/swiftui/references/architecture.md +1561 -0
  213. package/src/resources/skills/swiftui/references/layout-system.md +1186 -0
  214. package/src/resources/skills/swiftui/references/navigation.md +1492 -0
  215. package/src/resources/skills/swiftui/references/networking-async.md +214 -0
  216. package/src/resources/skills/swiftui/references/performance.md +1706 -0
  217. package/src/resources/skills/swiftui/references/platform-integration.md +204 -0
  218. package/src/resources/skills/swiftui/references/state-management.md +1443 -0
  219. package/src/resources/skills/swiftui/references/swiftdata.md +297 -0
  220. package/src/resources/skills/swiftui/references/testing-debugging.md +247 -0
  221. package/src/resources/skills/swiftui/references/uikit-appkit-interop.md +218 -0
  222. package/src/resources/skills/swiftui/workflows/add-feature.md +191 -0
  223. package/src/resources/skills/swiftui/workflows/build-new-app.md +311 -0
  224. package/src/resources/skills/swiftui/workflows/debug-swiftui.md +192 -0
  225. package/src/resources/skills/swiftui/workflows/optimize-performance.md +197 -0
  226. package/src/resources/skills/swiftui/workflows/ship-app.md +203 -0
  227. package/src/resources/skills/swiftui/workflows/write-tests.md +235 -0
@@ -0,0 +1,131 @@
1
+ # {{sliceId}}: {{sliceTitle}}
2
+
3
+ **Goal:** {{goal}}
4
+ **Demo:** {{demo}}
5
+
6
+ ## Must-Haves
7
+
8
+ - {{mustHave}}
9
+ - {{mustHave}}
10
+
11
+ ## Proof Level
12
+
13
+ <!-- Omit this section entirely for simple slices where the answer is trivially obvious. -->
14
+
15
+ - This slice proves: {{contract | integration | operational | final-assembly}}
16
+ - Real runtime required: {{yes/no}}
17
+ - Human/UAT required: {{yes/no}}
18
+
19
+ ## Verification
20
+
21
+ <!-- Define what "done" looks like BEFORE detailing tasks.
22
+ This section is the slice's objective stopping condition — execution isn't done
23
+ until everything here passes.
24
+
25
+ For non-trivial projects:
26
+ - Write actual test files into the codebase during the first task
27
+ - Tests should assert on the slice's demo outcome and boundary contracts
28
+ - Name the test files here so execution has an unambiguous target
29
+
30
+ For simple projects or scripts:
31
+ - Executable verification commands (bash assertions, curl checks, etc.) are sufficient
32
+
33
+ If the project has no test framework and the work is non-trivial,
34
+ the first task should set one up. A test runner costs 2 minutes
35
+ and pays for itself immediately.
36
+
37
+ For non-trivial backend, integration, async, stateful, or UI work:
38
+ - Include at least one verification check for an observability or failure-path signal
39
+ - Verify not just that the feature works, but that a future agent can inspect its state when it fails -->
40
+
41
+ - {{testFileOrCommand — e.g. `npm test -- --grep "auth flow"` or `bash scripts/verify-s01.sh`}}
42
+ - {{testFileOrCommand}}
43
+
44
+ ## Observability / Diagnostics
45
+
46
+ <!-- Include this section for non-trivial backend, integration, async, stateful, or UI slices.
47
+ OMIT ENTIRELY for simple slices where all fields would be "none".
48
+
49
+ When included, describe how a future agent will inspect current state, detect failure,
50
+ and localize the problem with minimal ambiguity. Keep it concise and high-signal. -->
51
+
52
+ - Runtime signals: {{structured log/event, state transition, metric, or none}}
53
+ - Inspection surfaces: {{status endpoint, CLI command, script, UI state, DB table, or none}}
54
+ - Failure visibility: {{last error, retry count, phase, timestamp, correlation id, or none}}
55
+ - Redaction constraints: {{secret/PII boundary or none}}
56
+
57
+ ## Integration Closure
58
+
59
+ <!-- Omit this section entirely for simple slices with no meaningful integration concerns. -->
60
+
61
+ - Upstream surfaces consumed: {{specific files / modules / contracts}}
62
+ - New wiring introduced in this slice: {{entrypoint / composition / runtime hookup, or none}}
63
+ - What remains before the milestone is truly usable end-to-end: {{list or "nothing"}}
64
+
65
+ ## Tasks
66
+
67
+ <!--
68
+ If every task below is completed exactly as written, the Goal and Demo above
69
+ should be true at the stated proof level. Tasks should close the loop on the
70
+ slice, not merely prepare for later work unless the Demo truthfully says the
71
+ slice only proves fixture/contract-level behavior.
72
+
73
+ Write each task as an executable increment, not a vague intention.
74
+
75
+ Prefer action-oriented titles:
76
+ - "Wire real auth middleware into dashboard routes"
77
+ - "Persist job status and expose failure diagnostics"
78
+ - "Add browser test covering empty-state recovery"
79
+
80
+ Avoid vague titles:
81
+ - "Set up auth"
82
+ - "Handle errors"
83
+ - "Improve UI"
84
+
85
+ Each task should usually include:
86
+ - Why: why this task exists / what part of the slice it closes
87
+ - Files: the main files likely touched
88
+ - Do: concrete implementation steps and important constraints
89
+ - Verify: the command, test, or runtime check that proves it worked
90
+ - Done when: a measurable acceptance condition
91
+
92
+ Keep the checkbox line format exactly:
93
+ - [ ] **T01: Title** `est:30m`
94
+ -->
95
+
96
+ - [ ] **T01: {{taskTitle}}** `est:{{estimate}}`
97
+ - Why: {{whyThisTaskExists}}
98
+ - Files: `{{filePath}}`, `{{filePath}}`
99
+ - Do: {{specificImplementationStepsAndConstraints}}
100
+ - Verify: {{testCommandOrRuntimeCheck}}
101
+ - Done when: {{measurableAcceptanceCondition}}
102
+ - [ ] **T02: {{taskTitle}}** `est:{{estimate}}`
103
+ - Why: {{whyThisTaskExists}}
104
+ - Files: `{{filePath}}`, `{{filePath}}`
105
+ - Do: {{specificImplementationStepsAndConstraints}}
106
+ - Verify: {{testCommandOrRuntimeCheck}}
107
+ - Done when: {{measurableAcceptanceCondition}}
108
+ - [ ] **T03: {{taskTitle}}** `est:{{estimate}}`
109
+ - Why: {{whyThisTaskExists}}
110
+ - Files: `{{filePath}}`, `{{filePath}}`
111
+ - Do: {{specificImplementationStepsAndConstraints}}
112
+ - Verify: {{testCommandOrRuntimeCheck}}
113
+ - Done when: {{measurableAcceptanceCondition}}
114
+
115
+ <!--
116
+ Format rules (parsers depend on this exact structure):
117
+ - Checkbox line: - [ ] **T01: Title** `est:30m`
118
+ - Description: indented text on the next line(s)
119
+ - Mark done: change [ ] to [x]
120
+ - Tasks execute sequentially in order (T01, T02, T03, ...)
121
+ - est: is informational (e.g. 30m, 1h, 2h) and optional
122
+
123
+ Integration closure rule:
124
+ - At least one slice in any multi-boundary milestone should perform real composition/wiring, not just contract hardening
125
+ - For the final assembly slice, verification must exercise the real entrypoint or runtime path
126
+ -->
127
+
128
+ ## Files Likely Touched
129
+
130
+ - `{{filePath}}`
131
+ - `{{filePath}}`
@@ -0,0 +1,24 @@
1
+ ---
2
+ version: 1
3
+ always_use_skills: []
4
+ prefer_skills: []
5
+ avoid_skills: []
6
+ skill_rules: []
7
+ custom_instructions: []
8
+ models: {}
9
+ skill_discovery:
10
+ auto_supervisor: {}
11
+ git:
12
+ auto_push:
13
+ push_branches:
14
+ remote:
15
+ snapshots:
16
+ pre_merge_check:
17
+ commit_type:
18
+ planning_depth:
19
+ workflow: {}
20
+ ---
21
+
22
+ # GSD Skill Preferences
23
+
24
+ See `~/.gsd/agent/extensions/gsd/docs/preferences-reference.md` for full field documentation and examples.
@@ -0,0 +1,31 @@
1
+ # Project
2
+
3
+ ## What This Is
4
+
5
+ {{whatTheProjectDoes — plain language, current state, not aspirational}}
6
+
7
+ ## Core Value
8
+
9
+ <!-- This is the primary value anchor for prioritization and tradeoffs.
10
+ If scope must shrink, this should survive. -->
11
+
12
+ {{theOneThingThatMustWorkEvenIfEverythingElseIsCut}}
13
+
14
+ ## Current State
15
+
16
+ {{whatHasBeenBuiltSoFar — what works, what exists, what's deployed}}
17
+
18
+ ## Architecture / Key Patterns
19
+
20
+ {{howItsStructured — conventions, tech stack, key modules, established patterns}}
21
+
22
+ ## Capability Contract
23
+
24
+ See `.gsd/REQUIREMENTS.md` for the explicit capability contract, requirement status, and coverage mapping.
25
+
26
+ ## Milestone Sequence
27
+
28
+ <!-- Check off milestones as they complete. One-liners should describe intent, not implementation detail. -->
29
+
30
+ - [ ] M001: {{title}} — {{oneLiner}}
31
+ - [ ] M002: {{title}} — {{oneLiner}}
@@ -0,0 +1,28 @@
1
+ ---
2
+ date: {{YYYY-MM-DD}}
3
+ triggering_slice: {{milestoneId/sliceId}}
4
+ verdict: {{no-change | modified}}
5
+ ---
6
+
7
+ # Reassessment: {{triggering_slice}}
8
+
9
+ ## Changes Made
10
+
11
+ <!-- What changed in the roadmap as a result of this reassessment.
12
+ Write "No changes." if verdict is no-change. -->
13
+
14
+ {{placeholder}}
15
+
16
+ ## Requirement Coverage Impact
17
+
18
+ <!-- Which requirements were added, removed, deferred, or reordered.
19
+ Write "None." if no requirements were affected. -->
20
+
21
+ {{placeholder}}
22
+
23
+ ## Decision References
24
+
25
+ <!-- D-numbers from DECISIONS.md that informed or resulted from this reassessment.
26
+ Write "None." if no recorded decisions apply. -->
27
+
28
+ {{placeholder}}
@@ -0,0 +1,81 @@
1
+ # Requirements
2
+
3
+ This file is the explicit capability and coverage contract for the project.
4
+
5
+ Use it to track what is actively in scope, what has been validated by completed work, what is intentionally deferred, and what is explicitly out of scope.
6
+
7
+ Guidelines:
8
+ - Keep requirements capability-oriented, not a giant feature wishlist.
9
+ - Requirements should be atomic, testable, and stated in plain language.
10
+ - Every **Active** requirement should be mapped to a slice, deferred, blocked with reason, or moved out of scope.
11
+ - Each requirement should have one accountable primary owner and may have supporting slices.
12
+ - Research may suggest requirements, but research does not silently make them binding.
13
+ - Validation means the requirement was actually proven by completed work and verification, not just discussed.
14
+
15
+ ## Active
16
+
17
+ ### R001 — {{requirementTitle}}
18
+ - Class: {{core-capability | primary-user-loop | launchability | continuity | failure-visibility | integration | quality-attribute | operability | admin/support | compliance/security | differentiator | constraint | anti-feature}}
19
+ - Status: active
20
+ - Description: {{what must be true in plain language}}
21
+ - Why it matters: {{why this matters to actual product usefulness/completeness}}
22
+ - Source: {{user | inferred | research | execution}}
23
+ - Primary owning slice: {{M001/S01 | none yet}}
24
+ - Supporting slices: {{M001/S02, M001/S03 | none}}
25
+ - Validation: {{unmapped | mapped | partial | validated}}
26
+ - Notes: {{constraints / acceptance nuance / why not yet validated}}
27
+
28
+ ## Validated
29
+
30
+ ### R010 — {{requirementTitle}}
31
+ - Class: {{failure-visibility}}
32
+ - Status: validated
33
+ - Description: {{what was proven}}
34
+ - Why it matters: {{why it matters}}
35
+ - Source: {{user | inferred | research | execution}}
36
+ - Primary owning slice: {{M001/S01}}
37
+ - Supporting slices: {{none}}
38
+ - Validation: validated
39
+ - Notes: {{what verification proved this}}
40
+
41
+ ## Deferred
42
+
43
+ ### R020 — {{requirementTitle}}
44
+ - Class: {{admin/support}}
45
+ - Status: deferred
46
+ - Description: {{useful later, not now}}
47
+ - Why it matters: {{why it might matter later}}
48
+ - Source: {{user | inferred | research | execution}}
49
+ - Primary owning slice: {{none}}
50
+ - Supporting slices: {{none}}
51
+ - Validation: unmapped
52
+ - Notes: {{why deferred now}}
53
+
54
+ ## Out of Scope
55
+
56
+ ### R030 — {{requirementTitle}}
57
+ - Class: {{anti-feature | constraint | core-capability}}
58
+ - Status: out-of-scope
59
+ - Description: {{what is explicitly excluded}}
60
+ - Why it matters: {{what scope confusion this prevents}}
61
+ - Source: {{user | inferred | research | execution}}
62
+ - Primary owning slice: {{none}}
63
+ - Supporting slices: {{none}}
64
+ - Validation: n/a
65
+ - Notes: {{why excluded}}
66
+
67
+ ## Traceability
68
+
69
+ | ID | Class | Status | Primary owner | Supporting | Proof |
70
+ |---|---|---|---|---|---|
71
+ | R001 | primary-user-loop | active | M001/S01 | none | mapped |
72
+ | R010 | failure-visibility | validated | M001/S01 | none | validated |
73
+ | R020 | admin/support | deferred | none | none | unmapped |
74
+ | R030 | anti-feature | out-of-scope | none | none | n/a |
75
+
76
+ ## Coverage Summary
77
+
78
+ - Active requirements: {{count}}
79
+ - Mapped to slices: {{count}}
80
+ - Validated: {{count}}
81
+ - Unmapped active requirements: {{count}}
@@ -0,0 +1,46 @@
1
+ # {{scope}} — Research
2
+
3
+ **Date:** {{date}}
4
+
5
+ ## Summary
6
+
7
+ {{summary — 2-3 paragraphs with primary recommendation}}
8
+
9
+ ## Recommendation
10
+
11
+ {{whatApproachToTake_AND_why}}
12
+
13
+ ## Don't Hand-Roll
14
+
15
+ | Problem | Existing Solution | Why Use It |
16
+ |---------|------------------|------------|
17
+ | {{problem}} | {{solution}} | {{why}} |
18
+
19
+ ## Existing Code and Patterns
20
+
21
+ - `{{filePath}}` — {{whatItDoesAndHowToReuseIt}}
22
+ - `{{filePath}}` — {{patternToFollowOrAvoid}}
23
+
24
+ ## Constraints
25
+
26
+ - {{hardConstraintFromCodebaseOrRuntime}}
27
+ - {{constraintFromDependencies}}
28
+
29
+ ## Common Pitfalls
30
+
31
+ - **{{pitfall}}** — {{howToAvoid}}
32
+ - **{{pitfall}}** — {{howToAvoid}}
33
+
34
+ ## Open Risks
35
+
36
+ - {{riskThatCouldSurfaceDuringExecution}}
37
+
38
+ ## Skills Discovered
39
+
40
+ | Technology | Skill | Status |
41
+ |------------|-------|--------|
42
+ | {{technology}} | {{owner/repo@skill}} | {{installed / available / none found}} |
43
+
44
+ ## Sources
45
+
46
+ - {{whatWasLearned}} (source: [{{title}}]({{url}}))
@@ -0,0 +1,118 @@
1
+ # {{milestoneId}}: {{milestoneTitle}}
2
+
3
+ **Vision:** {{vision}}
4
+
5
+ ## Success Criteria
6
+
7
+ <!-- Write success criteria as observable truths, not implementation tasks.
8
+ Prefer user-visible or runtime-visible outcomes that can be re-checked at
9
+ milestone completion.
10
+
11
+ Good:
12
+ - "User can complete the full import flow end-to-end"
13
+ - "The daemon reconnects automatically after restart"
14
+
15
+ Bad:
16
+ - "Add import API and UI"
17
+ - "Refactor reconnect logic" -->
18
+
19
+ - {{criterion}}
20
+ - {{criterion}}
21
+
22
+ ## Key Risks / Unknowns
23
+
24
+ <!-- List the real risks and uncertainties that shape how slices are ordered.
25
+ If the project is straightforward, this section can be short or empty.
26
+ Don't invent risks — only list things that could actually invalidate downstream work. -->
27
+
28
+ - {{risk}} — {{whyItMatters}}
29
+ - {{risk}} — {{whyItMatters}}
30
+
31
+ ## Proof Strategy
32
+
33
+ <!-- For each real risk above, name which slice retires it and what "proven" looks like.
34
+ Proof comes from building the real thing, not from spikes or research.
35
+ Skip this section for straightforward projects with no major unknowns. -->
36
+
37
+ - {{riskOrUnknown}} → retire in {{sliceId}} by proving {{whatWillBeProven}}
38
+ - {{riskOrUnknown}} → retire in {{sliceId}} by proving {{whatWillBeProven}}
39
+
40
+ ## Verification Classes
41
+
42
+ - Contract verification: {{tests / shell verifiers / fixtures / artifact checks}}
43
+ - Integration verification: {{real subsystem interaction that must be exercised, or none}}
44
+ - Operational verification: {{service lifecycle / restart / reconnect / supervision / deploy-install behavior, or none}}
45
+ - UAT / human verification: {{what needs real human judgment, or none}}
46
+
47
+ ## Milestone Definition of Done
48
+
49
+ This milestone is complete only when all are true:
50
+
51
+ - {{all slice deliverables are complete}}
52
+ - {{shared components are actually wired together}}
53
+ - {{the real entrypoint exists and is exercised}}
54
+ - {{success criteria are re-checked against live behavior, not just artifacts}}
55
+ - {{final integrated acceptance scenarios pass}}
56
+
57
+ ## Requirement Coverage
58
+
59
+ - Covers: {{R001, R002}}
60
+ - Partially covers: {{R003 or none}}
61
+ - Leaves for later: {{R004 or none}}
62
+ - Orphan risks: {{none or what is still unmapped}}
63
+
64
+ ## Slices
65
+
66
+ - [ ] **S01: {{sliceTitle}}** `risk:high` `depends:[]`
67
+ > After this: {{whatIsDemoableWhenThisSliceIsDone}}
68
+ - [ ] **S02: {{sliceTitle}}** `risk:medium` `depends:[S01]`
69
+ > After this: {{whatIsDemoableWhenThisSliceIsDone}}
70
+ - [ ] **S03: {{sliceTitle}}** `risk:low` `depends:[S01]`
71
+ > After this: {{whatIsDemoableWhenThisSliceIsDone}}
72
+
73
+ <!--
74
+ Format rules (parsers depend on this exact structure):
75
+ - Checkbox line: - [ ] **S01: Title** `risk:high|medium|low` `depends:[S01,S02]`
76
+ - Demo line: > After this: one sentence showing what's demoable
77
+ - Mark done: change [ ] to [x]
78
+ - Order slices by risk (highest first)
79
+ - Each slice must be a vertical, demoable increment — not a layer
80
+ - If all slices are completed exactly as written, the milestone's promised outcome should actually work at the stated proof level
81
+ - depends:[X,Y] means X and Y must be done before this slice starts
82
+
83
+ Planning quality rules:
84
+ - Every slice must ship real, working, demoable code — no research-only or foundation-only slices
85
+ - Early slices should prove the hardest thing works by building through the uncertain path
86
+ - Each slice should establish a stable surface that downstream slices can depend on
87
+ - Demo lines should describe concrete, verifiable evidence — not vague claims
88
+ - In brownfield projects, ground slices in existing modules and patterns
89
+ - If a slice doesn't produce something testable end-to-end, it's probably a layer — restructure it
90
+ - If the milestone crosses multiple runtime boundaries (for example daemon + API + UI, bot + subprocess + service manager, or extension + RPC + filesystem), include an explicit final integration slice that proves the assembled system works end-to-end in a real environment
91
+ - Contract or fixture proof does not replace final assembly proof when the user-visible outcome depends on live wiring
92
+ - Each "After this" line must be truthful about proof level: if only fixtures or tests prove it, say so; do not imply the user can already perform the live end-to-end behavior unless that has actually been exercised
93
+ -->
94
+
95
+ ## Boundary Map
96
+
97
+ <!-- Be specific. Name concrete outputs: API endpoints, event payloads, shared types/interfaces,
98
+ persisted record shapes, CLI contracts, file formats, or invariants.
99
+ "Produces: auth system" is too vague. "Produces: session middleware that attaches
100
+ authenticated user to request context" is useful.
101
+ Consumes should name what downstream slices assume is already available and stable.
102
+ If the project has a test framework, boundary contracts should ideally be exercised by tests. -->
103
+
104
+ ### S01 → S02
105
+
106
+ Produces:
107
+ - {{concreteOutput — API, type, data shape, interface, or invariant}}
108
+
109
+ Consumes:
110
+ - nothing (first slice)
111
+
112
+ ### S01 → S03
113
+
114
+ Produces:
115
+ - {{concreteOutput — API, type, data shape, interface, or invariant}}
116
+
117
+ Consumes:
118
+ - nothing (first slice)
@@ -0,0 +1,58 @@
1
+ ---
2
+ id: {{sliceId}}
3
+ milestone: {{milestoneId}}
4
+ status: {{draft|ready|in_progress|complete}}
5
+ ---
6
+
7
+ # {{sliceId}}: {{sliceTitle}} — Context
8
+
9
+ <!-- Slice-scoped context. Milestone-only sections (acceptance criteria, completion class,
10
+ milestone sequence) do not belong here — those live in the milestone context. -->
11
+
12
+ ## Goal
13
+
14
+ <!-- One sentence: what this slice delivers when it is done. -->
15
+
16
+ {{sliceGoal}}
17
+
18
+ ## Why this Slice
19
+
20
+ <!-- Why this slice is being done now. What does it unblock, and why does order matter? -->
21
+
22
+ {{whyNowAndWhatItUnblocks}}
23
+
24
+ ## Scope
25
+
26
+ <!-- What is and is not in scope for this slice. Be explicit about non-goals. -->
27
+
28
+ ### In Scope
29
+
30
+ - {{inScopeItem}}
31
+
32
+ ### Out of Scope
33
+
34
+ - {{outOfScopeItem}}
35
+
36
+ ## Constraints
37
+
38
+ <!-- Known constraints: time-boxes, hard dependencies, prior decisions this slice must respect. -->
39
+
40
+ - {{constraint}}
41
+
42
+ ## Integration Points
43
+
44
+ <!-- Artifacts or subsystems this slice consumes and produces. -->
45
+
46
+ ### Consumes
47
+
48
+ - `{{fileOrArtifact}}` — {{howItIsUsed}}
49
+
50
+ ### Produces
51
+
52
+ - `{{fileOrArtifact}}` — {{whatItProvides}}
53
+
54
+ ## Open Questions
55
+
56
+ <!-- Unresolved questions at planning time. Answer them before or during execution. -->
57
+
58
+ - {{question}} — {{currentThinking}}
@@ -0,0 +1,99 @@
1
+ ---
2
+ id: {{sliceId}}
3
+ parent: {{milestoneId}}
4
+ milestone: {{milestoneId}}
5
+ provides:
6
+ - {{whatThisSliceProvides}}
7
+ requires:
8
+ - slice: {{depSliceId}}
9
+ provides: {{whatWasConsumed}}
10
+ affects:
11
+ - {{downstreamSliceId}}
12
+ key_files:
13
+ - {{filePath}}
14
+ key_decisions:
15
+ - {{decision}}
16
+ patterns_established:
17
+ - {{pattern}}
18
+ observability_surfaces:
19
+ - {{status endpoint, structured log, persisted failure state, diagnostic command, or none}}
20
+ drill_down_paths:
21
+ - {{pathToTaskSummary}}
22
+ duration: {{duration}}
23
+ verification_result: passed
24
+ completed_at: {{date}}
25
+ ---
26
+
27
+ # {{sliceId}}: {{sliceTitle}}
28
+
29
+ <!-- One-liner must say what actually shipped, not just that work completed.
30
+ Good: "Structured job status endpoint with persisted failure diagnostics"
31
+ Bad: "Status feature implemented" -->
32
+
33
+ **{{oneLiner}}**
34
+
35
+ ## What Happened
36
+
37
+ {{narrative — compress task summaries into a coherent story}}
38
+
39
+ ## Verification
40
+
41
+ {{whatWasVerifiedAcrossAllTasks — tests, builds, manual checks}}
42
+
43
+ <!-- If the project has no REQUIREMENTS.md, omit all four requirement sections below entirely — do not fill them with "none". These sections only apply when requirements are being actively tracked. -->
44
+ ## Requirements Advanced
45
+
46
+ - {{requirementId}} — {{howThisSliceAdvancedIt}}
47
+
48
+ ## Requirements Validated
49
+
50
+ - {{requirementId}} — {{whatProofNowMakesItValidated}}
51
+
52
+ ## New Requirements Surfaced
53
+
54
+ - {{newRequirementOr_none}}
55
+
56
+ ## Requirements Invalidated or Re-scoped
57
+
58
+ - {{requirementIdOr_none}} — {{what changed}}
59
+
60
+ ## Deviations
61
+
62
+ <!-- Deviations are unplanned changes to the written plan, not ordinary debugging inside the plan's intended scope. -->
63
+
64
+ {{deviationsFromPlan_OR_none}}
65
+
66
+ ## Known Limitations
67
+
68
+ <!-- Known limitations are real gaps, rough edges, or deferred constraints that still exist after this slice shipped. -->
69
+
70
+ {{whatDoesntWorkYet_OR_whatWasDeferredToLaterSlices}}
71
+
72
+ ## Follow-ups
73
+
74
+ <!-- Follow-ups are concrete next actions discovered during execution, not a restatement of known limitations. -->
75
+
76
+ {{workDeferredOrDiscoveredDuringExecution_OR_none}}
77
+
78
+ ## Files Created/Modified
79
+
80
+ - `{{filePath}}` — {{description}}
81
+ - `{{filePath}}` — {{description}}
82
+
83
+ ## Forward Intelligence
84
+
85
+ <!-- Write what you wish you'd known at the start of this slice.
86
+ This section is read by the next slice's planning and research steps.
87
+ Be specific and concrete — this is the most valuable context you can transfer. -->
88
+
89
+ ### What the next slice should know
90
+ - {{insightThatWouldHelpDownstreamWork}}
91
+
92
+ ### What's fragile
93
+ - {{fragileAreaOrThinImplementation}} — {{whyItMatters}}
94
+
95
+ ### Authoritative diagnostics
96
+ - {{whereAFutureAgentShouldLookFirst}} — {{whyThisSignalIsTrustworthy}}
97
+
98
+ ### What assumptions changed
99
+ - {{originalAssumption}} — {{whatActuallyHappened}}
@@ -0,0 +1,19 @@
1
+ # GSD State
2
+
3
+ **Active Milestone:** {{milestoneId}} — {{milestoneTitle}}
4
+ **Active Slice:** {{sliceId}} — {{sliceTitle}}
5
+ **Active Task:** {{taskId}} — {{taskTitle}}
6
+ **Phase:** {{phase}}
7
+ **Slice Branch:** {{activeBranch}}
8
+ **Active Workspace:** {{activeWorkspace}}
9
+ **Next Action:** {{nextAction}}
10
+ **Last Updated:** {{date}}
11
+ **Requirements Status:** {{activeCount}} active · {{validatedCount}} validated · {{deferredCount}} deferred · {{outOfScopeCount}} out of scope
12
+
13
+ ## Recent Decisions
14
+
15
+ - {{decision}}
16
+
17
+ ## Blockers
18
+
19
+ - (none)
@@ -0,0 +1,52 @@
1
+ ---
2
+ # Optional scope estimate — helps the plan quality validator detect over-scoped tasks.
3
+ # Tasks with 10+ estimated steps or 12+ estimated files trigger a warning to consider splitting.
4
+ estimated_steps: {{estimatedSteps}}
5
+ estimated_files: {{estimatedFiles}}
6
+ ---
7
+
8
+ # {{taskId}}: {{taskTitle}}
9
+
10
+ **Slice:** {{sliceId}} — {{sliceTitle}}
11
+ **Milestone:** {{milestoneId}}
12
+
13
+ ## Description
14
+
15
+ {{description}}
16
+
17
+ ## Steps
18
+
19
+ 1. {{step}}
20
+ 2. {{step}}
21
+ 3. {{step}}
22
+
23
+ ## Must-Haves
24
+
25
+ - [ ] {{mustHave}}
26
+ - [ ] {{mustHave}}
27
+
28
+ ## Verification
29
+
30
+ - {{howToVerifyThisTaskIsActuallyDone}}
31
+ - {{commandToRun_OR_behaviorToCheck}}
32
+
33
+ ## Observability Impact
34
+
35
+ <!-- OMIT THIS SECTION ENTIRELY for simple tasks that don't touch runtime boundaries,
36
+ async flows, APIs, background processes, or error paths.
37
+ Include it only when the task meaningfully changes how failures are detected or diagnosed. -->
38
+
39
+ - Signals added/changed: {{structured logs, statuses, errors, metrics}}
40
+ - How a future agent inspects this: {{command, endpoint, file, UI state}}
41
+ - Failure state exposed: {{what becomes visible on failure}}
42
+
43
+ ## Inputs
44
+
45
+ - `{{filePath}}` — {{whatThisTaskNeedsFromPriorWork}}
46
+ - {{priorTaskSummaryInsight}}
47
+
48
+ ## Expected Output
49
+
50
+ <!-- This task should produce a real increment toward making the slice goal/demo true. A full slice plan should not be able to mark every task complete while the claimed slice behavior still does not work at the stated proof level. -->
51
+
52
+ - `{{filePath}}` — {{whatThisTaskShouldProduceOrModify}}