qualia-framework 2.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 (261) hide show
  1. package/README.md +50 -0
  2. package/bin/cli.js +519 -0
  3. package/framework/agents/architecture-strategist.md +53 -0
  4. package/framework/agents/backend-agent.md +150 -0
  5. package/framework/agents/code-simplicity-reviewer.md +86 -0
  6. package/framework/agents/frontend-agent.md +111 -0
  7. package/framework/agents/kieran-typescript-reviewer.md +96 -0
  8. package/framework/agents/performance-oracle.md +111 -0
  9. package/framework/agents/qualia-codebase-mapper.md +760 -0
  10. package/framework/agents/qualia-debugger.md +1203 -0
  11. package/framework/agents/qualia-executor.md +881 -0
  12. package/framework/agents/qualia-integration-checker.md +423 -0
  13. package/framework/agents/qualia-phase-researcher.md +453 -0
  14. package/framework/agents/qualia-plan-checker.md +699 -0
  15. package/framework/agents/qualia-planner.md +1241 -0
  16. package/framework/agents/qualia-project-researcher.md +602 -0
  17. package/framework/agents/qualia-research-synthesizer.md +236 -0
  18. package/framework/agents/qualia-roadmapper.md +605 -0
  19. package/framework/agents/qualia-verifier.md +685 -0
  20. package/framework/agents/team-orchestrator.md +228 -0
  21. package/framework/agents/teams/full-stack-team.md +48 -0
  22. package/framework/agents/teams/optimize-team.md +53 -0
  23. package/framework/agents/teams/review-team.md +62 -0
  24. package/framework/agents/teams/ship-team.md +86 -0
  25. package/framework/agents/test-agent.md +182 -0
  26. package/framework/askpass.sh +2 -0
  27. package/framework/commands/design.md +53 -0
  28. package/framework/commands/quick-db.md +22 -0
  29. package/framework/config/retention.json +35 -0
  30. package/framework/core/PRINCIPLES.md +77 -0
  31. package/framework/hooks/auto-format.sh +45 -0
  32. package/framework/hooks/block-env-edit.sh +42 -0
  33. package/framework/hooks/branch-guard.sh +46 -0
  34. package/framework/hooks/confirm-delete.sh +56 -0
  35. package/framework/hooks/migration-validate.sh +68 -0
  36. package/framework/hooks/notification-speak.sh +15 -0
  37. package/framework/hooks/pre-commit.sh +80 -0
  38. package/framework/hooks/pre-compact.sh +55 -0
  39. package/framework/hooks/pre-deploy-gate.sh +151 -0
  40. package/framework/hooks/qualia-colors.sh +32 -0
  41. package/framework/hooks/retention-cleanup.sh +43 -0
  42. package/framework/hooks/save-session-state.sh +153 -0
  43. package/framework/hooks/session-context-loader.sh +28 -0
  44. package/framework/hooks/session-learn.sh +30 -0
  45. package/framework/knowledge/claudecode-bible.md +1384 -0
  46. package/framework/knowledge/client-prefs.md +22 -0
  47. package/framework/knowledge/common-fixes.md +25 -0
  48. package/framework/knowledge/deployment-map.md +35 -0
  49. package/framework/knowledge/email-signature.html +1 -0
  50. package/framework/knowledge/employees.md +8 -0
  51. package/framework/knowledge/learned-patterns.md +51 -0
  52. package/framework/knowledge/optimization-research-2026.md +137 -0
  53. package/framework/knowledge/qualia-context.md +67 -0
  54. package/framework/knowledge/supabase-patterns.md +50 -0
  55. package/framework/knowledge/voice-agent-patterns.md +46 -0
  56. package/framework/qualia-engine/VERSION +1 -0
  57. package/framework/qualia-engine/bin/qualia-tools.js +2160 -0
  58. package/framework/qualia-engine/bin/qualia-tools.test.js +1054 -0
  59. package/framework/qualia-engine/references/checkpoints.md +775 -0
  60. package/framework/qualia-engine/references/continuation-format.md +249 -0
  61. package/framework/qualia-engine/references/decimal-phase-calculation.md +65 -0
  62. package/framework/qualia-engine/references/design-quality.md +56 -0
  63. package/framework/qualia-engine/references/git-integration.md +254 -0
  64. package/framework/qualia-engine/references/git-planning-commit.md +50 -0
  65. package/framework/qualia-engine/references/model-profile-resolution.md +32 -0
  66. package/framework/qualia-engine/references/model-profiles.md +73 -0
  67. package/framework/qualia-engine/references/phase-argument-parsing.md +61 -0
  68. package/framework/qualia-engine/references/planning-config.md +195 -0
  69. package/framework/qualia-engine/references/questioning.md +141 -0
  70. package/framework/qualia-engine/references/tdd.md +263 -0
  71. package/framework/qualia-engine/references/ui-brand.md +160 -0
  72. package/framework/qualia-engine/references/verification-patterns.md +612 -0
  73. package/framework/qualia-engine/templates/DEBUG.md +159 -0
  74. package/framework/qualia-engine/templates/DESIGN.md +81 -0
  75. package/framework/qualia-engine/templates/UAT.md +247 -0
  76. package/framework/qualia-engine/templates/codebase/architecture.md +255 -0
  77. package/framework/qualia-engine/templates/codebase/concerns.md +310 -0
  78. package/framework/qualia-engine/templates/codebase/conventions.md +307 -0
  79. package/framework/qualia-engine/templates/codebase/integrations.md +280 -0
  80. package/framework/qualia-engine/templates/codebase/stack.md +186 -0
  81. package/framework/qualia-engine/templates/codebase/structure.md +285 -0
  82. package/framework/qualia-engine/templates/codebase/testing.md +480 -0
  83. package/framework/qualia-engine/templates/config.json +35 -0
  84. package/framework/qualia-engine/templates/context.md +283 -0
  85. package/framework/qualia-engine/templates/continue-here.md +78 -0
  86. package/framework/qualia-engine/templates/debug-subagent-prompt.md +91 -0
  87. package/framework/qualia-engine/templates/discovery.md +146 -0
  88. package/framework/qualia-engine/templates/milestone-archive.md +123 -0
  89. package/framework/qualia-engine/templates/milestone.md +115 -0
  90. package/framework/qualia-engine/templates/phase-prompt.md +567 -0
  91. package/framework/qualia-engine/templates/planner-subagent-prompt.md +117 -0
  92. package/framework/qualia-engine/templates/project.md +184 -0
  93. package/framework/qualia-engine/templates/projects/ai-agent.md +156 -0
  94. package/framework/qualia-engine/templates/projects/mobile-app.md +181 -0
  95. package/framework/qualia-engine/templates/projects/voice-agent.md +134 -0
  96. package/framework/qualia-engine/templates/projects/website.md +137 -0
  97. package/framework/qualia-engine/templates/requirements.md +231 -0
  98. package/framework/qualia-engine/templates/research-project/ARCHITECTURE.md +204 -0
  99. package/framework/qualia-engine/templates/research-project/FEATURES.md +147 -0
  100. package/framework/qualia-engine/templates/research-project/PITFALLS.md +200 -0
  101. package/framework/qualia-engine/templates/research-project/STACK.md +120 -0
  102. package/framework/qualia-engine/templates/research-project/SUMMARY.md +170 -0
  103. package/framework/qualia-engine/templates/research.md +552 -0
  104. package/framework/qualia-engine/templates/roadmap.md +202 -0
  105. package/framework/qualia-engine/templates/state.md +176 -0
  106. package/framework/qualia-engine/templates/summary-complex.md +59 -0
  107. package/framework/qualia-engine/templates/summary-minimal.md +41 -0
  108. package/framework/qualia-engine/templates/summary-standard.md +48 -0
  109. package/framework/qualia-engine/templates/summary.md +246 -0
  110. package/framework/qualia-engine/templates/user-setup.md +311 -0
  111. package/framework/qualia-engine/templates/verification-report.md +322 -0
  112. package/framework/qualia-engine/workflows/add-phase.md +179 -0
  113. package/framework/qualia-engine/workflows/add-todo.md +157 -0
  114. package/framework/qualia-engine/workflows/audit-milestone.md +241 -0
  115. package/framework/qualia-engine/workflows/check-todos.md +176 -0
  116. package/framework/qualia-engine/workflows/complete-milestone.md +858 -0
  117. package/framework/qualia-engine/workflows/diagnose-issues.md +219 -0
  118. package/framework/qualia-engine/workflows/discovery-phase.md +289 -0
  119. package/framework/qualia-engine/workflows/discuss-phase.md +534 -0
  120. package/framework/qualia-engine/workflows/execute-phase.md +559 -0
  121. package/framework/qualia-engine/workflows/execute-plan.md +438 -0
  122. package/framework/qualia-engine/workflows/help.md +470 -0
  123. package/framework/qualia-engine/workflows/insert-phase.md +220 -0
  124. package/framework/qualia-engine/workflows/list-phase-assumptions.md +178 -0
  125. package/framework/qualia-engine/workflows/map-codebase.md +327 -0
  126. package/framework/qualia-engine/workflows/new-milestone.md +363 -0
  127. package/framework/qualia-engine/workflows/new-project.md +1037 -0
  128. package/framework/qualia-engine/workflows/pause-work.md +122 -0
  129. package/framework/qualia-engine/workflows/plan-milestone-gaps.md +256 -0
  130. package/framework/qualia-engine/workflows/plan-phase.md +422 -0
  131. package/framework/qualia-engine/workflows/progress.md +354 -0
  132. package/framework/qualia-engine/workflows/quick.md +252 -0
  133. package/framework/qualia-engine/workflows/remove-phase.md +326 -0
  134. package/framework/qualia-engine/workflows/research-phase.md +74 -0
  135. package/framework/qualia-engine/workflows/resume-project.md +306 -0
  136. package/framework/qualia-engine/workflows/set-profile.md +80 -0
  137. package/framework/qualia-engine/workflows/settings.md +145 -0
  138. package/framework/qualia-engine/workflows/transition.md +556 -0
  139. package/framework/qualia-engine/workflows/update.md +197 -0
  140. package/framework/qualia-engine/workflows/verify-phase.md +195 -0
  141. package/framework/qualia-engine/workflows/verify-work.md +625 -0
  142. package/framework/rules/context7.md +11 -0
  143. package/framework/rules/deployment.md +29 -0
  144. package/framework/rules/frontend.md +33 -0
  145. package/framework/rules/security.md +12 -0
  146. package/framework/rules/speed.md +20 -0
  147. package/framework/scripts/__pycache__/say.cpython-314.pyc +0 -0
  148. package/framework/scripts/apply-retention.sh +120 -0
  149. package/framework/scripts/bootstrap-pop-os.sh +354 -0
  150. package/framework/scripts/claude-voice +13 -0
  151. package/framework/scripts/cleanup.sh +131 -0
  152. package/framework/scripts/cowork-mode.sh +141 -0
  153. package/framework/scripts/generate-project-claude-md.sh +153 -0
  154. package/framework/scripts/load-test-webhook.js +172 -0
  155. package/framework/scripts/say.py +236 -0
  156. package/framework/scripts/showcase-video-recorder/ffmpeg-builder.js +167 -0
  157. package/framework/scripts/showcase-video-recorder/playwright-helpers.js +216 -0
  158. package/framework/scripts/speak.py +55 -0
  159. package/framework/scripts/speak.sh +18 -0
  160. package/framework/scripts/status.sh +138 -0
  161. package/framework/scripts/sync-to-framework.sh +65 -0
  162. package/framework/scripts/voice-hotkey.py +227 -0
  163. package/framework/scripts/voice-input.sh +51 -0
  164. package/framework/skills/animate/SKILL.md +202 -0
  165. package/framework/skills/bolder/SKILL.md +144 -0
  166. package/framework/skills/browser-qa/SKILL.md +536 -0
  167. package/framework/skills/clarify/SKILL.md +179 -0
  168. package/framework/skills/colorize/SKILL.md +170 -0
  169. package/framework/skills/critique/SKILL.md +126 -0
  170. package/framework/skills/deep-research/SKILL.md +271 -0
  171. package/framework/skills/delight/SKILL.md +329 -0
  172. package/framework/skills/deploy/SKILL.md +261 -0
  173. package/framework/skills/deploy-verify/SKILL.md +377 -0
  174. package/framework/skills/deploy-verify/scripts/canary-check.sh +206 -0
  175. package/framework/skills/deploy-verify/scripts/check-console-errors.js +147 -0
  176. package/framework/skills/deploy-verify/scripts/check-cwv.js +139 -0
  177. package/framework/skills/deploy-verify/scripts/project-detect.sh +84 -0
  178. package/framework/skills/deploy-verify/scripts/verify.sh +548 -0
  179. package/framework/skills/design-quieter/SKILL.md +130 -0
  180. package/framework/skills/distill/SKILL.md +149 -0
  181. package/framework/skills/docs-lookup/SKILL.md +78 -0
  182. package/framework/skills/fcm-notifications/SKILL.md +125 -0
  183. package/framework/skills/financial-ledger/SKILL.md +1039 -0
  184. package/framework/skills/frontend-master/NOTICE.md +4 -0
  185. package/framework/skills/frontend-master/SKILL.md +127 -0
  186. package/framework/skills/frontend-master/reference/color-and-contrast.md +132 -0
  187. package/framework/skills/frontend-master/reference/interaction-design.md +123 -0
  188. package/framework/skills/frontend-master/reference/motion-design.md +99 -0
  189. package/framework/skills/frontend-master/reference/responsive-design.md +114 -0
  190. package/framework/skills/frontend-master/reference/spatial-design.md +100 -0
  191. package/framework/skills/frontend-master/reference/typography.md +131 -0
  192. package/framework/skills/frontend-master/reference/ux-writing.md +107 -0
  193. package/framework/skills/harden/SKILL.md +357 -0
  194. package/framework/skills/i18n-rtl/SKILL.md +752 -0
  195. package/framework/skills/learn/SKILL.md +71 -0
  196. package/framework/skills/memory/SKILL.md +50 -0
  197. package/framework/skills/mobile-expo/SKILL.md +864 -0
  198. package/framework/skills/mobile-expo/references/store-checklist.md +550 -0
  199. package/framework/skills/nestjs-backend/README.md +73 -0
  200. package/framework/skills/nestjs-backend/SKILL.md +446 -0
  201. package/framework/skills/nestjs-backend/references/templates.md +1173 -0
  202. package/framework/skills/normalize/SKILL.md +79 -0
  203. package/framework/skills/onboard/SKILL.md +242 -0
  204. package/framework/skills/polish/SKILL.md +209 -0
  205. package/framework/skills/pr/SKILL.md +66 -0
  206. package/framework/skills/qualia/SKILL.md +153 -0
  207. package/framework/skills/qualia-add-todo/SKILL.md +68 -0
  208. package/framework/skills/qualia-audit-milestone/SKILL.md +92 -0
  209. package/framework/skills/qualia-check-todos/SKILL.md +55 -0
  210. package/framework/skills/qualia-complete-milestone/SKILL.md +108 -0
  211. package/framework/skills/qualia-debug/SKILL.md +149 -0
  212. package/framework/skills/qualia-design/SKILL.md +203 -0
  213. package/framework/skills/qualia-discuss-phase/SKILL.md +72 -0
  214. package/framework/skills/qualia-execute-phase/SKILL.md +86 -0
  215. package/framework/skills/qualia-help/SKILL.md +67 -0
  216. package/framework/skills/qualia-idk/SKILL.md +352 -0
  217. package/framework/skills/qualia-list-phase-assumptions/SKILL.md +67 -0
  218. package/framework/skills/qualia-new-milestone/SKILL.md +72 -0
  219. package/framework/skills/qualia-new-project/SKILL.md +92 -0
  220. package/framework/skills/qualia-optimize/SKILL.md +417 -0
  221. package/framework/skills/qualia-pause-work/SKILL.md +96 -0
  222. package/framework/skills/qualia-plan-milestone-gaps/SKILL.md +57 -0
  223. package/framework/skills/qualia-plan-phase/SKILL.md +101 -0
  224. package/framework/skills/qualia-progress/SKILL.md +53 -0
  225. package/framework/skills/qualia-quick/SKILL.md +89 -0
  226. package/framework/skills/qualia-research-phase/SKILL.md +88 -0
  227. package/framework/skills/qualia-resume-work/SKILL.md +62 -0
  228. package/framework/skills/qualia-review/SKILL.md +263 -0
  229. package/framework/skills/qualia-start/SKILL.md +182 -0
  230. package/framework/skills/qualia-verify-work/SKILL.md +105 -0
  231. package/framework/skills/qualia-workflow/SKILL.md +130 -0
  232. package/framework/skills/rag/SKILL.md +750 -0
  233. package/framework/skills/responsive/SKILL.md +231 -0
  234. package/framework/skills/retro/SKILL.md +284 -0
  235. package/framework/skills/sakani-conventions/SKILL.md +136 -0
  236. package/framework/skills/sakani-conventions/evals/evals.json +23 -0
  237. package/framework/skills/sakani-conventions/references/entities.md +365 -0
  238. package/framework/skills/sakani-conventions/references/error-codes.md +95 -0
  239. package/framework/skills/seo-master/SKILL.md +490 -0
  240. package/framework/skills/seo-master/references/checklist.md +199 -0
  241. package/framework/skills/seo-master/references/structured-data.md +609 -0
  242. package/framework/skills/ship/SKILL.md +202 -0
  243. package/framework/skills/stack-researcher/SKILL.md +215 -0
  244. package/framework/skills/status/SKILL.md +154 -0
  245. package/framework/skills/status/scripts/health-check.sh +562 -0
  246. package/framework/skills/subscription-payments/SKILL.md +250 -0
  247. package/framework/skills/supabase/SKILL.md +973 -0
  248. package/framework/skills/supabase/references/templates.md +159 -0
  249. package/framework/skills/team/SKILL.md +67 -0
  250. package/framework/skills/test-runner/SKILL.md +202 -0
  251. package/framework/skills/voice-agent/SKILL.md +407 -0
  252. package/framework/skills/zoho-workflow/SKILL.md +51 -0
  253. package/framework/statusline-command.sh +117 -0
  254. package/package.json +24 -0
  255. package/profiles/fawzi.json +16 -0
  256. package/profiles/hasan.json +16 -0
  257. package/profiles/moayad.json +16 -0
  258. package/templates/CLAUDE-owner.md +52 -0
  259. package/templates/CLAUDE.md.hbs +58 -0
  260. package/templates/env.claude.template +12 -0
  261. package/templates/settings.json +141 -0
