@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,482 @@
1
+ # Testing Patterns Template
2
+
3
+ Template for `codebase/TESTING.md` (in planning root) - captures test framework and patterns.
4
+
5
+ > **Layout-agnostic:** Workflows access the codebase directory via `${codebase_dir}` from init output. Works in both standard and root layouts.
6
+
7
+ **Purpose:** Document how tests are written and run. Guide for adding tests that match existing patterns.
8
+
9
+ ---
10
+
11
+ ## File Template
12
+
13
+ ```markdown
14
+ # Testing Patterns
15
+
16
+ **Analysis Date:** [YYYY-MM-DD]
17
+
18
+ ## Test Framework
19
+
20
+ **Runner:**
21
+ - [Framework: e.g., "Jest 29.x", "Vitest 1.x"]
22
+ - [Config: e.g., "jest.config.js in project root"]
23
+
24
+ **Assertion Library:**
25
+ - [Library: e.g., "built-in expect", "chai"]
26
+ - [Matchers: e.g., "toBe, toEqual, toThrow"]
27
+
28
+ **Run Commands:**
29
+ ```bash
30
+ [e.g., "npm test" or "npm run test"] # Run all tests
31
+ [e.g., "npm test -- --watch"] # Watch mode
32
+ [e.g., "npm test -- path/to/file.test.ts"] # Single file
33
+ [e.g., "npm run test:coverage"] # Coverage report
34
+ ```
35
+
36
+ ## Test File Organization
37
+
38
+ **Location:**
39
+ - [Pattern: e.g., "*.test.ts alongside source files"]
40
+ - [Alternative: e.g., "__tests__/ directory" or "separate tests/ tree"]
41
+
42
+ **Naming:**
43
+ - [Unit tests: e.g., "module-name.test.ts"]
44
+ - [Integration: e.g., "feature-name.integration.test.ts"]
45
+ - [E2E: e.g., "user-flow.e2e.test.ts"]
46
+
47
+ **Structure:**
48
+ ```
49
+ [Show actual directory pattern, e.g.:
50
+ src/
51
+ lib/
52
+ utils.ts
53
+ utils.test.ts
54
+ services/
55
+ user-service.ts
56
+ user-service.test.ts
57
+ ]
58
+ ```
59
+
60
+ ## Test Structure
61
+
62
+ **Suite Organization:**
63
+ ```typescript
64
+ [Show actual pattern used, e.g.:
65
+
66
+ describe('ModuleName', () => {
67
+ describe('functionName', () => {
68
+ it('should handle success case', () => {
69
+ // arrange
70
+ // act
71
+ // assert
72
+ });
73
+
74
+ it('should handle error case', () => {
75
+ // test code
76
+ });
77
+ });
78
+ });
79
+ ]
80
+ ```
81
+
82
+ **Patterns:**
83
+ - [Setup: e.g., "beforeEach for shared setup, avoid beforeAll"]
84
+ - [Teardown: e.g., "afterEach to clean up, restore mocks"]
85
+ - [Structure: e.g., "arrange/act/assert pattern required"]
86
+
87
+ ## Mocking
88
+
89
+ **Framework:**
90
+ - [Tool: e.g., "Jest built-in mocking", "Vitest vi", "Sinon"]
91
+ - [Import mocking: e.g., "vi.mock() at top of file"]
92
+
93
+ **Patterns:**
94
+ ```typescript
95
+ [Show actual mocking pattern, e.g.:
96
+
97
+ // Mock external dependency
98
+ vi.mock('./external-service', () => ({
99
+ fetchData: vi.fn()
100
+ }));
101
+
102
+ // Mock in test
103
+ const mockFetch = vi.mocked(fetchData);
104
+ mockFetch.mockResolvedValue({ data: 'test' });
105
+ ]
106
+ ```
107
+
108
+ **What to Mock:**
109
+ - [e.g., "External APIs, file system, database"]
110
+ - [e.g., "Time/dates (use vi.useFakeTimers)"]
111
+ - [e.g., "Network calls (use mock fetch)"]
112
+
113
+ **What NOT to Mock:**
114
+ - [e.g., "Pure functions, utilities"]
115
+ - [e.g., "Internal business logic"]
116
+
117
+ ## Fixtures and Factories
118
+
119
+ **Test Data:**
120
+ ```typescript
121
+ [Show pattern for creating test data, e.g.:
122
+
123
+ // Factory pattern
124
+ function createTestUser(overrides?: Partial<User>): User {
125
+ return {
126
+ id: 'test-id',
127
+ name: 'Test User',
128
+ email: 'test@example.com',
129
+ ...overrides
130
+ };
131
+ }
132
+
133
+ // Fixture file
134
+ // tests/fixtures/users.ts
135
+ export const mockUsers = [/* ... */];
136
+ ]
137
+ ```
138
+
139
+ **Location:**
140
+ - [e.g., "tests/fixtures/ for shared fixtures"]
141
+ - [e.g., "factory functions in test file or tests/factories/"]
142
+
143
+ ## Coverage
144
+
145
+ **Requirements:**
146
+ - [Target: e.g., "80% line coverage", "no specific target"]
147
+ - [Enforcement: e.g., "CI blocks <80%", "coverage for awareness only"]
148
+
149
+ **Configuration:**
150
+ - [Tool: e.g., "built-in coverage via --coverage flag"]
151
+ - [Exclusions: e.g., "exclude *.test.ts, config files"]
152
+
153
+ **View Coverage:**
154
+ ```bash
155
+ [e.g., "npm run test:coverage"]
156
+ [e.g., "open coverage/index.html"]
157
+ ```
158
+
159
+ ## Test Types
160
+
161
+ **Unit Tests:**
162
+ - [Scope: e.g., "test single function/class in isolation"]
163
+ - [Mocking: e.g., "mock all external dependencies"]
164
+ - [Speed: e.g., "must run in <1s per test"]
165
+
166
+ **Integration Tests:**
167
+ - [Scope: e.g., "test multiple modules together"]
168
+ - [Mocking: e.g., "mock external services, use real internal modules"]
169
+ - [Setup: e.g., "use test database, seed data"]
170
+
171
+ **E2E Tests:**
172
+ - [Framework: e.g., "Playwright for E2E"]
173
+ - [Scope: e.g., "test full user flows"]
174
+ - [Location: e.g., "e2e/ directory separate from unit tests"]
175
+
176
+ ## Common Patterns
177
+
178
+ **Async Testing:**
179
+ ```typescript
180
+ [Show pattern, e.g.:
181
+
182
+ it('should handle async operation', async () => {
183
+ const result = await asyncFunction();
184
+ expect(result).toBe('expected');
185
+ });
186
+ ]
187
+ ```
188
+
189
+ **Error Testing:**
190
+ ```typescript
191
+ [Show pattern, e.g.:
192
+
193
+ it('should throw on invalid input', () => {
194
+ expect(() => functionCall()).toThrow('error message');
195
+ });
196
+
197
+ // Async error
198
+ it('should reject on failure', async () => {
199
+ await expect(asyncCall()).rejects.toThrow('error message');
200
+ });
201
+ ]
202
+ ```
203
+
204
+ **Snapshot Testing:**
205
+ - [Usage: e.g., "for React components only" or "not used"]
206
+ - [Location: e.g., "__snapshots__/ directory"]
207
+
208
+ ---
209
+
210
+ *Testing analysis: [date]*
211
+ *Update when test patterns change*
212
+ ```
213
+
214
+ <good_examples>
215
+ ```markdown
216
+ # Testing Patterns
217
+
218
+ **Analysis Date:** 2025-01-20
219
+
220
+ ## Test Framework
221
+
222
+ **Runner:**
223
+ - Vitest 1.0.4
224
+ - Config: vitest.config.ts in project root
225
+
226
+ **Assertion Library:**
227
+ - Vitest built-in expect
228
+ - Matchers: toBe, toEqual, toThrow, toMatchObject
229
+
230
+ **Run Commands:**
231
+ ```bash
232
+ npm test # Run all tests
233
+ npm test -- --watch # Watch mode
234
+ npm test -- path/to/file.test.ts # Single file
235
+ npm run test:coverage # Coverage report
236
+ ```
237
+
238
+ ## Test File Organization
239
+
240
+ **Location:**
241
+ - *.test.ts alongside source files
242
+ - No separate tests/ directory
243
+
244
+ **Naming:**
245
+ - unit-name.test.ts for all tests
246
+ - No distinction between unit/integration in filename
247
+
248
+ **Structure:**
249
+ ```
250
+ src/
251
+ lib/
252
+ parser.ts
253
+ parser.test.ts
254
+ services/
255
+ install-service.ts
256
+ install-service.test.ts
257
+ bin/
258
+ install.ts
259
+ (no test - integration tested via CLI)
260
+ ```
261
+
262
+ ## Test Structure
263
+
264
+ **Suite Organization:**
265
+ ```typescript
266
+ import { describe, it, expect, beforeEach, afterEach, vi } from 'vitest';
267
+
268
+ describe('ModuleName', () => {
269
+ describe('functionName', () => {
270
+ beforeEach(() => {
271
+ // reset state
272
+ });
273
+
274
+ it('should handle valid input', () => {
275
+ // arrange
276
+ const input = createTestInput();
277
+
278
+ // act
279
+ const result = functionName(input);
280
+
281
+ // assert
282
+ expect(result).toEqual(expectedOutput);
283
+ });
284
+
285
+ it('should throw on invalid input', () => {
286
+ expect(() => functionName(null)).toThrow('Invalid input');
287
+ });
288
+ });
289
+ });
290
+ ```
291
+
292
+ **Patterns:**
293
+ - Use beforeEach for per-test setup, avoid beforeAll
294
+ - Use afterEach to restore mocks: vi.restoreAllMocks()
295
+ - Explicit arrange/act/assert comments in complex tests
296
+ - One assertion focus per test (but multiple expects OK)
297
+
298
+ ## Mocking
299
+
300
+ **Framework:**
301
+ - Vitest built-in mocking (vi)
302
+ - Module mocking via vi.mock() at top of test file
303
+
304
+ **Patterns:**
305
+ ```typescript
306
+ import { vi } from 'vitest';
307
+ import { externalFunction } from './external';
308
+
309
+ // Mock module
310
+ vi.mock('./external', () => ({
311
+ externalFunction: vi.fn()
312
+ }));
313
+
314
+ describe('test suite', () => {
315
+ it('mocks function', () => {
316
+ const mockFn = vi.mocked(externalFunction);
317
+ mockFn.mockReturnValue('mocked result');
318
+
319
+ // test code using mocked function
320
+
321
+ expect(mockFn).toHaveBeenCalledWith('expected arg');
322
+ });
323
+ });
324
+ ```
325
+
326
+ **What to Mock:**
327
+ - File system operations (fs-extra)
328
+ - Child process execution (child_process.exec)
329
+ - External API calls
330
+ - Environment variables (process.env)
331
+
332
+ **What NOT to Mock:**
333
+ - Internal pure functions
334
+ - Simple utilities (string manipulation, array helpers)
335
+ - TypeScript types
336
+
337
+ ## Fixtures and Factories
338
+
339
+ **Test Data:**
340
+ ```typescript
341
+ // Factory functions in test file
342
+ function createTestConfig(overrides?: Partial<Config>): Config {
343
+ return {
344
+ targetDir: '/tmp/test',
345
+ global: false,
346
+ ...overrides
347
+ };
348
+ }
349
+
350
+ // Shared fixtures in tests/fixtures/
351
+ // tests/fixtures/sample-command.md
352
+ export const sampleCommand = `---
353
+ description: Test command
354
+ ---
355
+ Content here`;
356
+ ```
357
+
358
+ **Location:**
359
+ - Factory functions: define in test file near usage
360
+ - Shared fixtures: tests/fixtures/ (for multi-file test data)
361
+ - Mock data: inline in test when simple, factory when complex
362
+
363
+ ## Coverage
364
+
365
+ **Requirements:**
366
+ - No enforced coverage target
367
+ - Coverage tracked for awareness
368
+ - Focus on critical paths (parsers, service logic)
369
+
370
+ **Configuration:**
371
+ - Vitest coverage via c8 (built-in)
372
+ - Excludes: *.test.ts, bin/install.ts, config files
373
+
374
+ **View Coverage:**
375
+ ```bash
376
+ npm run test:coverage
377
+ open coverage/index.html
378
+ ```
379
+
380
+ ## Test Types
381
+
382
+ **Unit Tests:**
383
+ - Test single function in isolation
384
+ - Mock all external dependencies (fs, child_process)
385
+ - Fast: each test <100ms
386
+ - Examples: parser.test.ts, validator.test.ts
387
+
388
+ **Integration Tests:**
389
+ - Test multiple modules together
390
+ - Mock only external boundaries (file system, process)
391
+ - Examples: install-service.test.ts (tests service + parser)
392
+
393
+ **E2E Tests:**
394
+ - Not currently used
395
+ - CLI integration tested manually
396
+
397
+ ## Common Patterns
398
+
399
+ **Async Testing:**
400
+ ```typescript
401
+ it('should handle async operation', async () => {
402
+ const result = await asyncFunction();
403
+ expect(result).toBe('expected');
404
+ });
405
+ ```
406
+
407
+ **Error Testing:**
408
+ ```typescript
409
+ it('should throw on invalid input', () => {
410
+ expect(() => parse(null)).toThrow('Cannot parse null');
411
+ });
412
+
413
+ // Async error
414
+ it('should reject on file not found', async () => {
415
+ await expect(readConfig('invalid.txt')).rejects.toThrow('ENOENT');
416
+ });
417
+ ```
418
+
419
+ **File System Mocking:**
420
+ ```typescript
421
+ import { vi } from 'vitest';
422
+ import * as fs from 'fs-extra';
423
+
424
+ vi.mock('fs-extra');
425
+
426
+ it('mocks file system', () => {
427
+ vi.mocked(fs.readFile).mockResolvedValue('file content');
428
+ // test code
429
+ });
430
+ ```
431
+
432
+ **Snapshot Testing:**
433
+ - Not used in this codebase
434
+ - Prefer explicit assertions for clarity
435
+
436
+ ---
437
+
438
+ *Testing analysis: 2025-01-20*
439
+ *Update when test patterns change*
440
+ ```
441
+ </good_examples>
442
+
443
+ <guidelines>
444
+ **What belongs in TESTING.md:**
445
+ - Test framework and runner configuration
446
+ - Test file location and naming patterns
447
+ - Test structure (describe/it, beforeEach patterns)
448
+ - Mocking approach and examples
449
+ - Fixture/factory patterns
450
+ - Coverage requirements
451
+ - How to run tests (commands)
452
+ - Common testing patterns in actual code
453
+
454
+ **What does NOT belong here:**
455
+ - Specific test cases (defer to actual test files)
456
+ - Technology choices (that's STACK.md)
457
+ - CI/CD setup (that's deployment docs)
458
+
459
+ **When filling this template:**
460
+ - Check package.json scripts for test commands
461
+ - Find test config file (jest.config.js, vitest.config.ts)
462
+ - Read 3-5 existing test files to identify patterns
463
+ - Look for test utilities in tests/ or test-utils/
464
+ - Check for coverage configuration
465
+ - Document actual patterns used, not ideal patterns
466
+
467
+ **Useful for phase planning when:**
468
+ - Adding new features (write matching tests)
469
+ - Refactoring (maintain test patterns)
470
+ - Fixing bugs (add regression tests)
471
+ - Understanding verification approach
472
+ - Setting up test infrastructure
473
+
474
+ **Analysis approach:**
475
+ - Check package.json for test framework and scripts
476
+ - Read test config file for coverage, setup
477
+ - Examine test file organization (collocated vs separate)
478
+ - Review 5 test files for patterns (mocking, structure, assertions)
479
+ - Look for test utilities, fixtures, factories
480
+ - Note any test types (unit, integration, e2e)
481
+ - Document commands for running tests
482
+ </guidelines>
@@ -0,0 +1,38 @@
1
+ {
2
+ "mode": "interactive",
3
+ "granularity": "standard",
4
+ "workflow": {
5
+ "research": true,
6
+ "plan_check": true,
7
+ "verifier": true,
8
+ "auto_advance": false,
9
+ "nyquist_validation": true,
10
+ "codereview": false
11
+ },
12
+ "planning": {
13
+ "commit_docs": true,
14
+ "search_gitignored": false
15
+ },
16
+ "parallelization": {
17
+ "enabled": true,
18
+ "plan_level": true,
19
+ "task_level": false,
20
+ "skip_checkpoints": true,
21
+ "max_concurrent_agents": 3,
22
+ "min_plans_for_parallel": 2
23
+ },
24
+ "gates": {
25
+ "confirm_project": true,
26
+ "confirm_phases": true,
27
+ "confirm_roadmap": true,
28
+ "confirm_breakdown": true,
29
+ "confirm_plan": true,
30
+ "execute_next_plan": true,
31
+ "issues_review": true,
32
+ "confirm_transition": true
33
+ },
34
+ "safety": {
35
+ "always_confirm_destructive": true,
36
+ "always_confirm_external_services": true
37
+ }
38
+ }