qualia-framework 2.6.0 → 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 (328) 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 +691 -492
  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 +30 -20
  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/uninstall.sh +0 -90
  327. /package/{framework/rules → rules}/deployment.md +0 -0
  328. /package/{framework/rules → rules}/security.md +0 -0
@@ -1,209 +0,0 @@
1
- ---
2
- name: polish
3
- description: Final quality pass before shipping. Fixes alignment, spacing, consistency, and detail issues that separate good from great.
4
- user-invokable: true
5
- args:
6
- - name: target
7
- description: The feature or area to polish (optional)
8
- required: false
9
- ---
10
-
11
- **First**: Use the frontend-master skill for design principles and anti-patterns.
12
-
13
- **Then**: Read the project's design decisions:
14
-
15
- ```bash
16
- cat .planning/DESIGN.md 2>/dev/null
17
- ```
18
-
19
- If DESIGN.md exists, use it as the authoritative source for this project's design tokens, spacing, and typography. Verify consistency against DESIGN.md decisions during polish (e.g., "DESIGN.md specifies 8px grid — this 13px gap violates the system"). If DESIGN.md does not exist, proceed with general design principles from frontend-master.
20
-
21
- Perform a meticulous final pass to catch all the small details that separate good work from great work. The difference between shipped and polished.
22
-
23
- ## Pre-Polish Assessment
24
-
25
- Understand the current state and goals:
26
-
27
- 1. **Review completeness**:
28
- - Is it functionally complete?
29
- - Are there known issues to preserve (mark with TODOs)?
30
- - What's the quality bar? (MVP vs flagship feature?)
31
- - When does it ship? (How much time for polish?)
32
-
33
- 2. **Identify polish areas**:
34
- - Visual inconsistencies
35
- - Spacing and alignment issues
36
- - Interaction state gaps
37
- - Copy inconsistencies
38
- - Edge cases and error states
39
- - Loading and transition smoothness
40
-
41
- **CRITICAL**: Polish is the last step, not the first. Don't polish work that's not functionally complete.
42
-
43
- ## Polish Systematically
44
-
45
- Work through these dimensions methodically:
46
-
47
- ### Visual Alignment & Spacing
48
-
49
- - **Pixel-perfect alignment**: Everything lines up to grid
50
- - **Consistent spacing**: All gaps use spacing scale (no random 13px gaps)
51
- - **Optical alignment**: Adjust for visual weight (icons may need offset for optical centering)
52
- - **Responsive consistency**: Spacing and alignment work at all breakpoints
53
- - **Grid adherence**: Elements snap to baseline grid
54
-
55
- **Check**:
56
- - Enable grid overlay and verify alignment
57
- - Check spacing with browser inspector
58
- - Test at multiple viewport sizes
59
- - Look for elements that "feel" off
60
-
61
- ### Typography Refinement
62
-
63
- - **Hierarchy consistency**: Same elements use same sizes/weights throughout
64
- - **Line length**: 45-75 characters for body text
65
- - **Line height**: Appropriate for font size and context
66
- - **Widows & orphans**: No single words on last line
67
- - **Hyphenation**: Appropriate for language and column width
68
- - **Kerning**: Adjust letter spacing where needed (especially headlines)
69
- - **Font loading**: No FOUT/FOIT flashes
70
-
71
- ### Color & Contrast
72
-
73
- - **Contrast ratios**: All text meets WCAG standards
74
- - **Consistent token usage**: No hard-coded colors, all use design tokens
75
- - **Theme consistency**: Works in all theme variants
76
- - **Color meaning**: Same colors mean same things throughout
77
- - **Accessible focus**: Focus indicators visible with sufficient contrast
78
- - **Tinted neutrals**: No pure gray or pure black—add subtle color tint (0.01 chroma)
79
- - **Gray on color**: Never put gray text on colored backgrounds—use a shade of that color or transparency
80
-
81
- ### Interaction States
82
-
83
- Every interactive element needs all states:
84
-
85
- - **Default**: Resting state
86
- - **Hover**: Subtle feedback (color, scale, shadow)
87
- - **Focus**: Keyboard focus indicator (never remove without replacement)
88
- - **Active**: Click/tap feedback
89
- - **Disabled**: Clearly non-interactive
90
- - **Loading**: Async action feedback
91
- - **Error**: Validation or error state
92
- - **Success**: Successful completion
93
-
94
- **Missing states create confusion and broken experiences**.
95
-
96
- ### Micro-interactions & Transitions
97
-
98
- - **Smooth transitions**: All state changes animated appropriately (150-300ms)
99
- - **Consistent easing**: Use ease-out-quart/quint/expo for natural deceleration. Never bounce or elastic—they feel dated.
100
- - **No jank**: 60fps animations, only animate transform and opacity
101
- - **Appropriate motion**: Motion serves purpose, not decoration
102
- - **Reduced motion**: Respects `prefers-reduced-motion`
103
-
104
- ### Content & Copy
105
-
106
- - **Consistent terminology**: Same things called same names throughout
107
- - **Consistent capitalization**: Title Case vs Sentence case applied consistently
108
- - **Grammar & spelling**: No typos
109
- - **Appropriate length**: Not too wordy, not too terse
110
- - **Punctuation consistency**: Periods on sentences, not on labels (unless all labels have them)
111
-
112
- ### Icons & Images
113
-
114
- - **Consistent style**: All icons from same family or matching style
115
- - **Appropriate sizing**: Icons sized consistently for context
116
- - **Proper alignment**: Icons align with adjacent text optically
117
- - **Alt text**: All images have descriptive alt text
118
- - **Loading states**: Images don't cause layout shift, proper aspect ratios
119
- - **Retina support**: 2x assets for high-DPI screens
120
-
121
- ### Forms & Inputs
122
-
123
- - **Label consistency**: All inputs properly labeled
124
- - **Required indicators**: Clear and consistent
125
- - **Error messages**: Helpful and consistent
126
- - **Tab order**: Logical keyboard navigation
127
- - **Auto-focus**: Appropriate (don't overuse)
128
- - **Validation timing**: Consistent (on blur vs on submit)
129
-
130
- ### Edge Cases & Error States
131
-
132
- - **Loading states**: All async actions have loading feedback
133
- - **Empty states**: Helpful empty states, not just blank space
134
- - **Error states**: Clear error messages with recovery paths
135
- - **Success states**: Confirmation of successful actions
136
- - **Long content**: Handles very long names, descriptions, etc.
137
- - **No content**: Handles missing data gracefully
138
- - **Offline**: Appropriate offline handling (if applicable)
139
-
140
- ### Responsiveness
141
-
142
- - **All breakpoints**: Test mobile, tablet, desktop
143
- - **Touch targets**: 44x44px minimum on touch devices
144
- - **Readable text**: No text smaller than 14px on mobile
145
- - **No horizontal scroll**: Content fits viewport
146
- - **Appropriate reflow**: Content adapts logically
147
-
148
- ### Performance
149
-
150
- - **Fast initial load**: Optimize critical path
151
- - **No layout shift**: Elements don't jump after load (CLS)
152
- - **Smooth interactions**: No lag or jank
153
- - **Optimized images**: Appropriate formats and sizes
154
- - **Lazy loading**: Off-screen content loads lazily
155
-
156
- ### Code Quality
157
-
158
- - **Remove console logs**: No debug logging in production
159
- - **Remove commented code**: Clean up dead code
160
- - **Remove unused imports**: Clean up unused dependencies
161
- - **Consistent naming**: Variables and functions follow conventions
162
- - **Type safety**: No TypeScript `any` or ignored errors
163
- - **Accessibility**: Proper ARIA labels and semantic HTML
164
-
165
- ## Polish Checklist
166
-
167
- Go through systematically:
168
-
169
- - [ ] Visual alignment perfect at all breakpoints
170
- - [ ] Spacing uses design tokens consistently
171
- - [ ] Typography hierarchy consistent
172
- - [ ] All interactive states implemented
173
- - [ ] All transitions smooth (60fps)
174
- - [ ] Copy is consistent and polished
175
- - [ ] Icons are consistent and properly sized
176
- - [ ] All forms properly labeled and validated
177
- - [ ] Error states are helpful
178
- - [ ] Loading states are clear
179
- - [ ] Empty states are welcoming
180
- - [ ] Touch targets are 44x44px minimum
181
- - [ ] Contrast ratios meet WCAG AA
182
- - [ ] Keyboard navigation works
183
- - [ ] Focus indicators visible
184
- - [ ] No console errors or warnings
185
- - [ ] No layout shift on load
186
- - [ ] Works in all supported browsers
187
- - [ ] Respects reduced motion preference
188
- - [ ] Code is clean (no TODOs, console.logs, commented code)
189
-
190
- **IMPORTANT**: Polish is about details. Zoom in. Squint at it. Use it yourself. The little things add up.
191
-
192
- **NEVER**:
193
- - Polish before it's functionally complete
194
- - Spend hours on polish if it ships in 30 minutes (triage)
195
- - Introduce bugs while polishing (test thoroughly)
196
- - Ignore systematic issues (if spacing is off everywhere, fix the system)
197
- - Perfect one thing while leaving others rough (consistent quality level)
198
-
199
- ## Final Verification
200
-
201
- Before marking as done:
202
-
203
- - **Use it yourself**: Actually interact with the feature
204
- - **Test on real devices**: Not just browser DevTools
205
- - **Ask someone else to review**: Fresh eyes catch things
206
- - **Compare to design**: Match intended design
207
- - **Check all states**: Don't just test happy path
208
-
209
- Remember: You have impeccable attention to detail and exquisite taste. Polish until it feels effortless, looks intentional, and works flawlessly. Sweat the details - they matter.
@@ -1,66 +0,0 @@
1
- ---
2
- name: pr
3
- description: "Create a GitHub Pull Request with auto-generated title and description from current branch changes. Use this skill whenever the user mentions PR, pull request, wants to submit code for review, or says things like 'open a PR', 'create PR', 'submit for review', 'push and PR', or 'quick-pr'. Also trigger when user has finished work on a branch and wants to share it."
4
- ---
5
-
6
- # Quick PR — Auto-Generate Pull Requests
7
-
8
- Create a GitHub Pull Request for the current branch with an intelligently generated title and description based on actual code changes.
9
-
10
- ## Process
11
-
12
- ### 1. Analyze Changes
13
-
14
- Gather all the context needed to write a good PR description:
15
-
16
- ```bash
17
- git status
18
- git diff main...HEAD
19
- git log main..HEAD --oneline
20
- ```
21
-
22
- If the base branch isn't `main`, check for `master` or ask the user.
23
-
24
- ### 2. Generate PR Content
25
-
26
- From the diff and commit history, produce:
27
-
28
- - **Title**: Clear, imperative mood, under 72 chars (e.g., "Add user authentication with JWT tokens")
29
- - **Summary**: What this PR does and why — 1-3 sentences
30
- - **Key changes**: Bullet list of the most important modifications
31
- - **Breaking changes**: Flag anything that could break existing functionality
32
- - **Migration notes**: If schema, config, or API changes need action
33
-
34
- ### 3. Create the PR
35
-
36
- ```bash
37
- gh pr create --title "title" --body "$(cat <<'EOF'
38
- ## Summary
39
- [What this PR does and why]
40
-
41
- ## Changes
42
- - [Key change 1]
43
- - [Key change 2]
44
-
45
- ## Testing
46
- - [ ] Tested locally
47
- - [ ] Tests pass
48
-
49
- ## Notes
50
- [Any additional context, breaking changes, migration needs]
51
- EOF
52
- )"
53
- ```
54
-
55
- ### 4. Return the PR URL
56
-
57
- After creation, display the PR URL so the user can share it or continue working.
58
-
59
- ## Arguments
60
-
61
- If the user provides arguments (e.g., a target branch, reviewers, labels), incorporate them into the `gh pr create` command:
62
-
63
- - `--base <branch>` for target branch
64
- - `--reviewer <user>` for reviewers
65
- - `--label <label>` for labels
66
- - `--draft` for draft PRs
@@ -1,199 +0,0 @@
1
- ---
2
- name: qualia
3
- description: "Mechanical state router — reads STATE.md and tells you the exact next command to run. No analysis, no advice, just routing. Use this skill whenever the user says 'qualia', 'next', 'route me', or wants to know the immediate next command without context. For advice when stuck, use /qualia-idk instead. For progress overview, use /qualia-progress."
4
- tags: [qualia, workflow, auto-route]
5
- ---
6
-
7
- # Qualia Smart Router
8
-
9
- Single entry point that reads project state and routes to the appropriate Qualia action.
10
-
11
- ## How It Works
12
-
13
- 1. Detect if we're in a Qualia project (has .planning/)
14
- 2. Read STATE.md to find current position
15
- 3. Analyze what's needed next
16
- 4. Route to the correct /qualia: command OR execute directly
17
-
18
- ## Execution
19
-
20
- ### Step 1: Detect Project State
21
-
22
- ```bash
23
- # Check if .planning exists
24
- if [ ! -d ".planning" ]; then
25
- echo "NO_PROJECT"
26
- exit 0
27
- fi
28
-
29
- # Check for STATE.md
30
- if [ -f ".planning/STATE.md" ]; then
31
- cat .planning/STATE.md
32
- fi
33
-
34
- # Check for ROADMAP.md
35
- if [ -f ".planning/ROADMAP.md" ]; then
36
- cat .planning/ROADMAP.md
37
- fi
38
-
39
- # List phase directories
40
- ls -la .planning/phases/ 2>/dev/null || echo "NO_PHASES"
41
- ```
42
-
43
- ### Step 2: Parse Current Position
44
-
45
- From STATE.md, extract:
46
- - `current_phase`: Which phase number we're on
47
- - `phase_status`: planning | executing | verifying | complete
48
- - `blockers`: Any blockers or decisions needed
49
-
50
- From ROADMAP.md, extract:
51
- - Total phases
52
- - Which phases are complete
53
- - Next phase info
54
-
55
- ### Step 3: Route Decision Tree
56
-
57
- ```
58
- NO .planning/ directory?
59
- → "No Qualia project. Run /qualia-new-project to initialize."
60
-
61
- Has .planning/ but no STATE.md?
62
- → "Project initialized but no state. Run /qualia-progress to diagnose."
63
-
64
- STATE.md exists:
65
-
66
- phase_status = "needs_discussion"?
67
- → Route to: /qualia-discuss-phase {current_phase}
68
-
69
- phase_status = "discussed" or "needs_planning"?
70
- → Route to: /qualia-plan-phase {current_phase}
71
-
72
- phase_status = "planned" or "needs_execution"?
73
- → Route to: /qualia-execute-phase {current_phase}
74
-
75
- phase_status = "executed" or "needs_verification"?
76
- → Route to: /qualia-verify-work {current_phase}
77
-
78
- phase_status = "verified" or "complete"?
79
- → Check if more phases exist in ROADMAP.md
80
- → If yes: increment phase, route to plan
81
- "Phase {N} done! Next: Phase {N+1} — {name}. Run /qualia-plan-phase {N+1}"
82
- → If no phases remain AND no milestone audit exists:
83
- "All phases complete! Run /qualia-audit-milestone to verify the milestone."
84
- → If no phases remain AND audit exists AND passed:
85
- "Milestone audit passed! Run /qualia-complete-milestone to archive and tag."
86
-
87
- ─── FINISH LINE (post-milestone, 70% → 100%) ───
88
-
89
- → If milestone is completed AND no finish_line in STATE.md:
90
- Set finish_line: "needs_polish" in STATE.md.
91
- "Milestone archived! Now let's get this client-ready."
92
- "Features are ~70% of a project. Time for the finish line."
93
- Route to: /critique (then /polish, then /harden)
94
-
95
- → If finish_line = "needs_polish":
96
- "Run /critique to review the design, then /polish and /harden."
97
- (Skip this step if project has no frontend — set finish_line to "needs_review")
98
-
99
- → If finish_line = "needs_review":
100
- "Design polished. Now run /qualia-review --web to audit code quality and security."
101
-
102
- → If finish_line = "needs_pr":
103
- "Review passed. Push your branch and create a PR:"
104
- "Run /pr to create a pull request for Fawzi to review."
105
-
106
- → If finish_line = "ready_for_deploy":
107
- "PR created! Fawzi will review and deploy to production."
108
- "Once deployed, run /client-handoff to prepare the delivery document."
109
-
110
- → If finish_line = "deployed":
111
- "Run /client-handoff to prepare the client delivery document."
112
-
113
- blockers exist?
114
- → Show blockers, ask user how to proceed
115
- ```
116
-
117
- ### Step 4: Execute or Prompt
118
-
119
- **If clear next action:**
120
- Invoke the appropriate skill directly using:
121
- ```
122
- Skill(skill="qualia-{action}", args="{phase_number}")
123
- ```
124
-
125
- **If ambiguous:**
126
- Present options to user:
127
- ```
128
- Current: Phase {N} - {status}
129
-
130
- Options:
131
- 1. Continue with {recommended_action}
132
- 2. Check progress (/qualia-progress)
133
- 3. Quick task (/qualia-quick)
134
- ```
135
-
136
- ## Output Format
137
-
138
- **During phases (building features):**
139
- ```
140
- ◆ Qualia Status
141
-
142
- Project {name}
143
- Phase {N} of {total} — {phase_name}
144
- Status {status_description}
145
-
146
- Next → /qualia-{action} {phase}
147
- ```
148
-
149
- **During finish line (70% → 100%):**
150
- ```
151
- ◆ Qualia Status
152
-
153
- Project {name}
154
- Phases {total}/{total} complete
155
- Stage FINISH LINE — {step_name}
156
-
157
- ── Progress to Client-Ready ──────────
158
- ✓ Build phases complete
159
- ✓ Milestone audit passed
160
- ✓ Milestone archived
161
- ▶ Design polish ← you are here
162
- · Code review
163
- · Pull request
164
- · Deploy (Fawzi)
165
- · Client handoff
166
-
167
- Next → /critique
168
- ```
169
-
170
- ## Status Markers
171
-
172
- - `✓` — Done
173
- - `▶` — Current step (you are here)
174
- - `·` — Not yet
175
- - `✗` — Failed / blocked
176
-
177
- ## Quick Actions
178
-
179
- If user provides argument:
180
-
181
- - `/qualia plan` → Route to /qualia-plan-phase for current phase
182
- - `/qualia exec` → Route to /qualia-execute-phase for current phase
183
- - `/qualia verify` → Route to /qualia-verify-work for current phase
184
- - `/qualia next` → Move to next phase
185
- - `/qualia quick {description}` → Pass to /qualia-quick
186
- - `/qualia optimize` → Route to /qualia-optimize (full optimization pass)
187
- - `/qualia idk` → Route to /qualia-idk (what should I do next?)
188
-
189
- ## No Project Fallback
190
-
191
- If no .planning/ exists:
192
-
193
- ```
194
- No Qualia project detected in current directory.
195
-
196
- Options:
197
- 1. /qualia-new-project - Initialize new project with full workflow
198
- 2. /qualia-quick - Run a quick task without project setup
199
- ```
@@ -1,68 +0,0 @@
1
- ---
2
- name: qualia-add-todo
3
- description: "Capture ideas and tasks as structured todos in the .planning system. Use this skill whenever the user says 'add todo', 'remember this', 'note this down', 'add task', 'todo', or wants to capture an idea or task for later without acting on it now. Also trigger when user mentions 'backlog item', 'future task', or needs to save something for later in a structured way."
4
- ---
5
-
6
- # Qualia Add Todo — Structured Task Capture
7
-
8
- Capture ideas and tasks as structured todo files in the `.planning/todos/` directory.
9
-
10
- ## Usage
11
-
12
- `/qualia-add-todo "Add dark mode support"` — Capture a new todo
13
- `/qualia-add-todo "Optimize image loading" --area=performance` — With explicit area
14
-
15
- ## Process
16
-
17
- ### 1. Setup
18
-
19
- Ensure the todos directory exists:
20
- ```bash
21
- mkdir -p .planning/todos
22
- ```
23
-
24
- Reference: `~/.claude/qualia-framework/workflows/add-todo.md`
25
-
26
- ### 2. Extract Content
27
-
28
- Parse the user's input to determine:
29
- - **Title** — Short description of the task
30
- - **Details** — Any additional context provided
31
- - **Area** — Infer from content if not specified (e.g., "dark mode" → `ui`, "API rate limiting" → `backend`, "fix typo" → `content`)
32
-
33
- ### 3. Check for Duplicates
34
-
35
- Scan existing todos in `.planning/todos/` for similar items. If a near-duplicate exists, tell the user and ask if they want to update the existing one or create a new one.
36
-
37
- ### 4. Create Todo File
38
-
39
- Write to `.planning/todos/{slug}.md`:
40
-
41
- ```markdown
42
- ---
43
- title: "{title}"
44
- area: "{area}"
45
- priority: normal
46
- status: pending
47
- created: {YYYY-MM-DD}
48
- ---
49
-
50
- # {title}
51
-
52
- {details and context}
53
- ```
54
-
55
- ### 5. Update STATE.md
56
-
57
- Add entry to the todos section of `.planning/STATE.md` (create section if it doesn't exist).
58
-
59
- ### 6. Commit
60
-
61
- ```bash
62
- git add .planning/todos/{slug}.md .planning/STATE.md
63
- git commit -m "todo: add {title}"
64
- ```
65
-
66
- ### 7. Confirm
67
-
68
- > "Todo captured: {title}. Run `/qualia-check-todos` to review your backlog."
@@ -1,95 +0,0 @@
1
- ---
2
- name: qualia-audit-milestone
3
- description: "Verify milestone definition of done — aggregate verification results, check tech debt, run integration tests. Use this skill whenever the user says 'audit milestone', 'check milestone', 'milestone review', 'are we done', or wants to verify that all phases of a milestone meet the definition of done before completing it. Also trigger when user mentions 'milestone audit', 'definition of done check', or needs to validate overall milestone readiness."
4
- ---
5
-
6
- # Qualia Audit Milestone — Milestone Verification
7
-
8
- Orchestrate a full audit of the current milestone to verify all requirements are met before completion.
9
-
10
- ## Usage
11
-
12
- `/qualia-audit-milestone` — Audit current milestone
13
-
14
- ## Process
15
-
16
- ### 1. Load Context
17
-
18
- Read all project files:
19
- - `.planning/PROJECT.md`
20
- - `.planning/REQUIREMENTS.md` — Definition of Done
21
- - `.planning/ROADMAP.md` — All phases
22
- - `.planning/config.json`
23
-
24
- Reference: `~/.claude/qualia-framework/workflows/audit-milestone.md`
25
-
26
- ### 2. Read Verification Results
27
-
28
- For each completed phase, read its VERIFICATION.md or UAT.md files. Aggregate results:
29
- - How many phases verified passing
30
- - How many have outstanding issues
31
- - What gaps remain
32
-
33
- ### 3. Check Requirements
34
-
35
- Walk through every item in REQUIREMENTS.md Definition of Done:
36
- - Is each requirement addressed by a completed phase?
37
- - Is each requirement verified as working?
38
- - Flag any unmet requirements
39
-
40
- ### 4. Tech Debt Aggregation
41
-
42
- Scan phase summaries and verification files for noted tech debt, workarounds, or deferred items. Compile a tech debt list.
43
-
44
- ### 5. Shipping Checklist Audit
45
-
46
- Run the full shipping checklist from `~/.claude/qualia-framework/references/completion-checklists.md` as part of the audit.
47
-
48
- Detect project type from `.planning/PROJECT.md` and load the matching checklist:
49
- - **website** → "Website-Specific Checklist" + "Universal Checklist"
50
- - **agent** → "AI Agent Checklist" + "Universal Checklist"
51
- - **voice** → "Voice Agent Checklist" + "Universal Checklist"
52
- - **mobile** → "Mobile App Checklist" + "Universal Checklist"
53
- - **platform** → "Platform with LLM Checklist" + "Universal Checklist"
54
-
55
- For every checklist item, run automated verification where possible. Include a "Shipping Checklist" section in the audit report with PASS/WARN/FAIL per item. FAIL items contribute to the overall PASS/FAIL decision.
56
-
57
- ### 6. Integration Check
58
-
59
- Spawn an integration checker to verify cross-phase functionality:
60
- - Do features from different phases work together?
61
- - Are there any conflicts or regressions?
62
- - End-to-end user flows work?
63
-
64
- ### 7. Produce Audit Report
65
-
66
- Write `v{version}-MILESTONE-AUDIT.md`:
67
-
68
- ```markdown
69
- # Milestone v{version} Audit
70
-
71
- ## Requirements Status
72
- | Requirement | Phase | Verified | Status |
73
- |------------|-------|----------|--------|
74
- | ... | ... | ... | ✅/❌ |
75
-
76
- ## Gaps
77
- - List of unmet requirements or failing tests
78
-
79
- ## Tech Debt
80
- - Items deferred during implementation
81
-
82
- ## Integration Results
83
- - Cross-phase test outcomes
84
-
85
- ## Overall: PASS / FAIL
86
- ```
87
-
88
- ### 8. Route
89
-
90
- **If PASS**: "Milestone audit passed. Run `/qualia-complete-milestone` to archive and tag."
91
-
92
- **If FAIL**: "Audit found gaps. Run `/qualia-plan-milestone-gaps` to create fix phases."
93
-
94
- ---
95
- > Stuck? Type `/qualia-idk` · Lost? Type `/qualia-help`
@@ -1,55 +0,0 @@
1
- ---
2
- name: qualia-check-todos
3
- description: "List and manage pending todos with filtering and interactive routing. Use this skill whenever the user says 'check todos', 'show todos', 'what todos', 'backlog', 'pending tasks', or wants to review their captured todo items. Also trigger when user mentions 'todo list', 'what's in the backlog', or needs to pick a todo to work on."
4
- ---
5
-
6
- # Qualia Check Todos — Todo Review & Routing
7
-
8
- List pending todos with area filtering, interactive selection, and action routing.
9
-
10
- ## Usage
11
-
12
- `/qualia-check-todos` — Show all pending todos
13
- `/qualia-check-todos --area=ui` — Filter by area
14
- `/qualia-check-todos --priority=high` — Filter by priority
15
-
16
- ## Process
17
-
18
- ### 1. Load Todos
19
-
20
- Read all files in `.planning/todos/`. Parse frontmatter for status, area, priority, created date.
21
-
22
- Also read `.planning/STATE.md` and `.planning/ROADMAP.md` for project context.
23
-
24
- Reference: `~/.claude/qualia-framework/workflows/check-todos.md`
25
-
26
- ### 2. Display List
27
-
28
- Show todos grouped by area, sorted by priority then date:
29
-
30
- ```
31
- ## UI (3 pending)
32
- 1. Add dark mode support [normal] — 2026-03-10
33
- 2. Improve mobile nav [high] — 2026-03-08
34
- 3. Loading skeleton screens [low] — 2026-03-12
35
-
36
- ## Backend (1 pending)
37
- 4. API rate limiting [high] — 2026-03-09
38
- ```
39
-
40
- Apply filters if specified.
41
-
42
- ### 3. Interactive Selection
43
-
44
- Ask the user which todo they want to act on (by number).
45
-
46
- ### 4. Route to Action
47
-
48
- For the selected todo, offer actions:
49
-
50
- - **Work now** — Execute the todo as a quick task: `/qualia-quick "{todo title}"`
51
- - **Add to phase** — Incorporate into an upcoming phase in the roadmap
52
- - **Brainstorm** — Discuss the todo further to flesh out details
53
- - **Create phase** — If the todo is big enough, create a new roadmap phase for it
54
-
55
- Load the full todo file content to provide context for whichever action is chosen.