qualia-framework 2.5.1 → 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 (327) 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 +706 -417
  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 +31 -17
  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/{framework/rules → rules}/deployment.md +0 -0
  327. /package/{framework/rules → rules}/security.md +0 -0
@@ -1,552 +0,0 @@
1
- # Research Template
2
-
3
- Template for `.planning/phases/XX-name/{phase}-RESEARCH.md` - comprehensive ecosystem research before planning.
4
-
5
- **Purpose:** Document what Claude needs to know to implement a phase well - not just "which library" but "how do experts build this."
6
-
7
- ---
8
-
9
- ## File Template
10
-
11
- ```markdown
12
- # Phase [X]: [Name] - Research
13
-
14
- **Researched:** [date]
15
- **Domain:** [primary technology/problem domain]
16
- **Confidence:** [HIGH/MEDIUM/LOW]
17
-
18
- <user_constraints>
19
- ## User Constraints (from CONTEXT.md)
20
-
21
- **CRITICAL:** If CONTEXT.md exists from /qualia:discuss-phase, copy locked decisions here verbatim. These MUST be honored by the planner.
22
-
23
- ### Locked Decisions
24
- [Copy from CONTEXT.md `## Decisions` section - these are NON-NEGOTIABLE]
25
- - [Decision 1]
26
- - [Decision 2]
27
-
28
- ### Claude's Discretion
29
- [Copy from CONTEXT.md - areas where researcher/planner can choose]
30
- - [Area 1]
31
- - [Area 2]
32
-
33
- ### Deferred Ideas (OUT OF SCOPE)
34
- [Copy from CONTEXT.md - do NOT research or plan these]
35
- - [Deferred 1]
36
- - [Deferred 2]
37
-
38
- **If no CONTEXT.md exists:** Write "No user constraints - all decisions at Claude's discretion"
39
- </user_constraints>
40
-
41
- <research_summary>
42
- ## Summary
43
-
44
- [2-3 paragraph executive summary]
45
- - What was researched
46
- - What the standard approach is
47
- - Key recommendations
48
-
49
- **Primary recommendation:** [one-liner actionable guidance]
50
- </research_summary>
51
-
52
- <standard_stack>
53
- ## Standard Stack
54
-
55
- The established libraries/tools for this domain:
56
-
57
- ### Core
58
- | Library | Version | Purpose | Why Standard |
59
- |---------|---------|---------|--------------|
60
- | [name] | [ver] | [what it does] | [why experts use it] |
61
- | [name] | [ver] | [what it does] | [why experts use it] |
62
-
63
- ### Supporting
64
- | Library | Version | Purpose | When to Use |
65
- |---------|---------|---------|-------------|
66
- | [name] | [ver] | [what it does] | [use case] |
67
- | [name] | [ver] | [what it does] | [use case] |
68
-
69
- ### Alternatives Considered
70
- | Instead of | Could Use | Tradeoff |
71
- |------------|-----------|----------|
72
- | [standard] | [alternative] | [when alternative makes sense] |
73
-
74
- **Installation:**
75
- ```bash
76
- npm install [packages]
77
- # or
78
- yarn add [packages]
79
- ```
80
- </standard_stack>
81
-
82
- <architecture_patterns>
83
- ## Architecture Patterns
84
-
85
- ### Recommended Project Structure
86
- ```
87
- src/
88
- ├── [folder]/ # [purpose]
89
- ├── [folder]/ # [purpose]
90
- └── [folder]/ # [purpose]
91
- ```
92
-
93
- ### Pattern 1: [Pattern Name]
94
- **What:** [description]
95
- **When to use:** [conditions]
96
- **Example:**
97
- ```typescript
98
- // [code example from Context7/official docs]
99
- ```
100
-
101
- ### Pattern 2: [Pattern Name]
102
- **What:** [description]
103
- **When to use:** [conditions]
104
- **Example:**
105
- ```typescript
106
- // [code example]
107
- ```
108
-
109
- ### Anti-Patterns to Avoid
110
- - **[Anti-pattern]:** [why it's bad, what to do instead]
111
- - **[Anti-pattern]:** [why it's bad, what to do instead]
112
- </architecture_patterns>
113
-
114
- <dont_hand_roll>
115
- ## Don't Hand-Roll
116
-
117
- Problems that look simple but have existing solutions:
118
-
119
- | Problem | Don't Build | Use Instead | Why |
120
- |---------|-------------|-------------|-----|
121
- | [problem] | [what you'd build] | [library] | [edge cases, complexity] |
122
- | [problem] | [what you'd build] | [library] | [edge cases, complexity] |
123
- | [problem] | [what you'd build] | [library] | [edge cases, complexity] |
124
-
125
- **Key insight:** [why custom solutions are worse in this domain]
126
- </dont_hand_roll>
127
-
128
- <common_pitfalls>
129
- ## Common Pitfalls
130
-
131
- ### Pitfall 1: [Name]
132
- **What goes wrong:** [description]
133
- **Why it happens:** [root cause]
134
- **How to avoid:** [prevention strategy]
135
- **Warning signs:** [how to detect early]
136
-
137
- ### Pitfall 2: [Name]
138
- **What goes wrong:** [description]
139
- **Why it happens:** [root cause]
140
- **How to avoid:** [prevention strategy]
141
- **Warning signs:** [how to detect early]
142
-
143
- ### Pitfall 3: [Name]
144
- **What goes wrong:** [description]
145
- **Why it happens:** [root cause]
146
- **How to avoid:** [prevention strategy]
147
- **Warning signs:** [how to detect early]
148
- </common_pitfalls>
149
-
150
- <code_examples>
151
- ## Code Examples
152
-
153
- Verified patterns from official sources:
154
-
155
- ### [Common Operation 1]
156
- ```typescript
157
- // Source: [Context7/official docs URL]
158
- [code]
159
- ```
160
-
161
- ### [Common Operation 2]
162
- ```typescript
163
- // Source: [Context7/official docs URL]
164
- [code]
165
- ```
166
-
167
- ### [Common Operation 3]
168
- ```typescript
169
- // Source: [Context7/official docs URL]
170
- [code]
171
- ```
172
- </code_examples>
173
-
174
- <sota_updates>
175
- ## State of the Art (2024-2025)
176
-
177
- What's changed recently:
178
-
179
- | Old Approach | Current Approach | When Changed | Impact |
180
- |--------------|------------------|--------------|--------|
181
- | [old] | [new] | [date/version] | [what it means for implementation] |
182
-
183
- **New tools/patterns to consider:**
184
- - [Tool/Pattern]: [what it enables, when to use]
185
- - [Tool/Pattern]: [what it enables, when to use]
186
-
187
- **Deprecated/outdated:**
188
- - [Thing]: [why it's outdated, what replaced it]
189
- </sota_updates>
190
-
191
- <open_questions>
192
- ## Open Questions
193
-
194
- Things that couldn't be fully resolved:
195
-
196
- 1. **[Question]**
197
- - What we know: [partial info]
198
- - What's unclear: [the gap]
199
- - Recommendation: [how to handle during planning/execution]
200
-
201
- 2. **[Question]**
202
- - What we know: [partial info]
203
- - What's unclear: [the gap]
204
- - Recommendation: [how to handle]
205
- </open_questions>
206
-
207
- <sources>
208
- ## Sources
209
-
210
- ### Primary (HIGH confidence)
211
- - [Context7 library ID] - [topics fetched]
212
- - [Official docs URL] - [what was checked]
213
-
214
- ### Secondary (MEDIUM confidence)
215
- - [WebSearch verified with official source] - [finding + verification]
216
-
217
- ### Tertiary (LOW confidence - needs validation)
218
- - [WebSearch only] - [finding, marked for validation during implementation]
219
- </sources>
220
-
221
- <metadata>
222
- ## Metadata
223
-
224
- **Research scope:**
225
- - Core technology: [what]
226
- - Ecosystem: [libraries explored]
227
- - Patterns: [patterns researched]
228
- - Pitfalls: [areas checked]
229
-
230
- **Confidence breakdown:**
231
- - Standard stack: [HIGH/MEDIUM/LOW] - [reason]
232
- - Architecture: [HIGH/MEDIUM/LOW] - [reason]
233
- - Pitfalls: [HIGH/MEDIUM/LOW] - [reason]
234
- - Code examples: [HIGH/MEDIUM/LOW] - [reason]
235
-
236
- **Research date:** [date]
237
- **Valid until:** [estimate - 30 days for stable tech, 7 days for fast-moving]
238
- </metadata>
239
-
240
- ---
241
-
242
- *Phase: XX-name*
243
- *Research completed: [date]*
244
- *Ready for planning: [yes/no]*
245
- ```
246
-
247
- ---
248
-
249
- ## Good Example
250
-
251
- ```markdown
252
- # Phase 3: 3D City Driving - Research
253
-
254
- **Researched:** 2025-01-20
255
- **Domain:** Three.js 3D web game with driving mechanics
256
- **Confidence:** HIGH
257
-
258
- <research_summary>
259
- ## Summary
260
-
261
- Researched the Three.js ecosystem for building a 3D city driving game. The standard approach uses Three.js with React Three Fiber for component architecture, Rapier for physics, and drei for common helpers.
262
-
263
- Key finding: Don't hand-roll physics or collision detection. Rapier (via @react-three/rapier) handles vehicle physics, terrain collision, and city object interactions efficiently. Custom physics code leads to bugs and performance issues.
264
-
265
- **Primary recommendation:** Use R3F + Rapier + drei stack. Start with vehicle controller from drei, add Rapier vehicle physics, build city with instanced meshes for performance.
266
- </research_summary>
267
-
268
- <standard_stack>
269
- ## Standard Stack
270
-
271
- ### Core
272
- | Library | Version | Purpose | Why Standard |
273
- |---------|---------|---------|--------------|
274
- | three | 0.160.0 | 3D rendering | The standard for web 3D |
275
- | @react-three/fiber | 8.15.0 | React renderer for Three.js | Declarative 3D, better DX |
276
- | @react-three/drei | 9.92.0 | Helpers and abstractions | Solves common problems |
277
- | @react-three/rapier | 1.2.1 | Physics engine bindings | Best physics for R3F |
278
-
279
- ### Supporting
280
- | Library | Version | Purpose | When to Use |
281
- |---------|---------|---------|-------------|
282
- | @react-three/postprocessing | 2.16.0 | Visual effects | Bloom, DOF, motion blur |
283
- | leva | 0.9.35 | Debug UI | Tweaking parameters |
284
- | zustand | 4.4.7 | State management | Game state, UI state |
285
- | use-sound | 4.0.1 | Audio | Engine sounds, ambient |
286
-
287
- ### Alternatives Considered
288
- | Instead of | Could Use | Tradeoff |
289
- |------------|-----------|----------|
290
- | Rapier | Cannon.js | Cannon simpler but less performant for vehicles |
291
- | R3F | Vanilla Three | Vanilla if no React, but R3F DX is much better |
292
- | drei | Custom helpers | drei is battle-tested, don't reinvent |
293
-
294
- **Installation:**
295
- ```bash
296
- npm install three @react-three/fiber @react-three/drei @react-three/rapier zustand
297
- ```
298
- </standard_stack>
299
-
300
- <architecture_patterns>
301
- ## Architecture Patterns
302
-
303
- ### Recommended Project Structure
304
- ```
305
- src/
306
- ├── components/
307
- │ ├── Vehicle/ # Player car with physics
308
- │ ├── City/ # City generation and buildings
309
- │ ├── Road/ # Road network
310
- │ └── Environment/ # Sky, lighting, fog
311
- ├── hooks/
312
- │ ├── useVehicleControls.ts
313
- │ └── useGameState.ts
314
- ├── stores/
315
- │ └── gameStore.ts # Zustand state
316
- └── utils/
317
- └── cityGenerator.ts # Procedural generation helpers
318
- ```
319
-
320
- ### Pattern 1: Vehicle with Rapier Physics
321
- **What:** Use RigidBody with vehicle-specific settings, not custom physics
322
- **When to use:** Any ground vehicle
323
- **Example:**
324
- ```typescript
325
- // Source: @react-three/rapier docs
326
- import { RigidBody, useRapier } from '@react-three/rapier'
327
-
328
- function Vehicle() {
329
- const rigidBody = useRef()
330
-
331
- return (
332
- <RigidBody
333
- ref={rigidBody}
334
- type="dynamic"
335
- colliders="hull"
336
- mass={1500}
337
- linearDamping={0.5}
338
- angularDamping={0.5}
339
- >
340
- <mesh>
341
- <boxGeometry args={[2, 1, 4]} />
342
- <meshStandardMaterial />
343
- </mesh>
344
- </RigidBody>
345
- )
346
- }
347
- ```
348
-
349
- ### Pattern 2: Instanced Meshes for City
350
- **What:** Use InstancedMesh for repeated objects (buildings, trees, props)
351
- **When to use:** >100 similar objects
352
- **Example:**
353
- ```typescript
354
- // Source: drei docs
355
- import { Instances, Instance } from '@react-three/drei'
356
-
357
- function Buildings({ positions }) {
358
- return (
359
- <Instances limit={1000}>
360
- <boxGeometry />
361
- <meshStandardMaterial />
362
- {positions.map((pos, i) => (
363
- <Instance key={i} position={pos} scale={[1, Math.random() * 5 + 1, 1]} />
364
- ))}
365
- </Instances>
366
- )
367
- }
368
- ```
369
-
370
- ### Anti-Patterns to Avoid
371
- - **Creating meshes in render loop:** Create once, update transforms only
372
- - **Not using InstancedMesh:** Individual meshes for buildings kills performance
373
- - **Custom physics math:** Rapier handles it better, every time
374
- </architecture_patterns>
375
-
376
- <dont_hand_roll>
377
- ## Don't Hand-Roll
378
-
379
- | Problem | Don't Build | Use Instead | Why |
380
- |---------|-------------|-------------|-----|
381
- | Vehicle physics | Custom velocity/acceleration | Rapier RigidBody | Wheel friction, suspension, collisions are complex |
382
- | Collision detection | Raycasting everything | Rapier colliders | Performance, edge cases, tunneling |
383
- | Camera follow | Manual lerp | drei CameraControls or custom with useFrame | Smooth interpolation, bounds |
384
- | City generation | Pure random placement | Grid-based with noise for variation | Random looks wrong, grid is predictable |
385
- | LOD | Manual distance checks | drei <Detailed> | Handles transitions, hysteresis |
386
-
387
- **Key insight:** 3D game development has 40+ years of solved problems. Rapier implements proper physics simulation. drei implements proper 3D helpers. Fighting these leads to bugs that look like "game feel" issues but are actually physics edge cases.
388
- </dont_hand_roll>
389
-
390
- <common_pitfalls>
391
- ## Common Pitfalls
392
-
393
- ### Pitfall 1: Physics Tunneling
394
- **What goes wrong:** Fast objects pass through walls
395
- **Why it happens:** Default physics step too large for velocity
396
- **How to avoid:** Use CCD (Continuous Collision Detection) in Rapier
397
- **Warning signs:** Objects randomly appearing outside buildings
398
-
399
- ### Pitfall 2: Performance Death by Draw Calls
400
- **What goes wrong:** Game stutters with many buildings
401
- **Why it happens:** Each mesh = 1 draw call, hundreds of buildings = hundreds of calls
402
- **How to avoid:** InstancedMesh for similar objects, merge static geometry
403
- **Warning signs:** GPU bound, low FPS despite simple scene
404
-
405
- ### Pitfall 3: Vehicle "Floaty" Feel
406
- **What goes wrong:** Car doesn't feel grounded
407
- **Why it happens:** Missing proper wheel/suspension simulation
408
- **How to avoid:** Use Rapier vehicle controller or tune mass/damping carefully
409
- **Warning signs:** Car bounces oddly, doesn't grip corners
410
- </common_pitfalls>
411
-
412
- <code_examples>
413
- ## Code Examples
414
-
415
- ### Basic R3F + Rapier Setup
416
- ```typescript
417
- // Source: @react-three/rapier getting started
418
- import { Canvas } from '@react-three/fiber'
419
- import { Physics } from '@react-three/rapier'
420
-
421
- function Game() {
422
- return (
423
- <Canvas>
424
- <Physics gravity={[0, -9.81, 0]}>
425
- <Vehicle />
426
- <City />
427
- <Ground />
428
- </Physics>
429
- </Canvas>
430
- )
431
- }
432
- ```
433
-
434
- ### Vehicle Controls Hook
435
- ```typescript
436
- // Source: Community pattern, verified with drei docs
437
- import { useFrame } from '@react-three/fiber'
438
- import { useKeyboardControls } from '@react-three/drei'
439
-
440
- function useVehicleControls(rigidBodyRef) {
441
- const [, getKeys] = useKeyboardControls()
442
-
443
- useFrame(() => {
444
- const { forward, back, left, right } = getKeys()
445
- const body = rigidBodyRef.current
446
- if (!body) return
447
-
448
- const impulse = { x: 0, y: 0, z: 0 }
449
- if (forward) impulse.z -= 10
450
- if (back) impulse.z += 5
451
-
452
- body.applyImpulse(impulse, true)
453
-
454
- if (left) body.applyTorqueImpulse({ x: 0, y: 2, z: 0 }, true)
455
- if (right) body.applyTorqueImpulse({ x: 0, y: -2, z: 0 }, true)
456
- })
457
- }
458
- ```
459
- </code_examples>
460
-
461
- <sota_updates>
462
- ## State of the Art (2024-2025)
463
-
464
- | Old Approach | Current Approach | When Changed | Impact |
465
- |--------------|------------------|--------------|--------|
466
- | cannon-es | Rapier | 2023 | Rapier is faster, better maintained |
467
- | vanilla Three.js | React Three Fiber | 2020+ | R3F is now standard for React apps |
468
- | Manual InstancedMesh | drei <Instances> | 2022 | Simpler API, handles updates |
469
-
470
- **New tools/patterns to consider:**
471
- - **WebGPU:** Coming but not production-ready for games yet (2025)
472
- - **drei Gltf helpers:** <useGLTF.preload> for loading screens
473
-
474
- **Deprecated/outdated:**
475
- - **cannon.js (original):** Use cannon-es fork or better, Rapier
476
- - **Manual raycasting for physics:** Just use Rapier colliders
477
- </sota_updates>
478
-
479
- <sources>
480
- ## Sources
481
-
482
- ### Primary (HIGH confidence)
483
- - /pmndrs/react-three-fiber - getting started, hooks, performance
484
- - /pmndrs/drei - instances, controls, helpers
485
- - /dimforge/rapier-js - physics setup, vehicle physics
486
-
487
- ### Secondary (MEDIUM confidence)
488
- - Three.js discourse "city driving game" threads - verified patterns against docs
489
- - R3F examples repository - verified code works
490
-
491
- ### Tertiary (LOW confidence - needs validation)
492
- - None - all findings verified
493
- </sources>
494
-
495
- <metadata>
496
- ## Metadata
497
-
498
- **Research scope:**
499
- - Core technology: Three.js + React Three Fiber
500
- - Ecosystem: Rapier, drei, zustand
501
- - Patterns: Vehicle physics, instancing, city generation
502
- - Pitfalls: Performance, physics, feel
503
-
504
- **Confidence breakdown:**
505
- - Standard stack: HIGH - verified with Context7, widely used
506
- - Architecture: HIGH - from official examples
507
- - Pitfalls: HIGH - documented in discourse, verified in docs
508
- - Code examples: HIGH - from Context7/official sources
509
-
510
- **Research date:** 2025-01-20
511
- **Valid until:** 2025-02-20 (30 days - R3F ecosystem stable)
512
- </metadata>
513
-
514
- ---
515
-
516
- *Phase: 03-city-driving*
517
- *Research completed: 2025-01-20*
518
- *Ready for planning: yes*
519
- ```
520
-
521
- ---
522
-
523
- ## Guidelines
524
-
525
- **When to create:**
526
- - Before planning phases in niche/complex domains
527
- - When Claude's training data is likely stale or sparse
528
- - When "how do experts do this" matters more than "which library"
529
-
530
- **Structure:**
531
- - Use XML tags for section markers (matches Qualia templates)
532
- - Seven core sections: summary, standard_stack, architecture_patterns, dont_hand_roll, common_pitfalls, code_examples, sources
533
- - All sections required (drives comprehensive research)
534
-
535
- **Content quality:**
536
- - Standard stack: Specific versions, not just names
537
- - Architecture: Include actual code examples from authoritative sources
538
- - Don't hand-roll: Be explicit about what problems to NOT solve yourself
539
- - Pitfalls: Include warning signs, not just "don't do this"
540
- - Sources: Mark confidence levels honestly
541
-
542
- **Integration with planning:**
543
- - RESEARCH.md loaded as @context reference in PLAN.md
544
- - Standard stack informs library choices
545
- - Don't hand-roll prevents custom solutions
546
- - Pitfalls inform verification criteria
547
- - Code examples can be referenced in task actions
548
-
549
- **After creation:**
550
- - File lives in phase directory: `.planning/phases/XX-name/{phase}-RESEARCH.md`
551
- - Referenced during planning workflow
552
- - plan-phase loads it automatically when present