qualia-framework 2.6.0 → 3.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (328) hide show
  1. package/CLAUDE.md +63 -0
  2. package/README.md +108 -30
  3. package/agents/builder.md +110 -0
  4. package/agents/planner.md +186 -0
  5. package/agents/qa-browser.md +186 -0
  6. package/agents/verifier.md +369 -0
  7. package/bin/cli.js +691 -492
  8. package/bin/install.js +622 -0
  9. package/bin/qualia-ui.js +284 -0
  10. package/bin/state.js +824 -0
  11. package/bin/statusline.js +252 -0
  12. package/docs/erp-contract.md +161 -0
  13. package/guide.md +63 -0
  14. package/hooks/auto-update.js +117 -0
  15. package/hooks/block-env-edit.js +52 -0
  16. package/hooks/branch-guard.js +68 -0
  17. package/hooks/migration-guard.js +83 -0
  18. package/hooks/pre-compact.js +52 -0
  19. package/hooks/pre-deploy-gate.js +149 -0
  20. package/hooks/pre-push.js +53 -0
  21. package/hooks/session-start.js +126 -0
  22. package/package.json +30 -20
  23. package/rules/design-reference.md +179 -0
  24. package/rules/frontend.md +126 -0
  25. package/rules/infrastructure.md +87 -0
  26. package/skills/qualia/SKILL.md +88 -0
  27. package/skills/qualia-build/SKILL.md +115 -0
  28. package/skills/qualia-debug/SKILL.md +87 -0
  29. package/skills/qualia-design/SKILL.md +99 -0
  30. package/skills/qualia-handoff/SKILL.md +66 -0
  31. package/skills/qualia-help/SKILL.md +60 -0
  32. package/skills/qualia-idk/SKILL.md +8 -0
  33. package/skills/qualia-learn/SKILL.md +111 -0
  34. package/skills/qualia-new/SKILL.md +323 -0
  35. package/skills/qualia-pause/SKILL.md +63 -0
  36. package/skills/qualia-plan/SKILL.md +101 -0
  37. package/skills/qualia-polish/SKILL.md +207 -0
  38. package/skills/qualia-quick/SKILL.md +37 -0
  39. package/skills/qualia-report/SKILL.md +114 -0
  40. package/skills/qualia-resume/SKILL.md +49 -0
  41. package/skills/qualia-review/SKILL.md +161 -0
  42. package/skills/qualia-ship/SKILL.md +90 -0
  43. package/skills/qualia-skill-new/SKILL.md +167 -0
  44. package/skills/qualia-task/SKILL.md +91 -0
  45. package/skills/qualia-test/SKILL.md +134 -0
  46. package/skills/qualia-verify/SKILL.md +113 -0
  47. package/templates/DESIGN.md +475 -0
  48. package/templates/help.html +476 -0
  49. package/templates/plan.md +42 -0
  50. package/templates/project.md +22 -0
  51. package/templates/state.md +27 -0
  52. package/templates/tracking.json +20 -0
  53. package/tests/bin.test.sh +687 -0
  54. package/tests/hooks.test.sh +384 -0
  55. package/tests/runner.js +1956 -0
  56. package/tests/state.test.sh +713 -0
  57. package/tests/statusline.test.sh +243 -0
  58. package/bin/collect-metrics.sh +0 -62
  59. package/framework/.claudeignore +0 -51
  60. package/framework/CLAUDE.md +0 -51
  61. package/framework/MCP_SETUP.md +0 -229
  62. package/framework/agents/architecture-strategist.md +0 -53
  63. package/framework/agents/backend-agent.md +0 -150
  64. package/framework/agents/code-simplicity-reviewer.md +0 -86
  65. package/framework/agents/frontend-agent.md +0 -111
  66. package/framework/agents/kieran-typescript-reviewer.md +0 -96
  67. package/framework/agents/performance-oracle.md +0 -111
  68. package/framework/agents/qualia-codebase-mapper.md +0 -761
  69. package/framework/agents/qualia-debugger.md +0 -1204
  70. package/framework/agents/qualia-executor.md +0 -882
  71. package/framework/agents/qualia-integration-checker.md +0 -424
  72. package/framework/agents/qualia-phase-researcher.md +0 -457
  73. package/framework/agents/qualia-plan-checker.md +0 -700
  74. package/framework/agents/qualia-planner.md +0 -1245
  75. package/framework/agents/qualia-project-researcher.md +0 -603
  76. package/framework/agents/qualia-research-synthesizer.md +0 -200
  77. package/framework/agents/qualia-roadmapper.md +0 -606
  78. package/framework/agents/qualia-verifier.md +0 -686
  79. package/framework/agents/red-team-qa.md +0 -130
  80. package/framework/agents/security-auditor.md +0 -72
  81. package/framework/agents/team-orchestrator.md +0 -229
  82. package/framework/agents/teams/framework-audit-team.md +0 -66
  83. package/framework/agents/teams/full-stack-team.md +0 -48
  84. package/framework/agents/teams/optimize-team.md +0 -53
  85. package/framework/agents/teams/review-team.md +0 -70
  86. package/framework/agents/teams/ship-team.md +0 -86
  87. package/framework/agents/test-agent.md +0 -182
  88. package/framework/hooks/auto-format.sh +0 -54
  89. package/framework/hooks/block-env-edit.sh +0 -42
  90. package/framework/hooks/branch-guard.sh +0 -43
  91. package/framework/hooks/confirm-delete.sh +0 -59
  92. package/framework/hooks/migration-validate.sh +0 -77
  93. package/framework/hooks/notification-speak.sh +0 -16
  94. package/framework/hooks/pre-commit.sh +0 -100
  95. package/framework/hooks/pre-compact.sh +0 -56
  96. package/framework/hooks/pre-deploy-gate.sh +0 -160
  97. package/framework/hooks/qualia-colors.sh +0 -32
  98. package/framework/hooks/retention-cleanup.sh +0 -62
  99. package/framework/hooks/save-session-state.sh +0 -185
  100. package/framework/hooks/session-context-loader.sh +0 -96
  101. package/framework/hooks/session-learn.sh +0 -32
  102. package/framework/hooks/skill-announce.sh +0 -123
  103. package/framework/hooks/tool-error-announce.sh +0 -27
  104. package/framework/install.ps1 +0 -323
  105. package/framework/install.sh +0 -313
  106. package/framework/qualia-framework/VERSION +0 -1
  107. package/framework/qualia-framework/assets/qualia-logo.png +0 -0
  108. package/framework/qualia-framework/bin/collect-metrics.sh +0 -67
  109. package/framework/qualia-framework/bin/generate-report-docx.py +0 -429
  110. package/framework/qualia-framework/bin/qualia-tools.js +0 -2201
  111. package/framework/qualia-framework/bin/qualia-tools.test.js +0 -1054
  112. package/framework/qualia-framework/references/checkpoints.md +0 -775
  113. package/framework/qualia-framework/references/completion-checklists.md +0 -359
  114. package/framework/qualia-framework/references/continuation-format.md +0 -249
  115. package/framework/qualia-framework/references/continuation-prompt.md +0 -97
  116. package/framework/qualia-framework/references/decimal-phase-calculation.md +0 -65
  117. package/framework/qualia-framework/references/design-quality.md +0 -56
  118. package/framework/qualia-framework/references/employee-guide.md +0 -167
  119. package/framework/qualia-framework/references/git-integration.md +0 -254
  120. package/framework/qualia-framework/references/git-planning-commit.md +0 -50
  121. package/framework/qualia-framework/references/model-profile-resolution.md +0 -32
  122. package/framework/qualia-framework/references/model-profiles.md +0 -73
  123. package/framework/qualia-framework/references/phase-argument-parsing.md +0 -61
  124. package/framework/qualia-framework/references/planning-config.md +0 -195
  125. package/framework/qualia-framework/references/questioning.md +0 -141
  126. package/framework/qualia-framework/references/tdd.md +0 -263
  127. package/framework/qualia-framework/references/ui-brand.md +0 -160
  128. package/framework/qualia-framework/references/verification-patterns.md +0 -612
  129. package/framework/qualia-framework/templates/DEBUG.md +0 -159
  130. package/framework/qualia-framework/templates/DESIGN.md +0 -81
  131. package/framework/qualia-framework/templates/UAT.md +0 -247
  132. package/framework/qualia-framework/templates/codebase/architecture.md +0 -255
  133. package/framework/qualia-framework/templates/codebase/concerns.md +0 -310
  134. package/framework/qualia-framework/templates/codebase/conventions.md +0 -307
  135. package/framework/qualia-framework/templates/codebase/integrations.md +0 -280
  136. package/framework/qualia-framework/templates/codebase/stack.md +0 -186
  137. package/framework/qualia-framework/templates/codebase/structure.md +0 -285
  138. package/framework/qualia-framework/templates/codebase/testing.md +0 -480
  139. package/framework/qualia-framework/templates/config.json +0 -35
  140. package/framework/qualia-framework/templates/context.md +0 -283
  141. package/framework/qualia-framework/templates/continue-here.md +0 -78
  142. package/framework/qualia-framework/templates/debug-subagent-prompt.md +0 -91
  143. package/framework/qualia-framework/templates/discovery.md +0 -146
  144. package/framework/qualia-framework/templates/lab-notes.md +0 -16
  145. package/framework/qualia-framework/templates/milestone-archive.md +0 -123
  146. package/framework/qualia-framework/templates/milestone.md +0 -115
  147. package/framework/qualia-framework/templates/phase-prompt.md +0 -567
  148. package/framework/qualia-framework/templates/planner-subagent-prompt.md +0 -117
  149. package/framework/qualia-framework/templates/project.md +0 -184
  150. package/framework/qualia-framework/templates/projects/ai-agent.md +0 -156
  151. package/framework/qualia-framework/templates/projects/mobile-app.md +0 -181
  152. package/framework/qualia-framework/templates/projects/voice-agent.md +0 -134
  153. package/framework/qualia-framework/templates/projects/website.md +0 -137
  154. package/framework/qualia-framework/templates/requirements.md +0 -231
  155. package/framework/qualia-framework/templates/research-project/ARCHITECTURE.md +0 -204
  156. package/framework/qualia-framework/templates/research-project/FEATURES.md +0 -147
  157. package/framework/qualia-framework/templates/research-project/PITFALLS.md +0 -200
  158. package/framework/qualia-framework/templates/research-project/STACK.md +0 -120
  159. package/framework/qualia-framework/templates/research-project/SUMMARY.md +0 -170
  160. package/framework/qualia-framework/templates/research.md +0 -552
  161. package/framework/qualia-framework/templates/roadmap.md +0 -206
  162. package/framework/qualia-framework/templates/state.md +0 -179
  163. package/framework/qualia-framework/templates/summary-complex.md +0 -59
  164. package/framework/qualia-framework/templates/summary-minimal.md +0 -41
  165. package/framework/qualia-framework/templates/summary-standard.md +0 -48
  166. package/framework/qualia-framework/templates/summary.md +0 -246
  167. package/framework/qualia-framework/templates/user-setup.md +0 -311
  168. package/framework/qualia-framework/templates/verification-report.md +0 -322
  169. package/framework/qualia-framework/workflows/add-phase.md +0 -179
  170. package/framework/qualia-framework/workflows/add-todo.md +0 -157
  171. package/framework/qualia-framework/workflows/audit-milestone.md +0 -241
  172. package/framework/qualia-framework/workflows/check-todos.md +0 -176
  173. package/framework/qualia-framework/workflows/complete-milestone.md +0 -858
  174. package/framework/qualia-framework/workflows/diagnose-issues.md +0 -219
  175. package/framework/qualia-framework/workflows/discovery-phase.md +0 -289
  176. package/framework/qualia-framework/workflows/discuss-phase.md +0 -534
  177. package/framework/qualia-framework/workflows/execute-phase.md +0 -559
  178. package/framework/qualia-framework/workflows/execute-plan.md +0 -438
  179. package/framework/qualia-framework/workflows/help.md +0 -470
  180. package/framework/qualia-framework/workflows/insert-phase.md +0 -220
  181. package/framework/qualia-framework/workflows/list-phase-assumptions.md +0 -178
  182. package/framework/qualia-framework/workflows/map-codebase.md +0 -327
  183. package/framework/qualia-framework/workflows/new-milestone.md +0 -363
  184. package/framework/qualia-framework/workflows/new-project.md +0 -982
  185. package/framework/qualia-framework/workflows/pause-work.md +0 -122
  186. package/framework/qualia-framework/workflows/plan-milestone-gaps.md +0 -256
  187. package/framework/qualia-framework/workflows/plan-phase.md +0 -422
  188. package/framework/qualia-framework/workflows/progress.md +0 -389
  189. package/framework/qualia-framework/workflows/quick.md +0 -252
  190. package/framework/qualia-framework/workflows/remove-phase.md +0 -326
  191. package/framework/qualia-framework/workflows/research-phase.md +0 -74
  192. package/framework/qualia-framework/workflows/resume-project.md +0 -306
  193. package/framework/qualia-framework/workflows/set-profile.md +0 -80
  194. package/framework/qualia-framework/workflows/settings.md +0 -145
  195. package/framework/qualia-framework/workflows/transition.md +0 -556
  196. package/framework/qualia-framework/workflows/update.md +0 -197
  197. package/framework/qualia-framework/workflows/verify-phase.md +0 -195
  198. package/framework/qualia-framework/workflows/verify-work.md +0 -625
  199. package/framework/rules/context7.md +0 -14
  200. package/framework/rules/frontend.md +0 -33
  201. package/framework/rules/speed.md +0 -23
  202. package/framework/scripts/__pycache__/say.cpython-314.pyc +0 -0
  203. package/framework/scripts/apply-retention.sh +0 -120
  204. package/framework/scripts/bootstrap-pop-os.sh +0 -354
  205. package/framework/scripts/claude-voice +0 -13
  206. package/framework/scripts/cleanup.sh +0 -131
  207. package/framework/scripts/cowork-mode.sh +0 -141
  208. package/framework/scripts/generate-project-claude-md.sh +0 -153
  209. package/framework/scripts/load-test-webhook.js +0 -172
  210. package/framework/scripts/say.py +0 -236
  211. package/framework/scripts/showcase-video-recorder/ffmpeg-builder.js +0 -167
  212. package/framework/scripts/showcase-video-recorder/playwright-helpers.js +0 -216
  213. package/framework/scripts/speak.py +0 -55
  214. package/framework/scripts/speak.sh +0 -18
  215. package/framework/scripts/status.sh +0 -138
  216. package/framework/scripts/sync-to-framework.sh +0 -65
  217. package/framework/scripts/voice-hotkey.py +0 -227
  218. package/framework/scripts/voice-input.sh +0 -51
  219. package/framework/skills/animate/SKILL.md +0 -202
  220. package/framework/skills/bolder/SKILL.md +0 -144
  221. package/framework/skills/browser-qa/SKILL.md +0 -536
  222. package/framework/skills/clarify/SKILL.md +0 -179
  223. package/framework/skills/client-handoff/SKILL.md +0 -135
  224. package/framework/skills/collab-onboard/SKILL.md +0 -111
  225. package/framework/skills/colorize/SKILL.md +0 -170
  226. package/framework/skills/critique/SKILL.md +0 -126
  227. package/framework/skills/deep-research/SKILL.md +0 -240
  228. package/framework/skills/delight/SKILL.md +0 -329
  229. package/framework/skills/deploy/SKILL.md +0 -261
  230. package/framework/skills/deploy-verify/SKILL.md +0 -377
  231. package/framework/skills/deploy-verify/scripts/canary-check.sh +0 -206
  232. package/framework/skills/deploy-verify/scripts/check-console-errors.js +0 -147
  233. package/framework/skills/deploy-verify/scripts/check-cwv.js +0 -139
  234. package/framework/skills/deploy-verify/scripts/project-detect.sh +0 -84
  235. package/framework/skills/deploy-verify/scripts/verify.sh +0 -548
  236. package/framework/skills/design-quieter/SKILL.md +0 -130
  237. package/framework/skills/distill/SKILL.md +0 -149
  238. package/framework/skills/docs-lookup/SKILL.md +0 -79
  239. package/framework/skills/fcm-notifications/SKILL.md +0 -125
  240. package/framework/skills/financial-ledger/SKILL.md +0 -1039
  241. package/framework/skills/frontend-master/NOTICE.md +0 -4
  242. package/framework/skills/frontend-master/SKILL.md +0 -127
  243. package/framework/skills/frontend-master/reference/color-and-contrast.md +0 -132
  244. package/framework/skills/frontend-master/reference/interaction-design.md +0 -123
  245. package/framework/skills/frontend-master/reference/motion-design.md +0 -99
  246. package/framework/skills/frontend-master/reference/responsive-design.md +0 -114
  247. package/framework/skills/frontend-master/reference/spatial-design.md +0 -100
  248. package/framework/skills/frontend-master/reference/typography.md +0 -131
  249. package/framework/skills/frontend-master/reference/ux-writing.md +0 -107
  250. package/framework/skills/harden/SKILL.md +0 -357
  251. package/framework/skills/i18n-rtl/SKILL.md +0 -752
  252. package/framework/skills/learn/SKILL.md +0 -95
  253. package/framework/skills/memory/SKILL.md +0 -50
  254. package/framework/skills/mobile-expo/SKILL.md +0 -977
  255. package/framework/skills/mobile-expo/references/store-checklist.md +0 -550
  256. package/framework/skills/nestjs-backend/README.md +0 -73
  257. package/framework/skills/nestjs-backend/SKILL.md +0 -446
  258. package/framework/skills/nestjs-backend/references/templates.md +0 -1173
  259. package/framework/skills/normalize/SKILL.md +0 -79
  260. package/framework/skills/onboard/SKILL.md +0 -242
  261. package/framework/skills/openrouter-agent/SKILL.md +0 -922
  262. package/framework/skills/polish/SKILL.md +0 -209
  263. package/framework/skills/pr/SKILL.md +0 -66
  264. package/framework/skills/qualia/SKILL.md +0 -199
  265. package/framework/skills/qualia-add-todo/SKILL.md +0 -68
  266. package/framework/skills/qualia-audit-milestone/SKILL.md +0 -95
  267. package/framework/skills/qualia-check-todos/SKILL.md +0 -55
  268. package/framework/skills/qualia-complete-milestone/SKILL.md +0 -134
  269. package/framework/skills/qualia-debug/SKILL.md +0 -149
  270. package/framework/skills/qualia-design/SKILL.md +0 -203
  271. package/framework/skills/qualia-discuss-phase/SKILL.md +0 -72
  272. package/framework/skills/qualia-evolve/SKILL.md +0 -200
  273. package/framework/skills/qualia-execute-phase/SKILL.md +0 -89
  274. package/framework/skills/qualia-framework-audit/SKILL.md +0 -604
  275. package/framework/skills/qualia-guide/SKILL.md +0 -32
  276. package/framework/skills/qualia-help/SKILL.md +0 -114
  277. package/framework/skills/qualia-idk/SKILL.md +0 -352
  278. package/framework/skills/qualia-list-phase-assumptions/SKILL.md +0 -67
  279. package/framework/skills/qualia-new-milestone/SKILL.md +0 -72
  280. package/framework/skills/qualia-new-project/SKILL.md +0 -232
  281. package/framework/skills/qualia-optimize/SKILL.md +0 -417
  282. package/framework/skills/qualia-pause-work/SKILL.md +0 -96
  283. package/framework/skills/qualia-plan-milestone-gaps/SKILL.md +0 -57
  284. package/framework/skills/qualia-plan-phase/SKILL.md +0 -104
  285. package/framework/skills/qualia-production-check/SKILL.md +0 -0
  286. package/framework/skills/qualia-progress/SKILL.md +0 -53
  287. package/framework/skills/qualia-quick/SKILL.md +0 -89
  288. package/framework/skills/qualia-report/SKILL.md +0 -166
  289. package/framework/skills/qualia-research-phase/SKILL.md +0 -88
  290. package/framework/skills/qualia-resume-work/SKILL.md +0 -62
  291. package/framework/skills/qualia-review/SKILL.md +0 -263
  292. package/framework/skills/qualia-start/SKILL.md +0 -161
  293. package/framework/skills/qualia-verify-work/SKILL.md +0 -132
  294. package/framework/skills/rag/SKILL.md +0 -750
  295. package/framework/skills/responsive/SKILL.md +0 -231
  296. package/framework/skills/retro/SKILL.md +0 -284
  297. package/framework/skills/sakani-conventions/SKILL.md +0 -136
  298. package/framework/skills/sakani-conventions/evals/evals.json +0 -23
  299. package/framework/skills/sakani-conventions/references/entities.md +0 -365
  300. package/framework/skills/sakani-conventions/references/error-codes.md +0 -95
  301. package/framework/skills/seo-master/SKILL.md +0 -490
  302. package/framework/skills/seo-master/references/checklist.md +0 -199
  303. package/framework/skills/seo-master/references/structured-data.md +0 -609
  304. package/framework/skills/ship/SKILL.md +0 -239
  305. package/framework/skills/stack-researcher/SKILL.md +0 -215
  306. package/framework/skills/status/SKILL.md +0 -154
  307. package/framework/skills/status/scripts/health-check.sh +0 -562
  308. package/framework/skills/subscription-payments/SKILL.md +0 -250
  309. package/framework/skills/supabase/SKILL.md +0 -973
  310. package/framework/skills/supabase/references/templates.md +0 -159
  311. package/framework/skills/team/SKILL.md +0 -67
  312. package/framework/skills/test-runner/SKILL.md +0 -202
  313. package/framework/skills/voice-agent/SKILL.md +0 -1312
  314. package/framework/skills/zoho-workflow/SKILL.md +0 -51
  315. package/framework/statusline-command.sh +0 -117
  316. package/framework/teams/default/inboxes/plan-04.json +0 -9
  317. package/framework/teams/review-team.md +0 -75
  318. package/framework/teams/ship-team.md +0 -86
  319. package/profiles/fawzi.json +0 -16
  320. package/profiles/hasan.json +0 -16
  321. package/profiles/moayad.json +0 -16
  322. package/templates/CLAUDE-owner.md +0 -52
  323. package/templates/CLAUDE.md.hbs +0 -58
  324. package/templates/env.claude.template +0 -12
  325. package/templates/settings.json +0 -172
  326. package/uninstall.sh +0 -90
  327. /package/{framework/rules → rules}/deployment.md +0 -0
  328. /package/{framework/rules → rules}/security.md +0 -0
