@ktpartners/dgs-platform 2.6.2

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 (256) hide show
  1. package/LICENSE +38 -0
  2. package/README.md +851 -0
  3. package/agents/dgs-codebase-cross-analyzer.md +183 -0
  4. package/agents/dgs-codebase-mapper.md +782 -0
  5. package/agents/dgs-codebase-synthesizer.md +156 -0
  6. package/agents/dgs-debugger.md +1256 -0
  7. package/agents/dgs-executor.md +550 -0
  8. package/agents/dgs-integration-checker.md +481 -0
  9. package/agents/dgs-nyquist-auditor.md +178 -0
  10. package/agents/dgs-phase-researcher.md +563 -0
  11. package/agents/dgs-phase-verifier.md +450 -0
  12. package/agents/dgs-plan-checker.md +708 -0
  13. package/agents/dgs-planner.md +1324 -0
  14. package/agents/dgs-project-researcher.md +631 -0
  15. package/agents/dgs-research-synthesizer.md +249 -0
  16. package/agents/dgs-roadmapper.md +652 -0
  17. package/agents/dgs-verifier.md +607 -0
  18. package/bin/install.js +2073 -0
  19. package/commands/dgs/add-doc.md +45 -0
  20. package/commands/dgs/add-idea.md +38 -0
  21. package/commands/dgs/add-phase.md +43 -0
  22. package/commands/dgs/add-repo.md +54 -0
  23. package/commands/dgs/add-tests.md +41 -0
  24. package/commands/dgs/add-todo.md +47 -0
  25. package/commands/dgs/approve-spec.md +38 -0
  26. package/commands/dgs/audit-milestone.md +36 -0
  27. package/commands/dgs/audit-phase.md +37 -0
  28. package/commands/dgs/cancel-job.md +23 -0
  29. package/commands/dgs/capture-principle.md +143 -0
  30. package/commands/dgs/check-todos.md +45 -0
  31. package/commands/dgs/cleanup.md +18 -0
  32. package/commands/dgs/complete-milestone.md +136 -0
  33. package/commands/dgs/complete-project.md +70 -0
  34. package/commands/dgs/consolidate-ideas.md +50 -0
  35. package/commands/dgs/create-milestone-job.md +37 -0
  36. package/commands/dgs/debug.md +164 -0
  37. package/commands/dgs/develop-idea.md +53 -0
  38. package/commands/dgs/discuss-idea.md +41 -0
  39. package/commands/dgs/discuss-phase.md +83 -0
  40. package/commands/dgs/execute-phase.md +41 -0
  41. package/commands/dgs/fast.md +38 -0
  42. package/commands/dgs/find-related-ideas.md +43 -0
  43. package/commands/dgs/health.md +28 -0
  44. package/commands/dgs/help.md +22 -0
  45. package/commands/dgs/import-spec.md +36 -0
  46. package/commands/dgs/init-product.md +28 -0
  47. package/commands/dgs/insert-phase.md +32 -0
  48. package/commands/dgs/join-discord.md +18 -0
  49. package/commands/dgs/list-docs.md +40 -0
  50. package/commands/dgs/list-ideas.md +42 -0
  51. package/commands/dgs/list-jobs.md +22 -0
  52. package/commands/dgs/list-phase-assumptions.md +46 -0
  53. package/commands/dgs/list-projects.md +57 -0
  54. package/commands/dgs/list-specs.md +40 -0
  55. package/commands/dgs/map-codebase.md +92 -0
  56. package/commands/dgs/new-milestone.md +44 -0
  57. package/commands/dgs/new-project.md +42 -0
  58. package/commands/dgs/node-repair.md +26 -0
  59. package/commands/dgs/overlap-check.md +20 -0
  60. package/commands/dgs/pause-work.md +38 -0
  61. package/commands/dgs/plan-milestone-gaps.md +34 -0
  62. package/commands/dgs/plan-phase.md +44 -0
  63. package/commands/dgs/progress.md +24 -0
  64. package/commands/dgs/quick.md +41 -0
  65. package/commands/dgs/reactivate-project.md +70 -0
  66. package/commands/dgs/reapply-patches.md +110 -0
  67. package/commands/dgs/refine-spec.md +38 -0
  68. package/commands/dgs/reject-idea.md +43 -0
  69. package/commands/dgs/remove-doc.md +44 -0
  70. package/commands/dgs/remove-phase.md +31 -0
  71. package/commands/dgs/remove-repo.md +69 -0
  72. package/commands/dgs/research-idea.md +43 -0
  73. package/commands/dgs/research-phase.md +189 -0
  74. package/commands/dgs/restore-idea.md +45 -0
  75. package/commands/dgs/resume-work.md +40 -0
  76. package/commands/dgs/rollback-job.md +24 -0
  77. package/commands/dgs/run-job.md +35 -0
  78. package/commands/dgs/search.md +40 -0
  79. package/commands/dgs/set-profile.md +34 -0
  80. package/commands/dgs/settings.md +38 -0
  81. package/commands/dgs/switch-project.md +58 -0
  82. package/commands/dgs/undo-consolidation.md +42 -0
  83. package/commands/dgs/update-idea.md +44 -0
  84. package/commands/dgs/update.md +37 -0
  85. package/commands/dgs/validate-phase.md +35 -0
  86. package/commands/dgs/verify-work.md +39 -0
  87. package/commands/dgs/write-spec.md +49 -0
  88. package/deliver-great-systems/.planning/phases/09-backend-wiring-and-error-handling/09-01-SUMMARY.md +84 -0
  89. package/deliver-great-systems/.planning/phases/09-backend-wiring-and-error-handling/09-02-SUMMARY.md +86 -0
  90. package/deliver-great-systems/.planning/phases/10-v1-to-v2-migration-flow/10-01-SUMMARY.md +85 -0
  91. package/deliver-great-systems/bin/dgs-tools.cjs +1444 -0
  92. package/deliver-great-systems/bin/lib/auto-test.cjs +1365 -0
  93. package/deliver-great-systems/bin/lib/commands.cjs +570 -0
  94. package/deliver-great-systems/bin/lib/config.cjs +417 -0
  95. package/deliver-great-systems/bin/lib/conflict-agent.cjs +1063 -0
  96. package/deliver-great-systems/bin/lib/conflict-agent.test.cjs +554 -0
  97. package/deliver-great-systems/bin/lib/context.cjs +929 -0
  98. package/deliver-great-systems/bin/lib/context.test.cjs +693 -0
  99. package/deliver-great-systems/bin/lib/core.cjs +744 -0
  100. package/deliver-great-systems/bin/lib/core.test.cjs +822 -0
  101. package/deliver-great-systems/bin/lib/docs.cjs +919 -0
  102. package/deliver-great-systems/bin/lib/docs.test.cjs +211 -0
  103. package/deliver-great-systems/bin/lib/execution.cjs +705 -0
  104. package/deliver-great-systems/bin/lib/execution.test.cjs +1472 -0
  105. package/deliver-great-systems/bin/lib/frontmatter.cjs +324 -0
  106. package/deliver-great-systems/bin/lib/ideas.cjs +1406 -0
  107. package/deliver-great-systems/bin/lib/ideas.test.cjs +1417 -0
  108. package/deliver-great-systems/bin/lib/identity.cjs +125 -0
  109. package/deliver-great-systems/bin/lib/init.cjs +1114 -0
  110. package/deliver-great-systems/bin/lib/init.test.cjs +1271 -0
  111. package/deliver-great-systems/bin/lib/jobs.cjs +2015 -0
  112. package/deliver-great-systems/bin/lib/jobs.test.cjs +2619 -0
  113. package/deliver-great-systems/bin/lib/merge-conflicts.cjs +654 -0
  114. package/deliver-great-systems/bin/lib/merge-conflicts.test.cjs +370 -0
  115. package/deliver-great-systems/bin/lib/migration.cjs +352 -0
  116. package/deliver-great-systems/bin/lib/migration.test.cjs +582 -0
  117. package/deliver-great-systems/bin/lib/milestone.cjs +243 -0
  118. package/deliver-great-systems/bin/lib/overlap.cjs +437 -0
  119. package/deliver-great-systems/bin/lib/overlap.test.cjs +747 -0
  120. package/deliver-great-systems/bin/lib/path-audit.test.cjs +384 -0
  121. package/deliver-great-systems/bin/lib/paths.cjs +144 -0
  122. package/deliver-great-systems/bin/lib/paths.test.cjs +486 -0
  123. package/deliver-great-systems/bin/lib/phase.cjs +910 -0
  124. package/deliver-great-systems/bin/lib/projects.cjs +691 -0
  125. package/deliver-great-systems/bin/lib/projects.test.cjs +871 -0
  126. package/deliver-great-systems/bin/lib/repos.cjs +1432 -0
  127. package/deliver-great-systems/bin/lib/repos.test.cjs +1882 -0
  128. package/deliver-great-systems/bin/lib/roadmap.cjs +305 -0
  129. package/deliver-great-systems/bin/lib/search.cjs +570 -0
  130. package/deliver-great-systems/bin/lib/specs.cjs +1303 -0
  131. package/deliver-great-systems/bin/lib/state.cjs +893 -0
  132. package/deliver-great-systems/bin/lib/template.cjs +228 -0
  133. package/deliver-great-systems/bin/lib/test-helpers.cjs +291 -0
  134. package/deliver-great-systems/bin/lib/verify.cjs +796 -0
  135. package/deliver-great-systems/references/checkpoints.md +776 -0
  136. package/deliver-great-systems/references/conflict-resolution.md +66 -0
  137. package/deliver-great-systems/references/context-tiers.md +166 -0
  138. package/deliver-great-systems/references/continuation-format.md +249 -0
  139. package/deliver-great-systems/references/decimal-phase-calculation.md +67 -0
  140. package/deliver-great-systems/references/git-integration.md +250 -0
  141. package/deliver-great-systems/references/git-planning-commit.md +40 -0
  142. package/deliver-great-systems/references/model-profile-resolution.md +36 -0
  143. package/deliver-great-systems/references/model-profiles.md +95 -0
  144. package/deliver-great-systems/references/phase-argument-parsing.md +61 -0
  145. package/deliver-great-systems/references/planning-config.md +224 -0
  146. package/deliver-great-systems/references/questioning.md +162 -0
  147. package/deliver-great-systems/references/spec-review-loop.md +177 -0
  148. package/deliver-great-systems/references/tdd.md +265 -0
  149. package/deliver-great-systems/references/ui-brand.md +160 -0
  150. package/deliver-great-systems/references/verification-patterns.md +612 -0
  151. package/deliver-great-systems/templates/DEBUG.md +166 -0
  152. package/deliver-great-systems/templates/UAT.md +251 -0
  153. package/deliver-great-systems/templates/VALIDATION.md +95 -0
  154. package/deliver-great-systems/templates/claude-md.md +74 -0
  155. package/deliver-great-systems/templates/codebase/architecture.md +257 -0
  156. package/deliver-great-systems/templates/codebase/concerns.md +312 -0
  157. package/deliver-great-systems/templates/codebase/conventions.md +309 -0
  158. package/deliver-great-systems/templates/codebase/integrations.md +282 -0
  159. package/deliver-great-systems/templates/codebase/stack.md +188 -0
  160. package/deliver-great-systems/templates/codebase/structure.md +287 -0
  161. package/deliver-great-systems/templates/codebase/testing.md +482 -0
  162. package/deliver-great-systems/templates/config.json +38 -0
  163. package/deliver-great-systems/templates/context.md +354 -0
  164. package/deliver-great-systems/templates/continue-here.md +80 -0
  165. package/deliver-great-systems/templates/debug-subagent-prompt.md +93 -0
  166. package/deliver-great-systems/templates/discovery.md +148 -0
  167. package/deliver-great-systems/templates/milestone-archive.md +125 -0
  168. package/deliver-great-systems/templates/milestone.md +117 -0
  169. package/deliver-great-systems/templates/phase-prompt.md +615 -0
  170. package/deliver-great-systems/templates/planner-subagent-prompt.md +119 -0
  171. package/deliver-great-systems/templates/project.md +186 -0
  172. package/deliver-great-systems/templates/requirements.md +233 -0
  173. package/deliver-great-systems/templates/research-project/ARCHITECTURE.md +206 -0
  174. package/deliver-great-systems/templates/research-project/FEATURES.md +149 -0
  175. package/deliver-great-systems/templates/research-project/PITFALLS.md +202 -0
  176. package/deliver-great-systems/templates/research-project/STACK.md +122 -0
  177. package/deliver-great-systems/templates/research-project/SUMMARY.md +172 -0
  178. package/deliver-great-systems/templates/research.md +554 -0
  179. package/deliver-great-systems/templates/retrospective.md +54 -0
  180. package/deliver-great-systems/templates/roadmap.md +204 -0
  181. package/deliver-great-systems/templates/state.md +178 -0
  182. package/deliver-great-systems/templates/summary-complex.md +59 -0
  183. package/deliver-great-systems/templates/summary-minimal.md +41 -0
  184. package/deliver-great-systems/templates/summary-standard.md +48 -0
  185. package/deliver-great-systems/templates/summary.md +253 -0
  186. package/deliver-great-systems/templates/user-setup.md +313 -0
  187. package/deliver-great-systems/templates/verification-report.md +324 -0
  188. package/deliver-great-systems/workflows/add-doc.md +151 -0
  189. package/deliver-great-systems/workflows/add-idea.md +96 -0
  190. package/deliver-great-systems/workflows/add-phase.md +120 -0
  191. package/deliver-great-systems/workflows/add-tests.md +359 -0
  192. package/deliver-great-systems/workflows/add-todo.md +162 -0
  193. package/deliver-great-systems/workflows/approve-spec.md +194 -0
  194. package/deliver-great-systems/workflows/audit-milestone.md +364 -0
  195. package/deliver-great-systems/workflows/audit-phase.md +462 -0
  196. package/deliver-great-systems/workflows/cancel-job.md +108 -0
  197. package/deliver-great-systems/workflows/check-todos.md +181 -0
  198. package/deliver-great-systems/workflows/cleanup.md +247 -0
  199. package/deliver-great-systems/workflows/codereview.md +526 -0
  200. package/deliver-great-systems/workflows/complete-milestone.md +1298 -0
  201. package/deliver-great-systems/workflows/consolidate-ideas.md +365 -0
  202. package/deliver-great-systems/workflows/create-milestone-job.md +177 -0
  203. package/deliver-great-systems/workflows/develop-idea.md +544 -0
  204. package/deliver-great-systems/workflows/diagnose-issues.md +231 -0
  205. package/deliver-great-systems/workflows/discovery-phase.md +301 -0
  206. package/deliver-great-systems/workflows/discuss-idea.md +263 -0
  207. package/deliver-great-systems/workflows/discuss-phase.md +733 -0
  208. package/deliver-great-systems/workflows/execute-phase.md +571 -0
  209. package/deliver-great-systems/workflows/execute-plan.md +592 -0
  210. package/deliver-great-systems/workflows/find-related-ideas.md +271 -0
  211. package/deliver-great-systems/workflows/health.md +173 -0
  212. package/deliver-great-systems/workflows/help.md +997 -0
  213. package/deliver-great-systems/workflows/import-spec.md +381 -0
  214. package/deliver-great-systems/workflows/init-product.md +767 -0
  215. package/deliver-great-systems/workflows/insert-phase.md +138 -0
  216. package/deliver-great-systems/workflows/list-docs.md +119 -0
  217. package/deliver-great-systems/workflows/list-ideas.md +154 -0
  218. package/deliver-great-systems/workflows/list-jobs.md +89 -0
  219. package/deliver-great-systems/workflows/list-phase-assumptions.md +192 -0
  220. package/deliver-great-systems/workflows/list-specs.md +101 -0
  221. package/deliver-great-systems/workflows/map-codebase.md +621 -0
  222. package/deliver-great-systems/workflows/new-milestone.md +591 -0
  223. package/deliver-great-systems/workflows/new-project.md +1113 -0
  224. package/deliver-great-systems/workflows/node-repair.md +94 -0
  225. package/deliver-great-systems/workflows/overlap-check.md +86 -0
  226. package/deliver-great-systems/workflows/pause-work.md +134 -0
  227. package/deliver-great-systems/workflows/plan-milestone-gaps.md +306 -0
  228. package/deliver-great-systems/workflows/plan-phase.md +698 -0
  229. package/deliver-great-systems/workflows/progress.md +386 -0
  230. package/deliver-great-systems/workflows/quick.md +845 -0
  231. package/deliver-great-systems/workflows/refine-spec.md +275 -0
  232. package/deliver-great-systems/workflows/reject-idea.md +109 -0
  233. package/deliver-great-systems/workflows/remove-doc.md +117 -0
  234. package/deliver-great-systems/workflows/remove-phase.md +163 -0
  235. package/deliver-great-systems/workflows/research-idea.md +325 -0
  236. package/deliver-great-systems/workflows/research-phase.md +81 -0
  237. package/deliver-great-systems/workflows/restore-idea.md +101 -0
  238. package/deliver-great-systems/workflows/resume-project.md +311 -0
  239. package/deliver-great-systems/workflows/rollback-job.md +130 -0
  240. package/deliver-great-systems/workflows/run-job.md +498 -0
  241. package/deliver-great-systems/workflows/search.md +130 -0
  242. package/deliver-great-systems/workflows/set-profile.md +83 -0
  243. package/deliver-great-systems/workflows/settings.md +470 -0
  244. package/deliver-great-systems/workflows/transition.md +563 -0
  245. package/deliver-great-systems/workflows/undo-consolidation.md +155 -0
  246. package/deliver-great-systems/workflows/update-idea.md +157 -0
  247. package/deliver-great-systems/workflows/update.md +242 -0
  248. package/deliver-great-systems/workflows/validate-phase.md +177 -0
  249. package/deliver-great-systems/workflows/verify-phase.md +253 -0
  250. package/deliver-great-systems/workflows/verify-work.md +671 -0
  251. package/deliver-great-systems/workflows/write-spec.md +450 -0
  252. package/hooks/dist/dgs-check-update.js +62 -0
  253. package/hooks/dist/dgs-context-monitor.js +141 -0
  254. package/hooks/dist/dgs-statusline.js +115 -0
  255. package/package.json +60 -0
  256. package/scripts/build-hooks.js +43 -0
