qualia-framework 2.5.1 → 3.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (327) hide show
  1. package/CLAUDE.md +63 -0
  2. package/README.md +108 -30
  3. package/agents/builder.md +110 -0
  4. package/agents/planner.md +186 -0
  5. package/agents/qa-browser.md +186 -0
  6. package/agents/verifier.md +369 -0
  7. package/bin/cli.js +706 -417
  8. package/bin/install.js +622 -0
  9. package/bin/qualia-ui.js +284 -0
  10. package/bin/state.js +824 -0
  11. package/bin/statusline.js +252 -0
  12. package/docs/erp-contract.md +161 -0
  13. package/guide.md +63 -0
  14. package/hooks/auto-update.js +117 -0
  15. package/hooks/block-env-edit.js +52 -0
  16. package/hooks/branch-guard.js +68 -0
  17. package/hooks/migration-guard.js +83 -0
  18. package/hooks/pre-compact.js +52 -0
  19. package/hooks/pre-deploy-gate.js +149 -0
  20. package/hooks/pre-push.js +53 -0
  21. package/hooks/session-start.js +126 -0
  22. package/package.json +31 -17
  23. package/rules/design-reference.md +179 -0
  24. package/rules/frontend.md +126 -0
  25. package/rules/infrastructure.md +87 -0
  26. package/skills/qualia/SKILL.md +88 -0
  27. package/skills/qualia-build/SKILL.md +115 -0
  28. package/skills/qualia-debug/SKILL.md +87 -0
  29. package/skills/qualia-design/SKILL.md +99 -0
  30. package/skills/qualia-handoff/SKILL.md +66 -0
  31. package/skills/qualia-help/SKILL.md +60 -0
  32. package/skills/qualia-idk/SKILL.md +8 -0
  33. package/skills/qualia-learn/SKILL.md +111 -0
  34. package/skills/qualia-new/SKILL.md +323 -0
  35. package/skills/qualia-pause/SKILL.md +63 -0
  36. package/skills/qualia-plan/SKILL.md +101 -0
  37. package/skills/qualia-polish/SKILL.md +207 -0
  38. package/skills/qualia-quick/SKILL.md +37 -0
  39. package/skills/qualia-report/SKILL.md +114 -0
  40. package/skills/qualia-resume/SKILL.md +49 -0
  41. package/skills/qualia-review/SKILL.md +161 -0
  42. package/skills/qualia-ship/SKILL.md +90 -0
  43. package/skills/qualia-skill-new/SKILL.md +167 -0
  44. package/skills/qualia-task/SKILL.md +91 -0
  45. package/skills/qualia-test/SKILL.md +134 -0
  46. package/skills/qualia-verify/SKILL.md +113 -0
  47. package/templates/DESIGN.md +475 -0
  48. package/templates/help.html +476 -0
  49. package/templates/plan.md +42 -0
  50. package/templates/project.md +22 -0
  51. package/templates/state.md +27 -0
  52. package/templates/tracking.json +20 -0
  53. package/tests/bin.test.sh +687 -0
  54. package/tests/hooks.test.sh +384 -0
  55. package/tests/runner.js +1956 -0
  56. package/tests/state.test.sh +713 -0
  57. package/tests/statusline.test.sh +243 -0
  58. package/bin/collect-metrics.sh +0 -62
  59. package/framework/.claudeignore +0 -51
  60. package/framework/CLAUDE.md +0 -51
  61. package/framework/MCP_SETUP.md +0 -229
  62. package/framework/agents/architecture-strategist.md +0 -53
  63. package/framework/agents/backend-agent.md +0 -150
  64. package/framework/agents/code-simplicity-reviewer.md +0 -86
  65. package/framework/agents/frontend-agent.md +0 -111
  66. package/framework/agents/kieran-typescript-reviewer.md +0 -96
  67. package/framework/agents/performance-oracle.md +0 -111
  68. package/framework/agents/qualia-codebase-mapper.md +0 -761
  69. package/framework/agents/qualia-debugger.md +0 -1204
  70. package/framework/agents/qualia-executor.md +0 -882
  71. package/framework/agents/qualia-integration-checker.md +0 -424
  72. package/framework/agents/qualia-phase-researcher.md +0 -457
  73. package/framework/agents/qualia-plan-checker.md +0 -700
  74. package/framework/agents/qualia-planner.md +0 -1245
  75. package/framework/agents/qualia-project-researcher.md +0 -603
  76. package/framework/agents/qualia-research-synthesizer.md +0 -200
  77. package/framework/agents/qualia-roadmapper.md +0 -606
  78. package/framework/agents/qualia-verifier.md +0 -686
  79. package/framework/agents/red-team-qa.md +0 -130
  80. package/framework/agents/security-auditor.md +0 -72
  81. package/framework/agents/team-orchestrator.md +0 -229
  82. package/framework/agents/teams/framework-audit-team.md +0 -66
  83. package/framework/agents/teams/full-stack-team.md +0 -48
  84. package/framework/agents/teams/optimize-team.md +0 -53
  85. package/framework/agents/teams/review-team.md +0 -70
  86. package/framework/agents/teams/ship-team.md +0 -86
  87. package/framework/agents/test-agent.md +0 -182
  88. package/framework/hooks/auto-format.sh +0 -54
  89. package/framework/hooks/block-env-edit.sh +0 -42
  90. package/framework/hooks/branch-guard.sh +0 -43
  91. package/framework/hooks/confirm-delete.sh +0 -59
  92. package/framework/hooks/migration-validate.sh +0 -77
  93. package/framework/hooks/notification-speak.sh +0 -16
  94. package/framework/hooks/pre-commit.sh +0 -100
  95. package/framework/hooks/pre-compact.sh +0 -56
  96. package/framework/hooks/pre-deploy-gate.sh +0 -160
  97. package/framework/hooks/qualia-colors.sh +0 -32
  98. package/framework/hooks/retention-cleanup.sh +0 -62
  99. package/framework/hooks/save-session-state.sh +0 -185
  100. package/framework/hooks/session-context-loader.sh +0 -96
  101. package/framework/hooks/session-learn.sh +0 -32
  102. package/framework/hooks/skill-announce.sh +0 -123
  103. package/framework/hooks/tool-error-announce.sh +0 -27
  104. package/framework/install.ps1 +0 -323
  105. package/framework/install.sh +0 -313
  106. package/framework/qualia-framework/VERSION +0 -1
  107. package/framework/qualia-framework/assets/qualia-logo.png +0 -0
  108. package/framework/qualia-framework/bin/collect-metrics.sh +0 -67
  109. package/framework/qualia-framework/bin/generate-report-docx.py +0 -429
  110. package/framework/qualia-framework/bin/qualia-tools.js +0 -2201
  111. package/framework/qualia-framework/bin/qualia-tools.test.js +0 -1054
  112. package/framework/qualia-framework/references/checkpoints.md +0 -775
  113. package/framework/qualia-framework/references/completion-checklists.md +0 -359
  114. package/framework/qualia-framework/references/continuation-format.md +0 -249
  115. package/framework/qualia-framework/references/continuation-prompt.md +0 -97
  116. package/framework/qualia-framework/references/decimal-phase-calculation.md +0 -65
  117. package/framework/qualia-framework/references/design-quality.md +0 -56
  118. package/framework/qualia-framework/references/employee-guide.md +0 -167
  119. package/framework/qualia-framework/references/git-integration.md +0 -254
  120. package/framework/qualia-framework/references/git-planning-commit.md +0 -50
  121. package/framework/qualia-framework/references/model-profile-resolution.md +0 -32
  122. package/framework/qualia-framework/references/model-profiles.md +0 -73
  123. package/framework/qualia-framework/references/phase-argument-parsing.md +0 -61
  124. package/framework/qualia-framework/references/planning-config.md +0 -195
  125. package/framework/qualia-framework/references/questioning.md +0 -141
  126. package/framework/qualia-framework/references/tdd.md +0 -263
  127. package/framework/qualia-framework/references/ui-brand.md +0 -160
  128. package/framework/qualia-framework/references/verification-patterns.md +0 -612
  129. package/framework/qualia-framework/templates/DEBUG.md +0 -159
  130. package/framework/qualia-framework/templates/DESIGN.md +0 -81
  131. package/framework/qualia-framework/templates/UAT.md +0 -247
  132. package/framework/qualia-framework/templates/codebase/architecture.md +0 -255
  133. package/framework/qualia-framework/templates/codebase/concerns.md +0 -310
  134. package/framework/qualia-framework/templates/codebase/conventions.md +0 -307
  135. package/framework/qualia-framework/templates/codebase/integrations.md +0 -280
  136. package/framework/qualia-framework/templates/codebase/stack.md +0 -186
  137. package/framework/qualia-framework/templates/codebase/structure.md +0 -285
  138. package/framework/qualia-framework/templates/codebase/testing.md +0 -480
  139. package/framework/qualia-framework/templates/config.json +0 -35
  140. package/framework/qualia-framework/templates/context.md +0 -283
  141. package/framework/qualia-framework/templates/continue-here.md +0 -78
  142. package/framework/qualia-framework/templates/debug-subagent-prompt.md +0 -91
  143. package/framework/qualia-framework/templates/discovery.md +0 -146
  144. package/framework/qualia-framework/templates/lab-notes.md +0 -16
  145. package/framework/qualia-framework/templates/milestone-archive.md +0 -123
  146. package/framework/qualia-framework/templates/milestone.md +0 -115
  147. package/framework/qualia-framework/templates/phase-prompt.md +0 -567
  148. package/framework/qualia-framework/templates/planner-subagent-prompt.md +0 -117
  149. package/framework/qualia-framework/templates/project.md +0 -184
  150. package/framework/qualia-framework/templates/projects/ai-agent.md +0 -156
  151. package/framework/qualia-framework/templates/projects/mobile-app.md +0 -181
  152. package/framework/qualia-framework/templates/projects/voice-agent.md +0 -134
  153. package/framework/qualia-framework/templates/projects/website.md +0 -137
  154. package/framework/qualia-framework/templates/requirements.md +0 -231
  155. package/framework/qualia-framework/templates/research-project/ARCHITECTURE.md +0 -204
  156. package/framework/qualia-framework/templates/research-project/FEATURES.md +0 -147
  157. package/framework/qualia-framework/templates/research-project/PITFALLS.md +0 -200
  158. package/framework/qualia-framework/templates/research-project/STACK.md +0 -120
  159. package/framework/qualia-framework/templates/research-project/SUMMARY.md +0 -170
  160. package/framework/qualia-framework/templates/research.md +0 -552
  161. package/framework/qualia-framework/templates/roadmap.md +0 -206
  162. package/framework/qualia-framework/templates/state.md +0 -179
  163. package/framework/qualia-framework/templates/summary-complex.md +0 -59
  164. package/framework/qualia-framework/templates/summary-minimal.md +0 -41
  165. package/framework/qualia-framework/templates/summary-standard.md +0 -48
  166. package/framework/qualia-framework/templates/summary.md +0 -246
  167. package/framework/qualia-framework/templates/user-setup.md +0 -311
  168. package/framework/qualia-framework/templates/verification-report.md +0 -322
  169. package/framework/qualia-framework/workflows/add-phase.md +0 -179
  170. package/framework/qualia-framework/workflows/add-todo.md +0 -157
  171. package/framework/qualia-framework/workflows/audit-milestone.md +0 -241
  172. package/framework/qualia-framework/workflows/check-todos.md +0 -176
  173. package/framework/qualia-framework/workflows/complete-milestone.md +0 -858
  174. package/framework/qualia-framework/workflows/diagnose-issues.md +0 -219
  175. package/framework/qualia-framework/workflows/discovery-phase.md +0 -289
  176. package/framework/qualia-framework/workflows/discuss-phase.md +0 -534
  177. package/framework/qualia-framework/workflows/execute-phase.md +0 -559
  178. package/framework/qualia-framework/workflows/execute-plan.md +0 -438
  179. package/framework/qualia-framework/workflows/help.md +0 -470
  180. package/framework/qualia-framework/workflows/insert-phase.md +0 -220
  181. package/framework/qualia-framework/workflows/list-phase-assumptions.md +0 -178
  182. package/framework/qualia-framework/workflows/map-codebase.md +0 -327
  183. package/framework/qualia-framework/workflows/new-milestone.md +0 -363
  184. package/framework/qualia-framework/workflows/new-project.md +0 -982
  185. package/framework/qualia-framework/workflows/pause-work.md +0 -122
  186. package/framework/qualia-framework/workflows/plan-milestone-gaps.md +0 -256
  187. package/framework/qualia-framework/workflows/plan-phase.md +0 -422
  188. package/framework/qualia-framework/workflows/progress.md +0 -389
  189. package/framework/qualia-framework/workflows/quick.md +0 -252
  190. package/framework/qualia-framework/workflows/remove-phase.md +0 -326
  191. package/framework/qualia-framework/workflows/research-phase.md +0 -74
  192. package/framework/qualia-framework/workflows/resume-project.md +0 -306
  193. package/framework/qualia-framework/workflows/set-profile.md +0 -80
  194. package/framework/qualia-framework/workflows/settings.md +0 -145
  195. package/framework/qualia-framework/workflows/transition.md +0 -556
  196. package/framework/qualia-framework/workflows/update.md +0 -197
  197. package/framework/qualia-framework/workflows/verify-phase.md +0 -195
  198. package/framework/qualia-framework/workflows/verify-work.md +0 -625
  199. package/framework/rules/context7.md +0 -14
  200. package/framework/rules/frontend.md +0 -33
  201. package/framework/rules/speed.md +0 -23
  202. package/framework/scripts/__pycache__/say.cpython-314.pyc +0 -0
  203. package/framework/scripts/apply-retention.sh +0 -120
  204. package/framework/scripts/bootstrap-pop-os.sh +0 -354
  205. package/framework/scripts/claude-voice +0 -13
  206. package/framework/scripts/cleanup.sh +0 -131
  207. package/framework/scripts/cowork-mode.sh +0 -141
  208. package/framework/scripts/generate-project-claude-md.sh +0 -153
  209. package/framework/scripts/load-test-webhook.js +0 -172
  210. package/framework/scripts/say.py +0 -236
  211. package/framework/scripts/showcase-video-recorder/ffmpeg-builder.js +0 -167
  212. package/framework/scripts/showcase-video-recorder/playwright-helpers.js +0 -216
  213. package/framework/scripts/speak.py +0 -55
  214. package/framework/scripts/speak.sh +0 -18
  215. package/framework/scripts/status.sh +0 -138
  216. package/framework/scripts/sync-to-framework.sh +0 -65
  217. package/framework/scripts/voice-hotkey.py +0 -227
  218. package/framework/scripts/voice-input.sh +0 -51
  219. package/framework/skills/animate/SKILL.md +0 -202
  220. package/framework/skills/bolder/SKILL.md +0 -144
  221. package/framework/skills/browser-qa/SKILL.md +0 -536
  222. package/framework/skills/clarify/SKILL.md +0 -179
  223. package/framework/skills/client-handoff/SKILL.md +0 -135
  224. package/framework/skills/collab-onboard/SKILL.md +0 -111
  225. package/framework/skills/colorize/SKILL.md +0 -170
  226. package/framework/skills/critique/SKILL.md +0 -126
  227. package/framework/skills/deep-research/SKILL.md +0 -240
  228. package/framework/skills/delight/SKILL.md +0 -329
  229. package/framework/skills/deploy/SKILL.md +0 -261
  230. package/framework/skills/deploy-verify/SKILL.md +0 -377
  231. package/framework/skills/deploy-verify/scripts/canary-check.sh +0 -206
  232. package/framework/skills/deploy-verify/scripts/check-console-errors.js +0 -147
  233. package/framework/skills/deploy-verify/scripts/check-cwv.js +0 -139
  234. package/framework/skills/deploy-verify/scripts/project-detect.sh +0 -84
  235. package/framework/skills/deploy-verify/scripts/verify.sh +0 -548
  236. package/framework/skills/design-quieter/SKILL.md +0 -130
  237. package/framework/skills/distill/SKILL.md +0 -149
  238. package/framework/skills/docs-lookup/SKILL.md +0 -79
  239. package/framework/skills/fcm-notifications/SKILL.md +0 -125
  240. package/framework/skills/financial-ledger/SKILL.md +0 -1039
  241. package/framework/skills/frontend-master/NOTICE.md +0 -4
  242. package/framework/skills/frontend-master/SKILL.md +0 -127
  243. package/framework/skills/frontend-master/reference/color-and-contrast.md +0 -132
  244. package/framework/skills/frontend-master/reference/interaction-design.md +0 -123
  245. package/framework/skills/frontend-master/reference/motion-design.md +0 -99
  246. package/framework/skills/frontend-master/reference/responsive-design.md +0 -114
  247. package/framework/skills/frontend-master/reference/spatial-design.md +0 -100
  248. package/framework/skills/frontend-master/reference/typography.md +0 -131
  249. package/framework/skills/frontend-master/reference/ux-writing.md +0 -107
  250. package/framework/skills/harden/SKILL.md +0 -357
  251. package/framework/skills/i18n-rtl/SKILL.md +0 -752
  252. package/framework/skills/learn/SKILL.md +0 -95
  253. package/framework/skills/memory/SKILL.md +0 -50
  254. package/framework/skills/mobile-expo/SKILL.md +0 -977
  255. package/framework/skills/mobile-expo/references/store-checklist.md +0 -550
  256. package/framework/skills/nestjs-backend/README.md +0 -73
  257. package/framework/skills/nestjs-backend/SKILL.md +0 -446
  258. package/framework/skills/nestjs-backend/references/templates.md +0 -1173
  259. package/framework/skills/normalize/SKILL.md +0 -79
  260. package/framework/skills/onboard/SKILL.md +0 -242
  261. package/framework/skills/openrouter-agent/SKILL.md +0 -922
  262. package/framework/skills/polish/SKILL.md +0 -209
  263. package/framework/skills/pr/SKILL.md +0 -66
  264. package/framework/skills/qualia/SKILL.md +0 -199
  265. package/framework/skills/qualia-add-todo/SKILL.md +0 -68
  266. package/framework/skills/qualia-audit-milestone/SKILL.md +0 -95
  267. package/framework/skills/qualia-check-todos/SKILL.md +0 -55
  268. package/framework/skills/qualia-complete-milestone/SKILL.md +0 -134
  269. package/framework/skills/qualia-debug/SKILL.md +0 -149
  270. package/framework/skills/qualia-design/SKILL.md +0 -203
  271. package/framework/skills/qualia-discuss-phase/SKILL.md +0 -72
  272. package/framework/skills/qualia-evolve/SKILL.md +0 -200
  273. package/framework/skills/qualia-execute-phase/SKILL.md +0 -89
  274. package/framework/skills/qualia-framework-audit/SKILL.md +0 -604
  275. package/framework/skills/qualia-guide/SKILL.md +0 -32
  276. package/framework/skills/qualia-help/SKILL.md +0 -114
  277. package/framework/skills/qualia-idk/SKILL.md +0 -352
  278. package/framework/skills/qualia-list-phase-assumptions/SKILL.md +0 -67
  279. package/framework/skills/qualia-new-milestone/SKILL.md +0 -72
  280. package/framework/skills/qualia-new-project/SKILL.md +0 -232
  281. package/framework/skills/qualia-optimize/SKILL.md +0 -417
  282. package/framework/skills/qualia-pause-work/SKILL.md +0 -96
  283. package/framework/skills/qualia-plan-milestone-gaps/SKILL.md +0 -57
  284. package/framework/skills/qualia-plan-phase/SKILL.md +0 -104
  285. package/framework/skills/qualia-production-check/SKILL.md +0 -0
  286. package/framework/skills/qualia-progress/SKILL.md +0 -53
  287. package/framework/skills/qualia-quick/SKILL.md +0 -89
  288. package/framework/skills/qualia-report/SKILL.md +0 -166
  289. package/framework/skills/qualia-research-phase/SKILL.md +0 -88
  290. package/framework/skills/qualia-resume-work/SKILL.md +0 -62
  291. package/framework/skills/qualia-review/SKILL.md +0 -263
  292. package/framework/skills/qualia-start/SKILL.md +0 -161
  293. package/framework/skills/qualia-verify-work/SKILL.md +0 -132
  294. package/framework/skills/rag/SKILL.md +0 -750
  295. package/framework/skills/responsive/SKILL.md +0 -231
  296. package/framework/skills/retro/SKILL.md +0 -284
  297. package/framework/skills/sakani-conventions/SKILL.md +0 -136
  298. package/framework/skills/sakani-conventions/evals/evals.json +0 -23
  299. package/framework/skills/sakani-conventions/references/entities.md +0 -365
  300. package/framework/skills/sakani-conventions/references/error-codes.md +0 -95
  301. package/framework/skills/seo-master/SKILL.md +0 -490
  302. package/framework/skills/seo-master/references/checklist.md +0 -199
  303. package/framework/skills/seo-master/references/structured-data.md +0 -609
  304. package/framework/skills/ship/SKILL.md +0 -239
  305. package/framework/skills/stack-researcher/SKILL.md +0 -215
  306. package/framework/skills/status/SKILL.md +0 -154
  307. package/framework/skills/status/scripts/health-check.sh +0 -562
  308. package/framework/skills/subscription-payments/SKILL.md +0 -250
  309. package/framework/skills/supabase/SKILL.md +0 -973
  310. package/framework/skills/supabase/references/templates.md +0 -159
  311. package/framework/skills/team/SKILL.md +0 -67
  312. package/framework/skills/test-runner/SKILL.md +0 -202
  313. package/framework/skills/voice-agent/SKILL.md +0 -1312
  314. package/framework/skills/zoho-workflow/SKILL.md +0 -51
  315. package/framework/statusline-command.sh +0 -117
  316. package/framework/teams/default/inboxes/plan-04.json +0 -9
  317. package/framework/teams/review-team.md +0 -75
  318. package/framework/teams/ship-team.md +0 -86
  319. package/profiles/fawzi.json +0 -16
  320. package/profiles/hasan.json +0 -16
  321. package/profiles/moayad.json +0 -16
  322. package/templates/CLAUDE-owner.md +0 -52
  323. package/templates/CLAUDE.md.hbs +0 -58
  324. package/templates/env.claude.template +0 -12
  325. package/templates/settings.json +0 -172
  326. /package/{framework/rules → rules}/deployment.md +0 -0
  327. /package/{framework/rules → rules}/security.md +0 -0