@@ -1,480 +0,0 @@
1
- # Testing Patterns Template
2
-
3
- Template for `.planning/codebase/TESTING.md` - captures test framework and patterns.
4
-
5
- **Purpose:** Document how tests are written and run. Guide for adding tests that match existing patterns.
6
-
7
- ---
8
-
9
- ## File Template
10
-
11
- ```markdown
12
- # Testing Patterns
13
-
14
- **Analysis Date:** [YYYY-MM-DD]
15
-
16
- ## Test Framework
17
-
18
- **Runner:**
19
- - [Framework: e.g., "Jest 29.x", "Vitest 1.x"]
20
- - [Config: e.g., "jest.config.js in project root"]
21
-
22
- **Assertion Library:**
23
- - [Library: e.g., "built-in expect", "chai"]
24
- - [Matchers: e.g., "toBe, toEqual, toThrow"]
25
-
26
- **Run Commands:**
27
- ```bash
28
- [e.g., "npm test" or "npm run test"] # Run all tests
29
- [e.g., "npm test -- --watch"] # Watch mode
30
- [e.g., "npm test -- path/to/file.test.ts"] # Single file
31
- [e.g., "npm run test:coverage"] # Coverage report
32
- ```
33
-
34
- ## Test File Organization
35
-
36
- **Location:**
37
- - [Pattern: e.g., "*.test.ts alongside source files"]
38
- - [Alternative: e.g., "__tests__/ directory" or "separate tests/ tree"]
39
-
40
- **Naming:**
41
- - [Unit tests: e.g., "module-name.test.ts"]
42
- - [Integration: e.g., "feature-name.integration.test.ts"]
43
- - [E2E: e.g., "user-flow.e2e.test.ts"]
44
-
45
- **Structure:**
46
- ```
47
- [Show actual directory pattern, e.g.:
48
- src/
49
- lib/
50
- utils.ts
51
- utils.test.ts
52
- services/
53
- user-service.ts
54
- user-service.test.ts
55
- ]
56
- ```
57
-
58
- ## Test Structure
59
-
60
- **Suite Organization:**
61
- ```typescript
62
- [Show actual pattern used, e.g.:
63
-
64
- describe('ModuleName', () => {
65
- describe('functionName', () => {
66
- it('should handle success case', () => {
67
- // arrange
68
- // act
69
- // assert
70
- });
71
-
72
- it('should handle error case', () => {
73
- // test code
74
- });
75
- });
76
- });
77
- ]
78
- ```
79
-
80
- **Patterns:**
81
- - [Setup: e.g., "beforeEach for shared setup, avoid beforeAll"]
82
- - [Teardown: e.g., "afterEach to clean up, restore mocks"]
83
- - [Structure: e.g., "arrange/act/assert pattern required"]
84
-
85
- ## Mocking
86
-
87
- **Framework:**
88
- - [Tool: e.g., "Jest built-in mocking", "Vitest vi", "Sinon"]
89
- - [Import mocking: e.g., "vi.mock() at top of file"]
90
-
91
- **Patterns:**
92
- ```typescript
93
- [Show actual mocking pattern, e.g.:
94
-
95
- // Mock external dependency
96
- vi.mock('./external-service', () => ({
97
- fetchData: vi.fn()
98
- }));
99
-
100
- // Mock in test
101
- const mockFetch = vi.mocked(fetchData);
102
- mockFetch.mockResolvedValue({ data: 'test' });
103
- ]
104
- ```
105
-
106
- **What to Mock:**
107
- - [e.g., "External APIs, file system, database"]
108
- - [e.g., "Time/dates (use vi.useFakeTimers)"]
109
- - [e.g., "Network calls (use mock fetch)"]
110
-
111
- **What NOT to Mock:**
112
- - [e.g., "Pure functions, utilities"]
113
- - [e.g., "Internal business logic"]
114
-
115
- ## Fixtures and Factories
116
-
117
- **Test Data:**
118
- ```typescript
119
- [Show pattern for creating test data, e.g.:
120
-
121
- // Factory pattern
122
- function createTestUser(overrides?: Partial<User>): User {
123
- return {
124
- id: 'test-id',
125
- name: 'Test User',
126
- email: 'test@example.com',
127
- ...overrides
128
- };
129
- }
130
-
131
- // Fixture file
132
- // tests/fixtures/users.ts
133
- export const mockUsers = [/* ... */];
134
- ]
135
- ```
136
-
137
- **Location:**
138
- - [e.g., "tests/fixtures/ for shared fixtures"]
139
- - [e.g., "factory functions in test file or tests/factories/"]
140
-
141
- ## Coverage
142
-
143
- **Requirements:**
144
- - [Target: e.g., "80% line coverage", "no specific target"]
145
- - [Enforcement: e.g., "CI blocks <80%", "coverage for awareness only"]
146
-
147
- **Configuration:**
148
- - [Tool: e.g., "built-in coverage via --coverage flag"]
149
- - [Exclusions: e.g., "exclude *.test.ts, config files"]
150
-
151
- **View Coverage:**
152
- ```bash
153
- [e.g., "npm run test:coverage"]
154
- [e.g., "open coverage/index.html"]
155
- ```
156
-
157
- ## Test Types
158
-
159
- **Unit Tests:**
160
- - [Scope: e.g., "test single function/class in isolation"]
161
- - [Mocking: e.g., "mock all external dependencies"]
162
- - [Speed: e.g., "must run in <1s per test"]
163
-
164
- **Integration Tests:**
165
- - [Scope: e.g., "test multiple modules together"]
166
- - [Mocking: e.g., "mock external services, use real internal modules"]
167
- - [Setup: e.g., "use test database, seed data"]
168
-
169
- **E2E Tests:**
170
- - [Framework: e.g., "Playwright for E2E"]
171
- - [Scope: e.g., "test full user flows"]
172
- - [Location: e.g., "e2e/ directory separate from unit tests"]
173
-
174
- ## Common Patterns
175
-
176
- **Async Testing:**
177
- ```typescript
178
- [Show pattern, e.g.:
179
-
180
- it('should handle async operation', async () => {
181
- const result = await asyncFunction();
182
- expect(result).toBe('expected');
183
- });
184
- ]
185
- ```
186
-
187
- **Error Testing:**
188
- ```typescript
189
- [Show pattern, e.g.:
190
-
191
- it('should throw on invalid input', () => {
192
- expect(() => functionCall()).toThrow('error message');
193
- });
194
-
195
- // Async error
196
- it('should reject on failure', async () => {
197
- await expect(asyncCall()).rejects.toThrow('error message');
198
- });
199
- ]
200
- ```
201
-
202
- **Snapshot Testing:**
203
- - [Usage: e.g., "for React components only" or "not used"]
204
- - [Location: e.g., "__snapshots__/ directory"]
205
-
206
- ---
207
-
208
- *Testing analysis: [date]*
209
- *Update when test patterns change*
210
- ```
211
-
212
- <good_examples>
213
- ```markdown
214
- # Testing Patterns
215
-
216
- **Analysis Date:** 2025-01-20
217
-
218
- ## Test Framework
219
-
220
- **Runner:**
221
- - Vitest 1.0.4
222
- - Config: vitest.config.ts in project root
223
-
224
- **Assertion Library:**
225
- - Vitest built-in expect
226
- - Matchers: toBe, toEqual, toThrow, toMatchObject
227
-
228
- **Run Commands:**
229
- ```bash
230
- npm test # Run all tests
231
- npm test -- --watch # Watch mode
232
- npm test -- path/to/file.test.ts # Single file
233
- npm run test:coverage # Coverage report
234
- ```
235
-
236
- ## Test File Organization
237
-
238
- **Location:**
239
- - *.test.ts alongside source files
240
- - No separate tests/ directory
241
-
242
- **Naming:**
243
- - unit-name.test.ts for all tests
244
- - No distinction between unit/integration in filename
245
-
246
- **Structure:**
247
- ```
248
- src/
249
- lib/
250
- parser.ts
251
- parser.test.ts
252
- services/
253
- install-service.ts
254
- install-service.test.ts
255
- bin/
256
- install.ts
257
- (no test - integration tested via CLI)
258
- ```
259
-
260
- ## Test Structure
261
-
262
- **Suite Organization:**
263
- ```typescript
264
- import { describe, it, expect, beforeEach, afterEach, vi } from 'vitest';
265
-
266
- describe('ModuleName', () => {
267
- describe('functionName', () => {
268
- beforeEach(() => {
269
- // reset state
270
- });
271
-
272
- it('should handle valid input', () => {
273
- // arrange
274
- const input = createTestInput();
275
-
276
- // act
277
- const result = functionName(input);
278
-
279
- // assert
280
- expect(result).toEqual(expectedOutput);
281
- });
282
-
283
- it('should throw on invalid input', () => {
284
- expect(() => functionName(null)).toThrow('Invalid input');
285
- });
286
- });
287
- });
288
- ```
289
-
290
- **Patterns:**
291
- - Use beforeEach for per-test setup, avoid beforeAll
292
- - Use afterEach to restore mocks: vi.restoreAllMocks()
293
- - Explicit arrange/act/assert comments in complex tests
294
- - One assertion focus per test (but multiple expects OK)
295
-
296
- ## Mocking
297
-
298
- **Framework:**
299
- - Vitest built-in mocking (vi)
300
- - Module mocking via vi.mock() at top of test file
301
-
302
- **Patterns:**
303
- ```typescript
304
- import { vi } from 'vitest';
305
- import { externalFunction } from './external';
306
-
307
- // Mock module
308
- vi.mock('./external', () => ({
309
- externalFunction: vi.fn()
310
- }));
311
-
312
- describe('test suite', () => {
313
- it('mocks function', () => {
314
- const mockFn = vi.mocked(externalFunction);
315
- mockFn.mockReturnValue('mocked result');
316
-
317
- // test code using mocked function
318
-
319
- expect(mockFn).toHaveBeenCalledWith('expected arg');
320
- });
321
- });
322
- ```
323
-
324
- **What to Mock:**
325
- - File system operations (fs-extra)
326
- - Child process execution (child_process.exec)
327
- - External API calls
328
- - Environment variables (process.env)
329
-
330
- **What NOT to Mock:**
331
- - Internal pure functions
332
- - Simple utilities (string manipulation, array helpers)
333
- - TypeScript types
334
-
335
- ## Fixtures and Factories
336
-
337
- **Test Data:**
338
- ```typescript
339
- // Factory functions in test file
340
- function createTestConfig(overrides?: Partial<Config>): Config {
341
- return {
342
- targetDir: '/tmp/test',
343
- global: false,
344
- ...overrides
345
- };
346
- }
347
-
348
- // Shared fixtures in tests/fixtures/
349
- // tests/fixtures/sample-command.md
350
- export const sampleCommand = `---
351
- description: Test command
352
- ---
353
- Content here`;
354
- ```
355
-
356
- **Location:**
357
- - Factory functions: define in test file near usage
358
- - Shared fixtures: tests/fixtures/ (for multi-file test data)
359
- - Mock data: inline in test when simple, factory when complex
360
-
361
- ## Coverage
362
-
363
- **Requirements:**
364
- - No enforced coverage target
365
- - Coverage tracked for awareness
366
- - Focus on critical paths (parsers, service logic)
367
-
368
- **Configuration:**
369
- - Vitest coverage via c8 (built-in)
370
- - Excludes: *.test.ts, bin/install.ts, config files
371
-
372
- **View Coverage:**
373
- ```bash
374
- npm run test:coverage
375
- open coverage/index.html
376
- ```
377
-
378
- ## Test Types
379
-
380
- **Unit Tests:**
381
- - Test single function in isolation
382
- - Mock all external dependencies (fs, child_process)
383
- - Fast: each test <100ms
384
- - Examples: parser.test.ts, validator.test.ts
385
-
386
- **Integration Tests:**
387
- - Test multiple modules together
388
- - Mock only external boundaries (file system, process)
389
- - Examples: install-service.test.ts (tests service + parser)
390
-
391
- **E2E Tests:**
392
- - Not currently used
393
- - CLI integration tested manually
394
-
395
- ## Common Patterns
396
-
397
- **Async Testing:**
398
- ```typescript
399
- it('should handle async operation', async () => {
400
- const result = await asyncFunction();
401
- expect(result).toBe('expected');
402
- });
403
- ```
404
-
405
- **Error Testing:**
406
- ```typescript
407
- it('should throw on invalid input', () => {
408
- expect(() => parse(null)).toThrow('Cannot parse null');
409
- });
410
-
411
- // Async error
412
- it('should reject on file not found', async () => {
413
- await expect(readConfig('invalid.txt')).rejects.toThrow('ENOENT');
414
- });
415
- ```
416
-
417
- **File System Mocking:**
418
- ```typescript
419
- import { vi } from 'vitest';
420
- import * as fs from 'fs-extra';
421
-
422
- vi.mock('fs-extra');
423
-
424
- it('mocks file system', () => {
425
- vi.mocked(fs.readFile).mockResolvedValue('file content');
426
- // test code
427
- });
428
- ```
429
-
430
- **Snapshot Testing:**
431
- - Not used in this codebase
432
- - Prefer explicit assertions for clarity
433
-
434
- ---
435
-
436
- *Testing analysis: 2025-01-20*
437
- *Update when test patterns change*
438
- ```
439
- </good_examples>
440
-
441
- <guidelines>
442
- **What belongs in TESTING.md:**
443
- - Test framework and runner configuration
444
- - Test file location and naming patterns
445
- - Test structure (describe/it, beforeEach patterns)
446
- - Mocking approach and examples
447
- - Fixture/factory patterns
448
- - Coverage requirements
449
- - How to run tests (commands)
450
- - Common testing patterns in actual code
451
-
452
- **What does NOT belong here:**
453
- - Specific test cases (defer to actual test files)
454
- - Technology choices (that's STACK.md)
455
- - CI/CD setup (that's deployment docs)
456
-
457
- **When filling this template:**
458
- - Check package.json scripts for test commands
459
- - Find test config file (jest.config.js, vitest.config.ts)
460
- - Read 3-5 existing test files to identify patterns
461
- - Look for test utilities in tests/ or test-utils/
462
- - Check for coverage configuration
463
- - Document actual patterns used, not ideal patterns
464
-
465
- **Useful for phase planning when:**
466
- - Adding new features (write matching tests)
467
- - Refactoring (maintain test patterns)
468
- - Fixing bugs (add regression tests)
469
- - Understanding verification approach
470
- - Setting up test infrastructure
471
-
472
- **Analysis approach:**
473
- - Check package.json for test framework and scripts
474
- - Read test config file for coverage, setup
475
- - Examine test file organization (collocated vs separate)
476
- - Review 5 test files for patterns (mocking, structure, assertions)
477
- - Look for test utilities, fixtures, factories
478
- - Note any test types (unit, integration, e2e)
479
- - Document commands for running tests
480
- </guidelines>
@@ -1,35 +0,0 @@
1
- {
2
- "mode": "interactive",
3
- "depth": "standard",
4
- "workflow": {
5
- "research": true,
6
- "plan_check": true,
7
- "verifier": true
8
- },
9
- "planning": {
10
- "commit_docs": true,
11
- "search_gitignored": false
12
- },
13
- "parallelization": {
14
- "enabled": true,
15
- "plan_level": true,
16
- "task_level": false,
17
- "skip_checkpoints": true,
18
- "max_concurrent_agents": 3,
19
- "min_plans_for_parallel": 2
20
- },
21
- "gates": {
22
- "confirm_project": true,
23
- "confirm_phases": true,
24
- "confirm_roadmap": true,
25
- "confirm_breakdown": true,
26
- "confirm_plan": true,
27
- "execute_next_plan": true,
28
- "issues_review": true,
29
- "confirm_transition": true
30
- },
31
- "safety": {
32
- "always_confirm_destructive": true,
33
- "always_confirm_external_services": true
34
- }
35
- }