@@ -0,0 +1,359 @@
1
+ <purpose>
2
+ Generate unit and E2E tests for a completed phase based on its SUMMARY.md, CONTEXT.md, and implementation. Classifies each changed file into TDD (unit), E2E (browser), or Skip categories, presents a test plan for user approval, then generates tests following RED-GREEN conventions.
3
+
4
+ Users currently hand-craft `/dgs:quick` prompts for test generation after each phase. This workflow standardizes the process with proper classification, quality gates, and gap reporting.
5
+ </purpose>
6
+
7
+ <context_tier>planning</context_tier>
8
+
9
+ <required_reading>
10
+ Read all files referenced by the invoking prompt's execution_context before starting.
11
+ </required_reading>
12
+
13
+ <process>
14
+
15
+ <step name="parse_arguments">
16
+ Parse `$ARGUMENTS` for:
17
+ - Phase number (integer, decimal, or letter-suffix) → store as `$PHASE_ARG`
18
+ - Remaining text after phase number → store as `$EXTRA_INSTRUCTIONS` (optional)
19
+
20
+ Example: `/dgs:add-tests 12 focus on edge cases` → `$PHASE_ARG=12`, `$EXTRA_INSTRUCTIONS="focus on edge cases"`
21
+
22
+ If no phase argument provided:
23
+
24
+ ```
25
+ ERROR: Phase number required
26
+ Usage: /dgs:add-tests <phase> [additional instructions]
27
+ Example: /dgs:add-tests 12
28
+ Example: /dgs:add-tests 12 focus on edge cases in the pricing module
29
+ ```
30
+
31
+ Exit.
32
+ </step>
33
+
34
+ <step name="init_context">
35
+ Load phase operation context:
36
+
37
+ ```bash
38
+ INIT=$(node "$HOME/.claude/deliver-great-systems/bin/dgs-tools.cjs" init phase-op "${PHASE_ARG}")
39
+ if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi
40
+ ```
41
+
42
+ Extract from init JSON: `phase_dir`, `phase_number`, `phase_name`.
43
+
44
+ Load planning-tier context files:
45
+
46
+ ```bash
47
+ TIER_FILES=$(node "$HOME/.claude/deliver-great-systems/bin/dgs-tools.cjs" context load-tier planning --raw 2>/dev/null)
48
+ ```
49
+
50
+ Verify the phase directory exists. If not:
51
+ ```
52
+ ERROR: Phase directory not found for phase ${PHASE_ARG}
53
+ Ensure the phase exists in .planning/phases/
54
+ ```
55
+ Exit.
56
+
57
+ Read the phase artifacts (in order of priority):
58
+ 1. `${phase_dir}/*-SUMMARY.md` — what was implemented, files changed
59
+ 2. `${phase_dir}/CONTEXT.md` — acceptance criteria, decisions
60
+ 3. `${phase_dir}/*-VERIFICATION.md` — user-verified scenarios (if UAT was done)
61
+
62
+ If no SUMMARY.md exists:
63
+ ```
64
+ ERROR: No SUMMARY.md found for phase ${PHASE_ARG}
65
+ This command works on completed phases. Run /dgs:execute-phase first.
66
+ ```
67
+ Exit.
68
+
69
+ Present banner:
70
+ ```
71
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
72
+ DGS ► ADD TESTS — Phase ${phase_number}: ${phase_name}
73
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
74
+ ```
75
+ </step>
76
+
77
+ <step name="analyze_implementation">
78
+ Extract the list of files modified by the phase from SUMMARY.md ("Files Changed" or equivalent section).
79
+
80
+ For each file, classify into one of three categories:
81
+
82
+ | Category | Criteria | Test Type |
83
+ |----------|----------|-----------|
84
+ | **TDD** | Pure functions where `expect(fn(input)).toBe(output)` is writable | Unit tests |
85
+ | **E2E** | UI behavior verifiable by browser automation | Playwright/E2E tests |
86
+ | **Skip** | Not meaningfully testable or already covered | None |
87
+
88
+ **TDD classification — apply when:**
89
+ - Business logic: calculations, pricing, tax rules, validation
90
+ - Data transformations: mapping, filtering, aggregation, formatting
91
+ - Parsers: CSV, JSON, XML, custom format parsing
92
+ - Validators: input validation, schema validation, business rules
93
+ - State machines: status transitions, workflow steps
94
+ - Utilities: string manipulation, date handling, number formatting
95
+
96
+ **E2E classification — apply when:**
97
+ - Keyboard shortcuts: key bindings, modifier keys, chord sequences
98
+ - Navigation: page transitions, routing, breadcrumbs, back/forward
99
+ - Form interactions: submit, validation errors, field focus, autocomplete
100
+ - Selection: row selection, multi-select, shift-click ranges
101
+ - Drag and drop: reordering, moving between containers
102
+ - Modal dialogs: open, close, confirm, cancel
103
+ - Data grids: sorting, filtering, inline editing, column resize
104
+
105
+ **Skip classification — apply when:**
106
+ - UI layout/styling: CSS classes, visual appearance, responsive breakpoints
107
+ - Configuration: config files, environment variables, feature flags
108
+ - Glue code: dependency injection setup, middleware registration, routing tables
109
+ - Migrations: database migrations, schema changes
110
+ - Simple CRUD: basic create/read/update/delete with no business logic
111
+ - Type definitions: records, DTOs, interfaces with no logic
112
+
113
+ Read each file to verify classification. Don't classify based on filename alone.
114
+ </step>
115
+
116
+ <step name="present_classification">
117
+ Present the classification to the user for confirmation before proceeding:
118
+
119
+ ```
120
+ AskUserQuestion(
121
+ header: "Test Classification",
122
+ question: |
123
+ ## Files classified for testing
124
+
125
+ ### TDD (Unit Tests) — {N} files
126
+ {list of files with brief reason}
127
+
128
+ ### E2E (Browser Tests) — {M} files
129
+ {list of files with brief reason}
130
+
131
+ ### Skip — {K} files
132
+ {list of files with brief reason}
133
+
134
+ {if $EXTRA_INSTRUCTIONS: "Additional instructions: ${EXTRA_INSTRUCTIONS}"}
135
+
136
+ How would you like to proceed?
137
+ options:
138
+ - "Approve and generate test plan"
139
+ - "Adjust classification (I'll specify changes)"
140
+ - "Cancel"
141
+ )
142
+ ```
143
+
144
+ If user selects "Adjust classification": apply their changes and re-present.
145
+ If user selects "Cancel": exit gracefully.
146
+ </step>
147
+
148
+ <step name="discover_test_structure">
149
+ Before generating the test plan, discover the project's existing test structure:
150
+
151
+ ```bash
152
+ # Find existing test directories
153
+ find . -type d -name "*test*" -o -name "*spec*" -o -name "*__tests__*" 2>/dev/null | head -20
154
+ # Find existing test files for convention matching
155
+ find . -type f \( -name "*.test.*" -o -name "*.spec.*" -o -name "*Tests.fs" -o -name "*Test.fs" \) 2>/dev/null | head -20
156
+ # Check for test runners
157
+ ls package.json *.sln 2>/dev/null
158
+ ```
159
+
160
+ Identify:
161
+ - Test directory structure (where unit tests live, where E2E tests live)
162
+ - Naming conventions (`.test.ts`, `.spec.ts`, `*Tests.fs`, etc.)
163
+ - Test runner commands (how to execute unit tests, how to execute E2E tests)
164
+ - Test framework (xUnit, NUnit, Jest, Playwright, etc.)
165
+
166
+ If test structure is ambiguous, ask the user:
167
+ ```
168
+ AskUserQuestion(
169
+ header: "Test Structure",
170
+ question: "I found multiple test locations. Where should I create tests?",
171
+ options: [list discovered locations]
172
+ )
173
+ ```
174
+ </step>
175
+
176
+ <step name="generate_test_plan">
177
+ For each approved file, create a detailed test plan.
178
+
179
+ **For TDD files**, plan tests following RED-GREEN-REFACTOR:
180
+ 1. Identify testable functions/methods in the file
181
+ 2. For each function: list input scenarios, expected outputs, edge cases
182
+ 3. Note: since code already exists, tests may pass immediately — that's OK, but verify they test the RIGHT behavior
183
+
184
+ **For E2E files**, plan tests following RED-GREEN gates:
185
+ 1. Identify user scenarios from CONTEXT.md/VERIFICATION.md
186
+ 2. For each scenario: describe the user action, expected outcome, assertions
187
+ 3. Note: RED gate means confirming the test would fail if the feature were broken
188
+
189
+ Present the complete test plan:
190
+
191
+ ```
192
+ AskUserQuestion(
193
+ header: "Test Plan",
194
+ question: |
195
+ ## Test Generation Plan
196
+
197
+ ### Unit Tests ({N} tests across {M} files)
198
+ {for each file: test file path, list of test cases}
199
+
200
+ ### E2E Tests ({P} tests across {Q} files)
201
+ {for each file: test file path, list of test scenarios}
202
+
203
+ ### Test Commands
204
+ - Unit: {discovered test command}
205
+ - E2E: {discovered e2e command}
206
+
207
+ Ready to generate?
208
+ options:
209
+ - "Generate all"
210
+ - "Cherry-pick (I'll specify which)"
211
+ - "Adjust plan"
212
+ )
213
+ ```
214
+
215
+ If "Cherry-pick": ask user which tests to include.
216
+ If "Adjust plan": apply changes and re-present.
217
+ </step>
218
+
219
+ <step name="execute_tdd_generation">
220
+ For each approved TDD test:
221
+
222
+ 1. **Create test file** following discovered project conventions (directory, naming, imports)
223
+
224
+ 2. **Write test** with clear arrange/act/assert structure:
225
+ ```
226
+ // Arrange — set up inputs and expected outputs
227
+ // Act — call the function under test
228
+ // Assert — verify the output matches expectations
229
+ ```
230
+
231
+ 3. **Run the test**:
232
+ ```bash
233
+ {discovered test command}
234
+ ```
235
+
236
+ 4. **Evaluate result:**
237
+ - **Test passes**: Good — the implementation satisfies the test. Verify the test checks meaningful behavior (not just that it compiles).
238
+ - **Test fails with assertion error**: This may be a genuine bug discovered by the test. Flag it:
239
+ ```
240
+ ⚠️ Potential bug found: {test name}
241
+ Expected: {expected}
242
+ Actual: {actual}
243
+ File: {implementation file}
244
+ ```
245
+ Do NOT fix the implementation — this is a test-generation command, not a fix command. Record the finding.
246
+ - **Test fails with error (import, syntax, etc.)**: This is a test error. Fix the test and re-run.
247
+ </step>
248
+
249
+ <step name="execute_e2e_generation">
250
+ For each approved E2E test:
251
+
252
+ 1. **Check for existing tests** covering the same scenario:
253
+ ```bash
254
+ grep -r "{scenario keyword}" {e2e test directory} 2>/dev/null
255
+ ```
256
+ If found, extend rather than duplicate.
257
+
258
+ 2. **Create test file** targeting the user scenario from CONTEXT.md/VERIFICATION.md
259
+
260
+ 3. **Run the E2E test**:
261
+ ```bash
262
+ {discovered e2e command}
263
+ ```
264
+
265
+ 4. **Evaluate result:**
266
+ - **GREEN (passes)**: Record success
267
+ - **RED (fails)**: Determine if it's a test issue or a genuine application bug. Flag bugs:
268
+ ```
269
+ ⚠️ E2E failure: {test name}
270
+ Scenario: {description}
271
+ Error: {error message}
272
+ ```
273
+ - **Cannot run**: Report blocker. Do NOT mark as complete.
274
+ ```
275
+ 🛑 E2E blocker: {reason tests cannot run}
276
+ ```
277
+
278
+ **No-skip rule:** If E2E tests cannot execute (missing dependencies, environment issues), report the blocker and mark the test as incomplete. Never mark success without actually running the test.
279
+ </step>
280
+
281
+ <step name="summary_and_commit">
282
+ Create a test coverage report and present to user:
283
+
284
+ ```
285
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
286
+ DGS ► TEST GENERATION COMPLETE
287
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
288
+
289
+ ## Results
290
+
291
+ | Category | Generated | Passing | Failing | Blocked |
292
+ |----------|-----------|---------|---------|---------|
293
+ | Unit | {N} | {n1} | {n2} | {n3} |
294
+ | E2E | {M} | {m1} | {m2} | {m3} |
295
+
296
+ ## Files Created/Modified
297
+ {list of test files with paths}
298
+
299
+ ## Coverage Gaps
300
+ {areas that couldn't be tested and why}
301
+
302
+ ## Bugs Discovered
303
+ {any assertion failures that indicate implementation bugs}
304
+ ```
305
+
306
+ Record test generation in project state:
307
+ ```bash
308
+ node "$HOME/.claude/deliver-great-systems/bin/dgs-tools.cjs" state-snapshot
309
+ ```
310
+
311
+ If there are passing tests to commit:
312
+
313
+ ```bash
314
+ git add {test files}
315
+ git commit -m "test(phase-${phase_number}): add unit and E2E tests from add-tests command"
316
+ ```
317
+
318
+ Present next steps:
319
+
320
+ ```
321
+ ---
322
+
323
+ ## ▶ Next Up
324
+
325
+ {if bugs discovered:}
326
+ **Fix discovered bugs:** `/dgs:quick fix the {N} test failures discovered in phase ${phase_number}`
327
+
328
+ {if blocked tests:}
329
+ **Resolve test blockers:** {description of what's needed}
330
+
331
+ {otherwise:}
332
+ **All tests passing!** Phase ${phase_number} is fully tested.
333
+
334
+ ---
335
+
336
+ **Also available:**
337
+ - `/dgs:add-tests {next_phase}` — test another phase
338
+ - `/dgs:verify-work {phase_number}` — run UAT verification
339
+
340
+ ---
341
+ ```
342
+ </step>
343
+
344
+ </process>
345
+
346
+ <success_criteria>
347
+ - [ ] Phase artifacts loaded (SUMMARY.md, CONTEXT.md, optionally VERIFICATION.md)
348
+ - [ ] All changed files classified into TDD/E2E/Skip categories
349
+ - [ ] Classification presented to user and approved
350
+ - [ ] Project test structure discovered (directories, conventions, runners)
351
+ - [ ] Test plan presented to user and approved
352
+ - [ ] TDD tests generated with arrange/act/assert structure
353
+ - [ ] E2E tests generated targeting user scenarios
354
+ - [ ] All tests executed — no untested tests marked as passing
355
+ - [ ] Bugs discovered by tests flagged (not fixed)
356
+ - [ ] Test files committed with proper message
357
+ - [ ] Coverage gaps documented
358
+ - [ ] Next steps presented to user
359
+ </success_criteria>
@@ -0,0 +1,162 @@
1
+ <purpose>
2
+ Capture an idea, task, or issue that surfaces during a DGS session as a structured todo for later work. Enables "thought → capture → continue" flow without losing context.
3
+ </purpose>
4
+
5
+ <context_tier>lite</context_tier>
6
+
7
+ <required_reading>
8
+ Read all files referenced by the invoking prompt's execution_context before starting.
9
+ </required_reading>
10
+
11
+ <process>
12
+
13
+ <step name="init_context">
14
+ Load todo context:
15
+
16
+ ```bash
17
+ INIT=$(node "$HOME/.claude/deliver-great-systems/bin/dgs-tools.cjs" init todos)
18
+ if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi
19
+ TIER_FILES=$(node "$HOME/.claude/deliver-great-systems/bin/dgs-tools.cjs" context load-tier lite --raw 2>/dev/null)
20
+ ```
21
+
22
+ Extract from init JSON: `commit_docs`, `date`, `timestamp`, `todo_count`, `todos`, `pending_dir`, `todos_dir_exists`.
23
+ Use `TIER_FILES` JSON `files` array for project context (PROJECT.md, STATE.md, config.json).
24
+
25
+ Ensure directories exist:
26
+ ```bash
27
+ mkdir -p ${pending_dir} ${completed_dir}
28
+ ```
29
+
30
+ Note existing areas from the todos array for consistency in infer_area step.
31
+ </step>
32
+
33
+ <step name="extract_content">
34
+ **With arguments:** Use as the title/focus.
35
+ - `/dgs:add-todo Add auth token refresh` → title = "Add auth token refresh"
36
+
37
+ **Without arguments:** Analyze recent conversation to extract:
38
+ - The specific problem, idea, or task discussed
39
+ - Relevant file paths mentioned
40
+ - Technical details (error messages, line numbers, constraints)
41
+
42
+ Formulate:
43
+ - `title`: 3-10 word descriptive title (action verb preferred)
44
+ - `problem`: What's wrong or why this is needed
45
+ - `solution`: Approach hints or "TBD" if just an idea
46
+ - `files`: Relevant paths with line numbers from conversation
47
+ </step>
48
+
49
+ <step name="infer_area">
50
+ Infer area from file paths:
51
+
52
+ | Path pattern | Area |
53
+ |--------------|------|
54
+ | `src/api/*`, `api/*` | `api` |
55
+ | `src/components/*`, `src/ui/*` | `ui` |
56
+ | `src/auth/*`, `auth/*` | `auth` |
57
+ | `src/db/*`, `database/*` | `database` |
58
+ | `tests/*`, `__tests__/*` | `testing` |
59
+ | `docs/*` | `docs` |
60
+ | `planning root/*` | `planning` |
61
+ | `scripts/*`, `bin/*` | `tooling` |
62
+ | No files or unclear | `general` |
63
+
64
+ Use existing area from step 2 if similar match exists.
65
+ </step>
66
+
67
+ <step name="check_duplicates">
68
+ ```bash
69
+ # Search for key words from title in existing todos
70
+ grep -l -i "[key words from title]" ${pending_dir}/*.md 2>/dev/null
71
+ ```
72
+
73
+ If potential duplicate found:
74
+ 1. Read the existing todo
75
+ 2. Compare scope
76
+
77
+ If overlapping, use AskUserQuestion:
78
+ - header: "Duplicate?"
79
+ - question: "Similar todo exists: [title]. What would you like to do?"
80
+ - options:
81
+ - "Skip" — keep existing todo
82
+ - "Replace" — update existing with new context
83
+ - "Add anyway" — create as separate todo
84
+ </step>
85
+
86
+ <step name="create_file">
87
+ Use values from init context: `timestamp` and `date` are already available.
88
+
89
+ Generate slug for the title:
90
+ ```bash
91
+ slug=$(node "$HOME/.claude/deliver-great-systems/bin/dgs-tools.cjs" generate-slug "$title" --raw)
92
+ ```
93
+
94
+ Write to `${pending_dir}/${date}-${slug}.md`:
95
+
96
+ ```markdown
97
+ ---
98
+ created: [timestamp]
99
+ title: [title]
100
+ area: [area]
101
+ files:
102
+ - [file:lines]
103
+ ---
104
+
105
+ ## Problem
106
+
107
+ [problem description - enough context for future Claude to understand weeks later]
108
+
109
+ ## Solution
110
+
111
+ [approach hints or "TBD"]
112
+ ```
113
+ </step>
114
+
115
+ <step name="update_state">
116
+ If STATE.md exists (use `state_path` from init):
117
+
118
+ 1. Use `todo_count` from init context (or re-run `init todos` if count changed)
119
+ 2. Update "### Pending Todos" under "## Accumulated Context"
120
+ </step>
121
+
122
+ <step name="git_commit">
123
+ Commit the todo and any updated state:
124
+
125
+ ```bash
126
+ node "$HOME/.claude/deliver-great-systems/bin/dgs-tools.cjs" commit "docs: capture todo - [title]" --files ${pending_dir}/[filename] ${state_path}
127
+ ```
128
+
129
+ Tool respects `commit_docs` config and gitignore automatically.
130
+
131
+ Confirm: "Committed: docs: capture todo - [title]"
132
+ </step>
133
+
134
+ <step name="confirm">
135
+ ```
136
+ Todo saved: ${pending_dir}/[filename]
137
+
138
+ [title]
139
+ Area: [area]
140
+ Files: [count] referenced
141
+
142
+ ---
143
+
144
+ Would you like to:
145
+
146
+ 1. Continue with current work
147
+ 2. Add another todo
148
+ 3. View all todos (/dgs:check-todos)
149
+ ```
150
+ </step>
151
+
152
+ </process>
153
+
154
+ <success_criteria>
155
+ - [ ] Directory structure exists
156
+ - [ ] Todo file created with valid frontmatter
157
+ - [ ] Problem section has enough context for future Claude
158
+ - [ ] No duplicates (checked and resolved)
159
+ - [ ] Area consistent with existing todos
160
+ - [ ] STATE.md updated if exists
161
+ - [ ] Todo and state committed to git
162
+ </success_criteria>