@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.
- package/LICENSE +21 -0
- package/README.md +453 -0
- package/dist/app-paths.d.ts +4 -0
- package/dist/app-paths.js +6 -0
- package/dist/cli.d.ts +1 -0
- package/dist/cli.js +269 -0
- package/dist/loader.d.ts +2 -0
- package/dist/loader.js +70 -0
- package/dist/logo.d.ts +16 -0
- package/dist/logo.js +25 -0
- package/dist/onboarding.d.ts +43 -0
- package/dist/onboarding.js +418 -0
- package/dist/pi-migration.d.ts +14 -0
- package/dist/pi-migration.js +57 -0
- package/dist/resource-loader.d.ts +22 -0
- package/dist/resource-loader.js +60 -0
- package/dist/tool-bootstrap.d.ts +4 -0
- package/dist/tool-bootstrap.js +74 -0
- package/dist/wizard.d.ts +7 -0
- package/dist/wizard.js +25 -0
- package/package.json +60 -0
- package/patches/@mariozechner+pi-coding-agent+0.57.1.patch +108 -0
- package/patches/@mariozechner+pi-tui+0.57.1.patch +47 -0
- package/pkg/dist/modes/interactive/theme/dark.json +85 -0
- package/pkg/dist/modes/interactive/theme/light.json +84 -0
- package/pkg/dist/modes/interactive/theme/theme-schema.json +335 -0
- package/pkg/dist/modes/interactive/theme/theme.d.ts +78 -0
- package/pkg/dist/modes/interactive/theme/theme.d.ts.map +1 -0
- package/pkg/dist/modes/interactive/theme/theme.js +949 -0
- package/pkg/dist/modes/interactive/theme/theme.js.map +1 -0
- package/pkg/package.json +8 -0
- package/scripts/postinstall.js +127 -0
- package/src/resources/GSD-WORKFLOW.md +661 -0
- package/src/resources/agents/researcher.md +29 -0
- package/src/resources/agents/scout.md +56 -0
- package/src/resources/agents/worker.md +31 -0
- package/src/resources/extensions/ask-user-questions.ts +249 -0
- package/src/resources/extensions/bg-shell/index.ts +2808 -0
- package/src/resources/extensions/browser-tools/BROWSER-TOOLS-V2-PROPOSAL.md +1277 -0
- package/src/resources/extensions/browser-tools/core.js +1057 -0
- package/src/resources/extensions/browser-tools/index.ts +4989 -0
- package/src/resources/extensions/browser-tools/package.json +20 -0
- package/src/resources/extensions/context7/index.ts +428 -0
- package/src/resources/extensions/context7/package.json +11 -0
- package/src/resources/extensions/get-secrets-from-user.ts +352 -0
- package/src/resources/extensions/google-search/index.ts +323 -0
- package/src/resources/extensions/google-search/package.json +9 -0
- package/src/resources/extensions/gsd/activity-log.ts +69 -0
- package/src/resources/extensions/gsd/auto.ts +2744 -0
- package/src/resources/extensions/gsd/commands.ts +313 -0
- package/src/resources/extensions/gsd/crash-recovery.ts +85 -0
- package/src/resources/extensions/gsd/dashboard-overlay.ts +521 -0
- package/src/resources/extensions/gsd/docs/preferences-reference.md +176 -0
- package/src/resources/extensions/gsd/doctor.ts +690 -0
- package/src/resources/extensions/gsd/files.ts +732 -0
- package/src/resources/extensions/gsd/git-service.ts +597 -0
- package/src/resources/extensions/gsd/gitignore.ts +168 -0
- package/src/resources/extensions/gsd/guided-flow.ts +817 -0
- package/src/resources/extensions/gsd/index.ts +558 -0
- package/src/resources/extensions/gsd/metrics.ts +374 -0
- package/src/resources/extensions/gsd/migrate/command.ts +218 -0
- package/src/resources/extensions/gsd/migrate/index.ts +42 -0
- package/src/resources/extensions/gsd/migrate/parser.ts +323 -0
- package/src/resources/extensions/gsd/migrate/parsers.ts +624 -0
- package/src/resources/extensions/gsd/migrate/preview.ts +48 -0
- package/src/resources/extensions/gsd/migrate/transformer.ts +346 -0
- package/src/resources/extensions/gsd/migrate/types.ts +370 -0
- package/src/resources/extensions/gsd/migrate/validator.ts +55 -0
- package/src/resources/extensions/gsd/migrate/writer.ts +539 -0
- package/src/resources/extensions/gsd/observability-validator.ts +408 -0
- package/src/resources/extensions/gsd/package.json +11 -0
- package/src/resources/extensions/gsd/paths.ts +308 -0
- package/src/resources/extensions/gsd/preferences.ts +757 -0
- package/src/resources/extensions/gsd/prompt-loader.ts +50 -0
- package/src/resources/extensions/gsd/prompts/complete-milestone.md +25 -0
- package/src/resources/extensions/gsd/prompts/complete-slice.md +29 -0
- package/src/resources/extensions/gsd/prompts/discuss.md +189 -0
- package/src/resources/extensions/gsd/prompts/doctor-heal.md +29 -0
- package/src/resources/extensions/gsd/prompts/execute-task.md +61 -0
- package/src/resources/extensions/gsd/prompts/guided-complete-slice.md +1 -0
- package/src/resources/extensions/gsd/prompts/guided-discuss-milestone.md +3 -0
- package/src/resources/extensions/gsd/prompts/guided-discuss-slice.md +59 -0
- package/src/resources/extensions/gsd/prompts/guided-execute-task.md +1 -0
- package/src/resources/extensions/gsd/prompts/guided-plan-milestone.md +23 -0
- package/src/resources/extensions/gsd/prompts/guided-plan-slice.md +1 -0
- package/src/resources/extensions/gsd/prompts/guided-research-slice.md +11 -0
- package/src/resources/extensions/gsd/prompts/guided-resume-task.md +1 -0
- package/src/resources/extensions/gsd/prompts/plan-milestone.md +65 -0
- package/src/resources/extensions/gsd/prompts/plan-slice.md +51 -0
- package/src/resources/extensions/gsd/prompts/queue.md +85 -0
- package/src/resources/extensions/gsd/prompts/reassess-roadmap.md +48 -0
- package/src/resources/extensions/gsd/prompts/replan-slice.md +39 -0
- package/src/resources/extensions/gsd/prompts/research-milestone.md +37 -0
- package/src/resources/extensions/gsd/prompts/research-slice.md +28 -0
- package/src/resources/extensions/gsd/prompts/review-migration.md +66 -0
- package/src/resources/extensions/gsd/prompts/run-uat.md +109 -0
- package/src/resources/extensions/gsd/prompts/system.md +187 -0
- package/src/resources/extensions/gsd/prompts/worktree-merge.md +123 -0
- package/src/resources/extensions/gsd/session-forensics.ts +487 -0
- package/src/resources/extensions/gsd/skill-discovery.ts +137 -0
- package/src/resources/extensions/gsd/state.ts +460 -0
- package/src/resources/extensions/gsd/templates/context.md +76 -0
- package/src/resources/extensions/gsd/templates/decisions.md +8 -0
- package/src/resources/extensions/gsd/templates/milestone-summary.md +73 -0
- package/src/resources/extensions/gsd/templates/plan.md +131 -0
- package/src/resources/extensions/gsd/templates/preferences.md +24 -0
- package/src/resources/extensions/gsd/templates/project.md +31 -0
- package/src/resources/extensions/gsd/templates/reassessment.md +28 -0
- package/src/resources/extensions/gsd/templates/requirements.md +81 -0
- package/src/resources/extensions/gsd/templates/research.md +46 -0
- package/src/resources/extensions/gsd/templates/roadmap.md +118 -0
- package/src/resources/extensions/gsd/templates/slice-context.md +58 -0
- package/src/resources/extensions/gsd/templates/slice-summary.md +99 -0
- package/src/resources/extensions/gsd/templates/state.md +19 -0
- package/src/resources/extensions/gsd/templates/task-plan.md +52 -0
- package/src/resources/extensions/gsd/templates/task-summary.md +57 -0
- package/src/resources/extensions/gsd/templates/uat.md +54 -0
- package/src/resources/extensions/gsd/tests/activity-log-prune.test.ts +327 -0
- package/src/resources/extensions/gsd/tests/auto-preflight.test.ts +56 -0
- package/src/resources/extensions/gsd/tests/auto-supervisor.test.mjs +53 -0
- package/src/resources/extensions/gsd/tests/complete-milestone.test.ts +225 -0
- package/src/resources/extensions/gsd/tests/cost-projection.test.ts +160 -0
- package/src/resources/extensions/gsd/tests/derive-state-deps.test.ts +341 -0
- package/src/resources/extensions/gsd/tests/derive-state.test.ts +689 -0
- package/src/resources/extensions/gsd/tests/discuss-prompt.test.ts +38 -0
- package/src/resources/extensions/gsd/tests/doctor.test.ts +505 -0
- package/src/resources/extensions/gsd/tests/git-service.test.ts +1313 -0
- package/src/resources/extensions/gsd/tests/idle-recovery.test.ts +308 -0
- package/src/resources/extensions/gsd/tests/metrics-io.test.ts +201 -0
- package/src/resources/extensions/gsd/tests/metrics.test.ts +217 -0
- package/src/resources/extensions/gsd/tests/migrate-command.test.ts +390 -0
- package/src/resources/extensions/gsd/tests/migrate-parser.test.ts +786 -0
- package/src/resources/extensions/gsd/tests/migrate-transformer.test.ts +657 -0
- package/src/resources/extensions/gsd/tests/migrate-validator-parsers.test.ts +443 -0
- package/src/resources/extensions/gsd/tests/migrate-writer-integration.test.ts +318 -0
- package/src/resources/extensions/gsd/tests/migrate-writer.test.ts +420 -0
- package/src/resources/extensions/gsd/tests/must-have-parser.test.ts +309 -0
- package/src/resources/extensions/gsd/tests/parsers.test.ts +1351 -0
- package/src/resources/extensions/gsd/tests/plan-milestone.test.ts +163 -0
- package/src/resources/extensions/gsd/tests/plan-quality-validator.test.ts +386 -0
- package/src/resources/extensions/gsd/tests/reassess-prompt.test.ts +171 -0
- package/src/resources/extensions/gsd/tests/remote-questions.test.ts +155 -0
- package/src/resources/extensions/gsd/tests/remote-status.test.ts +99 -0
- package/src/resources/extensions/gsd/tests/replan-slice.test.ts +521 -0
- package/src/resources/extensions/gsd/tests/requirements.test.ts +125 -0
- package/src/resources/extensions/gsd/tests/resolve-ts-hooks.mjs +34 -0
- package/src/resources/extensions/gsd/tests/resolve-ts.mjs +11 -0
- package/src/resources/extensions/gsd/tests/run-uat.test.ts +348 -0
- package/src/resources/extensions/gsd/tests/unit-runtime.test.ts +247 -0
- package/src/resources/extensions/gsd/tests/workflow-config.test.mjs +53 -0
- package/src/resources/extensions/gsd/tests/workspace-index.test.ts +94 -0
- package/src/resources/extensions/gsd/tests/worktree-integration.test.ts +253 -0
- package/src/resources/extensions/gsd/tests/worktree-manager.test.ts +160 -0
- package/src/resources/extensions/gsd/tests/worktree.test.ts +264 -0
- package/src/resources/extensions/gsd/types.ts +159 -0
- package/src/resources/extensions/gsd/unit-runtime.ts +184 -0
- package/src/resources/extensions/gsd/workspace-index.ts +203 -0
- package/src/resources/extensions/gsd/worktree-command.ts +845 -0
- package/src/resources/extensions/gsd/worktree-manager.ts +392 -0
- package/src/resources/extensions/gsd/worktree.ts +183 -0
- package/src/resources/extensions/mac-tools/index.ts +852 -0
- package/src/resources/extensions/mac-tools/swift-cli/Package.swift +22 -0
- package/src/resources/extensions/mac-tools/swift-cli/Sources/main.swift +1318 -0
- package/src/resources/extensions/mcporter/index.ts +429 -0
- package/src/resources/extensions/remote-questions/config.ts +81 -0
- package/src/resources/extensions/remote-questions/discord-adapter.ts +128 -0
- package/src/resources/extensions/remote-questions/format.ts +163 -0
- package/src/resources/extensions/remote-questions/manager.ts +192 -0
- package/src/resources/extensions/remote-questions/remote-command.ts +307 -0
- package/src/resources/extensions/remote-questions/slack-adapter.ts +92 -0
- package/src/resources/extensions/remote-questions/status.ts +31 -0
- package/src/resources/extensions/remote-questions/store.ts +77 -0
- package/src/resources/extensions/remote-questions/types.ts +75 -0
- package/src/resources/extensions/search-the-web/cache.ts +78 -0
- package/src/resources/extensions/search-the-web/command-search-provider.ts +95 -0
- package/src/resources/extensions/search-the-web/format.ts +258 -0
- package/src/resources/extensions/search-the-web/http.ts +238 -0
- package/src/resources/extensions/search-the-web/index.ts +65 -0
- package/src/resources/extensions/search-the-web/native-search.ts +157 -0
- package/src/resources/extensions/search-the-web/provider.ts +118 -0
- package/src/resources/extensions/search-the-web/tavily.ts +116 -0
- package/src/resources/extensions/search-the-web/tool-fetch-page.ts +519 -0
- package/src/resources/extensions/search-the-web/tool-llm-context.ts +561 -0
- package/src/resources/extensions/search-the-web/tool-search.ts +576 -0
- package/src/resources/extensions/search-the-web/url-utils.ts +91 -0
- package/src/resources/extensions/shared/confirm-ui.ts +126 -0
- package/src/resources/extensions/shared/interview-ui.ts +613 -0
- package/src/resources/extensions/shared/next-action-ui.ts +197 -0
- package/src/resources/extensions/shared/progress-widget.ts +282 -0
- package/src/resources/extensions/shared/terminal.ts +23 -0
- package/src/resources/extensions/shared/thinking-widget.ts +107 -0
- package/src/resources/extensions/shared/ui.ts +400 -0
- package/src/resources/extensions/shared/wizard-ui.ts +551 -0
- package/src/resources/extensions/slash-commands/audit.ts +88 -0
- package/src/resources/extensions/slash-commands/clear.ts +10 -0
- package/src/resources/extensions/slash-commands/create-extension.ts +297 -0
- package/src/resources/extensions/slash-commands/create-slash-command.ts +234 -0
- package/src/resources/extensions/slash-commands/index.ts +12 -0
- package/src/resources/extensions/subagent/agents.ts +126 -0
- package/src/resources/extensions/subagent/index.ts +1020 -0
- package/src/resources/extensions/voice/index.ts +195 -0
- package/src/resources/extensions/voice/speech-recognizer.swift +154 -0
- package/src/resources/skills/debug-like-expert/SKILL.md +231 -0
- package/src/resources/skills/debug-like-expert/references/debugging-mindset.md +253 -0
- package/src/resources/skills/debug-like-expert/references/hypothesis-testing.md +373 -0
- package/src/resources/skills/debug-like-expert/references/investigation-techniques.md +337 -0
- package/src/resources/skills/debug-like-expert/references/verification-patterns.md +425 -0
- package/src/resources/skills/debug-like-expert/references/when-to-research.md +361 -0
- package/src/resources/skills/frontend-design/SKILL.md +45 -0
- package/src/resources/skills/swiftui/SKILL.md +208 -0
- package/src/resources/skills/swiftui/references/animations.md +921 -0
- package/src/resources/skills/swiftui/references/architecture.md +1561 -0
- package/src/resources/skills/swiftui/references/layout-system.md +1186 -0
- package/src/resources/skills/swiftui/references/navigation.md +1492 -0
- package/src/resources/skills/swiftui/references/networking-async.md +214 -0
- package/src/resources/skills/swiftui/references/performance.md +1706 -0
- package/src/resources/skills/swiftui/references/platform-integration.md +204 -0
- package/src/resources/skills/swiftui/references/state-management.md +1443 -0
- package/src/resources/skills/swiftui/references/swiftdata.md +297 -0
- package/src/resources/skills/swiftui/references/testing-debugging.md +247 -0
- package/src/resources/skills/swiftui/references/uikit-appkit-interop.md +218 -0
- package/src/resources/skills/swiftui/workflows/add-feature.md +191 -0
- package/src/resources/skills/swiftui/workflows/build-new-app.md +311 -0
- package/src/resources/skills/swiftui/workflows/debug-swiftui.md +192 -0
- package/src/resources/skills/swiftui/workflows/optimize-performance.md +197 -0
- package/src/resources/skills/swiftui/workflows/ship-app.md +203 -0
- 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}}
|