@@ -0,0 +1,63 @@
1
+ ---
2
+ name: qualia-pause
3
+ description: "Save session context for seamless handoff. Creates .continue-here.md so the next session picks up exactly where you left off. Trigger on 'pause', 'stop for now', 'save progress', 'continue later', 'pick up tomorrow'."
4
+ ---
5
+
6
+ # /qualia-pause — Session Handoff
7
+
8
+ Save context so the next session picks up where you left off.
9
+
10
+ ## Process
11
+
12
+ ```bash
13
+ node ~/.claude/bin/qualia-ui.js banner pause
14
+ ```
15
+
16
+ ### 1. Read State
17
+
18
+ ```bash
19
+ cat .planning/STATE.md 2>/dev/null
20
+ git status --short 2>/dev/null
21
+ git log --oneline -5 2>/dev/null
22
+ ```
23
+
24
+ ### 2. Create `.continue-here.md`
25
+
26
+ ```markdown
27
+ # Continue Here
28
+
29
+ ## Session Summary
30
+ {What was accomplished — from conversation context + git log}
31
+
32
+ ## Current Phase
33
+ Phase {N}: {name} — {status}
34
+
35
+ ## In Progress
36
+ - {What's partially done}
37
+ - {Where exactly work stopped}
38
+
39
+ ## Next Steps
40
+ 1. {Immediate next action}
41
+ 2. {Following action}
42
+
43
+ ## Decisions Made
44
+ - {Decision and rationale}
45
+
46
+ ## Blockers
47
+ - {Any unresolved issues}
48
+
49
+ ## Files Modified
50
+ - {List from git status/diff}
51
+ ```
52
+
53
+ ### 3. Commit
54
+
55
+ ```bash
56
+ git add .continue-here.md {any uncommitted work files}
57
+ git commit -m "WIP: {phase name} — session handoff"
58
+ ```
59
+
60
+ ```bash
61
+ node ~/.claude/bin/state.js transition --to note --notes "Session paused — see .continue-here.md"
62
+ ```
63
+ Do NOT manually edit STATE.md or tracking.json — state.js handles both.
@@ -0,0 +1,101 @@
1
+ ---
2
+ name: qualia-plan
3
+ description: "Plan the current phase — spawns planner agent in fresh context. Use when ready to plan a phase."
4
+ ---
5
+
6
+ # /qualia-plan — Plan a Phase
7
+
8
+ Spawn a planner agent to break the current phase into executable tasks.
9
+
10
+ ## Usage
11
+ `/qualia-plan` — plan the next unplanned phase
12
+ `/qualia-plan {N}` — plan specific phase
13
+ `/qualia-plan {N} --gaps` — plan fixes for verification failures
14
+
15
+ ## Process
16
+
17
+ ### 1. Determine Phase & Load Knowledge
18
+
19
+ ```bash
20
+ cat .planning/STATE.md 2>/dev/null
21
+ cat ~/.claude/knowledge/learned-patterns.md 2>/dev/null
22
+ cat ~/.claude/knowledge/client-prefs.md 2>/dev/null
23
+ ```
24
+
25
+ If no phase number given, use the current phase from STATE.md.
26
+ If any learned patterns apply to this phase's work, pass them to the planner in the spawn prompt under a `## Relevant Learnings` section.
27
+ If this is a client project and `client-prefs.md` has an entry for the client, include those preferences in the planner context.
28
+
29
+ ### 2. Spawn Planner (Fresh Context)
30
+
31
+ ```bash
32
+ node ~/.claude/bin/qualia-ui.js banner plan {N} "{phase name from STATE.md}"
33
+ node ~/.claude/bin/qualia-ui.js spawn planner "Breaking phase into tasks..."
34
+ ```
35
+
36
+ Spawn a subagent with `agents/planner.md` instructions:
37
+
38
+ ```
39
+ Agent(prompt="
40
+ Read your role: @agents/planner.md
41
+
42
+ Project context:
43
+ @.planning/PROJECT.md
44
+
45
+ Current state:
46
+ @.planning/STATE.md
47
+
48
+ Phase {N} goal: {goal from STATE.md roadmap}
49
+ Phase {N} success criteria: {criteria from STATE.md}
50
+
51
+ {If --gaps: Also read @.planning/phase-{N}-verification.md for failures to fix}
52
+
53
+ Create the plan file at .planning/phase-{N}-plan.md
54
+ ", subagent_type="qualia-planner", description="Plan phase {N}")
55
+ ```
56
+
57
+ ### 3. Review Plan
58
+
59
+ Read the generated plan. Present the summary using the UI helpers:
60
+
61
+ ```bash
62
+ node ~/.claude/bin/qualia-ui.js divider
63
+ node ~/.claude/bin/qualia-ui.js ok "Plan ready: {count} tasks across {count} waves"
64
+ ```
65
+
66
+ Then, for each wave, print:
67
+
68
+ ```bash
69
+ node ~/.claude/bin/qualia-ui.js wave {wave_num} {wave_total} {task_count_in_wave}
70
+ node ~/.claude/bin/qualia-ui.js task 1 "{task title}"
71
+ node ~/.claude/bin/qualia-ui.js task 2 "{task title}"
72
+ ```
73
+
74
+ End with an approval prompt (plain text, no UI helper): *"Approve? (yes / adjust)"*
75
+
76
+ If "adjust" — get feedback, re-spawn planner with revision context.
77
+
78
+ ### 4. Update State
79
+
80
+ ```bash
81
+ node ~/.claude/bin/state.js transition --to planned --phase {N}
82
+ ```
83
+ If state.js returns an error, show it to the employee and stop.
84
+ Do NOT manually edit STATE.md or tracking.json — state.js handles both.
85
+
86
+ ```bash
87
+ node ~/.claude/bin/qualia-ui.js end "PHASE {N} PLANNED" "/qualia-build {N}"
88
+ ```
89
+
90
+ ### Gap Closure Mode (`--gaps`)
91
+
92
+ When invoked as `/qualia-plan {N} --gaps`, the planner is in gap-closure mode:
93
+
94
+ 1. Read `.planning/phase-{N}-verification.md` — extract ONLY the FAIL items
95
+ 2. For each FAIL item, create a targeted fix task:
96
+ - **Files:** The specific files that failed verification
97
+ - **Action:** The specific fix needed (not "fix auth" — "add session persistence check in `src/lib/auth.ts` signIn function")
98
+ - **Done when:** The exact verification criterion that previously failed, restated
99
+ 3. Do NOT re-plan passing items. Do NOT add new features. Gap plans are surgical.
100
+ 4. Write to `.planning/phase-{N}-gaps-plan.md` (separate from original plan)
101
+ 5. All gap tasks are Wave 1 (parallel) unless they share files
@@ -0,0 +1,207 @@
1
+ ---
2
+ name: qualia-polish
3
+ description: "Design and UX pass — anti-AI-slop, genuine craft, responsive, accessible. Run after all phases are verified."
4
+ ---
5
+
6
+ # /qualia-polish — Design Pass
7
+
8
+ Makes it look like a human designer built it. Kills AI slop. Run after all feature phases are verified.
9
+
10
+ ## The Standard
11
+
12
+ Every site Qualia ships must feel **designed, not generated.** AI-generated sites have tells:
13
+ - Identical card grids with rounded corners and soft shadows
14
+ - Blue-purple gradients on everything
15
+ - Inter/system-ui font with no hierarchy
16
+ - Generic hero with centered text and a stock gradient background
17
+ - Fixed-width containers leaving dead space on wide screens
18
+ - No motion, no personality, no opinion
19
+ - Perfect symmetry everywhere (real design has tension)
20
+
21
+ **Kill all of these.** A Qualia site should make someone ask "who designed this?" — not "which template is this?"
22
+
23
+ ## Process
24
+
25
+ ```bash
26
+ node ~/.claude/bin/qualia-ui.js banner polish
27
+ ```
28
+
29
+ ### 0. Load Design Context
30
+
31
+ ```bash
32
+ cat .planning/DESIGN.md 2>/dev/null || echo "NO_DESIGN"
33
+ ```
34
+
35
+ If DESIGN.md exists → it's the standard. Read ALL 12 sections. Key sections for polish:
36
+ - §1 Visual Theme — the feel and signature details
37
+ - §2 Color Palette — exact hex values, CSS variables, contrast ratios
38
+ - §3 Typography — hierarchy table with exact sizes/weights/spacing
39
+ - §4 Components — exact button/card/input/badge specs
40
+ - §5 Layout — spacing scale, grid strategy
41
+ - §6 Depth & Elevation — shadow levels with exact rgba values
42
+ - §7 Do's/Don'ts — brand-specific guardrails
43
+ - §9 Agent Prompt Guide — quick reference for common patterns
44
+ - §10 Accessibility — WCAG checklist
45
+ - §11 Hardening — stress-test criteria
46
+ - §12 Anti-Slop Detection — grep patterns for automated checks
47
+
48
+ If no DESIGN.md → use `rules/frontend.md` defaults.
49
+
50
+ Read EVERY frontend file before modifying. No blind edits.
51
+
52
+ ### 1. AI Slop Detector
53
+
54
+ Run these checks first. Any hits = mandatory fixes.
55
+
56
+ ```bash
57
+ # Generic fonts (the #1 AI tell)
58
+ grep -rn "Inter\|Roboto\|Arial\|Helvetica\|system-ui\|Space.Grotesk" --include="*.tsx" --include="*.css" --include="*.scss" --include="tailwind*" app/ components/ src/ 2>/dev/null | grep -v node_modules
59
+
60
+ # Hardcoded max-width containers (screams template)
61
+ grep -rn "max-w-7xl\|max-w-\[1200\|max-w-\[1280\|max-width.*1200\|max-width.*1280" --include="*.tsx" --include="*.css" app/ components/ src/ 2>/dev/null
62
+
63
+ # Blue-purple gradients
64
+ grep -rn "from-blue.*to-purple\|from-purple.*to-blue\|linear-gradient.*blue.*purple\|linear-gradient.*purple.*blue\|from-indigo.*to-violet" --include="*.tsx" --include="*.css" app/ components/ src/ 2>/dev/null
65
+
66
+ # Card grid monotony (same card component repeated in a grid)
67
+ grep -rn "grid-cols-3\|grid-cols-4" --include="*.tsx" app/ components/ src/ 2>/dev/null | head -5
68
+
69
+ # Generic hero patterns
70
+ grep -rn "text-center.*mx-auto\|Hero\|hero" --include="*.tsx" app/ components/ src/ 2>/dev/null | head -5
71
+
72
+ # Scattered hardcoded colors (no design system)
73
+ grep -rn "text-\[#\|bg-\[#\|border-\[#\|color:.*#\|background:.*#" --include="*.tsx" app/ components/ src/ 2>/dev/null | wc -l
74
+ ```
75
+
76
+ **Every hit gets fixed.** Not flagged — fixed.
77
+
78
+ ### 2. Typography Pass
79
+
80
+ **Goal:** A reader should feel the type was chosen, not defaulted.
81
+
82
+ - Pick a distinctive display font. Not Inter, not Roboto, not system. Something with character: Clash Display, Cabinet Grotesk, General Sans, Satoshi, Plus Jakarta Sans, Outfit, Sora, Manrope. Pair with a clean body font.
83
+ - Establish clear hierarchy: display (hero text) → h1 → h2 → h3 → body → caption
84
+ - Body: 16px minimum, line-height 1.5-1.7
85
+ - Headings: tighter line-height (1.1-1.3), negative letter-spacing (-0.02em) for display sizes
86
+ - Weight hierarchy: Regular (400) for body, Medium (500) for labels, Semibold (600) for headings, Bold (700) for display
87
+ - Prose content: `max-width: 65ch`. Everything else: fluid full-width.
88
+ - Use `clamp()` for fluid sizing: `clamp(2rem, 1rem + 3vw, 3.75rem)` for h1
89
+
90
+ ### 3. Color & Surfaces
91
+
92
+ **Goal:** A palette that looks intentional, not random.
93
+
94
+ - Define all colors as CSS variables or Tailwind config — zero scattered hex values
95
+ - One dominant brand color. One sharp accent for CTAs that pops against the page.
96
+ - Surfaces: layer them. Background → card → elevated card. Use subtle shade differences, not just white-on-white.
97
+ - Dark mode (if present): rethink surfaces, don't just invert. Slightly reduce contrast. Use darker brand colors, not just white→black swap.
98
+ - Semantic colors with non-color indicators: success (green + checkmark), error (red + icon), warning (amber + triangle)
99
+ - Verify WCAG AA: 4.5:1 for normal text, 3:1 for large text (18px+ bold or 24px+)
100
+
101
+ ### 4. Layout & Spacing
102
+
103
+ **Goal:** Full-width, fluid, generous. No dead space gutters.
104
+
105
+ - Full-width layouts with fluid padding: `clamp(1rem, 5vw, 4rem)` horizontal
106
+ - 8px spacing grid: 4, 8, 12, 16, 24, 32, 48, 64, 96
107
+ - Tight spacing within groups (related items). Generous spacing between sections.
108
+ - Break symmetry where it serves the design — offset grids, overlapping elements, diagonal flow
109
+ - Varied layouts: not every section should be a centered-text-with-cards-below. Use side-by-side, staggered, asymmetric, full-bleed.
110
+ - Section spacing: `clamp(2rem, 8vw, 6rem)` vertical padding
111
+
112
+ ### 5. Interactive States
113
+
114
+ **Goal:** Every clickable thing responds. Every async operation shows progress.
115
+
116
+ - **Hover:** color shift or underline within 150ms ease-out. `cursor: pointer` on ALL clickables.
117
+ - **Focus:** visible ring (2px+ offset, contrasting color). Never `outline: none` without replacement.
118
+ - **Active/pressed:** subtle scale down (`transform: scale(0.98)`) or color shift.
119
+ - **Disabled:** opacity 0.5 + `cursor: not-allowed` + `aria-disabled="true"`
120
+ - **Loading:** skeleton shimmer or spinner on every async operation. Never a blank void.
121
+ - **Empty:** helpful message + CTA on empty lists/tables. Not just "No results."
122
+ - **Error:** user-friendly message + recovery action. Not raw error text. Use `aria-live="assertive"`.
123
+
124
+ ### 6. Motion & Personality
125
+
126
+ **Goal:** The site feels alive, not static. But tasteful — not a circus.
127
+
128
+ - Page load: stagger children entrance (50-80ms delay between items, `fadeUp` animation, 300ms)
129
+ - Hover transitions: 150-200ms ease-out
130
+ - Section transitions: 300-500ms with `cubic-bezier(0.4, 0, 0.2, 1)`
131
+ - One signature motion that gives the site personality (parallax, scroll-triggered reveal, magnetic buttons, morphing shapes)
132
+ - **Always** `prefers-reduced-motion: reduce` — disable non-essential animation
133
+ - CSS-only for static sites, `motion/react` (formerly Framer Motion) for React
134
+
135
+ ### 7. Accessibility (Non-Negotiable)
136
+
137
+ - Semantic HTML: `nav`, `main`, `section`, `article`, `header`, `footer` — not div soup
138
+ - One `h1` per page, sequential heading order (no h1 → h3 skip)
139
+ - All images: descriptive `alt` (or `alt=""` + `aria-hidden` if decorative)
140
+ - All form inputs: visible `<label>` with `htmlFor` — not placeholder-only
141
+ - All interactive elements: keyboard accessible (Tab, Enter, Escape, Arrow keys)
142
+ - Touch targets: 44x44px minimum
143
+ - Skip link: `<a href="#main" class="sr-only focus:not-sr-only">` as first focusable element
144
+ - `<html lang="en">` set
145
+ - Color never the sole information carrier — icons, text, patterns as supplements
146
+ - `aria-live="polite"` for toast notifications and dynamic content updates
147
+
148
+ ### 8. Responsive (Mobile-First)
149
+
150
+ - Base styles for mobile (320px), scale up with `min-width` breakpoints
151
+ - Test at: 320px (small phone), 375px (iPhone), 768px (iPad), 1024px (laptop), 1440px (desktop)
152
+ - No horizontal scroll at any viewport
153
+ - Navigation: hamburger/drawer on mobile, full horizontal on desktop
154
+ - Stack on mobile, expand on desktop
155
+ - Fluid typography with `clamp()`
156
+ - Images: `max-width: 100%`, responsive `srcset`, `next/image` with width/height
157
+ - Tables: card layout or horizontal scroll on mobile
158
+
159
+ ### 9. Harden (Edge Cases)
160
+
161
+ After all visual work, stress-test:
162
+ - Long text: does a 200-character username break the layout?
163
+ - Empty everywhere: all lists empty, all data missing — does it still make sense?
164
+ - Error everywhere: every fetch fails — are error states visible and helpful?
165
+ - 320px viewport: nothing overflows, nothing clips, nothing overlaps
166
+ - Keyboard only: Tab through the entire app — can you reach everything? Is focus visible?
167
+ - Slow network: are loading states visible? Does content stream in or flash?
168
+
169
+ ### 10. Verify & Ship
170
+
171
+ ```bash
172
+ npx tsc --noEmit 2>&1 | head -20
173
+ ```
174
+
175
+ Fix any TypeScript errors.
176
+
177
+ ```bash
178
+ git add {changed files}
179
+ git commit -m "polish: design pass — typography, color, states, motion, responsive, a11y"
180
+ ```
181
+
182
+ ```bash
183
+ node ~/.claude/bin/state.js transition --to polished
184
+ ```
185
+
186
+ ```bash
187
+ node ~/.claude/bin/qualia-ui.js divider
188
+ node ~/.claude/bin/qualia-ui.js ok "AI slop: killed"
189
+ node ~/.claude/bin/qualia-ui.js ok "Typography: {brief}"
190
+ node ~/.claude/bin/qualia-ui.js ok "Color: {brief}"
191
+ node ~/.claude/bin/qualia-ui.js ok "Layout: {brief}"
192
+ node ~/.claude/bin/qualia-ui.js ok "States: {brief}"
193
+ node ~/.claude/bin/qualia-ui.js ok "Motion: {brief}"
194
+ node ~/.claude/bin/qualia-ui.js ok "Accessibility: {brief}"
195
+ node ~/.claude/bin/qualia-ui.js ok "Responsive: {brief}"
196
+ node ~/.claude/bin/qualia-ui.js ok "Hardened: {brief}"
197
+ node ~/.claude/bin/qualia-ui.js end "POLISHED" "/qualia-ship"
198
+ ```
199
+
200
+ ## Rules
201
+
202
+ 1. **Read before write.** Understand every file before changing it.
203
+ 2. **DESIGN.md is law.** If it exists, follow it. Don't override client decisions.
204
+ 3. **Don't break functionality.** Only change styling, never logic.
205
+ 4. **AI slop is a bug.** Generic fonts, card grids, blue-purple gradients, centered-everything — treat these as defects, not preferences.
206
+ 5. **TypeScript must pass** after every change.
207
+ 6. **One commit** at the end — not per category.
@@ -0,0 +1,37 @@
1
+ ---
2
+ name: qualia-quick
3
+ description: "Fast path for small tasks — bug fixes, tweaks, hot fixes. Skips full phase planning."
4
+ ---
5
+
6
+ # /qualia-quick — Quick Task
7
+
8
+ For tasks under 1 hour that don't need full phase planning. Single file changes, bug fixes, config tweaks, typo fixes.
9
+
10
+ ## Process
11
+
12
+ ```bash
13
+ node ~/.claude/bin/qualia-ui.js banner quick
14
+ ```
15
+
16
+ 1. **Understand:** Ask what needs to be done (or read the instruction)
17
+ 2. **Build:** Do it directly — read before write, MVP only
18
+ 3. **Verify:** Run `npx tsc --noEmit`, test locally
19
+ 4. **Commit:** Atomic commit with clear message
20
+ 5. **Update:** Update tracking.json notes field
21
+
22
+ End with:
23
+ ```bash
24
+ node ~/.claude/bin/qualia-ui.js end "QUICK FIX DONE"
25
+ ```
26
+
27
+ ```bash
28
+ git add {specific files}
29
+ git commit -m "fix: {description}"
30
+ ```
31
+
32
+ No plan file. No subagents. Just build and ship.
33
+
34
+ ```bash
35
+ node ~/.claude/bin/state.js transition --to note --notes "{brief description of what was done}"
36
+ ```
37
+ Do NOT manually edit STATE.md or tracking.json — state.js handles both.
@@ -0,0 +1,114 @@
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 (if enabled)
77
+
78
+ Read `~/.claude/.qualia-config.json` and check the `erp` object:
79
+ - If `erp.enabled` is `false`, skip this step and print: "ERP upload skipped (disabled in config)."
80
+ - If `erp.enabled` is `true` (default) or the `erp` field is missing (backward compatibility), proceed with the upload.
81
+
82
+ ```bash
83
+ # Read ERP config
84
+ ERP_URL=$(node -e "try{const c=JSON.parse(require('fs').readFileSync(require('os').homedir()+'/.claude/.qualia-config.json','utf8'));console.log(c.erp?.url||'https://portal.qualiasolutions.net')}catch{console.log('https://portal.qualiasolutions.net')}")
85
+ ERP_ENABLED=$(node -e "try{const c=JSON.parse(require('fs').readFileSync(require('os').homedir()+'/.claude/.qualia-config.json','utf8'));console.log(c.erp?.enabled!==false)}catch{console.log('true')}")
86
+
87
+ API_KEY=$(cat ~/.claude/.erp-api-key 2>/dev/null)
88
+ REPORT_FILE=".planning/reports/report-{date}.md"
89
+ EMAIL=$(git config user.email)
90
+ PROJECT=$(basename $(pwd))
91
+
92
+ # Only upload if ERP is enabled
93
+ if [ "$ERP_ENABLED" = "true" ]; then
94
+ curl -s -X POST "$ERP_URL/api/claude/report-upload" \
95
+ -H "X-API-Key: $API_KEY" \
96
+ -F "file=@$REPORT_FILE" \
97
+ -F "employee_email=$EMAIL" \
98
+ -F "project_name=$PROJECT"
99
+ fi
100
+ ```
101
+
102
+ If the upload succeeds, print: "Report uploaded to ERP. You can now clock out."
103
+ If it fails (no API key, network error), print the error and tell the employee to ask Fawzi.
104
+ If ERP is disabled, print: "ERP upload skipped (disabled in config)."
105
+
106
+ ### 6. Update State
107
+
108
+ ```bash
109
+ node ~/.claude/bin/state.js transition --to activity --notes "Session report generated"
110
+ ```
111
+
112
+ Do NOT manually edit STATE.md or tracking.json — state.js handles both.
113
+
114
+ 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).