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
@@ -0,0 +1,105 @@
1
+ ---
2
+ name: qualia-report
3
+ description: "Generate session report and commit to repo. Mandatory before clock-out."
4
+ ---
5
+
6
+ # /qualia-report — Session Report
7
+
8
+ Generate a concise report of what was done. Committed to git and uploaded to the ERP for clock-out.
9
+
10
+ ## Process
11
+
12
+ ```bash
13
+ node ~/.claude/bin/qualia-ui.js banner report
14
+ ```
15
+
16
+ ### 1. Gather Data
17
+
18
+ ```bash
19
+ SINCE="8 hours ago"
20
+ echo "---COMMITS---"
21
+ git log --oneline --since="$SINCE" 2>/dev/null | head -20
22
+ echo "---STATS---"
23
+ echo "COUNT:$(git log --oneline --since="$SINCE" 2>/dev/null | wc -l)"
24
+ echo "---PROJECT---"
25
+ echo "DIR:$(basename $(pwd))"
26
+ echo "BRANCH:$(git branch --show-current 2>/dev/null)"
27
+ echo "---STATE---"
28
+ node ~/.claude/bin/state.js check 2>/dev/null
29
+ ```
30
+
31
+ ### 2. Synthesize
32
+
33
+ Build a concise summary:
34
+ - **What was done:** 3-6 bullet points. Start with verbs (Built, Fixed, Added). Group related commits.
35
+ - **Blockers:** Only if something is actually blocked.
36
+ - **Next:** 1-3 clear next actions.
37
+
38
+ ### 3. Generate Report
39
+
40
+ Write to `.planning/reports/report-{YYYY-MM-DD}.md`:
41
+
42
+ ```markdown
43
+ # Session Report — {YYYY-MM-DD}
44
+
45
+ **Project:** {name}
46
+ **Employee:** {git user.name}
47
+ **Branch:** {branch}
48
+ **Phase:** {N} — {name} ({status})
49
+ **Date:** {YYYY-MM-DD}
50
+
51
+ ## What Was Done
52
+ - {accomplishment 1}
53
+ - {accomplishment 2}
54
+ - {accomplishment 3}
55
+
56
+ ## Blockers
57
+ None. / - {blocker}
58
+
59
+ ## Next Steps
60
+ 1. {next action}
61
+ 2. {next action}
62
+
63
+ ## Commits
64
+ {list from git log}
65
+ ```
66
+
67
+ ### 4. Commit and Push
68
+
69
+ ```bash
70
+ mkdir -p .planning/reports
71
+ git add .planning/reports/report-{date}.md
72
+ git commit -m "report: session {YYYY-MM-DD}"
73
+ git push
74
+ ```
75
+
76
+ ### 5. Upload to ERP
77
+
78
+ **This step is MANDATORY** — the clock-out modal requires the report to be uploaded.
79
+
80
+ ```bash
81
+ ERP_URL="https://portal.qualiasolutions.net"
82
+ API_KEY=$(cat ~/.claude/.erp-api-key 2>/dev/null)
83
+ REPORT_FILE=".planning/reports/report-{date}.md"
84
+ EMAIL=$(git config user.email)
85
+ PROJECT=$(basename $(pwd))
86
+
87
+ curl -s -X POST "$ERP_URL/api/claude/report-upload" \
88
+ -H "X-API-Key: $API_KEY" \
89
+ -F "file=@$REPORT_FILE" \
90
+ -F "employee_email=$EMAIL" \
91
+ -F "project_name=$PROJECT"
92
+ ```
93
+
94
+ If the upload succeeds, print: "Report uploaded to ERP. You can now clock out."
95
+ If it fails (no API key, network error), print the error and tell the employee to ask Fawzi.
96
+
97
+ ### 6. Update State
98
+
99
+ ```bash
100
+ node ~/.claude/bin/state.js transition --to activity --notes "Session report generated"
101
+ ```
102
+
103
+ Do NOT manually edit STATE.md or tracking.json — state.js handles both.
104
+
105
+ Employee cannot skip this. Run `/qualia-report` before clock-out.
@@ -0,0 +1,49 @@
1
+ ---
2
+ name: qualia-resume
3
+ description: "Restore context from a previous session. Reads .continue-here.md or STATE.md, summarizes where you left off, routes to next action. Trigger on 'resume', 'continue', 'pick up where I left off', 'what was I doing'."
4
+ ---
5
+
6
+ # /qualia-resume — Resume Work
7
+
8
+ Restore context and route to the right next action.
9
+
10
+ ## Process
11
+
12
+ ### 1. Find Context (priority order)
13
+
14
+ 1. `.continue-here.md` — richest source, from `/qualia-pause`
15
+ 2. `.planning/STATE.md` — project state
16
+ 3. Git history — `git log --oneline -10` + `git diff --stat`
17
+
18
+ ### 2. Restore
19
+
20
+ **If `.continue-here.md` exists:** Read fully. Summarize: what was done, what's in progress, next steps, blockers.
21
+
22
+ **If only STATE.md:** Read STATE.md + tracking.json. Show current phase and status.
23
+
24
+ **If neither:** Reconstruct from git. Present findings, ask user to confirm.
25
+
26
+ ### 3. Detect Incomplete Work
27
+
28
+ - Phase has plan but no verification → execution may be incomplete
29
+ - Uncommitted changes → `git status --short`
30
+ - Phase marked in-progress in STATE.md
31
+
32
+ ### 4. Present and Route
33
+
34
+ ```bash
35
+ node ~/.claude/bin/qualia-ui.js banner resume
36
+ node ~/.claude/bin/qualia-ui.js info "Last session: {summary}"
37
+ ```
38
+
39
+ If uncommitted changes:
40
+ ```bash
41
+ node ~/.claude/bin/qualia-ui.js warn "{N} uncommitted files"
42
+ ```
43
+
44
+ End with the next command:
45
+ ```bash
46
+ node ~/.claude/bin/qualia-ui.js next "{next command}"
47
+ ```
48
+
49
+ Clean up `.continue-here.md` after restoration (or offer to keep it).
@@ -0,0 +1,76 @@
1
+ ---
2
+ name: qualia-review
3
+ description: "Production audit and code review. General review, --web for web app audit, --ai for AI/voice agent audit. Trigger on 'review', 'audit', 'code review', 'security check', 'production check'."
4
+ ---
5
+
6
+ # /qualia-review — Production Audit
7
+
8
+ Deep review with severity-scored findings. Different from `/qualia-verify` (which checks phase goals). This checks production readiness.
9
+
10
+ ## Usage
11
+
12
+ - `/qualia-review` — General code review
13
+ - `/qualia-review --web` — Web app production audit
14
+ - `/qualia-review --ai` — AI/voice agent audit
15
+
16
+ ## General Review (default)
17
+
18
+ ```bash
19
+ node ~/.claude/bin/qualia-ui.js banner review
20
+ ```
21
+
22
+ Spawn parallel agents analyzing:
23
+
24
+ 1. **Code Quality** — Clean code, TypeScript strictness, naming, readability
25
+ 2. **Security** — OWASP top 10, auth server-side, RLS policies, secrets scan
26
+ 3. **Architecture** — Component boundaries, coupling, API contracts
27
+ 4. **Performance** — N+1 queries, bundle size, caching, render performance
28
+ 5. **Test Coverage** — Gaps, edge cases, test quality
29
+
30
+ ## --web (Web App Audit)
31
+
32
+ Full production readiness for Next.js + Supabase + Vercel:
33
+
34
+ **Security:** No secrets in code, HTTPS, CORS restricted, CSP headers, rate limiting, npm audit clean.
35
+
36
+ **Performance:** Core Web Vitals (LCP < 2.5s, CLS < 0.1), image optimization, bundle analysis, query performance.
37
+
38
+ **Reliability:** Error boundaries, API error handling, graceful degradation, health check endpoint.
39
+
40
+ **Observability:** Error tracking (Sentry), structured logging, uptime monitoring, analytics.
41
+
42
+ ## --ai (AI/Voice Agent Audit)
43
+
44
+ Auto-detect stack (VAPI, ElevenLabs, Retell, OpenAI, Anthropic, pgvector).
45
+
46
+ **Prompt Safety:** System prompts not exposed, injection defenses, no eval() on AI output, token limits.
47
+
48
+ **Conversation Flow:** Off-topic handling, context window management, error recovery, human handoff.
49
+
50
+ **Voice (if detected):** Latency < 500ms, interruption handling, silence timeout, webhook security.
51
+
52
+ **RAG (if detected):** Embedding consistency, chunk size, retrieval relevance, index refresh.
53
+
54
+ **Resilience:** Provider failover, timeout handling, cost monitoring, streaming error recovery.
55
+
56
+ ## Output
57
+
58
+ Every finding:
59
+ - **What** — description
60
+ - **Where** — `file:line`
61
+ - **Fix** — concrete suggestion
62
+ - **Severity** — CRITICAL / HIGH / MEDIUM / LOW
63
+
64
+ Write to `.planning/REVIEW.md`. CRITICAL or HIGH findings are deploy blockers — `/qualia-ship` checks for them.
65
+
66
+ ```
67
+ ⬢ Review Complete
68
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
69
+ Critical: {N}
70
+ High: {N}
71
+ Medium: {N}
72
+ Low: {N}
73
+
74
+ {If blockers: Fix CRITICAL/HIGH before /qualia-ship}
75
+ {If clean: Ready to ship}
76
+ ```
@@ -0,0 +1,90 @@
1
+ ---
2
+ name: qualia-ship
3
+ description: "Deploy to production — quality gates, commit, push, deploy, verify. Use when ready to go live."
4
+ ---
5
+
6
+ # /qualia-ship — Deploy
7
+
8
+ Full deployment pipeline with quality gates.
9
+
10
+ ## Process
11
+
12
+ ```bash
13
+ node ~/.claude/bin/qualia-ui.js banner ship
14
+ ```
15
+
16
+ ### 1. Quality Gates
17
+
18
+ Run in sequence. Auto-fix failures (up to 2 attempts).
19
+
20
+ ```bash
21
+ npx tsc --noEmit # TypeScript — must pass
22
+ npx eslint . --max-warnings 0 # Lint — auto-fix first
23
+ npm run build # Build — must succeed
24
+ ```
25
+
26
+ On failure:
27
+ 1. Summarize what failed in plain language
28
+ 2. Auto-fix
29
+ 3. Re-run the gate
30
+ 4. If still failing after 2 attempts: tell the employee, suggest `/qualia-debug`
31
+
32
+ ### 2. Security Check
33
+
34
+ ```bash
35
+ # service_role in client code?
36
+ grep -r "service_role" app/ components/ src/ 2>/dev/null | grep -v node_modules | grep -v ".server."
37
+ # Should be ZERO matches
38
+ ```
39
+
40
+ ### 3. Git
41
+
42
+ ```bash
43
+ git add {specific changed files}
44
+ git commit -m "ship: {project name} production deploy"
45
+ git push
46
+ ```
47
+
48
+ Employee stays on feature branch. Never push to main.
49
+
50
+ ### 4. Deploy
51
+
52
+ ```bash
53
+ vercel --prod # Website/AI agent
54
+ # OR
55
+ supabase functions deploy # Edge functions
56
+ # OR
57
+ wrangler deploy # Cloudflare Workers
58
+ ```
59
+
60
+ ### 5. Post-Deploy Verification
61
+
62
+ ```bash
63
+ # HTTP 200
64
+ curl -s -o /dev/null -w "%{http_code}" {domain}
65
+
66
+ # Latency under 500ms
67
+ curl -s -o /dev/null -w "%{time_total}" {domain}
68
+
69
+ # Auth endpoint responds
70
+ curl -s -o /dev/null -w "%{http_code}" {domain}/api/auth/callback
71
+ ```
72
+
73
+ ### 6. Report
74
+
75
+ ```bash
76
+ node ~/.claude/bin/qualia-ui.js divider
77
+ node ~/.claude/bin/qualia-ui.js ok "URL: {production url}"
78
+ node ~/.claude/bin/qualia-ui.js ok "Status: HTTP 200"
79
+ node ~/.claude/bin/qualia-ui.js ok "Latency: {time}ms"
80
+ node ~/.claude/bin/qualia-ui.js ok "Auth endpoint responds"
81
+ ```
82
+
83
+ ```bash
84
+ node ~/.claude/bin/state.js transition --to shipped --deployed-url {production url}
85
+ ```
86
+ Do NOT manually edit STATE.md or tracking.json — state.js handles both.
87
+
88
+ ```bash
89
+ node ~/.claude/bin/qualia-ui.js end "SHIPPED" "/qualia-handoff"
90
+ ```
@@ -0,0 +1,167 @@
1
+ ---
2
+ name: qualia-skill-new
3
+ description: "Author a new Qualia skill or agent. Use when the user says 'create a new skill', 'add a skill', 'I want to build a skill', 'make this a reusable command', 'turn this into a skill'. Generates the SKILL.md, registers it in the right location, and optionally ships to the framework repo."
4
+ ---
5
+
6
+ # /qualia-skill-new — Author a New Skill
7
+
8
+ You are about to create a reusable slash command. Skills are the leverage of the Qualia framework — if the team does something twice, it probably belongs here.
9
+
10
+ ## Process
11
+
12
+ ```bash
13
+ node ~/.claude/bin/qualia-ui.js banner skill-new
14
+ ```
15
+
16
+ ### 1. Scope Decision
17
+
18
+ Ask the user with AskUserQuestion:
19
+
20
+ ```
21
+ question: "Where should this skill live?"
22
+ header: "Scope"
23
+ options:
24
+ - label: "Framework skill (ships to the team)"
25
+ description: "Edit qualia-framework repo. Everyone gets it on next update."
26
+ - label: "Local skill (just me)"
27
+ description: "Lives only in ~/.claude/skills/. Not shared."
28
+ - label: "Agent instead of a skill"
29
+ description: "This is a subagent role, not a slash command. Creates agents/{name}.md."
30
+ ```
31
+
32
+ ### 1a. Resolve framework directory
33
+
34
+ If the user chose **Framework skill** or a framework-scoped **Agent**, resolve `${FRAMEWORK_DIR}` — the checkout path of this user's qualia-framework repo — BEFORE computing any target paths. Never hardcode `/home/<user>/...`; different teammates and operating systems have different paths.
35
+
36
+ ```bash
37
+ # Priority order: env var → git detection → ask user
38
+ FRAMEWORK_DIR="${QUALIA_FRAMEWORK_DIR:-}"
39
+ if [ -z "$FRAMEWORK_DIR" ] && git -C . rev-parse --show-toplevel >/dev/null 2>&1; then
40
+ ORIGIN=$(git -C . config --get remote.origin.url 2>/dev/null)
41
+ case "$ORIGIN" in
42
+ *qualia-framework*) FRAMEWORK_DIR=$(git -C . rev-parse --show-toplevel) ;;
43
+ esac
44
+ fi
45
+ echo "${FRAMEWORK_DIR:-UNRESOLVED}"
46
+ ```
47
+
48
+ If the command prints `UNRESOLVED`, ask the user: *"Where is your qualia-framework checkout? (absolute path, or type 'local' to save only to ~/.claude/)"*. If they type `local`, downgrade the scope to Local. Otherwise store the answer as `${FRAMEWORK_DIR}` for the rest of the session.
49
+
50
+ **Framework** → target: `${FRAMEWORK_DIR}/skills/{name}/SKILL.md`
51
+ **Local** → target: `~/.claude/skills/{name}/SKILL.md`
52
+ **Agent** → target: `${FRAMEWORK_DIR}/agents/{name}.md` (framework) or `~/.claude/agents/{name}.md` (local)
53
+
54
+ ### 2. Gather Requirements
55
+
56
+ Ask the user — one question at a time, natural conversation:
57
+
58
+ 1. **"What's the name?"** — kebab-case, prefix with `qualia-` for framework skills. E.g., `qualia-seed-db`.
59
+ 2. **"What does it do?"** — one sentence, used as the description.
60
+ 3. **"How does the user invoke it?"** — trigger phrases they'd naturally say. E.g., "seed the database", "load test data", "populate dev db".
61
+ 4. **"Does it need planning / building / verification?"** — if yes, it probably should spawn an agent. If no, it's a direct-action skill.
62
+ 5. **"What files does it read or write?"** — tells you what tools to restrict to.
63
+
64
+ ### 3. Read Reference Skills
65
+
66
+ Before writing, read two existing skills that are structurally similar:
67
+
68
+ ```bash
69
+ # Short direct-action skill reference:
70
+ cat ~/.claude/skills/qualia-learn/SKILL.md
71
+
72
+ # Skill-that-spawns-an-agent reference:
73
+ cat ~/.claude/skills/qualia-plan/SKILL.md
74
+
75
+ # Interactive wizard reference:
76
+ cat ~/.claude/skills/qualia-new/SKILL.md
77
+ ```
78
+
79
+ Pick the closest pattern and copy its structure.
80
+
81
+ ### 4. Write the SKILL.md
82
+
83
+ Every SKILL.md MUST have:
84
+
85
+ ```markdown
86
+ ---
87
+ name: {kebab-case-name}
88
+ description: "{one sentence}. {trigger phrases}"
89
+ ---
90
+
91
+ # /{name} — {Human Title}
92
+
93
+ {one-paragraph explanation}
94
+
95
+ ## Usage
96
+
97
+ `/{name}` — {default behavior}
98
+ `/{name} {arg}` — {with argument}
99
+
100
+ ## Process
101
+
102
+ ### 1. {First Step}
103
+ {specifics}
104
+
105
+ ### 2. {Second Step}
106
+ {specifics}
107
+
108
+ ### N. Update State (only if this skill changes project state)
109
+
110
+ ```bash
111
+ node ~/.claude/bin/state.js transition --to {status} ...
112
+ ```
113
+ Do NOT manually edit STATE.md or tracking.json.
114
+ ```
115
+
116
+ **Description field rules:**
117
+ - MUST include trigger phrases the user would naturally say
118
+ - The Claude Code router matches user messages against descriptions — if you don't list triggers, the skill never fires
119
+ - Bad: `"Manages database seeding."` (no triggers)
120
+ - Good: `"Seed the database with test data. Trigger on 'seed db', 'load test data', 'populate dev'."`
121
+
122
+ ### 5. Test the Skill
123
+
124
+ Spawn a fresh subagent to simulate running the skill — does it make sense without the context you have right now?
125
+
126
+ ```
127
+ Agent(prompt="
128
+ Read this skill: @~/.claude/skills/{name}/SKILL.md
129
+
130
+ Pretend the user just said '{one of the trigger phrases}'. Walk through what you would do, step by step. Flag anything ambiguous or missing.
131
+ ", subagent_type="general-purpose", description="Test skill {name}")
132
+ ```
133
+
134
+ Fix any ambiguity the test agent found.
135
+
136
+ ### 6. Install (if framework skill)
137
+
138
+ ```bash
139
+ # Framework skill — copy to local .claude for immediate testing
140
+ mkdir -p ~/.claude/skills/{name}
141
+ cp "${FRAMEWORK_DIR}/skills/{name}/SKILL.md" ~/.claude/skills/{name}/SKILL.md
142
+
143
+ # Verify it parses
144
+ node -e "const fs=require('fs');const os=require('os');const path=require('path');const c=fs.readFileSync(path.join(os.homedir(),'.claude/skills/{name}/SKILL.md'),'utf8');if(!c.includes('---'))throw new Error('missing frontmatter');if(!c.match(/^name:\s*\S/m))throw new Error('missing name');if(!c.match(/^description:\s*\S/m))throw new Error('missing description');console.log('OK')"
145
+ ```
146
+
147
+ ### 7. Commit (framework skills only)
148
+
149
+ Do NOT commit unless the user explicitly says "commit" or "ship it".
150
+
151
+ When they do:
152
+ ```bash
153
+ cd "${FRAMEWORK_DIR}"
154
+ git add skills/{name}/
155
+ git commit -m "feat: add /{name} skill"
156
+ ```
157
+
158
+ Remind the user to run `npx qualia-framework update` on their other machines, or bump the version and `npm publish`.
159
+
160
+ ## Anti-Patterns
161
+
162
+ - ❌ **Description without triggers** — the skill won't fire
163
+ - ❌ **Multiple commands in one skill** — split into two skills
164
+ - ❌ **Direct file writes instead of state.js** — always use state.js for STATE.md/tracking.json
165
+ - ❌ **Hardcoded project paths** — use `.planning/` relative or `~/.claude/` absolute, never `/home/specific-user/`
166
+ - ❌ **Skills that spawn agents without passing PROJECT.md and STATE.md context** — agents are blind by default
167
+ - ❌ **Skills longer than ~150 lines** — split or move logic to an agent
@@ -0,0 +1,91 @@
1
+ ---
2
+ name: qualia-task
3
+ description: "Build a single task — more structured than /qualia-quick, lighter than /qualia-build. Spawns a fresh builder agent for one focused task."
4
+ ---
5
+
6
+ # /qualia-task — Single Task Builder
7
+
8
+ Build one thing properly. Fresh builder context, atomic commit, but no phase plan needed.
9
+
10
+ ## Usage
11
+ `/qualia-task` — describe what to build interactively
12
+ `/qualia-task {description}` — build it directly
13
+
14
+ ## When to Use
15
+ - One feature, 1-5 files, clear scope, 1-3 hours of work
16
+ - Adding a single feature, component, API route, or integration
17
+ - Refactoring one module
18
+ - Building something specific someone asked for
19
+
20
+ ## Process
21
+
22
+ ### 1. Clarify
23
+
24
+ If no description provided, ask: **"What do you want to build?"**
25
+
26
+ Then use AskUserQuestion:
27
+
28
+ ```
29
+ question: "How complex is this task?"
30
+ header: "Scope"
31
+ options:
32
+ - label: "Small (1-2hrs)"
33
+ description: "Single file or component, straightforward implementation"
34
+ - label: "Medium (2-3hrs)"
35
+ description: "Multiple files, some integration work, needs testing"
36
+ - label: "Large (3hrs+)"
37
+ description: "Significant feature, multiple components — use /qualia-plan instead"
38
+ ```
39
+
40
+ If "Large" — suggest `/qualia-plan` instead. Ask if they want to proceed anyway.
41
+
42
+ ### 2. Task Spec
43
+
44
+ Write a quick task spec (don't save to file, just confirm with user):
45
+
46
+ ```bash
47
+ node ~/.claude/bin/qualia-ui.js banner task
48
+ node ~/.claude/bin/qualia-ui.js info "What: {what to build}"
49
+ node ~/.claude/bin/qualia-ui.js info "Files: {files to create/modify}"
50
+ node ~/.claude/bin/qualia-ui.js info "Done: {what done looks like}"
51
+ ```
52
+
53
+ Ask: **"Good to build?"**
54
+
55
+ ### 3. Build
56
+
57
+ Spawn a builder agent with the task:
58
+
59
+ ```
60
+ Agent(subagent_type: "qualia-builder")
61
+
62
+ Task: {task description}
63
+ Files: {files to create/modify}
64
+ Done when: {completion criteria}
65
+
66
+ Context: Read PROJECT.md if it exists. Follow all rules (security, frontend, deployment).
67
+ ```
68
+
69
+ The builder runs in fresh context — reads before writing, follows rules, commits atomically.
70
+
71
+ ### 4. Verify
72
+
73
+ After the builder finishes:
74
+ - Run `npx tsc --noEmit` if TypeScript
75
+ - Quick smoke test if applicable
76
+ - Review what was built
77
+
78
+ ### 5. Report
79
+
80
+ ```bash
81
+ node ~/.claude/bin/qualia-ui.js divider
82
+ node ~/.claude/bin/qualia-ui.js ok "Task: {description}"
83
+ node ~/.claude/bin/qualia-ui.js ok "Files: {files changed}"
84
+ node ~/.claude/bin/qualia-ui.js ok "Commit: {commit hash}"
85
+ node ~/.claude/bin/qualia-ui.js end "TASK COMPLETE"
86
+ ```
87
+
88
+ ```bash
89
+ node ~/.claude/bin/state.js transition --to note --notes "{task description}"
90
+ ```
91
+ Do NOT manually edit STATE.md or tracking.json — state.js handles both.
@@ -0,0 +1,113 @@
1
+ ---
2
+ name: qualia-verify
3
+ description: "Goal-backward verification — checks if the phase ACTUALLY works, not just if tasks completed. Spawns verifier agent."
4
+ ---
5
+
6
+ # /qualia-verify — Verify a Phase
7
+
8
+ Spawn a verifier agent to check if the phase goal was achieved. Does NOT trust build summaries — greps the actual codebase.
9
+
10
+ ## Usage
11
+ `/qualia-verify` — verify the current built phase
12
+ `/qualia-verify {N}` — verify specific phase
13
+
14
+ ## Process
15
+
16
+ ### 1. Load Context
17
+
18
+ ```bash
19
+ echo "---PLAN---"
20
+ cat .planning/phase-{N}-plan.md 2>/dev/null
21
+ echo "---PREVIOUS---"
22
+ cat .planning/phase-{N}-verification.md 2>/dev/null || echo "NONE"
23
+ ```
24
+
25
+ ### 2. Spawn Verifier (Fresh Context)
26
+
27
+ ```bash
28
+ node ~/.claude/bin/qualia-ui.js banner verify {N} "{phase name}"
29
+ node ~/.claude/bin/qualia-ui.js spawn verifier "Goal-backward check..."
30
+ ```
31
+
32
+ ```
33
+ Agent(prompt="
34
+ Read your role: @agents/verifier.md
35
+
36
+ Phase plan with success criteria:
37
+ @.planning/phase-{N}-plan.md
38
+
39
+ {If re-verification: Previous verification with gaps:}
40
+ {@.planning/phase-{N}-verification.md}
41
+
42
+ Verify this phase. Write report to .planning/phase-{N}-verification.md
43
+ ", subagent_type="qualia-verifier", description="Verify phase {N}")
44
+ ```
45
+
46
+ ### 2b. Browser QA (if phase touched frontend)
47
+
48
+ If the phase plan's Files section includes any `.tsx`, `.jsx`, `.css`, `.scss`, or `app/`/`pages/`/`components/` paths, ALSO spawn the browser QA agent in parallel:
49
+
50
+ ```bash
51
+ # Detect frontend touch
52
+ grep -l "\.tsx\|\.jsx\|\.css\|app/\|components/\|pages/" .planning/phase-{N}-plan.md && FRONTEND=true
53
+ ```
54
+
55
+ If frontend:
56
+
57
+ ```
58
+ Agent(prompt="
59
+ Read your role: @agents/qa-browser.md
60
+
61
+ Phase plan: @.planning/phase-{N}-plan.md
62
+ Existing verification: @.planning/phase-{N}-verification.md
63
+
64
+ Drive the running dev server and test the routes this phase touched. Append a '## Browser QA' section to the verification file.
65
+ ", subagent_type="qualia-qa-browser", description="Browser QA phase {N}")
66
+ ```
67
+
68
+ Wait for both the main verifier and the QA browser agent before moving to step 3. If Playwright MCP is unavailable, the QA browser agent returns BLOCKED — that's not a phase failure, just a note in the report.
69
+
70
+ ### 3. Present Results
71
+
72
+ Read the verification report. Present:
73
+
74
+ **If PASS:**
75
+ ```bash
76
+ node ~/.claude/bin/qualia-ui.js ok "All {count} criteria passed"
77
+ node ~/.claude/bin/qualia-ui.js end "PHASE {N} VERIFIED" "/qualia-plan {N+1}"
78
+ ```
79
+ (If phase == total phases, use `/qualia-polish` as the next command.)
80
+
81
+ **If FAIL:**
82
+ ```bash
83
+ node ~/.claude/bin/qualia-ui.js ok "Passed: {pass_count}"
84
+ node ~/.claude/bin/qualia-ui.js fail "Failed: {fail_count}"
85
+ ```
86
+
87
+ Then for each gap:
88
+ ```bash
89
+ node ~/.claude/bin/qualia-ui.js fail "{gap description}"
90
+ ```
91
+
92
+ End:
93
+ ```bash
94
+ node ~/.claude/bin/qualia-ui.js end "PHASE {N} GAPS FOUND" "/qualia-plan {N} --gaps"
95
+ ```
96
+
97
+ ### 4. Update State
98
+
99
+ ```bash
100
+ node ~/.claude/bin/state.js transition --to verified --phase {N} --verification {pass|fail}
101
+ ```
102
+ If PASS and more phases: state.js auto-advances to the next phase.
103
+ If FAIL and gap_cycles >= 2: state.js returns GAP_CYCLE_LIMIT — tell the employee to escalate.
104
+ If FAIL and gap_cycles < 2: proceed to `/qualia-plan {N} --gaps`.
105
+ Do NOT manually edit STATE.md or tracking.json — state.js handles both.
106
+
107
+ ### 5. Passive Knowledge Capture (on FAIL)
108
+
109
+ When verification fails, after showing the gaps, ask the user:
110
+
111
+ > *"Was any of this a recurring issue worth saving to common-fixes.md? (yes / no / which ones)"*
112
+
113
+ If yes, for each flagged gap spawn a brief `/qualia-learn` flow with type=`fix` — the gap title and fix direction from the verification report become the entry. Do NOT save every failure automatically — only the ones the user flags. The point is to build a real knowledge base, not a log of every mistake.