@@ -0,0 +1,197 @@
1
+ <purpose>
2
+ Check for Qualia updates via npm, display changelog for versions between installed and latest, obtain user confirmation, and execute clean installation with cache clearing.
3
+ </purpose>
4
+
5
+ <required_reading>
6
+ Read all files referenced by the invoking prompt's execution_context before starting.
7
+ </required_reading>
8
+
9
+ <process>
10
+
11
+ <step name="get_installed_version">
12
+ Detect whether Qualia is installed locally or globally by checking both locations:
13
+
14
+ ```bash
15
+ # Check local first (takes priority)
16
+ if [ -f "./.claude/qualia-engine/VERSION" ]; then
17
+ cat "./.claude/qualia-engine/VERSION"
18
+ echo "LOCAL"
19
+ elif [ -f /home/qualia/.claude/qualia-engine/VERSION ]; then
20
+ cat /home/qualia/.claude/qualia-engine/VERSION
21
+ echo "GLOBAL"
22
+ else
23
+ echo "UNKNOWN"
24
+ fi
25
+ ```
26
+
27
+ Parse output:
28
+ - If last line is "LOCAL": installed version is first line, use `--local` flag for update
29
+ - If last line is "GLOBAL": installed version is first line, use `--global` flag for update
30
+ - If "UNKNOWN": proceed to install step (treat as version 0.0.0)
31
+
32
+ **If VERSION file missing:**
33
+ ```
34
+ ## Qualia Update
35
+
36
+ **Installed version:** Unknown
37
+
38
+ Your installation doesn't include version tracking.
39
+
40
+ Running fresh install...
41
+ ```
42
+
43
+ Proceed to install step (treat as version 0.0.0 for comparison).
44
+ </step>
45
+
46
+ <step name="check_latest_version">
47
+ Check npm for latest version:
48
+
49
+ ```bash
50
+ npm view qualia-engine-cc version 2>/dev/null
51
+ ```
52
+
53
+ **If npm check fails:**
54
+ ```
55
+ Couldn't check for updates (offline or npm unavailable).
56
+
57
+ To update manually: `npx qualia-engine-cc --global`
58
+ ```
59
+
60
+ Exit.
61
+ </step>
62
+
63
+ <step name="compare_versions">
64
+ Compare installed vs latest:
65
+
66
+ **If installed == latest:**
67
+ ```
68
+ ## Qualia Update
69
+
70
+ **Installed:** X.Y.Z
71
+ **Latest:** X.Y.Z
72
+
73
+ You're already on the latest version.
74
+ ```
75
+
76
+ Exit.
77
+
78
+ **If installed > latest:**
79
+ ```
80
+ ## Qualia Update
81
+
82
+ **Installed:** X.Y.Z
83
+ **Latest:** A.B.C
84
+
85
+ You're ahead of the latest release (development version?).
86
+ ```
87
+
88
+ Exit.
89
+ </step>
90
+
91
+ <step name="show_changes_and_confirm">
92
+ **If update available**, fetch and show what's new BEFORE updating:
93
+
94
+ 1. Fetch changelog from GitHub raw URL
95
+ 2. Extract entries between installed and latest versions
96
+ 3. Display preview and ask for confirmation:
97
+
98
+ ```
99
+ ## Qualia Update Available
100
+
101
+ **Installed:** 1.5.10
102
+ **Latest:** 1.5.15
103
+
104
+ ### What's New
105
+ ────────────────────────────────────────────────────────────
106
+
107
+ ## [1.5.15] - 2026-01-20
108
+
109
+ ### Added
110
+ - Feature X
111
+
112
+ ## [1.5.14] - 2026-01-18
113
+
114
+ ### Fixed
115
+ - Bug fix Y
116
+
117
+ ────────────────────────────────────────────────────────────
118
+
119
+ ⚠️ **Note:** The installer performs a clean install of Qualia folders:
120
+ - `skills/qualia/` will be wiped and replaced
121
+ - `qualia-engine/` will be wiped and replaced
122
+ - `agents/qualia-*` files will be replaced
123
+
124
+ (Paths are relative to your install location: `/home/qualia/.claude/` for global, `./.claude/` for local)
125
+
126
+ Your custom files in other locations are preserved:
127
+ - Custom commands not in `skills/qualia/` ✓
128
+ - Custom agents not prefixed with `qualia-` ✓
129
+ - Custom hooks ✓
130
+ - Your CLAUDE.md files ✓
131
+
132
+ If you've modified any Qualia files directly, back them up first.
133
+ ```
134
+
135
+ Use AskUserQuestion:
136
+ - Question: "Proceed with update?"
137
+ - Options:
138
+ - "Yes, update now"
139
+ - "No, cancel"
140
+
141
+ **If user cancels:** Exit.
142
+ </step>
143
+
144
+ <step name="run_update">
145
+ Run the update using the install type detected in step 1:
146
+
147
+ **If LOCAL install:**
148
+ ```bash
149
+ npx qualia-engine-cc --local
150
+ ```
151
+
152
+ **If GLOBAL install (or unknown):**
153
+ ```bash
154
+ npx qualia-engine-cc --global
155
+ ```
156
+
157
+ Capture output. If install fails, show error and exit.
158
+
159
+ Clear the update cache so statusline indicator disappears:
160
+
161
+ **If LOCAL install:**
162
+ ```bash
163
+ rm -f ./.claude/cache/qualia-update-check.json
164
+ ```
165
+
166
+ **If GLOBAL install:**
167
+ ```bash
168
+ rm -f /home/qualia/.claude/cache/qualia-update-check.json
169
+ ```
170
+ </step>
171
+
172
+ <step name="display_result">
173
+ Format completion message (changelog was already shown in confirmation step):
174
+
175
+ ```
176
+ ╔═══════════════════════════════════════════════════════════╗
177
+ ║ Qualia Updated: v1.5.10 → v1.5.15 ║
178
+ ╚═══════════════════════════════════════════════════════════╝
179
+
180
+ ⚠️ Restart Claude Code to pick up the new commands.
181
+
182
+ [View full changelog](https://github.com/glittercowboy/qualia-engine/blob/main/CHANGELOG.md)
183
+ ```
184
+ </step>
185
+
186
+ </process>
187
+
188
+ <success_criteria>
189
+ - [ ] Installed version read correctly
190
+ - [ ] Latest version checked via npm
191
+ - [ ] Update skipped if already current
192
+ - [ ] Changelog fetched and displayed BEFORE update
193
+ - [ ] Clean install warning shown
194
+ - [ ] User confirmation obtained
195
+ - [ ] Update executed successfully
196
+ - [ ] Restart reminder shown
197
+ </success_criteria>
@@ -0,0 +1,195 @@
1
+ <purpose>
2
+ Verify phase goal achievement through goal-backward analysis. Check that the codebase delivers what the phase promised, not just that tasks completed.
3
+
4
+ Executed by a verification subagent spawned from execute-phase.md.
5
+ </purpose>
6
+
7
+ <core_principle>
8
+ **Task completion ≠ Goal achievement**
9
+
10
+ A task "create chat component" can be marked complete when the component is a placeholder. The task was done — but the goal "working chat interface" was not achieved.
11
+
12
+ Goal-backward verification:
13
+ 1. What must be TRUE for the goal to be achieved?
14
+ 2. What must EXIST for those truths to hold?
15
+ 3. What must be WIRED for those artifacts to function?
16
+
17
+ Then verify each level against the actual codebase.
18
+ </core_principle>
19
+
20
+ <required_reading>
21
+ @/home/qualia/.claude/qualia-engine/references/verification-patterns.md
22
+ @/home/qualia/.claude/qualia-engine/templates/verification-report.md
23
+ </required_reading>
24
+
25
+ <process>
26
+
27
+ <step name="load_context" priority="first">
28
+ Load phase operation context:
29
+
30
+ ```bash
31
+ INIT=$(node /home/qualia/.claude/qualia-engine/bin/qualia-tools.js init phase-op "${PHASE_ARG}")
32
+ ```
33
+
34
+ Extract from init JSON: `phase_dir`, `phase_number`, `phase_name`, `has_plans`, `plan_count`.
35
+
36
+ Then load phase details and list plans/summaries:
37
+ ```bash
38
+ node /home/qualia/.claude/qualia-engine/bin/qualia-tools.js roadmap get-phase "${phase_number}"
39
+ grep -E "^| ${phase_number}" .planning/REQUIREMENTS.md 2>/dev/null
40
+ ls "$phase_dir"/*-SUMMARY.md "$phase_dir"/*-PLAN.md 2>/dev/null
41
+ ```
42
+
43
+ Extract **phase goal** from ROADMAP.md (the outcome to verify, not tasks) and **requirements** from REQUIREMENTS.md if it exists.
44
+ </step>
45
+
46
+ <step name="establish_must_haves">
47
+ **Option A: Must-haves in PLAN frontmatter**
48
+
49
+ ```bash
50
+ grep -l "must_haves:" "$PHASE_DIR"/*-PLAN.md 2>/dev/null
51
+ ```
52
+
53
+ If found, extract truths, artifacts (with paths), and key_links (from/to/via).
54
+
55
+ **Option B: Derive from phase goal**
56
+
57
+ If no must_haves in frontmatter:
58
+ 1. State the goal from ROADMAP.md
59
+ 2. Derive **truths** (3-7 observable behaviors, each testable)
60
+ 3. Derive **artifacts** (concrete file paths for each truth)
61
+ 4. Derive **key links** (critical wiring where stubs hide)
62
+ 5. Document derived must-haves before proceeding
63
+ </step>
64
+
65
+ <step name="verify_truths">
66
+ For each observable truth, determine if the codebase enables it.
67
+
68
+ **Status:** ✓ VERIFIED (all supporting artifacts pass) | ✗ FAILED (artifact missing/stub/unwired) | ? UNCERTAIN (needs human)
69
+
70
+ For each truth: identify supporting artifacts → check artifact status → check wiring → determine truth status.
71
+
72
+ **Example:** Truth "User can see existing messages" depends on Chat.tsx (renders), /api/chat GET (provides), Message model (schema). If Chat.tsx is a stub or API returns hardcoded [] → FAILED. If all exist, are substantive, and connected → VERIFIED.
73
+ </step>
74
+
75
+ <step name="verify_artifacts">
76
+ For each required artifact, verify three levels:
77
+
78
+ **Level 1 — Existence:** File/directory exists. If MISSING → record and continue.
79
+
80
+ **Level 2 — Substantive:** Real implementation, not a stub.
81
+ - Line minimums: Component 15+, API route 10+, Hook/util 10+, Schema 5+
82
+ - Stub detection: `TODO|FIXME|placeholder|not implemented|coming soon`, empty returns (`return null|return {}|return []`), placeholder content
83
+ - Export check: `export (default )?(function|const|class)` exists
84
+ - SUBSTANTIVE = adequate length + no stubs + has exports. STUB = too short OR stub patterns OR no exports. PARTIAL = mixed.
85
+
86
+ **Level 3 — Wired:** Connected to the system.
87
+ - Import: `grep -r "import.*$artifact_name" src/ --include="*.ts" --include="*.tsx"` → IMPORTED
88
+ - Usage: same grep excluding import lines → USED
89
+ - WIRED = imported AND used. ORPHANED = exists but not imported/used. PARTIAL = imported but unused.
90
+
91
+ | Exists | Substantive | Wired | Status |
92
+ |--------|-------------|-------|--------|
93
+ | ✓ | ✓ | ✓ | ✓ VERIFIED |
94
+ | ✓ | ✓ | ✗ | ⚠️ ORPHANED |
95
+ | ✓ | ✗ | - | ✗ STUB |
96
+ | ✗ | - | - | ✗ MISSING |
97
+ </step>
98
+
99
+ <step name="verify_wiring">
100
+ Key links are critical connections — if broken, goal fails even with all artifacts present.
101
+
102
+ | Pattern | Check | Status |
103
+ |---------|-------|--------|
104
+ | Component → API | fetch/axios call to API path, response used (await/.then/setState) | WIRED / PARTIAL (call but unused response) / NOT_WIRED |
105
+ | API → Database | Prisma/DB query on model, result returned via res.json() | WIRED / PARTIAL (query but not returned) / NOT_WIRED |
106
+ | Form → Handler | onSubmit with real implementation (fetch/axios/mutate/dispatch), not console.log/empty | WIRED / STUB (log-only/empty) / NOT_WIRED |
107
+ | State → Render | useState variable appears in JSX (`{stateVar}` or `{stateVar.property}`) | WIRED / NOT_WIRED |
108
+
109
+ Record status and evidence for each key link.
110
+ </step>
111
+
112
+ <step name="verify_requirements">
113
+ If REQUIREMENTS.md exists:
114
+ ```bash
115
+ grep -E "Phase ${PHASE_NUM}" .planning/REQUIREMENTS.md 2>/dev/null
116
+ ```
117
+
118
+ For each requirement: parse description → identify supporting truths/artifacts → status: ✓ SATISFIED / ✗ BLOCKED / ? NEEDS HUMAN.
119
+ </step>
120
+
121
+ <step name="scan_antipatterns">
122
+ Extract files modified in this phase from SUMMARY.md, scan each:
123
+
124
+ | Pattern | Search | Severity |
125
+ |---------|--------|----------|
126
+ | TODO/FIXME/XXX/HACK | `grep -n -E "TODO\|FIXME\|XXX\|HACK"` | ⚠️ Warning |
127
+ | Placeholder content | `grep -n -iE "placeholder\|coming soon\|will be here"` | 🛑 Blocker |
128
+ | Empty returns | `grep -n -E "return null\|return \{\}\|return \[\]\|=> \{\}"` | ⚠️ Warning |
129
+ | Log-only functions | Functions containing only console.log | ⚠️ Warning |
130
+
131
+ Categorize: 🛑 Blocker (prevents goal) | ⚠️ Warning (incomplete) | ℹ️ Info (notable).
132
+ </step>
133
+
134
+ <step name="identify_human_verification">
135
+ **Always needs human:** Visual appearance, user flow completion, real-time behavior (WebSocket/SSE), external service integration, performance feel, error message clarity.
136
+
137
+ **Needs human if uncertain:** Complex wiring grep can't trace, dynamic state-dependent behavior, edge cases.
138
+
139
+ Format each as: Test Name → What to do → Expected result → Why can't verify programmatically.
140
+ </step>
141
+
142
+ <step name="determine_status">
143
+ **passed:** All truths VERIFIED, all artifacts pass levels 1-3, all key links WIRED, no blocker anti-patterns.
144
+
145
+ **gaps_found:** Any truth FAILED, artifact MISSING/STUB, key link NOT_WIRED, or blocker found.
146
+
147
+ **human_needed:** All automated checks pass but human verification items remain.
148
+
149
+ **Score:** `verified_truths / total_truths`
150
+ </step>
151
+
152
+ <step name="generate_fix_plans">
153
+ If gaps_found:
154
+
155
+ 1. **Cluster related gaps:** API stub + component unwired → "Wire frontend to backend". Multiple missing → "Complete core implementation". Wiring only → "Connect existing components".
156
+
157
+ 2. **Generate plan per cluster:** Objective, 2-3 tasks (files/action/verify each), re-verify step. Keep focused: single concern per plan.
158
+
159
+ 3. **Order by dependency:** Fix missing → fix stubs → fix wiring → verify.
160
+ </step>
161
+
162
+ <step name="create_report">
163
+ ```bash
164
+ REPORT_PATH="$PHASE_DIR/${PHASE_NUM}-VERIFICATION.md"
165
+ ```
166
+
167
+ Fill template sections: frontmatter (phase/timestamp/status/score), goal achievement, artifact table, wiring table, requirements coverage, anti-patterns, human verification, gaps summary, fix plans (if gaps_found), metadata.
168
+
169
+ See /home/qualia/.claude/qualia-engine/templates/verification-report.md for complete template.
170
+ </step>
171
+
172
+ <step name="return_to_orchestrator">
173
+ Return status (`passed` | `gaps_found` | `human_needed`), score (N/M must-haves), report path.
174
+
175
+ If gaps_found: list gaps + recommended fix plan names.
176
+ If human_needed: list items requiring human testing.
177
+
178
+ Orchestrator routes: `passed` → update_roadmap | `gaps_found` → create/execute fixes, re-verify | `human_needed` → present to user.
179
+ </step>
180
+
181
+ </process>
182
+
183
+ <success_criteria>
184
+ - [ ] Must-haves established (from frontmatter or derived)
185
+ - [ ] All truths verified with status and evidence
186
+ - [ ] All artifacts checked at all three levels
187
+ - [ ] All key links verified
188
+ - [ ] Requirements coverage assessed (if applicable)
189
+ - [ ] Anti-patterns scanned and categorized
190
+ - [ ] Human verification items identified
191
+ - [ ] Overall status determined
192
+ - [ ] Fix plans generated (if gaps_found)
193
+ - [ ] VERIFICATION.md created with complete report
194
+ - [ ] Results returned to orchestrator
195
+ </success_criteria>