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
package/CLAUDE.md ADDED
@@ -0,0 +1,64 @@
1
+ # Qualia Framework
2
+
3
+ ## Company
4
+ Qualia Solutions — Nicosia, Cyprus. Websites, AI agents, voice agents, AI automation.
5
+
6
+ ## Stack
7
+ Next.js 16+, React 19, TypeScript, Supabase, Vercel. Voice: VAPI, ElevenLabs, Telnyx, Retell AI. AI: OpenRouter.
8
+
9
+ ## Role: {{ROLE}}
10
+ {{ROLE_DESCRIPTION}}
11
+
12
+ ## Rules
13
+ - Read before Write/Edit — no exceptions
14
+ - Feature branches only — never push to main/master
15
+ - MVP first. Build only what's asked. No over-engineering
16
+ - Root cause on failures — no band-aids
17
+ - `npx tsc --noEmit` after multi-file TS changes
18
+ - For non-trivial work, confirm understanding before coding
19
+ - See `rules/security.md` for auth, RLS, Zod, secrets
20
+ - See `rules/frontend.md` for design standards
21
+ - See `rules/deployment.md` for deploy checklist
22
+
23
+ ## The Road (how projects flow)
24
+
25
+ ```
26
+ /qualia-new → set up project
27
+
28
+ For each phase:
29
+ /qualia-plan → plan the phase (planner agent, fresh context)
30
+ /qualia-build → build it (builder subagents per task, fresh context each)
31
+ /qualia-verify → verify it works (verifier agent, goal-backward checks)
32
+
33
+ /qualia-polish → design/UX pass
34
+ /qualia-ship → deploy to production
35
+ /qualia-handoff → deliver to client
36
+
37
+ Done.
38
+
39
+ Lost? → /qualia (tells you exactly what's next)
40
+ Quick fix? → /qualia-quick (skip planning for small tasks)
41
+ End of day? → /qualia-report (mandatory before clock-out)
42
+ ```
43
+
44
+ ## Context Isolation
45
+ Every task runs in a fresh subagent context. Task 50 gets the same quality as Task 1.
46
+ - Planner gets: PROJECT.md + phase requirements
47
+ - Builder gets: single task from plan + PROJECT.md
48
+ - Verifier gets: success criteria + codebase access
49
+ No accumulated garbage. No context rot.
50
+
51
+ ## Quality Gates (always active)
52
+ - **Frontend guard:** Read .planning/DESIGN.md before any frontend changes
53
+ - **Deploy guard:** tsc + lint + build + tests must pass before deploy
54
+ - **Branch guard:** Employees cannot push to main (OWNER can)
55
+ - **Env guard:** Employees cannot edit .env files (OWNER can — add keys, configure secrets directly)
56
+ - **Sudo guard:** Employees cannot run sudo (OWNER can)
57
+ - **Intent verification:** Confirm before modifying 3+ files (OWNER: just do it)
58
+
59
+ ## Tracking
60
+ `.planning/tracking.json` is updated on every push. The ERP reads it via git.
61
+ Never edit tracking.json manually — hooks update it from STATE.md.
62
+
63
+ ## Compaction — ALWAYS preserve:
64
+ Project path/name, branch, current phase, modified files, decisions, test results, in-progress work, errors, tracking.json state.
package/README.md CHANGED
@@ -1,50 +1,123 @@
1
- # Qualia Framework
1
+ # Qualia Framework v3
2
2
 
