qualia-framework 2.6.0 → 3.2.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 (321) hide show
  1. package/CLAUDE.md +64 -0
  2. package/README.md +103 -30
  3. package/agents/builder.md +110 -0
  4. package/agents/planner.md +134 -0
  5. package/agents/qa-browser.md +186 -0
  6. package/agents/verifier.md +221 -0
  7. package/bin/cli.js +336 -531
  8. package/bin/install.js +570 -0
  9. package/bin/qualia-ui.js +299 -0
  10. package/bin/state.js +630 -0
  11. package/bin/statusline.js +252 -0
  12. package/guide.md +63 -0
  13. package/hooks/auto-update.js +139 -0
  14. package/hooks/branch-guard.js +47 -0
  15. package/hooks/migration-guard.js +60 -0
  16. package/hooks/pre-compact.js +32 -0
  17. package/hooks/pre-deploy-gate.js +110 -0
  18. package/hooks/pre-push.js +33 -0
  19. package/hooks/session-start.js +170 -0
  20. package/package.json +29 -20
  21. package/rules/design-reference.md +179 -0
  22. package/rules/frontend.md +126 -0
  23. package/skills/qualia/SKILL.md +87 -0
  24. package/skills/qualia-build/SKILL.md +97 -0
  25. package/skills/qualia-debug/SKILL.md +87 -0
  26. package/skills/qualia-design/SKILL.md +93 -0
  27. package/skills/qualia-handoff/SKILL.md +66 -0
  28. package/skills/qualia-idk/SKILL.md +8 -0
  29. package/skills/qualia-learn/SKILL.md +88 -0
  30. package/skills/qualia-new/SKILL.md +323 -0
  31. package/{framework/skills → skills}/qualia-optimize/SKILL.md +1 -1
  32. package/skills/qualia-pause/SKILL.md +63 -0
  33. package/skills/qualia-plan/SKILL.md +101 -0
  34. package/skills/qualia-polish/SKILL.md +157 -0
  35. package/skills/qualia-quick/SKILL.md +37 -0
  36. package/skills/qualia-report/SKILL.md +105 -0
  37. package/skills/qualia-resume/SKILL.md +49 -0
  38. package/skills/qualia-review/SKILL.md +76 -0
  39. package/skills/qualia-ship/SKILL.md +90 -0
  40. package/skills/qualia-skill-new/SKILL.md +167 -0
  41. package/skills/qualia-task/SKILL.md +91 -0
  42. package/skills/qualia-verify/SKILL.md +113 -0
  43. package/templates/DESIGN.md +137 -0
  44. package/templates/plan.md +28 -0
  45. package/templates/project.md +22 -0
  46. package/templates/state.md +27 -0
  47. package/templates/tracking.json +20 -0
  48. package/tests/bin.test.sh +673 -0
  49. package/tests/hooks.test.sh +315 -0
  50. package/tests/state.test.sh +535 -0
  51. package/tests/statusline.test.sh +243 -0
  52. package/bin/collect-metrics.sh +0 -62
  53. package/framework/.claudeignore +0 -51
  54. package/framework/CLAUDE.md +0 -51
  55. package/framework/MCP_SETUP.md +0 -229
  56. package/framework/agents/architecture-strategist.md +0 -53
  57. package/framework/agents/backend-agent.md +0 -150
  58. package/framework/agents/code-simplicity-reviewer.md +0 -86
  59. package/framework/agents/frontend-agent.md +0 -111
  60. package/framework/agents/kieran-typescript-reviewer.md +0 -96
  61. package/framework/agents/performance-oracle.md +0 -111
  62. package/framework/agents/qualia-codebase-mapper.md +0 -761
  63. package/framework/agents/qualia-debugger.md +0 -1204
  64. package/framework/agents/qualia-executor.md +0 -882
  65. package/framework/agents/qualia-integration-checker.md +0 -424
  66. package/framework/agents/qualia-phase-researcher.md +0 -457
  67. package/framework/agents/qualia-plan-checker.md +0 -700
  68. package/framework/agents/qualia-planner.md +0 -1245
  69. package/framework/agents/qualia-project-researcher.md +0 -603
  70. package/framework/agents/qualia-research-synthesizer.md +0 -200
  71. package/framework/agents/qualia-roadmapper.md +0 -606
  72. package/framework/agents/qualia-verifier.md +0 -686
  73. package/framework/agents/red-team-qa.md +0 -130
  74. package/framework/agents/security-auditor.md +0 -72
  75. package/framework/agents/team-orchestrator.md +0 -229
  76. package/framework/agents/teams/framework-audit-team.md +0 -66
  77. package/framework/agents/teams/full-stack-team.md +0 -48
  78. package/framework/agents/teams/optimize-team.md +0 -53
  79. package/framework/agents/teams/review-team.md +0 -70
  80. package/framework/agents/teams/ship-team.md +0 -86
  81. package/framework/agents/test-agent.md +0 -182
  82. package/framework/hooks/auto-format.sh +0 -54
  83. package/framework/hooks/block-env-edit.sh +0 -42
  84. package/framework/hooks/branch-guard.sh +0 -43
  85. package/framework/hooks/confirm-delete.sh +0 -59
  86. package/framework/hooks/migration-validate.sh +0 -77
  87. package/framework/hooks/notification-speak.sh +0 -16
  88. package/framework/hooks/pre-commit.sh +0 -100
  89. package/framework/hooks/pre-compact.sh +0 -56
  90. package/framework/hooks/pre-deploy-gate.sh +0 -160
  91. package/framework/hooks/qualia-colors.sh +0 -32
  92. package/framework/hooks/retention-cleanup.sh +0 -62
  93. package/framework/hooks/save-session-state.sh +0 -185
  94. package/framework/hooks/session-context-loader.sh +0 -96
  95. package/framework/hooks/session-learn.sh +0 -32
  96. package/framework/hooks/skill-announce.sh +0 -123
  97. package/framework/hooks/tool-error-announce.sh +0 -27
  98. package/framework/install.ps1 +0 -323
  99. package/framework/install.sh +0 -313
  100. package/framework/qualia-framework/VERSION +0 -1
  101. package/framework/qualia-framework/assets/qualia-logo.png +0 -0
  102. package/framework/qualia-framework/bin/collect-metrics.sh +0 -67
  103. package/framework/qualia-framework/bin/generate-report-docx.py +0 -429
  104. package/framework/qualia-framework/bin/qualia-tools.js +0 -2201
  105. package/framework/qualia-framework/bin/qualia-tools.test.js +0 -1054
  106. package/framework/qualia-framework/references/checkpoints.md +0 -775
  107. package/framework/qualia-framework/references/completion-checklists.md +0 -359
  108. package/framework/qualia-framework/references/continuation-format.md +0 -249
  109. package/framework/qualia-framework/references/continuation-prompt.md +0 -97
  110. package/framework/qualia-framework/references/decimal-phase-calculation.md +0 -65
  111. package/framework/qualia-framework/references/design-quality.md +0 -56
  112. package/framework/qualia-framework/references/employee-guide.md +0 -167
  113. package/framework/qualia-framework/references/git-integration.md +0 -254
  114. package/framework/qualia-framework/references/git-planning-commit.md +0 -50
  115. package/framework/qualia-framework/references/model-profile-resolution.md +0 -32
  116. package/framework/qualia-framework/references/model-profiles.md +0 -73
  117. package/framework/qualia-framework/references/phase-argument-parsing.md +0 -61
  118. package/framework/qualia-framework/references/planning-config.md +0 -195
  119. package/framework/qualia-framework/references/questioning.md +0 -141
  120. package/framework/qualia-framework/references/tdd.md +0 -263
  121. package/framework/qualia-framework/references/ui-brand.md +0 -160
  122. package/framework/qualia-framework/references/verification-patterns.md +0 -612
  123. package/framework/qualia-framework/templates/DEBUG.md +0 -159
  124. package/framework/qualia-framework/templates/DESIGN.md +0 -81
  125. package/framework/qualia-framework/templates/UAT.md +0 -247
  126. package/framework/qualia-framework/templates/codebase/architecture.md +0 -255
  127. package/framework/qualia-framework/templates/codebase/concerns.md +0 -310
  128. package/framework/qualia-framework/templates/codebase/conventions.md +0 -307
  129. package/framework/qualia-framework/templates/codebase/integrations.md +0 -280
  130. package/framework/qualia-framework/templates/codebase/stack.md +0 -186
  131. package/framework/qualia-framework/templates/codebase/structure.md +0 -285
  132. package/framework/qualia-framework/templates/codebase/testing.md +0 -480
  133. package/framework/qualia-framework/templates/config.json +0 -35
  134. package/framework/qualia-framework/templates/context.md +0 -283
  135. package/framework/qualia-framework/templates/continue-here.md +0 -78
  136. package/framework/qualia-framework/templates/debug-subagent-prompt.md +0 -91
  137. package/framework/qualia-framework/templates/discovery.md +0 -146
  138. package/framework/qualia-framework/templates/lab-notes.md +0 -16
  139. package/framework/qualia-framework/templates/milestone-archive.md +0 -123
  140. package/framework/qualia-framework/templates/milestone.md +0 -115
  141. package/framework/qualia-framework/templates/phase-prompt.md +0 -567
  142. package/framework/qualia-framework/templates/planner-subagent-prompt.md +0 -117
  143. package/framework/qualia-framework/templates/project.md +0 -184
  144. package/framework/qualia-framework/templates/projects/ai-agent.md +0 -156
  145. package/framework/qualia-framework/templates/projects/mobile-app.md +0 -181
  146. package/framework/qualia-framework/templates/projects/voice-agent.md +0 -134
  147. package/framework/qualia-framework/templates/projects/website.md +0 -137
  148. package/framework/qualia-framework/templates/requirements.md +0 -231
  149. package/framework/qualia-framework/templates/research-project/ARCHITECTURE.md +0 -204
  150. package/framework/qualia-framework/templates/research-project/FEATURES.md +0 -147
  151. package/framework/qualia-framework/templates/research-project/PITFALLS.md +0 -200
  152. package/framework/qualia-framework/templates/research-project/STACK.md +0 -120
  153. package/framework/qualia-framework/templates/research-project/SUMMARY.md +0 -170
  154. package/framework/qualia-framework/templates/research.md +0 -552
  155. package/framework/qualia-framework/templates/roadmap.md +0 -206
  156. package/framework/qualia-framework/templates/state.md +0 -179
  157. package/framework/qualia-framework/templates/summary-complex.md +0 -59
  158. package/framework/qualia-framework/templates/summary-minimal.md +0 -41
  159. package/framework/qualia-framework/templates/summary-standard.md +0 -48
  160. package/framework/qualia-framework/templates/summary.md +0 -246
  161. package/framework/qualia-framework/templates/user-setup.md +0 -311
  162. package/framework/qualia-framework/templates/verification-report.md +0 -322
  163. package/framework/qualia-framework/workflows/add-phase.md +0 -179
  164. package/framework/qualia-framework/workflows/add-todo.md +0 -157
  165. package/framework/qualia-framework/workflows/audit-milestone.md +0 -241
  166. package/framework/qualia-framework/workflows/check-todos.md +0 -176
  167. package/framework/qualia-framework/workflows/complete-milestone.md +0 -858
  168. package/framework/qualia-framework/workflows/diagnose-issues.md +0 -219
  169. package/framework/qualia-framework/workflows/discovery-phase.md +0 -289
  170. package/framework/qualia-framework/workflows/discuss-phase.md +0 -534
  171. package/framework/qualia-framework/workflows/execute-phase.md +0 -559
  172. package/framework/qualia-framework/workflows/execute-plan.md +0 -438
  173. package/framework/qualia-framework/workflows/help.md +0 -470
  174. package/framework/qualia-framework/workflows/insert-phase.md +0 -220
  175. package/framework/qualia-framework/workflows/list-phase-assumptions.md +0 -178
  176. package/framework/qualia-framework/workflows/map-codebase.md +0 -327
  177. package/framework/qualia-framework/workflows/new-milestone.md +0 -363
  178. package/framework/qualia-framework/workflows/new-project.md +0 -982
  179. package/framework/qualia-framework/workflows/pause-work.md +0 -122
  180. package/framework/qualia-framework/workflows/plan-milestone-gaps.md +0 -256
  181. package/framework/qualia-framework/workflows/plan-phase.md +0 -422
  182. package/framework/qualia-framework/workflows/progress.md +0 -389
  183. package/framework/qualia-framework/workflows/quick.md +0 -252
  184. package/framework/qualia-framework/workflows/remove-phase.md +0 -326
  185. package/framework/qualia-framework/workflows/research-phase.md +0 -74
  186. package/framework/qualia-framework/workflows/resume-project.md +0 -306
  187. package/framework/qualia-framework/workflows/set-profile.md +0 -80
  188. package/framework/qualia-framework/workflows/settings.md +0 -145
  189. package/framework/qualia-framework/workflows/transition.md +0 -556
  190. package/framework/qualia-framework/workflows/update.md +0 -197
  191. package/framework/qualia-framework/workflows/verify-phase.md +0 -195
  192. package/framework/qualia-framework/workflows/verify-work.md +0 -625
  193. package/framework/rules/context7.md +0 -14
  194. package/framework/rules/frontend.md +0 -33
  195. package/framework/rules/speed.md +0 -23
  196. package/framework/scripts/__pycache__/say.cpython-314.pyc +0 -0
  197. package/framework/scripts/apply-retention.sh +0 -120
  198. package/framework/scripts/bootstrap-pop-os.sh +0 -354
  199. package/framework/scripts/claude-voice +0 -13
  200. package/framework/scripts/cleanup.sh +0 -131
  201. package/framework/scripts/cowork-mode.sh +0 -141
  202. package/framework/scripts/generate-project-claude-md.sh +0 -153
  203. package/framework/scripts/load-test-webhook.js +0 -172
  204. package/framework/scripts/say.py +0 -236
  205. package/framework/scripts/showcase-video-recorder/ffmpeg-builder.js +0 -167
  206. package/framework/scripts/showcase-video-recorder/playwright-helpers.js +0 -216
  207. package/framework/scripts/speak.py +0 -55
  208. package/framework/scripts/speak.sh +0 -18
  209. package/framework/scripts/status.sh +0 -138
  210. package/framework/scripts/sync-to-framework.sh +0 -65
  211. package/framework/scripts/voice-hotkey.py +0 -227
  212. package/framework/scripts/voice-input.sh +0 -51
  213. package/framework/skills/animate/SKILL.md +0 -202
  214. package/framework/skills/bolder/SKILL.md +0 -144
  215. package/framework/skills/browser-qa/SKILL.md +0 -536
  216. package/framework/skills/clarify/SKILL.md +0 -179
  217. package/framework/skills/client-handoff/SKILL.md +0 -135
  218. package/framework/skills/collab-onboard/SKILL.md +0 -111
  219. package/framework/skills/colorize/SKILL.md +0 -170
  220. package/framework/skills/critique/SKILL.md +0 -126
  221. package/framework/skills/deep-research/SKILL.md +0 -240
  222. package/framework/skills/delight/SKILL.md +0 -329
  223. package/framework/skills/deploy/SKILL.md +0 -261
  224. package/framework/skills/deploy-verify/SKILL.md +0 -377
  225. package/framework/skills/deploy-verify/scripts/canary-check.sh +0 -206
  226. package/framework/skills/deploy-verify/scripts/check-console-errors.js +0 -147
  227. package/framework/skills/deploy-verify/scripts/check-cwv.js +0 -139
  228. package/framework/skills/deploy-verify/scripts/project-detect.sh +0 -84
  229. package/framework/skills/deploy-verify/scripts/verify.sh +0 -548
  230. package/framework/skills/design-quieter/SKILL.md +0 -130
  231. package/framework/skills/distill/SKILL.md +0 -149
  232. package/framework/skills/docs-lookup/SKILL.md +0 -79
  233. package/framework/skills/fcm-notifications/SKILL.md +0 -125
  234. package/framework/skills/financial-ledger/SKILL.md +0 -1039
  235. package/framework/skills/frontend-master/NOTICE.md +0 -4
  236. package/framework/skills/frontend-master/SKILL.md +0 -127
  237. package/framework/skills/frontend-master/reference/color-and-contrast.md +0 -132
  238. package/framework/skills/frontend-master/reference/interaction-design.md +0 -123
  239. package/framework/skills/frontend-master/reference/motion-design.md +0 -99
  240. package/framework/skills/frontend-master/reference/responsive-design.md +0 -114
  241. package/framework/skills/frontend-master/reference/spatial-design.md +0 -100
  242. package/framework/skills/frontend-master/reference/typography.md +0 -131
  243. package/framework/skills/frontend-master/reference/ux-writing.md +0 -107
  244. package/framework/skills/harden/SKILL.md +0 -357
  245. package/framework/skills/i18n-rtl/SKILL.md +0 -752
  246. package/framework/skills/learn/SKILL.md +0 -95
  247. package/framework/skills/memory/SKILL.md +0 -50
  248. package/framework/skills/mobile-expo/SKILL.md +0 -977
  249. package/framework/skills/mobile-expo/references/store-checklist.md +0 -550
  250. package/framework/skills/nestjs-backend/README.md +0 -73
  251. package/framework/skills/nestjs-backend/SKILL.md +0 -446
  252. package/framework/skills/nestjs-backend/references/templates.md +0 -1173
  253. package/framework/skills/normalize/SKILL.md +0 -79
  254. package/framework/skills/onboard/SKILL.md +0 -242
  255. package/framework/skills/openrouter-agent/SKILL.md +0 -922
  256. package/framework/skills/polish/SKILL.md +0 -209
  257. package/framework/skills/pr/SKILL.md +0 -66
  258. package/framework/skills/qualia/SKILL.md +0 -199
  259. package/framework/skills/qualia-add-todo/SKILL.md +0 -68
  260. package/framework/skills/qualia-audit-milestone/SKILL.md +0 -95
  261. package/framework/skills/qualia-check-todos/SKILL.md +0 -55
  262. package/framework/skills/qualia-complete-milestone/SKILL.md +0 -134
  263. package/framework/skills/qualia-debug/SKILL.md +0 -149
  264. package/framework/skills/qualia-design/SKILL.md +0 -203
  265. package/framework/skills/qualia-discuss-phase/SKILL.md +0 -72
  266. package/framework/skills/qualia-evolve/SKILL.md +0 -200
  267. package/framework/skills/qualia-execute-phase/SKILL.md +0 -89
  268. package/framework/skills/qualia-framework-audit/SKILL.md +0 -604
  269. package/framework/skills/qualia-guide/SKILL.md +0 -32
  270. package/framework/skills/qualia-help/SKILL.md +0 -114
  271. package/framework/skills/qualia-idk/SKILL.md +0 -352
  272. package/framework/skills/qualia-list-phase-assumptions/SKILL.md +0 -67
  273. package/framework/skills/qualia-new-milestone/SKILL.md +0 -72
  274. package/framework/skills/qualia-new-project/SKILL.md +0 -232
  275. package/framework/skills/qualia-pause-work/SKILL.md +0 -96
  276. package/framework/skills/qualia-plan-milestone-gaps/SKILL.md +0 -57
  277. package/framework/skills/qualia-plan-phase/SKILL.md +0 -104
  278. package/framework/skills/qualia-production-check/SKILL.md +0 -0
  279. package/framework/skills/qualia-progress/SKILL.md +0 -53
  280. package/framework/skills/qualia-quick/SKILL.md +0 -89
  281. package/framework/skills/qualia-report/SKILL.md +0 -166
  282. package/framework/skills/qualia-research-phase/SKILL.md +0 -88
  283. package/framework/skills/qualia-resume-work/SKILL.md +0 -62
  284. package/framework/skills/qualia-review/SKILL.md +0 -263
  285. package/framework/skills/qualia-start/SKILL.md +0 -161
  286. package/framework/skills/qualia-verify-work/SKILL.md +0 -132
  287. package/framework/skills/rag/SKILL.md +0 -750
  288. package/framework/skills/responsive/SKILL.md +0 -231
  289. package/framework/skills/retro/SKILL.md +0 -284
  290. package/framework/skills/sakani-conventions/SKILL.md +0 -136
  291. package/framework/skills/sakani-conventions/evals/evals.json +0 -23
  292. package/framework/skills/sakani-conventions/references/entities.md +0 -365
  293. package/framework/skills/sakani-conventions/references/error-codes.md +0 -95
  294. package/framework/skills/seo-master/SKILL.md +0 -490
  295. package/framework/skills/seo-master/references/checklist.md +0 -199
  296. package/framework/skills/seo-master/references/structured-data.md +0 -609
  297. package/framework/skills/ship/SKILL.md +0 -239
  298. package/framework/skills/stack-researcher/SKILL.md +0 -215
  299. package/framework/skills/status/SKILL.md +0 -154
  300. package/framework/skills/status/scripts/health-check.sh +0 -562
  301. package/framework/skills/subscription-payments/SKILL.md +0 -250
  302. package/framework/skills/supabase/SKILL.md +0 -973
  303. package/framework/skills/supabase/references/templates.md +0 -159
  304. package/framework/skills/team/SKILL.md +0 -67
  305. package/framework/skills/test-runner/SKILL.md +0 -202
  306. package/framework/skills/voice-agent/SKILL.md +0 -1312
  307. package/framework/skills/zoho-workflow/SKILL.md +0 -51
  308. package/framework/statusline-command.sh +0 -117
  309. package/framework/teams/default/inboxes/plan-04.json +0 -9
  310. package/framework/teams/review-team.md +0 -75
  311. package/framework/teams/ship-team.md +0 -86
  312. package/profiles/fawzi.json +0 -16
  313. package/profiles/hasan.json +0 -16
  314. package/profiles/moayad.json +0 -16
  315. package/templates/CLAUDE-owner.md +0 -52
  316. package/templates/CLAUDE.md.hbs +0 -58
  317. package/templates/env.claude.template +0 -12
  318. package/templates/settings.json +0 -172
  319. package/uninstall.sh +0 -90
  320. /package/{framework/rules → rules}/deployment.md +0 -0
  321. /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