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,612 +0,0 @@
1
- # Verification Patterns
2
-
3
- How to verify different types of artifacts are real implementations, not stubs or placeholders.
4
-
5
- <core_principle>
6
- **Existence ≠ Implementation**
7
-
8
- A file existing does not mean the feature works. Verification must check:
9
- 1. **Exists** - File is present at expected path
10
- 2. **Substantive** - Content is real implementation, not placeholder
11
- 3. **Wired** - Connected to the rest of the system
12
- 4. **Functional** - Actually works when invoked
13
-
14
- Levels 1-3 can be checked programmatically. Level 4 often requires human verification.
15
- </core_principle>
16
-
17
- <stub_detection>
18
-
19
- ## Universal Stub Patterns
20
-
21
- These patterns indicate placeholder code regardless of file type:
22
-
23
- **Comment-based stubs:**
24
- ```bash
25
- # Grep patterns for stub comments
26
- grep -E "(TODO|FIXME|XXX|HACK|PLACEHOLDER)" "$file"
27
- grep -E "implement|add later|coming soon|will be" "$file" -i
28
- grep -E "// \.\.\.|/\* \.\.\. \*/|# \.\.\." "$file"
29
- ```
30
-
31
- **Placeholder text in output:**
32
- ```bash
33
- # UI placeholder patterns
34
- grep -E "placeholder|lorem ipsum|coming soon|under construction" "$file" -i
35
- grep -E "sample|example|test data|dummy" "$file" -i
36
- grep -E "\[.*\]|<.*>|\{.*\}" "$file" # Template brackets left in
37
- ```
38
-
39
- **Empty or trivial implementations:**
40
- ```bash
41
- # Functions that do nothing
42
- grep -E "return null|return undefined|return \{\}|return \[\]" "$file"
43
- grep -E "pass$|\.\.\.|\bnothing\b" "$file"
44
- grep -E "console\.(log|warn|error).*only" "$file" # Log-only functions
45
- ```
46
-
47
- **Hardcoded values where dynamic expected:**
48
- ```bash
49
- # Hardcoded IDs, counts, or content
50
- grep -E "id.*=.*['\"].*['\"]" "$file" # Hardcoded string IDs
51
- grep -E "count.*=.*\d+|length.*=.*\d+" "$file" # Hardcoded counts
52
- grep -E "\\\$\d+\.\d{2}|\d+ items" "$file" # Hardcoded display values
53
- ```
54
-
55
- </stub_detection>
56
-
57
- <react_components>
58
-
59
- ## React/Next.js Components
60
-
61
- **Existence check:**
62
- ```bash
63
- # File exists and exports component
64
- [ -f "$component_path" ] && grep -E "export (default |)function|export const.*=.*\(" "$component_path"
65
- ```
66
-
67
- **Substantive check:**
68
- ```bash
69
- # Returns actual JSX, not placeholder
70
- grep -E "return.*<" "$component_path" | grep -v "return.*null" | grep -v "placeholder" -i
71
-
72
- # Has meaningful content (not just wrapper div)
73
- grep -E "<[A-Z][a-zA-Z]+|className=|onClick=|onChange=" "$component_path"
74
-
75
- # Uses props or state (not static)
76
- grep -E "props\.|useState|useEffect|useContext|\{.*\}" "$component_path"
77
- ```
78
-
79
- **Stub patterns specific to React:**
80
- ```javascript
81
- // RED FLAGS - These are stubs:
82
- return <div>Component</div>
83
- return <div>Placeholder</div>
84
- return <div>{/* TODO */}</div>
85
- return <p>Coming soon</p>
86
- return null
87
- return <></>
88
-
89
- // Also stubs - empty handlers:
90
- onClick={() => {}}
91
- onChange={() => console.log('clicked')}
92
- onSubmit={(e) => e.preventDefault()} // Only prevents default, does nothing
93
- ```
94
-
95
- **Wiring check:**
96
- ```bash
97
- # Component imports what it needs
98
- grep -E "^import.*from" "$component_path"
99
-
100
- # Props are actually used (not just received)
101
- # Look for destructuring or props.X usage
102
- grep -E "\{ .* \}.*props|\bprops\.[a-zA-Z]+" "$component_path"
103
-
104
- # API calls exist (for data-fetching components)
105
- grep -E "fetch\(|axios\.|useSWR|useQuery|getServerSideProps|getStaticProps" "$component_path"
106
- ```
107
-
108
- **Functional verification (human required):**
109
- - Does the component render visible content?
110
- - Do interactive elements respond to clicks?
111
- - Does data load and display?
112
- - Do error states show appropriately?
113
-
114
- </react_components>
115
-
116
- <api_routes>
117
-
118
- ## API Routes (Next.js App Router / Express / etc.)
119
-
120
- **Existence check:**
121
- ```bash
122
- # Route file exists
123
- [ -f "$route_path" ]
124
-
125
- # Exports HTTP method handlers (Next.js App Router)
126
- grep -E "export (async )?(function|const) (GET|POST|PUT|PATCH|DELETE)" "$route_path"
127
-
128
- # Or Express-style handlers
129
- grep -E "\.(get|post|put|patch|delete)\(" "$route_path"
130
- ```
131
-
132
- **Substantive check:**
133
- ```bash
134
- # Has actual logic, not just return statement
135
- wc -l "$route_path" # More than 10-15 lines suggests real implementation
136
-
137
- # Interacts with data source
138
- grep -E "prisma\.|db\.|mongoose\.|sql|query|find|create|update|delete" "$route_path" -i
139
-
140
- # Has error handling
141
- grep -E "try|catch|throw|error|Error" "$route_path"
142
-
143
- # Returns meaningful response
144
- grep -E "Response\.json|res\.json|res\.send|return.*\{" "$route_path" | grep -v "message.*not implemented" -i
145
- ```
146
-
147
- **Stub patterns specific to API routes:**
148
- ```typescript
149
- // RED FLAGS - These are stubs:
150
- export async function POST() {
151
- return Response.json({ message: "Not implemented" })
152
- }
153
-
154
- export async function GET() {
155
- return Response.json([]) // Empty array with no DB query
156
- }
157
-
158
- export async function PUT() {
159
- return new Response() // Empty response
160
- }
161
-
162
- // Console log only:
163
- export async function POST(req) {
164
- console.log(await req.json())
165
- return Response.json({ ok: true })
166
- }
167
- ```
168
-
169
- **Wiring check:**
170
- ```bash
171
- # Imports database/service clients
172
- grep -E "^import.*prisma|^import.*db|^import.*client" "$route_path"
173
-
174
- # Actually uses request body (for POST/PUT)
175
- grep -E "req\.json\(\)|req\.body|request\.json\(\)" "$route_path"
176
-
177
- # Validates input (not just trusting request)
178
- grep -E "schema\.parse|validate|zod|yup|joi" "$route_path"
179
- ```
180
-
181
- **Functional verification (human or automated):**
182
- - Does GET return real data from database?
183
- - Does POST actually create a record?
184
- - Does error response have correct status code?
185
- - Are auth checks actually enforced?
186
-
187
- </api_routes>
188
-
189
- <database_schema>
190
-
191
- ## Database Schema (Prisma / Drizzle / SQL)
192
-
193
- **Existence check:**
194
- ```bash
195
- # Schema file exists
196
- [ -f "prisma/schema.prisma" ] || [ -f "drizzle/schema.ts" ] || [ -f "src/db/schema.sql" ]
197
-
198
- # Model/table is defined
199
- grep -E "^model $model_name|CREATE TABLE $table_name|export const $table_name" "$schema_path"
200
- ```
201
-
202
- **Substantive check:**
203
- ```bash
204
- # Has expected fields (not just id)
205
- grep -A 20 "model $model_name" "$schema_path" | grep -E "^\s+\w+\s+\w+"
206
-
207
- # Has relationships if expected
208
- grep -E "@relation|REFERENCES|FOREIGN KEY" "$schema_path"
209
-
210
- # Has appropriate field types (not all String)
211
- grep -A 20 "model $model_name" "$schema_path" | grep -E "Int|DateTime|Boolean|Float|Decimal|Json"
212
- ```
213
-
214
- **Stub patterns specific to schemas:**
215
- ```prisma
216
- // RED FLAGS - These are stubs:
217
- model User {
218
- id String @id
219
- // TODO: add fields
220
- }
221
-
222
- model Message {
223
- id String @id
224
- content String // Only one real field
225
- }
226
-
227
- // Missing critical fields:
228
- model Order {
229
- id String @id
230
- // No: userId, items, total, status, createdAt
231
- }
232
- ```
233
-
234
- **Wiring check:**
235
- ```bash
236
- # Migrations exist and are applied
237
- ls prisma/migrations/ 2>/dev/null | wc -l # Should be > 0
238
- npx prisma migrate status 2>/dev/null | grep -v "pending"
239
-
240
- # Client is generated
241
- [ -d "node_modules/.prisma/client" ]
242
- ```
243
-
244
- **Functional verification:**
245
- ```bash
246
- # Can query the table (automated)
247
- npx prisma db execute --stdin <<< "SELECT COUNT(*) FROM $table_name"
248
- ```
249
-
250
- </database_schema>
251
-
252
- <hooks_utilities>
253
-
254
- ## Custom Hooks and Utilities
255
-
256
- **Existence check:**
257
- ```bash
258
- # File exists and exports function
259
- [ -f "$hook_path" ] && grep -E "export (default )?(function|const)" "$hook_path"
260
- ```
261
-
262
- **Substantive check:**
263
- ```bash
264
- # Hook uses React hooks (for custom hooks)
265
- grep -E "useState|useEffect|useCallback|useMemo|useRef|useContext" "$hook_path"
266
-
267
- # Has meaningful return value
268
- grep -E "return \{|return \[" "$hook_path"
269
-
270
- # More than trivial length
271
- [ $(wc -l < "$hook_path") -gt 10 ]
272
- ```
273
-
274
- **Stub patterns specific to hooks:**
275
- ```typescript
276
- // RED FLAGS - These are stubs:
277
- export function useAuth() {
278
- return { user: null, login: () => {}, logout: () => {} }
279
- }
280
-
281
- export function useCart() {
282
- const [items, setItems] = useState([])
283
- return { items, addItem: () => console.log('add'), removeItem: () => {} }
284
- }
285
-
286
- // Hardcoded return:
287
- export function useUser() {
288
- return { name: "Test User", email: "test@example.com" }
289
- }
290
- ```
291
-
292
- **Wiring check:**
293
- ```bash
294
- # Hook is actually imported somewhere
295
- grep -r "import.*$hook_name" src/ --include="*.tsx" --include="*.ts" | grep -v "$hook_path"
296
-
297
- # Hook is actually called
298
- grep -r "$hook_name()" src/ --include="*.tsx" --include="*.ts" | grep -v "$hook_path"
299
- ```
300
-
301
- </hooks_utilities>
302
-
303
- <environment_config>
304
-
305
- ## Environment Variables and Configuration
306
-
307
- **Existence check:**
308
- ```bash
309
- # .env file exists
310
- [ -f ".env" ] || [ -f ".env.local" ]
311
-
312
- # Required variable is defined
313
- grep -E "^$VAR_NAME=" .env .env.local 2>/dev/null
314
- ```
315
-
316
- **Substantive check:**
317
- ```bash
318
- # Variable has actual value (not placeholder)
319
- grep -E "^$VAR_NAME=.+" .env .env.local 2>/dev/null | grep -v "your-.*-here|xxx|placeholder|TODO" -i
320
-
321
- # Value looks valid for type:
322
- # - URLs should start with http
323
- # - Keys should be long enough
324
- # - Booleans should be true/false
325
- ```
326
-
327
- **Stub patterns specific to env:**
328
- ```bash
329
- # RED FLAGS - These are stubs:
330
- DATABASE_URL=your-database-url-here
331
- STRIPE_SECRET_KEY=sk_test_xxx
332
- API_KEY=placeholder
333
- NEXT_PUBLIC_API_URL=http://localhost:3000 # Still pointing to localhost in prod
334
- ```
335
-
336
- **Wiring check:**
337
- ```bash
338
- # Variable is actually used in code
339
- grep -r "process\.env\.$VAR_NAME|env\.$VAR_NAME" src/ --include="*.ts" --include="*.tsx"
340
-
341
- # Variable is in validation schema (if using zod/etc for env)
342
- grep -E "$VAR_NAME" src/env.ts src/env.mjs 2>/dev/null
343
- ```
344
-
345
- </environment_config>
346
-
347
- <wiring_verification>
348
-
349
- ## Wiring Verification Patterns
350
-
351
- Wiring verification checks that components actually communicate. This is where most stubs hide.
352
-
353
- ### Pattern: Component → API
354
-
355
- **Check:** Does the component actually call the API?
356
-
357
- ```bash
358
- # Find the fetch/axios call
359
- grep -E "fetch\(['\"].*$api_path|axios\.(get|post).*$api_path" "$component_path"
360
-
361
- # Verify it's not commented out
362
- grep -E "fetch\(|axios\." "$component_path" | grep -v "^.*//.*fetch"
363
-
364
- # Check the response is used
365
- grep -E "await.*fetch|\.then\(|setData|setState" "$component_path"
366
- ```
367
-
368
- **Red flags:**
369
- ```typescript
370
- // Fetch exists but response ignored:
371
- fetch('/api/messages') // No await, no .then, no assignment
372
-
373
- // Fetch in comment:
374
- // fetch('/api/messages').then(r => r.json()).then(setMessages)
375
-
376
- // Fetch to wrong endpoint:
377
- fetch('/api/message') // Typo - should be /api/messages
378
- ```
379
-
380
- ### Pattern: API → Database
381
-
382
- **Check:** Does the API route actually query the database?
383
-
384
- ```bash
385
- # Find the database call
386
- grep -E "prisma\.$model|db\.query|Model\.find" "$route_path"
387
-
388
- # Verify it's awaited
389
- grep -E "await.*prisma|await.*db\." "$route_path"
390
-
391
- # Check result is returned
392
- grep -E "return.*json.*data|res\.json.*result" "$route_path"
393
- ```
394
-
395
- **Red flags:**
396
- ```typescript
397
- // Query exists but result not returned:
398
- await prisma.message.findMany()
399
- return Response.json({ ok: true }) // Returns static, not query result
400
-
401
- // Query not awaited:
402
- const messages = prisma.message.findMany() // Missing await
403
- return Response.json(messages) // Returns Promise, not data
404
- ```
405
-
406
- ### Pattern: Form → Handler
407
-
408
- **Check:** Does the form submission actually do something?
409
-
410
- ```bash
411
- # Find onSubmit handler
412
- grep -E "onSubmit=\{|handleSubmit" "$component_path"
413
-
414
- # Check handler has content
415
- grep -A 10 "onSubmit.*=" "$component_path" | grep -E "fetch|axios|mutate|dispatch"
416
-
417
- # Verify not just preventDefault
418
- grep -A 5 "onSubmit" "$component_path" | grep -v "only.*preventDefault" -i
419
- ```
420
-
421
- **Red flags:**
422
- ```typescript
423
- // Handler only prevents default:
424
- onSubmit={(e) => e.preventDefault()}
425
-
426
- // Handler only logs:
427
- const handleSubmit = (data) => {
428
- console.log(data)
429
- }
430
-
431
- // Handler is empty:
432
- onSubmit={() => {}}
433
- ```
434
-
435
- ### Pattern: State → Render
436
-
437
- **Check:** Does the component render state, not hardcoded content?
438
-
439
- ```bash
440
- # Find state usage in JSX
441
- grep -E "\{.*messages.*\}|\{.*data.*\}|\{.*items.*\}" "$component_path"
442
-
443
- # Check map/render of state
444
- grep -E "\.map\(|\.filter\(|\.reduce\(" "$component_path"
445
-
446
- # Verify dynamic content
447
- grep -E "\{[a-zA-Z_]+\." "$component_path" # Variable interpolation
448
- ```
449
-
450
- **Red flags:**
451
- ```tsx
452
- // Hardcoded instead of state:
453
- return <div>
454
- <p>Message 1</p>
455
- <p>Message 2</p>
456
- </div>
457
-
458
- // State exists but not rendered:
459
- const [messages, setMessages] = useState([])
460
- return <div>No messages</div> // Always shows "no messages"
461
-
462
- // Wrong state rendered:
463
- const [messages, setMessages] = useState([])
464
- return <div>{otherData.map(...)}</div> // Uses different data
465
- ```
466
-
467
- </wiring_verification>
468
-
469
- <verification_checklist>
470
-
471
- ## Quick Verification Checklist
472
-
473
- For each artifact type, run through this checklist:
474
-
475
- ### Component Checklist
476
- - [ ] File exists at expected path
477
- - [ ] Exports a function/const component
478
- - [ ] Returns JSX (not null/empty)
479
- - [ ] No placeholder text in render
480
- - [ ] Uses props or state (not static)
481
- - [ ] Event handlers have real implementations
482
- - [ ] Imports resolve correctly
483
- - [ ] Used somewhere in the app
484
-
485
- ### API Route Checklist
486
- - [ ] File exists at expected path
487
- - [ ] Exports HTTP method handlers
488
- - [ ] Handlers have more than 5 lines
489
- - [ ] Queries database or service
490
- - [ ] Returns meaningful response (not empty/placeholder)
491
- - [ ] Has error handling
492
- - [ ] Validates input
493
- - [ ] Called from frontend
494
-
495
- ### Schema Checklist
496
- - [ ] Model/table defined
497
- - [ ] Has all expected fields
498
- - [ ] Fields have appropriate types
499
- - [ ] Relationships defined if needed
500
- - [ ] Migrations exist and applied
501
- - [ ] Client generated
502
-
503
- ### Hook/Utility Checklist
504
- - [ ] File exists at expected path
505
- - [ ] Exports function
506
- - [ ] Has meaningful implementation (not empty returns)
507
- - [ ] Used somewhere in the app
508
- - [ ] Return values consumed
509
-
510
- ### Wiring Checklist
511
- - [ ] Component → API: fetch/axios call exists and uses response
512
- - [ ] API → Database: query exists and result returned
513
- - [ ] Form → Handler: onSubmit calls API/mutation
514
- - [ ] State → Render: state variables appear in JSX
515
-
516
- </verification_checklist>
517
-
518
- <automated_verification_script>
519
-
520
- ## Automated Verification Approach
521
-
522
- For the verification subagent, use this pattern:
523
-
524
- ```bash
525
- # 1. Check existence
526
- check_exists() {
527
- [ -f "$1" ] && echo "EXISTS: $1" || echo "MISSING: $1"
528
- }
529
-
530
- # 2. Check for stub patterns
531
- check_stubs() {
532
- local file="$1"
533
- local stubs=$(grep -c -E "TODO|FIXME|placeholder|not implemented" "$file" 2>/dev/null || echo 0)
534
- [ "$stubs" -gt 0 ] && echo "STUB_PATTERNS: $stubs in $file"
535
- }
536
-
537
- # 3. Check wiring (component calls API)
538
- check_wiring() {
539
- local component="$1"
540
- local api_path="$2"
541
- grep -q "$api_path" "$component" && echo "WIRED: $component → $api_path" || echo "NOT_WIRED: $component → $api_path"
542
- }
543
-
544
- # 4. Check substantive (more than N lines, has expected patterns)
545
- check_substantive() {
546
- local file="$1"
547
- local min_lines="$2"
548
- local pattern="$3"
549
- local lines=$(wc -l < "$file" 2>/dev/null || echo 0)
550
- local has_pattern=$(grep -c -E "$pattern" "$file" 2>/dev/null || echo 0)
551
- [ "$lines" -ge "$min_lines" ] && [ "$has_pattern" -gt 0 ] && echo "SUBSTANTIVE: $file" || echo "THIN: $file ($lines lines, $has_pattern matches)"
552
- }
553
- ```
554
-
555
- Run these checks against each must-have artifact. Aggregate results into VERIFICATION.md.
556
-
557
- </automated_verification_script>
558
-
559
- <human_verification_triggers>
560
-
561
- ## When to Require Human Verification
562
-
563
- Some things can't be verified programmatically. Flag these for human testing:
564
-
565
- **Always human:**
566
- - Visual appearance (does it look right?)
567
- - User flow completion (can you actually do the thing?)
568
- - Real-time behavior (WebSocket, SSE)
569
- - External service integration (Stripe, email sending)
570
- - Error message clarity (is the message helpful?)
571
- - Performance feel (does it feel fast?)
572
-
573
- **Human if uncertain:**
574
- - Complex wiring that grep can't trace
575
- - Dynamic behavior depending on state
576
- - Edge cases and error states
577
- - Mobile responsiveness
578
- - Accessibility
579
-
580
- **Format for human verification request:**
581
- ```markdown
582
- ## Human Verification Required
583
-
584
- ### 1. Chat message sending
585
- **Test:** Type a message and click Send
586
- **Expected:** Message appears in list, input clears
587
- **Check:** Does message persist after refresh?
588
-
589
- ### 2. Error handling
590
- **Test:** Disconnect network, try to send
591
- **Expected:** Error message appears, message not lost
592
- **Check:** Can retry after reconnect?
593
- ```
594
-
595
- </human_verification_triggers>
596
-
597
- <checkpoint_automation_reference>
598
-
599
- ## Pre-Checkpoint Automation
600
-
601
- For automation-first checkpoint patterns, server lifecycle management, CLI installation handling, and error recovery protocols, see:
602
-
603
- **@/home/qualia/.claude/qualia-framework/references/checkpoints.md** → `<automation_reference>` section
604
-
605
- Key principles:
606
- - Claude sets up verification environment BEFORE presenting checkpoints
607
- - Users never run CLI commands (visit URLs only)
608
- - Server lifecycle: start before checkpoint, handle port conflicts, keep running for duration
609
- - CLI installation: auto-install where safe, checkpoint for user choice otherwise
610
- - Error handling: fix broken environment before checkpoint, never present checkpoint with failed setup
611
-
612
- </checkpoint_automation_reference>