qualia-framework 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (261) hide show
  1. package/README.md +50 -0
  2. package/bin/cli.js +519 -0
  3. package/framework/agents/architecture-strategist.md +53 -0
  4. package/framework/agents/backend-agent.md +150 -0
  5. package/framework/agents/code-simplicity-reviewer.md +86 -0
  6. package/framework/agents/frontend-agent.md +111 -0
  7. package/framework/agents/kieran-typescript-reviewer.md +96 -0
  8. package/framework/agents/performance-oracle.md +111 -0
  9. package/framework/agents/qualia-codebase-mapper.md +760 -0
  10. package/framework/agents/qualia-debugger.md +1203 -0
  11. package/framework/agents/qualia-executor.md +881 -0
  12. package/framework/agents/qualia-integration-checker.md +423 -0
  13. package/framework/agents/qualia-phase-researcher.md +453 -0
  14. package/framework/agents/qualia-plan-checker.md +699 -0
  15. package/framework/agents/qualia-planner.md +1241 -0
  16. package/framework/agents/qualia-project-researcher.md +602 -0
  17. package/framework/agents/qualia-research-synthesizer.md +236 -0
  18. package/framework/agents/qualia-roadmapper.md +605 -0
  19. package/framework/agents/qualia-verifier.md +685 -0
  20. package/framework/agents/team-orchestrator.md +228 -0
  21. package/framework/agents/teams/full-stack-team.md +48 -0
  22. package/framework/agents/teams/optimize-team.md +53 -0
  23. package/framework/agents/teams/review-team.md +62 -0
  24. package/framework/agents/teams/ship-team.md +86 -0
  25. package/framework/agents/test-agent.md +182 -0
  26. package/framework/askpass.sh +2 -0
  27. package/framework/commands/design.md +53 -0
  28. package/framework/commands/quick-db.md +22 -0
  29. package/framework/config/retention.json +35 -0
  30. package/framework/core/PRINCIPLES.md +77 -0
  31. package/framework/hooks/auto-format.sh +45 -0
  32. package/framework/hooks/block-env-edit.sh +42 -0
  33. package/framework/hooks/branch-guard.sh +46 -0
  34. package/framework/hooks/confirm-delete.sh +56 -0
  35. package/framework/hooks/migration-validate.sh +68 -0
  36. package/framework/hooks/notification-speak.sh +15 -0
  37. package/framework/hooks/pre-commit.sh +80 -0
  38. package/framework/hooks/pre-compact.sh +55 -0
  39. package/framework/hooks/pre-deploy-gate.sh +151 -0
  40. package/framework/hooks/qualia-colors.sh +32 -0
  41. package/framework/hooks/retention-cleanup.sh +43 -0
  42. package/framework/hooks/save-session-state.sh +153 -0
  43. package/framework/hooks/session-context-loader.sh +28 -0
  44. package/framework/hooks/session-learn.sh +30 -0
  45. package/framework/knowledge/claudecode-bible.md +1384 -0
  46. package/framework/knowledge/client-prefs.md +22 -0
  47. package/framework/knowledge/common-fixes.md +25 -0
  48. package/framework/knowledge/deployment-map.md +35 -0
  49. package/framework/knowledge/email-signature.html +1 -0
  50. package/framework/knowledge/employees.md +8 -0
  51. package/framework/knowledge/learned-patterns.md +51 -0
  52. package/framework/knowledge/optimization-research-2026.md +137 -0
  53. package/framework/knowledge/qualia-context.md +67 -0
  54. package/framework/knowledge/supabase-patterns.md +50 -0
  55. package/framework/knowledge/voice-agent-patterns.md +46 -0
  56. package/framework/qualia-engine/VERSION +1 -0
  57. package/framework/qualia-engine/bin/qualia-tools.js +2160 -0
  58. package/framework/qualia-engine/bin/qualia-tools.test.js +1054 -0
  59. package/framework/qualia-engine/references/checkpoints.md +775 -0
  60. package/framework/qualia-engine/references/continuation-format.md +249 -0
  61. package/framework/qualia-engine/references/decimal-phase-calculation.md +65 -0
  62. package/framework/qualia-engine/references/design-quality.md +56 -0
  63. package/framework/qualia-engine/references/git-integration.md +254 -0
  64. package/framework/qualia-engine/references/git-planning-commit.md +50 -0
  65. package/framework/qualia-engine/references/model-profile-resolution.md +32 -0
  66. package/framework/qualia-engine/references/model-profiles.md +73 -0
  67. package/framework/qualia-engine/references/phase-argument-parsing.md +61 -0
  68. package/framework/qualia-engine/references/planning-config.md +195 -0
  69. package/framework/qualia-engine/references/questioning.md +141 -0
  70. package/framework/qualia-engine/references/tdd.md +263 -0
  71. package/framework/qualia-engine/references/ui-brand.md +160 -0
  72. package/framework/qualia-engine/references/verification-patterns.md +612 -0
  73. package/framework/qualia-engine/templates/DEBUG.md +159 -0
  74. package/framework/qualia-engine/templates/DESIGN.md +81 -0
  75. package/framework/qualia-engine/templates/UAT.md +247 -0
  76. package/framework/qualia-engine/templates/codebase/architecture.md +255 -0
  77. package/framework/qualia-engine/templates/codebase/concerns.md +310 -0
  78. package/framework/qualia-engine/templates/codebase/conventions.md +307 -0
  79. package/framework/qualia-engine/templates/codebase/integrations.md +280 -0
  80. package/framework/qualia-engine/templates/codebase/stack.md +186 -0
  81. package/framework/qualia-engine/templates/codebase/structure.md +285 -0
  82. package/framework/qualia-engine/templates/codebase/testing.md +480 -0
  83. package/framework/qualia-engine/templates/config.json +35 -0
  84. package/framework/qualia-engine/templates/context.md +283 -0
  85. package/framework/qualia-engine/templates/continue-here.md +78 -0
  86. package/framework/qualia-engine/templates/debug-subagent-prompt.md +91 -0
  87. package/framework/qualia-engine/templates/discovery.md +146 -0
  88. package/framework/qualia-engine/templates/milestone-archive.md +123 -0
  89. package/framework/qualia-engine/templates/milestone.md +115 -0
  90. package/framework/qualia-engine/templates/phase-prompt.md +567 -0
  91. package/framework/qualia-engine/templates/planner-subagent-prompt.md +117 -0
  92. package/framework/qualia-engine/templates/project.md +184 -0
  93. package/framework/qualia-engine/templates/projects/ai-agent.md +156 -0
  94. package/framework/qualia-engine/templates/projects/mobile-app.md +181 -0
  95. package/framework/qualia-engine/templates/projects/voice-agent.md +134 -0
  96. package/framework/qualia-engine/templates/projects/website.md +137 -0
  97. package/framework/qualia-engine/templates/requirements.md +231 -0
  98. package/framework/qualia-engine/templates/research-project/ARCHITECTURE.md +204 -0
  99. package/framework/qualia-engine/templates/research-project/FEATURES.md +147 -0
  100. package/framework/qualia-engine/templates/research-project/PITFALLS.md +200 -0
  101. package/framework/qualia-engine/templates/research-project/STACK.md +120 -0
  102. package/framework/qualia-engine/templates/research-project/SUMMARY.md +170 -0
  103. package/framework/qualia-engine/templates/research.md +552 -0
  104. package/framework/qualia-engine/templates/roadmap.md +202 -0
  105. package/framework/qualia-engine/templates/state.md +176 -0
  106. package/framework/qualia-engine/templates/summary-complex.md +59 -0
  107. package/framework/qualia-engine/templates/summary-minimal.md +41 -0
  108. package/framework/qualia-engine/templates/summary-standard.md +48 -0
  109. package/framework/qualia-engine/templates/summary.md +246 -0
  110. package/framework/qualia-engine/templates/user-setup.md +311 -0
  111. package/framework/qualia-engine/templates/verification-report.md +322 -0
  112. package/framework/qualia-engine/workflows/add-phase.md +179 -0
  113. package/framework/qualia-engine/workflows/add-todo.md +157 -0
  114. package/framework/qualia-engine/workflows/audit-milestone.md +241 -0
  115. package/framework/qualia-engine/workflows/check-todos.md +176 -0
  116. package/framework/qualia-engine/workflows/complete-milestone.md +858 -0
  117. package/framework/qualia-engine/workflows/diagnose-issues.md +219 -0
  118. package/framework/qualia-engine/workflows/discovery-phase.md +289 -0
  119. package/framework/qualia-engine/workflows/discuss-phase.md +534 -0
  120. package/framework/qualia-engine/workflows/execute-phase.md +559 -0
  121. package/framework/qualia-engine/workflows/execute-plan.md +438 -0
  122. package/framework/qualia-engine/workflows/help.md +470 -0
  123. package/framework/qualia-engine/workflows/insert-phase.md +220 -0
  124. package/framework/qualia-engine/workflows/list-phase-assumptions.md +178 -0
  125. package/framework/qualia-engine/workflows/map-codebase.md +327 -0
  126. package/framework/qualia-engine/workflows/new-milestone.md +363 -0
  127. package/framework/qualia-engine/workflows/new-project.md +1037 -0
  128. package/framework/qualia-engine/workflows/pause-work.md +122 -0
  129. package/framework/qualia-engine/workflows/plan-milestone-gaps.md +256 -0
  130. package/framework/qualia-engine/workflows/plan-phase.md +422 -0
  131. package/framework/qualia-engine/workflows/progress.md +354 -0
  132. package/framework/qualia-engine/workflows/quick.md +252 -0
  133. package/framework/qualia-engine/workflows/remove-phase.md +326 -0
  134. package/framework/qualia-engine/workflows/research-phase.md +74 -0
  135. package/framework/qualia-engine/workflows/resume-project.md +306 -0
  136. package/framework/qualia-engine/workflows/set-profile.md +80 -0
  137. package/framework/qualia-engine/workflows/settings.md +145 -0
  138. package/framework/qualia-engine/workflows/transition.md +556 -0
  139. package/framework/qualia-engine/workflows/update.md +197 -0
  140. package/framework/qualia-engine/workflows/verify-phase.md +195 -0
  141. package/framework/qualia-engine/workflows/verify-work.md +625 -0
  142. package/framework/rules/context7.md +11 -0
  143. package/framework/rules/deployment.md +29 -0
  144. package/framework/rules/frontend.md +33 -0
  145. package/framework/rules/security.md +12 -0
  146. package/framework/rules/speed.md +20 -0
  147. package/framework/scripts/__pycache__/say.cpython-314.pyc +0 -0
  148. package/framework/scripts/apply-retention.sh +120 -0
  149. package/framework/scripts/bootstrap-pop-os.sh +354 -0
  150. package/framework/scripts/claude-voice +13 -0
  151. package/framework/scripts/cleanup.sh +131 -0
  152. package/framework/scripts/cowork-mode.sh +141 -0
  153. package/framework/scripts/generate-project-claude-md.sh +153 -0
  154. package/framework/scripts/load-test-webhook.js +172 -0
  155. package/framework/scripts/say.py +236 -0
  156. package/framework/scripts/showcase-video-recorder/ffmpeg-builder.js +167 -0
  157. package/framework/scripts/showcase-video-recorder/playwright-helpers.js +216 -0
  158. package/framework/scripts/speak.py +55 -0
  159. package/framework/scripts/speak.sh +18 -0
  160. package/framework/scripts/status.sh +138 -0
  161. package/framework/scripts/sync-to-framework.sh +65 -0
  162. package/framework/scripts/voice-hotkey.py +227 -0
  163. package/framework/scripts/voice-input.sh +51 -0
  164. package/framework/skills/animate/SKILL.md +202 -0
  165. package/framework/skills/bolder/SKILL.md +144 -0
  166. package/framework/skills/browser-qa/SKILL.md +536 -0
  167. package/framework/skills/clarify/SKILL.md +179 -0
  168. package/framework/skills/colorize/SKILL.md +170 -0
  169. package/framework/skills/critique/SKILL.md +126 -0
  170. package/framework/skills/deep-research/SKILL.md +271 -0
  171. package/framework/skills/delight/SKILL.md +329 -0
  172. package/framework/skills/deploy/SKILL.md +261 -0
  173. package/framework/skills/deploy-verify/SKILL.md +377 -0
  174. package/framework/skills/deploy-verify/scripts/canary-check.sh +206 -0
  175. package/framework/skills/deploy-verify/scripts/check-console-errors.js +147 -0
  176. package/framework/skills/deploy-verify/scripts/check-cwv.js +139 -0
  177. package/framework/skills/deploy-verify/scripts/project-detect.sh +84 -0
  178. package/framework/skills/deploy-verify/scripts/verify.sh +548 -0
  179. package/framework/skills/design-quieter/SKILL.md +130 -0
  180. package/framework/skills/distill/SKILL.md +149 -0
  181. package/framework/skills/docs-lookup/SKILL.md +78 -0
  182. package/framework/skills/fcm-notifications/SKILL.md +125 -0
  183. package/framework/skills/financial-ledger/SKILL.md +1039 -0
  184. package/framework/skills/frontend-master/NOTICE.md +4 -0
  185. package/framework/skills/frontend-master/SKILL.md +127 -0
  186. package/framework/skills/frontend-master/reference/color-and-contrast.md +132 -0
  187. package/framework/skills/frontend-master/reference/interaction-design.md +123 -0
  188. package/framework/skills/frontend-master/reference/motion-design.md +99 -0
  189. package/framework/skills/frontend-master/reference/responsive-design.md +114 -0
  190. package/framework/skills/frontend-master/reference/spatial-design.md +100 -0
  191. package/framework/skills/frontend-master/reference/typography.md +131 -0
  192. package/framework/skills/frontend-master/reference/ux-writing.md +107 -0
  193. package/framework/skills/harden/SKILL.md +357 -0
  194. package/framework/skills/i18n-rtl/SKILL.md +752 -0
  195. package/framework/skills/learn/SKILL.md +71 -0
  196. package/framework/skills/memory/SKILL.md +50 -0
  197. package/framework/skills/mobile-expo/SKILL.md +864 -0
  198. package/framework/skills/mobile-expo/references/store-checklist.md +550 -0
  199. package/framework/skills/nestjs-backend/README.md +73 -0
  200. package/framework/skills/nestjs-backend/SKILL.md +446 -0
  201. package/framework/skills/nestjs-backend/references/templates.md +1173 -0
  202. package/framework/skills/normalize/SKILL.md +79 -0
  203. package/framework/skills/onboard/SKILL.md +242 -0
  204. package/framework/skills/polish/SKILL.md +209 -0
  205. package/framework/skills/pr/SKILL.md +66 -0
  206. package/framework/skills/qualia/SKILL.md +153 -0
  207. package/framework/skills/qualia-add-todo/SKILL.md +68 -0
  208. package/framework/skills/qualia-audit-milestone/SKILL.md +92 -0
  209. package/framework/skills/qualia-check-todos/SKILL.md +55 -0
  210. package/framework/skills/qualia-complete-milestone/SKILL.md +108 -0
  211. package/framework/skills/qualia-debug/SKILL.md +149 -0
  212. package/framework/skills/qualia-design/SKILL.md +203 -0
  213. package/framework/skills/qualia-discuss-phase/SKILL.md +72 -0
  214. package/framework/skills/qualia-execute-phase/SKILL.md +86 -0
  215. package/framework/skills/qualia-help/SKILL.md +67 -0
  216. package/framework/skills/qualia-idk/SKILL.md +352 -0
  217. package/framework/skills/qualia-list-phase-assumptions/SKILL.md +67 -0
  218. package/framework/skills/qualia-new-milestone/SKILL.md +72 -0
  219. package/framework/skills/qualia-new-project/SKILL.md +92 -0
  220. package/framework/skills/qualia-optimize/SKILL.md +417 -0
  221. package/framework/skills/qualia-pause-work/SKILL.md +96 -0
  222. package/framework/skills/qualia-plan-milestone-gaps/SKILL.md +57 -0
  223. package/framework/skills/qualia-plan-phase/SKILL.md +101 -0
  224. package/framework/skills/qualia-progress/SKILL.md +53 -0
  225. package/framework/skills/qualia-quick/SKILL.md +89 -0
  226. package/framework/skills/qualia-research-phase/SKILL.md +88 -0
  227. package/framework/skills/qualia-resume-work/SKILL.md +62 -0
  228. package/framework/skills/qualia-review/SKILL.md +263 -0
  229. package/framework/skills/qualia-start/SKILL.md +182 -0
  230. package/framework/skills/qualia-verify-work/SKILL.md +105 -0
  231. package/framework/skills/qualia-workflow/SKILL.md +130 -0
  232. package/framework/skills/rag/SKILL.md +750 -0
  233. package/framework/skills/responsive/SKILL.md +231 -0
  234. package/framework/skills/retro/SKILL.md +284 -0
  235. package/framework/skills/sakani-conventions/SKILL.md +136 -0
  236. package/framework/skills/sakani-conventions/evals/evals.json +23 -0
  237. package/framework/skills/sakani-conventions/references/entities.md +365 -0
  238. package/framework/skills/sakani-conventions/references/error-codes.md +95 -0
  239. package/framework/skills/seo-master/SKILL.md +490 -0
  240. package/framework/skills/seo-master/references/checklist.md +199 -0
  241. package/framework/skills/seo-master/references/structured-data.md +609 -0
  242. package/framework/skills/ship/SKILL.md +202 -0
  243. package/framework/skills/stack-researcher/SKILL.md +215 -0
  244. package/framework/skills/status/SKILL.md +154 -0
  245. package/framework/skills/status/scripts/health-check.sh +562 -0
  246. package/framework/skills/subscription-payments/SKILL.md +250 -0
  247. package/framework/skills/supabase/SKILL.md +973 -0
  248. package/framework/skills/supabase/references/templates.md +159 -0
  249. package/framework/skills/team/SKILL.md +67 -0
  250. package/framework/skills/test-runner/SKILL.md +202 -0
  251. package/framework/skills/voice-agent/SKILL.md +407 -0
  252. package/framework/skills/zoho-workflow/SKILL.md +51 -0
  253. package/framework/statusline-command.sh +117 -0
  254. package/package.json +24 -0
  255. package/profiles/fawzi.json +16 -0
  256. package/profiles/hasan.json +16 -0
  257. package/profiles/moayad.json +16 -0
  258. package/templates/CLAUDE-owner.md +52 -0
  259. package/templates/CLAUDE.md.hbs +58 -0
  260. package/templates/env.claude.template +12 -0
  261. package/templates/settings.json +141 -0
