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
@@ -1,61 +0,0 @@
1
- # Phase Argument Parsing
2
-
3
- Parse and normalize phase arguments for commands that operate on phases.
4
-
5
- ## Extraction
6
-
7
- From `$ARGUMENTS`:
8
- - Extract phase number (first numeric argument)
9
- - Extract flags (prefixed with `--`)
10
- - Remaining text is description (for insert/add commands)
11
-
12
- ## Using qualia-tools
13
-
14
- The `find-phase` command handles normalization and validation in one step:
15
-
16
- ```bash
17
- PHASE_INFO=$(node /home/qualia/.claude/qualia-framework/bin/qualia-tools.js find-phase "${PHASE}")
18
- ```
19
-
20
- Returns JSON with:
21
- - `found`: true/false
22
- - `directory`: Full path to phase directory
23
- - `phase_number`: Normalized number (e.g., "06", "06.1")
24
- - `phase_name`: Name portion (e.g., "foundation")
25
- - `plans`: Array of PLAN.md files
26
- - `summaries`: Array of SUMMARY.md files
27
-
28
- ## Manual Normalization (Legacy)
29
-
30
- Zero-pad integer phases to 2 digits. Preserve decimal suffixes.
31
-
32
- ```bash
33
- # Normalize phase number
34
- if [[ "$PHASE" =~ ^[0-9]+$ ]]; then
35
- # Integer: 8 → 08
36
- PHASE=$(printf "%02d" "$PHASE")
37
- elif [[ "$PHASE" =~ ^([0-9]+)\.([0-9]+)$ ]]; then
38
- # Decimal: 2.1 → 02.1
39
- PHASE=$(printf "%02d.%s" "${BASH_REMATCH[1]}" "${BASH_REMATCH[2]}")
40
- fi
41
- ```
42
-
43
- ## Validation
44
-
45
- Use `roadmap get-phase` to validate phase exists:
46
-
47
- ```bash
48
- PHASE_CHECK=$(node /home/qualia/.claude/qualia-framework/bin/qualia-tools.js roadmap get-phase "${PHASE}")
49
- if [ "$(echo "$PHASE_CHECK" | jq -r '.found')" = "false" ]; then
50
- echo "ERROR: Phase ${PHASE} not found in roadmap"
51
- exit 1
52
- fi
53
- ```
54
-
55
- ## Directory Lookup
56
-
57
- Use `find-phase` for directory lookup:
58
-
59
- ```bash
60
- PHASE_DIR=$(node /home/qualia/.claude/qualia-framework/bin/qualia-tools.js find-phase "${PHASE}" --raw)
61
- ```
@@ -1,195 +0,0 @@
1
- <planning_config>
2
-
3
- Configuration options for `.planning/` directory behavior.
4
-
5
- <config_schema>
6
- ```json
7
- "planning": {
8
- "commit_docs": true,
9
- "search_gitignored": false
10
- },
11
- "git": {
12
- "branching_strategy": "none",
13
- "phase_branch_template": "qualia/phase-{phase}-{slug}",
14
- "milestone_branch_template": "qualia/{milestone}-{slug}"
15
- }
16
- ```
17
-
18
- | Option | Default | Description |
19
- |--------|---------|-------------|
20
- | `commit_docs` | `true` | Whether to commit planning artifacts to git |
21
- | `search_gitignored` | `false` | Add `--no-ignore` to broad rg searches |
22
- | `git.branching_strategy` | `"none"` | Git branching approach: `"none"`, `"phase"`, or `"milestone"` |
23
- | `git.phase_branch_template` | `"qualia/phase-{phase}-{slug}"` | Branch template for phase strategy |
24
- | `git.milestone_branch_template` | `"qualia/{milestone}-{slug}"` | Branch template for milestone strategy |
25
- </config_schema>
26
-
27
- <commit_docs_behavior>
28
-
29
- **When `commit_docs: true` (default):**
30
- - Planning files committed normally
31
- - SUMMARY.md, STATE.md, ROADMAP.md tracked in git
32
- - Full history of planning decisions preserved
33
-
34
- **When `commit_docs: false`:**
35
- - Skip all `git add`/`git commit` for `.planning/` files
36
- - User must add `.planning/` to `.gitignore`
37
- - Useful for: OSS contributions, client projects, keeping planning private
38
-
39
- **Using qualia-tools.js (preferred):**
40
-
41
- ```bash
42
- # Commit with automatic commit_docs + gitignore checks:
43
- node /home/qualia/.claude/qualia-framework/bin/qualia-tools.js commit "docs: update state" --files .planning/STATE.md
44
-
45
- # Load config via state load (returns JSON):
46
- INIT=$(node /home/qualia/.claude/qualia-framework/bin/qualia-tools.js state load)
47
- # commit_docs is available in the JSON output
48
-
49
- # Or use init commands which include commit_docs:
50
- INIT=$(node /home/qualia/.claude/qualia-framework/bin/qualia-tools.js init execute-phase "1")
51
- # commit_docs is included in all init command outputs
52
- ```
53
-
54
- **Auto-detection:** If `.planning/` is gitignored, `commit_docs` is automatically `false` regardless of config.json. This prevents git errors when users have `.planning/` in `.gitignore`.
55
-
56
- **Conditional git operations:**
57
-
58
- ```bash
59
- if [ "$COMMIT_DOCS" = "true" ]; then
60
- git add .planning/STATE.md
61
- git commit -m "docs: update state"
62
- fi
63
- ```
64
-
65
- </commit_docs_behavior>
66
-
67
- <search_behavior>
68
-
69
- **When `search_gitignored: false` (default):**
70
- - Standard rg behavior (respects .gitignore)
71
- - Direct path searches work: `rg "pattern" .planning/` finds files
72
- - Broad searches skip gitignored: `rg "pattern"` skips `.planning/`
73
-
74
- **When `search_gitignored: true`:**
75
- - Add `--no-ignore` to broad rg searches that should include `.planning/`
76
- - Only needed when searching entire repo and expecting `.planning/` matches
77
-
78
- **Note:** Most Qualia operations use direct file reads or explicit paths, which work regardless of gitignore status.
79
-
80
- </search_behavior>
81
-
82
- <setup_uncommitted_mode>
83
-
84
- To use uncommitted mode:
85
-
86
- 1. **Set config:**
87
- ```json
88
- "planning": {
89
- "commit_docs": false,
90
- "search_gitignored": true
91
- }
92
- ```
93
-
94
- 2. **Add to .gitignore:**
95
- ```
96
- .planning/
97
- ```
98
-
99
- 3. **Existing tracked files:** If `.planning/` was previously tracked:
100
- ```bash
101
- git rm -r --cached .planning/
102
- git commit -m "chore: stop tracking planning docs"
103
- ```
104
-
105
- </setup_uncommitted_mode>
106
-
107
- <branching_strategy_behavior>
108
-
109
- **Branching Strategies:**
110
-
111
- | Strategy | When branch created | Branch scope | Merge point |
112
- |----------|---------------------|--------------|-------------|
113
- | `none` | Never | N/A | N/A |
114
- | `phase` | At `execute-phase` start | Single phase | User merges after phase |
115
- | `milestone` | At first `execute-phase` of milestone | Entire milestone | At `complete-milestone` |
116
-
117
- **When `git.branching_strategy: "none"` (default):**
118
- - All work commits to current branch
119
- - Standard Qualia behavior
120
-
121
- **When `git.branching_strategy: "phase"`:**
122
- - `execute-phase` creates/switches to a branch before execution
123
- - Branch name from `phase_branch_template` (e.g., `qualia/phase-03-authentication`)
124
- - All plan commits go to that branch
125
- - User merges branches manually after phase completion
126
- - `complete-milestone` offers to merge all phase branches
127
-
128
- **When `git.branching_strategy: "milestone"`:**
129
- - First `execute-phase` of milestone creates the milestone branch
130
- - Branch name from `milestone_branch_template` (e.g., `qualia/v1.0-mvp`)
131
- - All phases in milestone commit to same branch
132
- - `complete-milestone` offers to merge milestone branch to main
133
-
134
- **Template variables:**
135
-
136
- | Variable | Available in | Description |
137
- |----------|--------------|-------------|
138
- | `{phase}` | phase_branch_template | Zero-padded phase number (e.g., "03") |
139
- | `{slug}` | Both | Lowercase, hyphenated name |
140
- | `{milestone}` | milestone_branch_template | Milestone version (e.g., "v1.0") |
141
-
142
- **Checking the config:**
143
-
144
- Use `init execute-phase` which returns all config as JSON:
145
- ```bash
146
- INIT=$(node /home/qualia/.claude/qualia-framework/bin/qualia-tools.js init execute-phase "1")
147
- # JSON output includes: branching_strategy, phase_branch_template, milestone_branch_template
148
- ```
149
-
150
- Or use `state load` for the config values:
151
- ```bash
152
- INIT=$(node /home/qualia/.claude/qualia-framework/bin/qualia-tools.js state load)
153
- # Parse branching_strategy, phase_branch_template, milestone_branch_template from JSON
154
- ```
155
-
156
- **Branch creation:**
157
-
158
- ```bash
159
- # For phase strategy
160
- if [ "$BRANCHING_STRATEGY" = "phase" ]; then
161
- PHASE_SLUG=$(echo "$PHASE_NAME" | tr '[:upper:]' '[:lower:]' | sed 's/[^a-z0-9]/-/g' | sed 's/--*/-/g' | sed 's/^-//;s/-$//')
162
- BRANCH_NAME=$(echo "$PHASE_BRANCH_TEMPLATE" | sed "s/{phase}/$PADDED_PHASE/g" | sed "s/{slug}/$PHASE_SLUG/g")
163
- git checkout -b "$BRANCH_NAME" 2>/dev/null || git checkout "$BRANCH_NAME"
164
- fi
165
-
166
- # For milestone strategy
167
- if [ "$BRANCHING_STRATEGY" = "milestone" ]; then
168
- MILESTONE_SLUG=$(echo "$MILESTONE_NAME" | tr '[:upper:]' '[:lower:]' | sed 's/[^a-z0-9]/-/g' | sed 's/--*/-/g' | sed 's/^-//;s/-$//')
169
- BRANCH_NAME=$(echo "$MILESTONE_BRANCH_TEMPLATE" | sed "s/{milestone}/$MILESTONE_VERSION/g" | sed "s/{slug}/$MILESTONE_SLUG/g")
170
- git checkout -b "$BRANCH_NAME" 2>/dev/null || git checkout "$BRANCH_NAME"
171
- fi
172
- ```
173
-
174
- **Merge options at complete-milestone:**
175
-
176
- | Option | Git command | Result |
177
- |--------|-------------|--------|
178
- | Squash merge (recommended) | `git merge --squash` | Single clean commit per branch |
179
- | Merge with history | `git merge --no-ff` | Preserves all individual commits |
180
- | Delete without merging | `git branch -D` | Discard branch work |
181
- | Keep branches | (none) | Manual handling later |
182
-
183
- Squash merge is recommended — keeps main branch history clean while preserving the full development history in the branch (until deleted).
184
-
185
- **Use cases:**
186
-
187
- | Strategy | Best for |
188
- |----------|----------|
189
- | `none` | Solo development, simple projects |
190
- | `phase` | Code review per phase, granular rollback, team collaboration |
191
- | `milestone` | Release branches, staging environments, PR per version |
192
-
193
- </branching_strategy_behavior>
194
-
195
- </planning_config>
@@ -1,141 +0,0 @@
1
- <questioning_guide>
2
-
3
- Project initialization is dream extraction, not requirements gathering. You're helping the user discover and articulate what they want to build. This isn't a contract negotiation — it's collaborative thinking.
4
-
5
- <philosophy>
6
-
7
- **You are a thinking partner, not an interviewer.**
8
-
9
- The user often has a fuzzy idea. Your job is to help them sharpen it. Ask questions that make them think "oh, I hadn't considered that" or "yes, that's exactly what I mean."
10
-
11
- Don't interrogate. Collaborate. Don't follow a script. Follow the thread.
12
-
13
- </philosophy>
14
-
15
- <the_goal>
16
-
17
- By the end of questioning, you need enough clarity to write a PROJECT.md that downstream phases can act on:
18
-
19
- - **Research** needs: what domain to research, what the user already knows, what unknowns exist
20
- - **Requirements** needs: clear enough vision to scope v1 features
21
- - **Roadmap** needs: clear enough vision to decompose into phases, what "done" looks like
22
- - **plan-phase** needs: specific requirements to break into tasks, context for implementation choices
23
- - **execute-phase** needs: success criteria to verify against, the "why" behind requirements
24
-
25
- A vague PROJECT.md forces every downstream phase to guess. The cost compounds.
26
-
27
- </the_goal>
28
-
29
- <how_to_question>
30
-
31
- **Start open.** Let them dump their mental model. Don't interrupt with structure.
32
-
33
- **Follow energy.** Whatever they emphasized, dig into that. What excited them? What problem sparked this?
34
-
35
- **Challenge vagueness.** Never accept fuzzy answers. "Good" means what? "Users" means who? "Simple" means how?
36
-
37
- **Make the abstract concrete.** "Walk me through using this." "What does that actually look like?"
38
-
39
- **Clarify ambiguity.** "When you say Z, do you mean A or B?" "You mentioned X — tell me more."
40
-
41
- **Know when to stop.** When you understand what they want, why they want it, who it's for, and what done looks like — offer to proceed.
42
-
43
- </how_to_question>
44
-
45
- <question_types>
46
-
47
- Use these as inspiration, not a checklist. Pick what's relevant to the thread.
48
-
49
- **Motivation — why this exists:**
50
- - "What prompted this?"
51
- - "What are you doing today that this replaces?"
52
- - "What would you do if this existed?"
53
-
54
- **Concreteness — what it actually is:**
55
- - "Walk me through using this"
56
- - "You said X — what does that actually look like?"
57
- - "Give me an example"
58
-
59
- **Clarification — what they mean:**
60
- - "When you say Z, do you mean A or B?"
61
- - "You mentioned X — tell me more about that"
62
-
63
- **Success — how you'll know it's working:**
64
- - "How will you know this is working?"
65
- - "What does done look like?"
66
-
67
- </question_types>
68
-
69
- <using_askuserquestion>
70
-
71
- Use AskUserQuestion to help users think by presenting concrete options to react to.
72
-
73
- **Good options:**
74
- - Interpretations of what they might mean
75
- - Specific examples to confirm or deny
76
- - Concrete choices that reveal priorities
77
-
78
- **Bad options:**
79
- - Generic categories ("Technical", "Business", "Other")
80
- - Leading options that presume an answer
81
- - Too many options (2-4 is ideal)
82
-
83
- **Example — vague answer:**
84
- User says "it should be fast"
85
-
86
- - header: "Fast"
87
- - question: "Fast how?"
88
- - options: ["Sub-second response", "Handles large datasets", "Quick to build", "Let me explain"]
89
-
90
- **Example — following a thread:**
91
- User mentions "frustrated with current tools"
92
-
93
- - header: "Frustration"
94
- - question: "What specifically frustrates you?"
95
- - options: ["Too many clicks", "Missing features", "Unreliable", "Let me explain"]
96
-
97
- </using_askuserquestion>
98
-
99
- <context_checklist>
100
-
101
- Use this as a **background checklist**, not a conversation structure. Check these mentally as you go. If gaps remain, weave questions naturally.
102
-
103
- - [ ] What they're building (concrete enough to explain to a stranger)
104
- - [ ] Why it needs to exist (the problem or desire driving it)
105
- - [ ] Who it's for (even if just themselves)
106
- - [ ] What "done" looks like (observable outcomes)
107
-
108
- Four things. If they volunteer more, capture it.
109
-
110
- </context_checklist>
111
-
112
- <decision_gate>
113
-
114
- When you could write a clear PROJECT.md, offer to proceed:
115
-
116
- - header: "Ready?"
117
- - question: "I think I understand what you're after. Ready to create PROJECT.md?"
118
- - options:
119
- - "Create PROJECT.md" — Let's move forward
120
- - "Keep exploring" — I want to share more / ask me more
121
-
122
- If "Keep exploring" — ask what they want to add or identify gaps and probe naturally.
123
-
124
- Loop until "Create PROJECT.md" selected.
125
-
126
- </decision_gate>
127
-
128
- <anti_patterns>
129
-
130
- - **Checklist walking** — Going through domains regardless of what they said
131
- - **Canned questions** — "What's your core value?" "What's out of scope?" regardless of context
132
- - **Corporate speak** — "What are your success criteria?" "Who are your stakeholders?"
133
- - **Interrogation** — Firing questions without building on answers
134
- - **Rushing** — Minimizing questions to get to "the work"
135
- - **Shallow acceptance** — Taking vague answers without probing
136
- - **Premature constraints** — Asking about tech stack before understanding the idea
137
- - **User skills** — NEVER ask about user's technical experience. Claude builds.
138
-
139
- </anti_patterns>
140
-
141
- </questioning_guide>
@@ -1,263 +0,0 @@
1
- <overview>
2
- TDD is about design quality, not coverage metrics. The red-green-refactor cycle forces you to think about behavior before implementation, producing cleaner interfaces and more testable code.
3
-
4
- **Principle:** If you can describe the behavior as `expect(fn(input)).toBe(output)` before writing `fn`, TDD improves the result.
5
-
6
- **Key insight:** TDD work is fundamentally heavier than standard tasks—it requires 2-3 execution cycles (RED → GREEN → REFACTOR), each with file reads, test runs, and potential debugging. TDD features get dedicated plans to ensure full context is available throughout the cycle.
7
- </overview>
8
-
9
- <when_to_use_tdd>
10
- ## When TDD Improves Quality
11
-
12
- **TDD candidates (create a TDD plan):**
13
- - Business logic with defined inputs/outputs
14
- - API endpoints with request/response contracts
15
- - Data transformations, parsing, formatting
16
- - Validation rules and constraints
17
- - Algorithms with testable behavior
18
- - State machines and workflows
19
- - Utility functions with clear specifications
20
-
21
- **Skip TDD (use standard plan with `type="auto"` tasks):**
22
- - UI layout, styling, visual components
23
- - Configuration changes
24
- - Glue code connecting existing components
25
- - One-off scripts and migrations
26
- - Simple CRUD with no business logic
27
- - Exploratory prototyping
28
-
29
- **Heuristic:** Can you write `expect(fn(input)).toBe(output)` before writing `fn`?
30
- → Yes: Create a TDD plan
31
- → No: Use standard plan, add tests after if needed
32
- </when_to_use_tdd>
33
-
34
- <tdd_plan_structure>
35
- ## TDD Plan Structure
36
-
37
- Each TDD plan implements **one feature** through the full RED-GREEN-REFACTOR cycle.
38
-
39
- ```markdown
40
- ---
41
- phase: XX-name
42
- plan: NN
43
- type: tdd
44
- ---
45
-
46
- <objective>
47
- [What feature and why]
48
- Purpose: [Design benefit of TDD for this feature]
49
- Output: [Working, tested feature]
50
- </objective>
51
-
52
- <context>
53
- @.planning/PROJECT.md
54
- @.planning/ROADMAP.md
55
- @relevant/source/files.ts
56
- </context>
57
-
58
- <feature>
59
- <name>[Feature name]</name>
60
- <files>[source file, test file]</files>
61
- <behavior>
62
- [Expected behavior in testable terms]
63
- Cases: input → expected output
64
- </behavior>
65
- <implementation>[How to implement once tests pass]</implementation>
66
- </feature>
67
-
68
- <verification>
69
- [Test command that proves feature works]
70
- </verification>
71
-
72
- <success_criteria>
73
- - Failing test written and committed
74
- - Implementation passes test
75
- - Refactor complete (if needed)
76
- - All 2-3 commits present
77
- </success_criteria>
78
-
79
- <output>
80
- After completion, create SUMMARY.md with:
81
- - RED: What test was written, why it failed
82
- - GREEN: What implementation made it pass
83
- - REFACTOR: What cleanup was done (if any)
84
- - Commits: List of commits produced
85
- </output>
86
- ```
87
-
88
- **One feature per TDD plan.** If features are trivial enough to batch, they're trivial enough to skip TDD—use a standard plan and add tests after.
89
- </tdd_plan_structure>
90
-
91
- <execution_flow>
92
- ## Red-Green-Refactor Cycle
93
-
94
- **RED - Write failing test:**
95
- 1. Create test file following project conventions
96
- 2. Write test describing expected behavior (from `<behavior>` element)
97
- 3. Run test - it MUST fail
98
- 4. If test passes: feature exists or test is wrong. Investigate.
99
- 5. Commit: `test({phase}-{plan}): add failing test for [feature]`
100
-
101
- **GREEN - Implement to pass:**
102
- 1. Write minimal code to make test pass
103
- 2. No cleverness, no optimization - just make it work
104
- 3. Run test - it MUST pass
105
- 4. Commit: `feat({phase}-{plan}): implement [feature]`
106
-
107
- **REFACTOR (if needed):**
108
- 1. Clean up implementation if obvious improvements exist
109
- 2. Run tests - MUST still pass
110
- 3. Only commit if changes made: `refactor({phase}-{plan}): clean up [feature]`
111
-
112
- **Result:** Each TDD plan produces 2-3 atomic commits.
113
- </execution_flow>
114
-
115
- <test_quality>
116
- ## Good Tests vs Bad Tests
117
-
118
- **Test behavior, not implementation:**
119
- - Good: "returns formatted date string"
120
- - Bad: "calls formatDate helper with correct params"
121
- - Tests should survive refactors
122
-
123
- **One concept per test:**
124
- - Good: Separate tests for valid input, empty input, malformed input
125
- - Bad: Single test checking all edge cases with multiple assertions
126
-
127
- **Descriptive names:**
128
- - Good: "should reject empty email", "returns null for invalid ID"
129
- - Bad: "test1", "handles error", "works correctly"
130
-
131
- **No implementation details:**
132
- - Good: Test public API, observable behavior
133
- - Bad: Mock internals, test private methods, assert on internal state
134
- </test_quality>
135
-
136
- <framework_setup>
137
- ## Test Framework Setup (If None Exists)
138
-
139
- When executing a TDD plan but no test framework is configured, set it up as part of the RED phase:
140
-
141
- **1. Detect project type:**
142
- ```bash
143
- # JavaScript/TypeScript
144
- if [ -f package.json ]; then echo "node"; fi
145
-
146
- # Python
147
- if [ -f requirements.txt ] || [ -f pyproject.toml ]; then echo "python"; fi
148
-
149
- # Go
150
- if [ -f go.mod ]; then echo "go"; fi
151
-
152
- # Rust
153
- if [ -f Cargo.toml ]; then echo "rust"; fi
154
- ```
155
-
156
- **2. Install minimal framework:**
157
- | Project | Framework | Install |
158
- |---------|-----------|---------|
159
- | Node.js | Jest | `npm install -D jest @types/jest ts-jest` |
160
- | Node.js (Vite) | Vitest | `npm install -D vitest` |
161
- | Python | pytest | `pip install pytest` |
162
- | Go | testing | Built-in |
163
- | Rust | cargo test | Built-in |
164
-
165
- **3. Create config if needed:**
166
- - Jest: `jest.config.js` with ts-jest preset
167
- - Vitest: `vitest.config.ts` with test globals
168
- - pytest: `pytest.ini` or `pyproject.toml` section
169
-
170
- **4. Verify setup:**
171
- ```bash
172
- # Run empty test suite - should pass with 0 tests
173
- npm test # Node
174
- pytest # Python
175
- go test ./... # Go
176
- cargo test # Rust
177
- ```
178
-
179
- **5. Create first test file:**
180
- Follow project conventions for test location:
181
- - `*.test.ts` / `*.spec.ts` next to source
182
- - `__tests__/` directory
183
- - `tests/` directory at root
184
-
185
- Framework setup is a one-time cost included in the first TDD plan's RED phase.
186
- </framework_setup>
187
-
188
- <error_handling>
189
- ## Error Handling
190
-
191
- **Test doesn't fail in RED phase:**
192
- - Feature may already exist - investigate
193
- - Test may be wrong (not testing what you think)
194
- - Fix before proceeding
195
-
196
- **Test doesn't pass in GREEN phase:**
197
- - Debug implementation
198
- - Don't skip to refactor
199
- - Keep iterating until green
200
-
201
- **Tests fail in REFACTOR phase:**
202
- - Undo refactor
203
- - Commit was premature
204
- - Refactor in smaller steps
205
-
206
- **Unrelated tests break:**
207
- - Stop and investigate
208
- - May indicate coupling issue
209
- - Fix before proceeding
210
- </error_handling>
211
-
212
- <commit_pattern>
213
- ## Commit Pattern for TDD Plans
214
-
215
- TDD plans produce 2-3 atomic commits (one per phase):
216
-
217
- ```
218
- test(08-02): add failing test for email validation
219
-
220
- - Tests valid email formats accepted
221
- - Tests invalid formats rejected
222
- - Tests empty input handling
223
-
224
- feat(08-02): implement email validation
225
-
226
- - Regex pattern matches RFC 5322
227
- - Returns boolean for validity
228
- - Handles edge cases (empty, null)
229
-
230
- refactor(08-02): extract regex to constant (optional)
231
-
232
- - Moved pattern to EMAIL_REGEX constant
233
- - No behavior changes
234
- - Tests still pass
235
- ```
236
-
237
- **Comparison with standard plans:**
238
- - Standard plans: 1 commit per task, 2-4 commits per plan
239
- - TDD plans: 2-3 commits for single feature
240
-
241
- Both follow same format: `{type}({phase}-{plan}): {description}`
242
-
243
- **Benefits:**
244
- - Each commit independently revertable
245
- - Git bisect works at commit level
246
- - Clear history showing TDD discipline
247
- - Consistent with overall commit strategy
248
- </commit_pattern>
249
-
250
- <context_budget>
251
- ## Context Budget
252
-
253
- TDD plans target **~40% context usage** (lower than standard plans' ~50%).
254
-
255
- Why lower:
256
- - RED phase: write test, run test, potentially debug why it didn't fail
257
- - GREEN phase: implement, run test, potentially iterate on failures
258
- - REFACTOR phase: modify code, run tests, verify no regressions
259
-
260
- Each phase involves reading files, running commands, analyzing output. The back-and-forth is inherently heavier than linear task execution.
261
-
262
- Single feature focus ensures full quality throughout the cycle.
263
- </context_budget>