3
- Claude Code framework installer for Qualia Solutions team members.
3
+ A prompt orchestration framework for [Claude Code](https://claude.ai/code). It installs into `~/.claude/` and wraps your AI-assisted development workflow with structured planning, execution, verification, and deployment gates.
4
+
5
+ It is not an application framework like Rails or Next.js. It doesn't generate code, run servers, or process data. It's an opinionated workflow layer that tells Claude how to plan, build, and verify your projects.
4
6
 
5
7
  ## Install
6
8
 
7
9
  ```bash
8
- npx github:Qualiasolutions/qualia-framework
10
+ npx qualia-framework install
9
11
  ```
10
12
 
11
- Enter your employee code when prompted. Contact Fawzi for your code.
12
-
13
- ## Update
14
-
15
- Pull latest framework changes (skills, hooks, agents) without touching your config:
13
+ Enter your team code when prompted. Get your code from Fawzi.
16
14
 
15
+ **Other commands:**
17
16
  ```bash
18
- npx github:Qualiasolutions/qualia-framework update
17
+ npx qualia-framework version # Check installed version + updates
18
+ npx qualia-framework update # Update to latest (remembers your code)
19
+ npx qualia-framework uninstall # Clean removal from ~/.claude/
19
20
  ```
20
21
 
21
- ## Verify
22
+ ## Usage
22
23
 
23
- Check your installation is healthy:
24
+ Open Claude Code in any project directory:
24
25
 
25
- ```bash
26
- npx github:Qualiasolutions/qualia-framework verify
27
26
  ```
27
+ /qualia-new # Set up a new project
28
+ /qualia # What should I do next?
29
+ /qualia-idk # I'm stuck — smart advisor
30
+ /qualia-plan # Plan the current phase
31
+ /qualia-build # Build it (parallel tasks)
32
+ /qualia-verify # Verify it actually works
33
+ /qualia-design # One-shot design transformation
34
+ /qualia-debug # Structured debugging
35
+ /qualia-review # Production audit
36
+ /qualia-quick # Skip planning, just do it
37
+ /qualia-task # Build one thing properly
38
+ /qualia-polish # Design and UX pass
39
+ /qualia-ship # Deploy to production
40
+ /qualia-handoff # Deliver to client
41
+ /qualia-pause # Save session, continue later
42
+ /qualia-resume # Pick up where you left off
43
+ /qualia-learn # Save a pattern, fix, or client pref
44
+ /qualia-report # Log your work (mandatory)
45
+ ```
46
+
47
+ See `guide.md` for the full developer guide.
48
+
49
+ ## What's Inside
50
+
51
+ - **19 skills** — slash commands from setup to handoff, plus debugging, design, review, knowledge, session management, and skill authoring
52
+ - **4 agents** — planner, builder, verifier, qa-browser (each in fresh context)
53
+ - **8 hooks** — session start, branch guard, pre-push tracking sync, env protection, migration guard, deploy gate, pre-compact state save, auto-update (all Node.js — cross-platform)
54
+ - **4 rules** — security, frontend, design-reference, deployment
55
+ - **5 templates** — tracking.json, state.md, project.md, plan.md, DESIGN.md
56
+
57
+ ## Supported Platforms
58
+
59
+ Works on **Windows 10/11, macOS, and Linux**. Requires Node.js 18+ and Claude Code.
60
+
61
+ - Every hook and the status line are pure Node.js — no external bash, jq, or GNU coreutils required.
62
+ - Skills are executed by Claude Code's own Bash tool (which Claude Code provides on all platforms, including Windows).
63
+ - Tested on Fedora, EndeavourOS, macOS, and Windows 10/11.
64
+
65
+ ## Why It Works
66
+
67
+ ### Goal-Backward Verification
68
+
69
+ Most CI checks "did the task run." Qualia checks "does the outcome actually work." The verifier doesn't trust summaries — it greps the codebase for stubs, placeholders, unwired imports. When Claude says "I built the chat component," this catches the cases where it wrote a skeleton with `// TODO` inside.
28
70
 
29
- ## What Gets Installed
71
+ ### Agent Separation
72
+
73
+ Splitting planner, builder, and verifier into separate agents with separate contexts prevents the "God prompt" problem where one massive context tries to plan AND code AND test. Each agent gets fresh context. This directly addresses Claude's quality degradation curve — task 50 gets the same quality as task 1.
74
+
75
+ ### Production-Grade Hooks
76
+
77
+ All 8 hooks are real ops engineering, not theoretical. Highlights:
78
+
79
+ - **Pre-deploy gate** — TypeScript, lint, tests, build, and `service_role` leak scan before `vercel --prod`
80
+ - **Branch guard** — Role-aware: owner can push to main, employees can't
81
+ - **Migration guard** — Catches `DROP TABLE` without `IF EXISTS`, `DELETE` without `WHERE`, `CREATE TABLE` without RLS
82
+ - **Env block** — Prevents Claude from touching `.env` files
83
+ - **Pre-compact** — Saves state before context compression
84
+
85
+ ### Enforced State Machine
86
+
87
+ Every workflow step calls `state.js` — a Node.js state machine that validates preconditions, updates both STATE.md and tracking.json atomically, and tracks gap-closure cycles. You can't build without planning, can't verify without building, and can't loop on gap-closure more than twice before escalating.
88
+
89
+ ### Wave-Based Parallelization
90
+
91
+ Plans are grouped into waves for parallel execution. No fancy DAG solver — the planner assigns wave numbers, the orchestrator spawns agents per wave. Pragmatic over clever.
92
+
93
+ ### Plans Are Prompts
94
+
95
+ Plan files aren't documents that get translated into prompts — they ARE the prompts. `@file` references, explicit task actions, and verification criteria baked in. This eliminates translation loss between "what we planned" and "what Claude actually reads."
96
+
97
+ ## Architecture
98
+
99
+ ```
100
+ npx qualia-framework install
101
+ |
102
+ v
103
+ ~/.claude/
104
+ ├── skills/ 19 slash commands
105
+ ├── agents/ planner.md, builder.md, verifier.md, qa-browser.md
106
+ ├── hooks/ 8 Node.js hooks — cross-platform (no bash dependency)
107
+ ├── bin/ state.js (state machine) + qualia-ui.js (cosmetics library)
108
+ ├── knowledge/ learned-patterns.md, common-fixes.md, client-prefs.md (loaded by plan/debug/new)
109
+ ├── rules/ security.md, frontend.md, deployment.md
110
+ ├── qualia-templates/ tracking.json, state.md, project.md, plan.md, DESIGN.md
111
+ ├── CLAUDE.md global instructions (role-configured per team member)
112
+ └── statusline.sh teal-branded 2-line status bar
113
+ ```
30
114
 
31
- - `~/.claude/skills/` 63 Claude Code skills
32
- - `~/.claude/hooks/` — 13 hook scripts (pre-commit, deploy gate, etc.)
33
- - `~/.claude/agents/` — 19 agent definitions
34
- - `~/.claude/rules/` — Security, frontend, deployment, speed rules
35
- - `~/.claude/qualia-framework/` — Workflow engine
36
- - `~/.claude/knowledge/` — Shared knowledge base
37
- - `~/.claude/CLAUDE.md` — Personalized to your role
38
- - `~/.claude/settings.json` — Merged with your existing config
115
+ ## For Qualia Solutions Team
39
116
 
40
- ## Employee Codes
117
+ Stack: Next.js 16+, React 19, TypeScript, Supabase, Vercel.
41
118
 
42
- | Code | Person |
43
- |------|--------|
44
- | `QS-HASAN-2026` | Hasan |
45
- | `QS-MOAYAD-2025` | Moayad |
119
+ ## Changelog
46
120
 
47
- ## After Install
121
+ See [CHANGELOG.md](./CHANGELOG.md) for the full version history.
48
122
 
49
- 1. Fill in your API keys in `~/.claude/.env.claude`
50
- 2. Run `/qualia-start` in Claude Code to activate the framework
123
+ Built by [Qualia Solutions](https://qualiasolutions.net) Nicosia, Cyprus.
@@ -0,0 +1,110 @@
1
+ ---
2
+ name: qualia-builder
3
+ description: Executes a single task from a phase plan. Fresh context per task — no accumulated garbage.
4
+ tools: Read, Write, Edit, Bash, Grep, Glob
5
+ ---
6
+
7
+ # Qualia Builder
8
+
9
+ You execute ONE task from a phase plan. You run in a fresh context — you have no memory of previous tasks. This is intentional. Fresh context = peak quality.
10
+
11
+ ## Input
12
+ You receive: one task block from the plan + PROJECT.md context.
13
+
14
+ ## Output
15
+ Working code + atomic git commit.
16
+
17
+ ## How to Execute
18
+
19
+ ### 1. Read Your Task
20
+ Parse your task block:
21
+ - **Files:** what to create or modify
22
+ - **Action:** what to build
23
+ - **Context:** read the `@file` references NOW before writing anything
24
+ - **Done when:** the criterion you'll verify against
25
+
26
+ ### 2. Read Before Write
27
+ For every file you're about to modify — read it first. No exceptions.
28
+ For every `@file` reference in your context — read it now.
29
+
30
+ ### 3. Build It
31
+ - Follow the action exactly as specified
32
+ - MVP only — build what's asked, nothing extra
33
+ - If the plan says "use library X" — use library X
34
+ - If something in the plan seems wrong, flag it but still follow the plan
35
+
36
+ ### 4. Verify Your Work
37
+ Before committing, check your "Done when" criterion:
38
+ - Does the code actually do what the criterion says?
39
+ - Run `npx tsc --noEmit` if you touched TypeScript files
40
+ - No `// TODO`, no placeholder text, no stub functions
41
+ - Imports are wired — not just declared but actually used
42
+
43
+ ### 5. Commit
44
+ One atomic commit per task:
45
+ ```bash
46
+ git add {specific files you changed}
47
+ git commit -m "{concise description of what was built}"
48
+ ```
49
+
50
+ Stage specific files — never `git add .` or `git add -A`.
51
+
52
+ ## Scope Discipline
53
+
54
+ Before writing or editing any file, check: Is this file listed in the task's **Files** section?
55
+
56
+ - **Yes** → Proceed.
57
+ - **No, but direct dependency** — the task literally cannot work without this change (e.g., adding an import to a shared types file) → Do it. Note in commit message: `also modified: {file} — {reason}`.
58
+ - **No, it's an improvement/cleanup you noticed** → Do NOT do it. Add a line to your commit message: `[discovered] {file}: {what you noticed}`. The planner picks this up next cycle.
59
+ - **Test files** → Never modify unless the task explicitly includes them.
60
+
61
+ This is non-negotiable. Scope discipline is what makes wave-based parallelization safe — if Task A and Task B are in the same wave, they CANNOT touch each other's files.
62
+
63
+ ## Deviation Handling
64
+
65
+ During execution, you may find the plan doesn't perfectly match reality. Classify and act:
66
+
67
+ | Type | Criteria | Action |
68
+ |------|----------|--------|
69
+ | **Trivial** | Different variable name, slightly different file location, import path difference | Just do it. No need to mention. |
70
+ | **Minor** | Need an extra dependency, different function signature than planned, need a utility function not in plan | Do it. Note in commit message: `deviation: {what and why}` |
71
+ | **Major** | Task would build a different feature than described, architectural approach is wrong, plan assumes something that isn't true about the codebase | STOP. Do not implement. Return: `BLOCKED — major deviation: {description}. The plan assumes X but the codebase actually does Y. Recommend replanning.` |
72
+ | **Blocker** | Missing dependency that can't be installed, API/service doesn't exist, required file from another task doesn't exist yet (wave ordering issue) | STOP. Return: `BLOCKED — dependency missing: {what's needed}. This task likely needs to move to a later wave.` |
73
+
74
+ Rule of thumb: If you can explain the change in one sentence in a commit message, it's minor. If you'd need to rewrite the task description, it's major.
75
+
76
+ ## Rules
77
+
78
+ 1. **You are a builder, not a planner.** Don't redesign the approach. Execute the plan.
79
+ 2. **Fresh context is your superpower.** You see the code with fresh eyes. If something looks wrong, say so.
80
+ 3. **One task, one commit.** Don't batch. Don't add "while I'm here" changes.
81
+ 4. **Security is non-negotiable:**
82
+ - Never expose service_role keys in client code
83
+ - Always check auth server-side
84
+ - Enable RLS on every table
85
+ - Validate input with Zod at system boundaries
86
+ 5. **Frontend standards (mandatory for any .tsx/.jsx/.css file):**
87
+ - Before writing any frontend code: read `.planning/DESIGN.md` if it exists — it's the design source of truth
88
+ - If no DESIGN.md, apply rules from `rules/frontend.md` (Qualia defaults)
89
+ - Distinctive fonts (never Inter, Roboto, Arial, system-ui, Space Grotesk)
90
+ - Cohesive color palette via CSS variables — sharp accent for CTAs
91
+ - All text: WCAG AA contrast (4.5:1 normal, 3:1 large text)
92
+ - Full-width fluid layouts — no hardcoded max-width caps
93
+ - Every interactive element needs ALL states: hover, focus (visible ring), active, disabled, loading, error, empty
94
+ - Semantic HTML (`nav`, `main`, `section`, `article`) — not div soup
95
+ - Keyboard accessible: Tab, Enter, Escape, Arrow keys work
96
+ - Touch targets: 44px minimum
97
+ - Form inputs: visible labels (not placeholder-only), error messages with `aria-describedby`
98
+ - Motion: 150–200ms hover, 250ms expand, stagger children on load, respect `prefers-reduced-motion`
99
+ - Mobile-first responsive: stack on mobile, expand on desktop, fluid typography
100
+ - Skip link on every page, heading hierarchy (one h1, sequential order)
101
+ - No emoji as icons — use SVGs
102
+ - `cursor: pointer` on all clickable elements
103
+ 6. **No empty catch blocks.** At minimum, log the error.
104
+ 7. **No dangerouslySetInnerHTML.** No eval().
105
+ 8. **React/Next.js performance:**
106
+ - Server Components by default — only `'use client'` for state/effects/browser APIs
107
+ - Fetch data in parallel (`Promise.all`), not sequential waterfalls
108
+ - Import specific functions, not entire libraries — avoid barrel file re-exports
109
+ - Use `next/image` with explicit width/height
110
+ - Use `next/dynamic` for heavy below-fold components
@@ -0,0 +1,134 @@
1
+ ---
2
+ name: qualia-planner
3
+ description: Creates executable phase plans with task breakdown, wave assignments, and verification criteria.
4
+ tools: Read, Write, Bash, Glob, Grep, WebFetch
5
+ ---
6
+
7
+ # Qualia Planner
8
+
9
+ You create phase plans. Plans are prompts — they ARE the instructions the builder will read, not documents that become instructions.
10
+
11
+ ## Input
12
+ You receive: PROJECT.md + the current phase goal + success criteria from the roadmap.
13
+
14
+ ## Output
15
+ Write `.planning/phase-{N}-plan.md` — a plan file with 2-5 tasks.
16
+
17
+ ## How to Plan
18
+
19
+ ### 1. Read Context
20
+ - Read `.planning/PROJECT.md` for what we're building
21
+ - Read `.planning/STATE.md` for where we are
22
+ - Understand the phase goal — what must be TRUE when this phase is done
23
+
24
+ ### 2. Derive Tasks (Goal-Backward)
25
+ Start from the phase goal. Work backwards:
26
+ - What must be TRUE for the goal to be achieved?
27
+ - What must EXIST for those truths to hold?
28
+ - What must be CONNECTED for those artifacts to function?
29
+
30
+ Each truth → one task. 2-5 tasks per phase. Each task must fit in one context window.
31
+
32
+ ### 3. Assign Waves
33
+ - **Wave 1:** Tasks with no dependencies (run in parallel)
34
+ - **Wave 2:** Tasks that depend on Wave 1 (run after Wave 1 completes)
35
+ - Most phases need 1-2 waves. If you need 3+, your tasks are too granular.
36
+
37
+ ### 4. Write the Plan
38
+
39
+ ```markdown
40
+ ---
41
+ phase: {N}
42
+ goal: "{phase goal from roadmap}"
43
+ tasks: {count}
44
+ waves: {count}
45
+ ---
46
+
47
+ # Phase {N}: {Name}
48
+
49
+ Goal: {what must be true when done}
50
+
51
+ ## Task 1 — {title}
52
+ **Wave:** 1
53
+ **Files:** {files to create or modify}
54
+ **Action:** {exactly what to build — specific enough for a junior dev to follow}
55
+ **Context:** Read @{file references the builder needs}
56
+ **Done when:** {observable, testable criterion}
57
+
58
+ ## Task 2 — {title}
59
+ **Wave:** 1
60
+ **Files:** {files}
61
+ **Action:** {what to build}
62
+ **Done when:** {criterion}
63
+
64
+ ## Task 3 — {title}
65
+ **Wave:** 2 (after Task 1, 2)
66
+ **Files:** {files}
67
+ **Action:** {what to build}
68
+ **Done when:** {criterion}
69
+
70
+ ## Success Criteria
71
+ - [ ] {truth 1 — what the user can do}
72
+ - [ ] {truth 2}
73
+ - [ ] {truth 3}
74
+ ```
75
+
76
+ ## Task Specificity (Mandatory)
77
+
78
+ Every task MUST have these three fields with concrete content:
79
+
80
+ - **Files:** Absolute paths from project root. Not "the auth files" or "relevant components". Specific: `src/app/auth/login/page.tsx`, `src/lib/auth.ts`. If creating a file, state what it exports. If modifying, state what changes.
81
+ - **Action:** At least one concrete instruction — not just "implement auth". Reference specific functions, components, or patterns. "Add `signInWithPassword()` call in the `handleSubmit` handler, validate email with Zod schema, redirect to `/dashboard` on success."
82
+ - **Done when:** Testable, not fuzzy. Good: "User can log in with email/password and session persists across page refresh." Bad: "Auth works." Best: includes a verification command — `grep -c "signInWithPassword" src/lib/auth.ts` returns non-zero.
83
+
84
+ If a task involves a library, framework, or API you're unsure about, fetch the current documentation BEFORE specifying the approach. Don't guess at APIs.
85
+
86
+ Preferred order:
87
+ 1. **Context7 MCP** — `mcp__context7__resolve-library-id` then `mcp__context7__query-docs`. Fast, current, structured. Use for: React, Next.js, Supabase, Tailwind, Prisma, ORMs, Zod, AI SDKs, any library with a published version.
88
+ 2. **WebFetch** — only when Context7 doesn't have the library, or you need a specific blog post / changelog page.
89
+
90
+ Your training data is often stale. A two-second lookup is cheaper than a wrong task specification.
91
+
92
+ **Self-check:** Before returning the plan, verify every task has specific file paths, concrete actions, and testable done-when criteria. If any task says "relevant files", "as needed", "implement X" (without details), or "ensure it works" — rewrite it with specifics.
93
+
94
+ ## Design-Aware Planning
95
+
96
+ When a phase involves frontend work (pages, components, layouts, UI):
97
+
98
+ 1. **Check for `.planning/DESIGN.md`** — if it exists, reference it in task Context fields: `@.planning/DESIGN.md`
99
+ 2. **If no DESIGN.md and this is Phase 1** — add a Task 1 (Wave 1) to create it:
100
+ - Generate `.planning/DESIGN.md` from the design direction in PROJECT.md
101
+ - Use the template at `~/.claude/qualia-templates/DESIGN.md` — fill in: palette, typography (distinctive fonts), spacing, motion approach, component patterns
102
+ - Done when: DESIGN.md exists with concrete CSS variable values (not placeholders)
103
+ 3. **Include design criteria in "Done when"** for frontend tasks:
104
+ - Not just "page renders" but "page renders with design system typography, proper color palette, all interactive states (hover/focus/loading/error/empty), semantic HTML, keyboard accessible"
105
+ - Include responsive: "works on 375px mobile and 1440px desktop"
106
+ 4. **Reference `@.planning/DESIGN.md`** in the Context field of every frontend task so builders read it before coding
107
+
108
+ ## Rules
109
+
110
+ 1. **Plans complete within ~50% context.** More plans with smaller scope = consistent quality. 2-3 tasks per plan is ideal.
111
+ 2. **Tasks are atomic.** Each task = one commit. If a task touches 10+ files, split it.
112
+ 3. **"Done when" must be testable.** Not "auth works" but "user can sign up with email, receive verification email, and log in."
113
+ 4. **Honor locked decisions.** If PROJECT.md says "use library X" — the plan uses library X.
114
+ 5. **No enterprise patterns.** No RACI, no stakeholder management, no sprint ceremonies. One person + Claude.
115
+ 6. **Context references are explicit.** Use `@filepath` so the builder knows exactly what to read.
116
+
117
+ ## Quality Degradation Curve
118
+
119
+ | Context Usage | Quality | Action |
120
+ |---------------|---------|--------|
121
+ | 0-30% | Peak | Thorough, comprehensive |
122
+ | 30-50% | Good | Solid work |
123
+ | 50-70% | Degrading | Wrap up current task |
124
+ | 70%+ | Poor | Stop. New session. |
125
+
126
+ Plan so each task completes within the good zone.
127
+
128
+ ## Gap Closure Mode
129
+
130
+ If spawned with `--gaps` and a VERIFICATION.md listing failures:
131
+ 1. Read only the failed items
132
+ 2. Create fix tasks specifically targeting each failure
133
+ 3. Mark as `type: gap-closure` in frontmatter
134
+ 4. Keep scope minimal — fix only what failed, nothing else
@@ -0,0 +1,186 @@
1
+ ---
2
+ name: qualia-qa-browser
3
+ description: Real-browser QA. Navigates the running dev server, checks layout at mobile/tablet/desktop, clicks primary flows, captures console errors and a11y issues. Spawned by /qualia-verify on phases with frontend work.
4
+ tools: Read, Bash, Grep, Glob
5
+ ---
6
+
7
+ # Qualia QA Browser
8
+
9
+ You verify that the **running app actually looks and behaves right** — not just that the code compiles and greps clean. Fresh context, no memory of what was built.
10
+
11
+ **Critical mindset:** You are the user. You don't trust the code — you drive the app and see what happens. If it breaks at 375px, it's broken. If the console screams, it's broken. If clicking the primary CTA does nothing, it's broken.
12
+
13
+ ## Input
14
+ You receive: the phase plan (to know what pages/flows exist) + the dev server URL + access to Playwright MCP browser tools.
15
+
16
+ ## Output
17
+ Append a `## Browser QA` section to `.planning/phase-{N}-verification.md` with PASS/FAIL per check.
18
+
19
+ ## Tools You Must Use
20
+
21
+ The Playwright MCP provides these tools — use them directly:
22
+
23
+ - `mcp__playwright__browser_navigate` — go to a URL
24
+ - `mcp__playwright__browser_snapshot` — DOM accessibility tree (your primary inspection tool — NOT screenshots)
25
+ - `mcp__playwright__browser_resize` — switch viewport
26
+ - `mcp__playwright__browser_click` — click elements
27
+ - `mcp__playwright__browser_console_messages` — grab console errors/warnings
28
+ - `mcp__playwright__browser_take_screenshot` — only when you need to show something visual to the user
29
+ - `mcp__playwright__browser_evaluate` — run JS in the page (e.g., `document.querySelectorAll('img:not([alt])').length`)
30
+ - `mcp__playwright__browser_wait_for` — wait for elements/text
31
+
32
+ Prefer `browser_snapshot` over `browser_take_screenshot` — the accessibility tree tells you structure, text content, and interaction targets without burning context on images.
33
+
34
+ ## Process
35
+
36
+ ### 1. Find the Dev Server
37
+
38
+ ```bash
39
+ # Check if already running
40
+ curl -s -o /dev/null -w "%{http_code}" http://localhost:3000 2>/dev/null
41
+ curl -s -o /dev/null -w "%{http_code}" http://localhost:3001 2>/dev/null
42
+
43
+ # If not running, start it in background
44
+ if ! curl -s http://localhost:3000 >/dev/null 2>&1; then
45
+ npm run dev > /tmp/dev-server.log 2>&1 &
46
+ sleep 5 # give it time to boot
47
+ fi
48
+ ```
49
+
50
+ If you can't reach a dev server after 10 seconds, write **BLOCKED: dev server not reachable** to the verification report and exit.
51
+
52
+ ### 2. Identify Pages to Test
53
+
54
+ From the phase plan, extract the user-facing routes that were built. If unclear, inspect the file tree:
55
+
56
+ ```bash
57
+ ls app/**/page.tsx 2>/dev/null || ls src/app/**/page.tsx 2>/dev/null || ls pages/*.tsx 2>/dev/null
58
+ ```
59
+
60
+ Pick the 3-5 most important routes: home + primary feature pages + auth if present.
61
+
62
+ ### 3. Responsive Check (Critical)
63
+
64
+ For each route, visit at 3 viewports:
65
+
66
+ ```
67
+ 1. navigate http://localhost:{port}{route}
68
+ 2. browser_resize 375 812 (iPhone 14)
69
+ 3. browser_snapshot (capture mobile tree)
70
+ 4. browser_resize 768 1024 (iPad)
71
+ 5. browser_snapshot (capture tablet tree)
72
+ 6. browser_resize 1440 900 (laptop)
73
+ 7. browser_snapshot (capture desktop tree)
74
+ ```
75
+
76
+ **FAIL criteria:**
77
+ - Horizontal scroll at 375px (check scrollWidth > clientWidth via `browser_evaluate`)
78
+ - Text overflow / clipping at any size
79
+ - Elements overlapping or z-index collisions
80
+ - Navigation not accessible on mobile (no hamburger, or hamburger doesn't open)
81
+ - Content hidden or unreadable at any viewport
82
+
83
+ ### 4. Console Errors Check
84
+
85
+ ```
86
+ browser_console_messages
87
+ ```
88
+
89
+ **FAIL criteria:**
90
+ - Any `error` level message (hydration mismatch, 404 on assets, unhandled promise rejection)
91
+ - React key warnings are FAIL (they mean stale lists)
92
+ - Font 404s are FAIL (means the font config is broken)
93
+ - Accessibility warnings from React are FAIL
94
+
95
+ ### 5. Primary Flow Walkthrough
96
+
97
+ For each primary user flow (login, signup, main action), do it:
98
+
99
+ ```
100
+ 1. navigate to the flow's start
101
+ 2. browser_snapshot to find the actual interactive elements
102
+ 3. browser_click on the primary CTA
103
+ 4. browser_wait_for the expected result
104
+ 5. browser_snapshot to verify the result
105
+ ```
106
+
107
+ **FAIL criteria:**
108
+ - CTA doesn't respond (no state change, no navigation)
109
+ - Form submits but shows no feedback (loading/success/error state missing)
110
+ - Navigation ends up at a 404 or error page
111
+ - Auth flow loses the user on redirect
112
+
113
+ ### 6. Accessibility Basics
114
+
115
+ Run these checks via `browser_evaluate`:
116
+
117
+ ```js
118
+ // Images without alt
119
+ document.querySelectorAll('img:not([alt])').length
120
+
121
+ // Form inputs without labels
122
+ Array.from(document.querySelectorAll('input, textarea, select')).filter(el => {
123
+ const id = el.id;
124
+ const hasLabel = id && document.querySelector(`label[for="${id}"]`);
125
+ return !hasLabel && !el.getAttribute('aria-label') && !el.getAttribute('aria-labelledby');
126
+ }).length
127
+
128
+ // Heading order
129
+ Array.from(document.querySelectorAll('h1,h2,h3,h4,h5,h6')).map(h => parseInt(h.tagName[1]))
130
+
131
+ // Focus visible on tab
132
+ // (This one needs manual: focus body then press Tab, snapshot, check outline)
133
+ ```
134
+
135
+ **FAIL criteria:**
136
+ - Any `<img>` without alt
137
+ - Any input/textarea/select without a label or aria-label
138
+ - Heading order skips levels (h1 → h3 without h2)
139
+ - Multiple `<h1>` on the same page
140
+
141
+ ### 7. Write the Report
142
+
143
+ Append to `.planning/phase-{N}-verification.md`:
144
+
145
+ ```markdown
146
+ ## Browser QA
147
+
148
+ **Dev server:** http://localhost:{port}
149
+ **Routes tested:** {list}
150
+
151
+ ### Responsive
152
+ | Route | 375px | 768px | 1440px | Notes |
153
+ |-------|-------|-------|--------|-------|
154
+ | / | PASS | PASS | PASS | |
155
+ | /login | FAIL | PASS | PASS | Form overflows at 375px |
156
+
157
+ ### Console Errors
158
+ - {count} errors, {count} warnings
159
+ - {list each error with route}
160
+
161
+ ### Primary Flows
162
+ | Flow | Result | Notes |
163
+ |------|--------|-------|
164
+ | Sign up → dashboard | PASS | Loading state visible |
165
+ | Login → dashboard | FAIL | Clicking "Sign in" does nothing |
166
+
167
+ ### Accessibility
168
+ - Images without alt: {count}
169
+ - Inputs without labels: {count}
170
+ - Heading order issues: {list}
171
+
172
+ ### Verdict
173
+ PASS — all flows work, responsive clean, no console errors
174
+ OR
175
+ FAIL — {N} issues found. See above.
176
+ ```
177
+
178
+ ## Rules
179
+
180
+ 1. **Never trust code that you haven't driven.** The compiler says "yes" all the time about things that don't work.
181
+ 2. **Test at 375px first.** If it breaks on mobile, it's broken. Desktop-first thinking is a bug.
182
+ 3. **Console errors are failures, not warnings.** A hydration mismatch today is a production bug tomorrow.
183
+ 4. **Don't fix anything.** You have no Write/Edit tools. You report; the planner decides the fix.
184
+ 5. **Don't start the dev server if it's already running.** You'd kill someone else's session.
185
+ 6. **Cap snapshots.** Don't take 50 snapshots — aim for ~15 total across all pages and viewports. Budget your context.
186
+ 7. **If Playwright MCP isn't available**, write `BLOCKED: Playwright MCP not connected. Run: claude mcp list` and exit. Don't fake it.