@@ -0,0 +1,149 @@
1
+ ---
2
+ name: distill
3
+ description: Strip designs to their essence by removing unnecessary complexity. Great design is simple, powerful, and clean.
4
+ user-invokable: true
5
+ args:
6
+ - name: target
7
+ description: The feature or component to distill (optional)
8
+ required: false
9
+ ---
10
+
11
+ Remove unnecessary complexity from designs, revealing the essential elements and creating clarity through ruthless simplification.
12
+
13
+ ## MANDATORY PREPARATION
14
+
15
+ ### Read DESIGN.md (Authoritative Source)
16
+
17
+ Before any context gathering, check for the project's design decisions file:
18
+
19
+ ```bash
20
+ cat .planning/DESIGN.md 2>/dev/null
21
+ ```
22
+
23
+ **If DESIGN.md exists:** This is the authoritative source for all design decisions in this project. Use its palette, typography, spacing, component, and motion decisions as your foundation. Do NOT override these decisions unless the user explicitly asks. Reference specific DESIGN.md decisions in your output (e.g., "Per DESIGN.md, the primary color is...").
24
+
25
+ **If DESIGN.md does not exist:** Proceed with normal context gathering below. Consider suggesting the user run `/qualia:discuss-phase` to establish design decisions.
26
+
27
+ ### Context Gathering (Do This First)
28
+
29
+ You cannot do a great job without having necessary context, such as target audience (critical), desired use-cases (critical), and understanding what's truly essential vs nice-to-have for this product.
30
+
31
+ Attempt to gather these from the current thread or codebase.
32
+
33
+ 1. If you don't find *exact* information and have to infer from existing design and functionality, you MUST STOP and STOP and call the AskUserQuestionTool to clarify. whether you got it right.
34
+ 2. Otherwise, if you can't fully infer or your level of confidence is medium or lower, you MUST STOP and call the AskUserQuestionTool to clarify. clarifying questions first to complete your context.
35
+
36
+ Do NOT proceed until you have answers. Simplifying the wrong things destroys usability.
37
+
38
+ ### Use frontend-master skill
39
+
40
+ Use the frontend-master skill for design principles and anti-patterns. Do NOT proceed until it has executed and you know all DO's and DON'Ts.
41
+
42
+ ---
43
+
44
+ ## Assess Current State
45
+
46
+ Analyze what makes the design feel complex or cluttered:
47
+
48
+ 1. **Identify complexity sources**:
49
+ - **Too many elements**: Competing buttons, redundant information, visual clutter
50
+ - **Excessive variation**: Too many colors, fonts, sizes, styles without purpose
51
+ - **Information overload**: Everything visible at once, no progressive disclosure
52
+ - **Visual noise**: Unnecessary borders, shadows, backgrounds, decorations
53
+ - **Confusing hierarchy**: Unclear what matters most
54
+ - **Feature creep**: Too many options, actions, or paths forward
55
+
56
+ 2. **Find the essence**:
57
+ - What's the primary user goal? (There should be ONE)
58
+ - What's actually necessary vs nice-to-have?
59
+ - What can be removed, hidden, or combined?
60
+ - What's the 20% that delivers 80% of value?
61
+
62
+ If any of these are unclear from the codebase, STOP and call the AskUserQuestionTool to clarify.
63
+
64
+ **CRITICAL**: Simplicity is not about removing features - it's about removing obstacles between users and their goals. Every element should justify its existence.
65
+
66
+ ## Plan Simplification
67
+
68
+ Create a ruthless editing strategy:
69
+
70
+ - **Core purpose**: What's the ONE thing this should accomplish?
71
+ - **Essential elements**: What's truly necessary to achieve that purpose?
72
+ - **Progressive disclosure**: What can be hidden until needed?
73
+ - **Consolidation opportunities**: What can be combined or integrated?
74
+
75
+ **IMPORTANT**: Simplification is hard. It requires saying no to good ideas to make room for great execution. Be ruthless.
76
+
77
+ ## Simplify the Design
78
+
79
+ Systematically remove complexity across these dimensions:
80
+
81
+ ### Information Architecture
82
+ - **Reduce scope**: Remove secondary actions, optional features, redundant information
83
+ - **Progressive disclosure**: Hide complexity behind clear entry points (accordions, modals, step-through flows)
84
+ - **Combine related actions**: Merge similar buttons, consolidate forms, group related content
85
+ - **Clear hierarchy**: ONE primary action, few secondary actions, everything else tertiary or hidden
86
+ - **Remove redundancy**: If it's said elsewhere, don't repeat it here
87
+
88
+ ### Visual Simplification
89
+ - **Reduce color palette**: Use 1-2 colors plus neutrals, not 5-7 colors
90
+ - **Limit typography**: One font family, 3-4 sizes maximum, 2-3 weights
91
+ - **Remove decorations**: Eliminate borders, shadows, backgrounds that don't serve hierarchy or function
92
+ - **Flatten structure**: Reduce nesting, remove unnecessary containers—never nest cards inside cards
93
+ - **Remove unnecessary cards**: Cards aren't needed for basic layout; use spacing and alignment instead
94
+ - **Consistent spacing**: Use one spacing scale, remove arbitrary gaps
95
+
96
+ ### Layout Simplification
97
+ - **Linear flow**: Replace complex grids with simple vertical flow where possible
98
+ - **Remove sidebars**: Move secondary content inline or hide it
99
+ - **Full-width**: Use available space generously instead of complex multi-column layouts
100
+ - **Consistent alignment**: Pick left or center, stick with it
101
+ - **Generous white space**: Let content breathe, don't pack everything tight
102
+
103
+ ### Interaction Simplification
104
+ - **Reduce choices**: Fewer buttons, fewer options, clearer path forward (paradox of choice is real)
105
+ - **Smart defaults**: Make common choices automatic, only ask when necessary
106
+ - **Inline actions**: Replace modal flows with inline editing where possible
107
+ - **Remove steps**: Can signup be one step instead of three? Can checkout be simplified?
108
+ - **Clear CTAs**: ONE obvious next step, not five competing actions
109
+
110
+ ### Content Simplification
111
+ - **Shorter copy**: Cut every sentence in half, then do it again
112
+ - **Active voice**: "Save changes" not "Changes will be saved"
113
+ - **Remove jargon**: Plain language always wins
114
+ - **Scannable structure**: Short paragraphs, bullet points, clear headings
115
+ - **Essential information only**: Remove marketing fluff, legalese, hedging
116
+ - **Remove redundant copy**: No headers restating intros, no repeated explanations, say it once
117
+
118
+ ### Code Simplification
119
+ - **Remove unused code**: Dead CSS, unused components, orphaned files
120
+ - **Flatten component trees**: Reduce nesting depth
121
+ - **Consolidate styles**: Merge similar styles, use utilities consistently
122
+ - **Reduce variants**: Does that component need 12 variations, or can 3 cover 90% of cases?
123
+
124
+ **NEVER**:
125
+ - Remove necessary functionality (simplicity ≠ feature-less)
126
+ - Sacrifice accessibility for simplicity (clear labels and ARIA still required)
127
+ - Make things so simple they're unclear (mystery ≠ minimalism)
128
+ - Remove information users need to make decisions
129
+ - Eliminate hierarchy completely (some things should stand out)
130
+ - Oversimplify complex domains (match complexity to actual task complexity)
131
+
132
+ ## Verify Simplification
133
+
134
+ Ensure simplification improves usability:
135
+
136
+ - **Faster task completion**: Can users accomplish goals more quickly?
137
+ - **Reduced cognitive load**: Is it easier to understand what to do?
138
+ - **Still complete**: Are all necessary features still accessible?
139
+ - **Clearer hierarchy**: Is it obvious what matters most?
140
+ - **Better performance**: Does simpler design load faster?
141
+
142
+ ## Document Removed Complexity
143
+
144
+ If you removed features or options:
145
+ - Document why they were removed
146
+ - Consider if they need alternative access points
147
+ - Note any user feedback to monitor
148
+
149
+ Remember: You have great taste and judgment. Simplification is an act of confidence - knowing what to keep and courage to remove the rest. As Antoine de Saint-Exupéry said: "Perfection is achieved not when there is nothing more to add, but when there is nothing left to take away."
@@ -0,0 +1,78 @@
1
+ ---
2
+ name: docs-lookup
3
+ description: Fetch up-to-date library and framework documentation on demand. Supplements Context7 MCP with zero context overhead. Activates automatically when working with external libraries.
4
+ tags: [documentation, libraries, frameworks, reference]
5
+ ---
6
+
7
+ # Docs Lookup (Supplements Context7 MCP)
8
+
9
+ When you need library/framework documentation, fetch it on demand instead of loading MCP tools every session.
10
+
11
+ ## How to Fetch Docs
12
+
13
+ Use these methods in order of preference:
14
+
15
+ ### 1. LLMs.txt (Best for major frameworks)
16
+
17
+ Many frameworks publish LLM-optimized docs. Fetch directly:
18
+
19
+ ```
20
+ WebFetch: https://supabase.com/llms/cli.txt — Supabase CLI
21
+ WebFetch: https://nextjs.org/llms.txt — Next.js
22
+ WebFetch: https://ui.shadcn.com/llms.txt — shadcn/ui
23
+ WebFetch: https://tailwindcss.com/llms.txt — Tailwind CSS
24
+ WebFetch: https://vercel.com/llms.txt — Vercel
25
+ WebFetch: https://docs.stripe.com/llms.txt — Stripe
26
+ ```
27
+
28
+ ### 2. WebSearch (Best for specific questions)
29
+
30
+ ```
31
+ WebSearch: "Next.js 16 server actions authentication 2026"
32
+ WebSearch: "supabase realtime subscription React hook"
33
+ WebSearch: "VAPI assistant webhook configuration"
34
+ ```
35
+
36
+ ### 3. Official Docs via WebFetch
37
+
38
+ ```
39
+ WebFetch: https://react.dev/reference/react/use
40
+ WebFetch: https://supabase.com/docs/guides/auth
41
+ WebFetch: https://docs.vapi.ai/assistants
42
+ ```
43
+
44
+ ### 4. Package README (npm)
45
+
46
+ ```
47
+ WebFetch: https://www.npmjs.com/package/[package-name]
48
+ ```
49
+
50
+ ## When to Activate
51
+
52
+ This skill triggers when you:
53
+ - Write code using external libraries or frameworks
54
+ - Need to check API signatures or method parameters
55
+ - See unfamiliar library patterns in existing code
56
+ - Need version-specific behavior (breaking changes, new APIs)
57
+ - Are about to suggest an API call and aren't 100% sure of the signature
58
+
59
+ ## IMPORTANT
60
+
61
+ - DO NOT hallucinate API signatures. If unsure, look it up first.
62
+ - Prefer llms.txt endpoints — they're concise and LLM-optimized
63
+ - Use WebSearch for the latest (training data may be stale)
64
+ - Fetch BEFORE writing code, not after getting errors
65
+
66
+ ## Fawzi's Stack Quick Reference
67
+
68
+ | Tech | Docs |
69
+ |------|------|
70
+ | Next.js | `nextjs.org/llms.txt` |
71
+ | React | `react.dev/reference` |
72
+ | Supabase | `supabase.com/llms/cli.txt` |
73
+ | Tailwind | `tailwindcss.com/llms.txt` |
74
+ | shadcn/ui | `ui.shadcn.com/llms.txt` |
75
+ | Vercel | `vercel.com/llms.txt` |
76
+ | VAPI | `docs.vapi.ai` |
77
+ | ElevenLabs | `elevenlabs.io/docs` |
78
+ | Telnyx | `developers.telnyx.com` |
@@ -0,0 +1,125 @@
1
+ ---
2
+ name: fcm-notifications
3
+ description: "Firebase Cloud Messaging (FCM) push notifications — device token management, topic subscriptions, notification payloads, background handlers, in-app notification system, and notification preferences. Use whenever implementing push notifications, device registration, notification sending from backend, in-app notification feeds, or notification preferences. Triggers on: push notification, FCM, Firebase Cloud Messaging, notification, device token, notification feed, alert, in-app notification, notification preferences."
4
+ tags: [notifications, fcm, firebase, push]
5
+ ---
6
+
7
+ ## Architecture
8
+
9
+ ```
10
+ Mobile App Backend (NestJS) Firebase
11
+ ───────── ──────────────── ────────
12
+ 1. Request permission
13
+ 2. Get device token ──→ 3. Store token in DB
14
+ 4. On event (dues, ticket)
15
+ 5. Build notification ──→ 6. FCM sends push
16
+ 7. Receive push
17
+ 8. Show/handle
18
+ ```
19
+
20
+ ## Device Token Management (Backend)
21
+
22
+ - Store device tokens per user (user can have multiple devices)
23
+ - Table: `device_token` (user_id, token, platform, created_at, last_used_at)
24
+ - Update token on every app launch (tokens can change)
25
+ - Clean up stale tokens (FCM returns errors for invalid tokens)
26
+ - Delete tokens on logout
27
+
28
+ ## Sending Notifications (Backend - NestJS)
29
+
30
+ ```typescript
31
+ @Injectable()
32
+ export class NotificationService {
33
+ async send(userId: string, notification: NotificationPayload) {
34
+ const tokens = await this.getActiveTokens(userId);
35
+ if (tokens.length === 0) return;
36
+
37
+ // Store in-app notification regardless of push
38
+ await this.createInAppNotification(userId, notification);
39
+
40
+ // Send push via FCM
41
+ const message = {
42
+ tokens: tokens.map(t => t.token),
43
+ notification: {
44
+ title: this.i18n.resolve(notification.titleKey, userId),
45
+ body: this.i18n.resolve(notification.bodyKey, userId),
46
+ },
47
+ data: notification.data, // Custom payload for app handling
48
+ };
49
+
50
+ const response = await this.fcm.sendEachForMulticast(message);
51
+ await this.handleFailedTokens(response, tokens);
52
+ }
53
+ }
54
+ ```
55
+
56
+ ## Notification Payload Structure
57
+
58
+ ```typescript
59
+ interface NotificationPayload {
60
+ titleKey: string; // i18n message key
61
+ bodyKey: string; // i18n message key
62
+ type: NotificationType; // For routing in-app
63
+ data: {
64
+ entityType: string; // 'ticket', 'dues', 'guard_task', etc.
65
+ entityId: string;
66
+ buildingId?: string;
67
+ unitId?: string;
68
+ };
69
+ }
70
+ ```
71
+
72
+ - Use message_keys for title/body (resolved to user's locale before sending)
73
+ - Include routing data so app can navigate to relevant screen on tap
74
+
75
+ ## Topic Subscriptions
76
+
77
+ - Subscribe users to building-level topics: `building_{buildingId}`
78
+ - Use for building-wide announcements
79
+ - Subscribe on building join, unsubscribe on leave
80
+ - Alternative to fetching all member tokens for broadcast
81
+
82
+ ## In-App Notification System
83
+
84
+ - `notification` table: user_id, type, title_key, body_key, data, read_at, created_at
85
+ - Separate from push — push is delivery mechanism, in-app is persistence
86
+ - Unread count badge
87
+ - Mark as read (individual or bulk)
88
+ - Notification feed screen with infinite scroll
89
+
90
+ ## Notification Types (by domain)
91
+
92
+ - DUES_GENERATED — new dues cycle obligation
93
+ - DUES_LATE — obligation transitioned to late
94
+ - CREDIT_TOPUP_APPROVED/REJECTED — BM reviewed top-up
95
+ - TICKET_CREATED/UPDATED/ASSIGNED — ticket state changes
96
+ - GUARD_TASK_REMINDER — T-15m before scheduled task
97
+ - GUARD_TASK_ASSIGNED — new task assigned
98
+ - GUARD_INVITE — invitation to be building guard
99
+ - SUBSCRIPTION_EXPIRING — trial/subscription about to expire
100
+ - DOCUMENT_APPROVED/REJECTED — document review outcome
101
+ - CLAIM_APPROVED/REJECTED — unit claim review outcome
102
+
103
+ ## Mobile Integration (React Native Expo)
104
+
105
+ - `expo-notifications` for handling both push and local
106
+ - Request permission on first relevant action (not on app launch)
107
+ - Register device token with backend after permission granted
108
+ - Handle notification tap: navigate to relevant screen using data payload
109
+ - Background notification handler for silent updates
110
+ - Notification categories for actionable notifications (approve/reject)
111
+
112
+ ## Preferences
113
+
114
+ - User can toggle notification types on/off
115
+ - Store in user_notification_preferences table
116
+ - Backend checks preferences before sending
117
+ - Some notifications are mandatory (security alerts, subscription changes)
118
+
119
+ ## Testing
120
+
121
+ - Use FCM test mode for development
122
+ - Mock NotificationService in unit tests
123
+ - Test token cleanup on invalid responses
124
+ - Test preference filtering
125
+ - Test i18n resolution for different locales