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,550 @@
1
+ # App Store & Play Store Submission Checklist
2
+
3
+ Comprehensive checklist for submitting React Native Expo apps to Apple App Store (iOS) and Google Play Store (Android).
4
+
5
+ ## Pre-Submission (General)
6
+
7
+ ### Project Configuration
8
+ - [ ] App name is finalized (check both stores for availability)
9
+ - [ ] Bundle ID (iOS) and Package name (Android) are unique and follow reverse-domain format
10
+ - iOS: `com.company.appname`
11
+ - Android: `com.company.appname`
12
+ - [ ] Version number follows semantic versioning (e.g., 1.0.0)
13
+ - [ ] Build number incremented for each submission (e.g., build 1, 2, 3)
14
+ - [ ] TypeScript strict mode enabled
15
+ - [ ] All console warnings and errors resolved
16
+ - [ ] No hardcoded API endpoints or secrets in code
17
+ - [ ] Production API endpoints configured via environment variables
18
+ - [ ] Analytics and error tracking (Sentry, etc.) configured for production
19
+
20
+ ### EAS Build Configuration
21
+
22
+ Create `eas.json`:
23
+
24
+ ```json
25
+ {
26
+ "build": {
27
+ "preview": {
28
+ "android": {
29
+ "buildType": "apk"
30
+ },
31
+ "ios": {
32
+ "simulator": true
33
+ }
34
+ },
35
+ "preview2": {
36
+ "android": {
37
+ "gradleCommand": ":app:assembleRelease"
38
+ },
39
+ "ios": {
40
+ "buildType": "simulator"
41
+ }
42
+ },
43
+ "production": {
44
+ "android": {
45
+ "buildType": "app-bundle"
46
+ },
47
+ "ios": {
48
+ "buildType": "archive"
49
+ }
50
+ }
51
+ },
52
+ "submit": {
53
+ "production": {
54
+ "ios": true,
55
+ "android": true
56
+ }
57
+ }
58
+ }
59
+ ```
60
+
61
+ Update `app.json`:
62
+
63
+ ```json
64
+ {
65
+ "expo": {
66
+ "name": "App Name",
67
+ "slug": "app-name",
68
+ "version": "1.0.0",
69
+ "orientation": "portrait",
70
+ "icon": "./assets/icon.png",
71
+ "userInterfaceStyle": "light",
72
+ "splash": {
73
+ "image": "./assets/splash.png",
74
+ "resizeMode": "contain",
75
+ "backgroundColor": "#ffffff"
76
+ },
77
+ "ios": {
78
+ "supportsTabletMode": true,
79
+ "bundleIdentifier": "com.company.appname",
80
+ "buildNumber": "1"
81
+ },
82
+ "android": {
83
+ "adaptiveIcon": {
84
+ "foregroundImage": "./assets/adaptive-icon.png",
85
+ "backgroundColor": "#ffffff"
86
+ },
87
+ "package": "com.company.appname",
88
+ "versionCode": 1
89
+ },
90
+ "plugins": [
91
+ "expo-router"
92
+ ]
93
+ }
94
+ }
95
+ ```
96
+
97
+ ---
98
+
99
+ ## iOS App Store
100
+
101
+ ### Apple Developer Account
102
+ - [ ] Apple Developer Program account created and paid ($99/year)
103
+ - [ ] Bundle ID registered in Apple Developer portal
104
+ - [ ] App ID created with correct bundle ID
105
+ - [ ] Signing certificate created (development and production)
106
+ - [ ] Provisioning profiles generated (development and distribution)
107
+ - [ ] EAS Build has access to Apple credentials (run `eas build --platform ios`)
108
+
109
+ ### Required Assets
110
+
111
+ #### App Icon
112
+ - [ ] Icon size: 1024x1024 px (PNG)
113
+ - [ ] No transparency (solid background)
114
+ - [ ] Placed at `assets/icon.png`
115
+ - [ ] High quality, clear design visible at small sizes
116
+ - [ ] Follows Apple's app icon guidelines (no text, simple shapes)
117
+
118
+ #### Splash Screen
119
+ - [ ] Size: 1242x2688 px (portrait, standard iPhone)
120
+ - [ ] Placed at `assets/splash.png`
121
+ - [ ] Contains minimal branding, no app store information
122
+ - [ ] Loading screen strategy: show splash → load → show main content
123
+
124
+ #### Screenshots
125
+ - [ ] At least one screenshot for each device size:
126
+ - iPhone 5.5-inch (e.g., iPhone XS Max)
127
+ - iPad 12.9-inch (if supporting iPad)
128
+ - [ ] Minimum 3 screenshots per locale
129
+ - [ ] Recommended 5 screenshots showing key features
130
+ - [ ] Screenshots must be actual in-app content, not marketing materials
131
+ - [ ] Include text overlay explaining key features (optional but recommended)
132
+ - [ ] Screenshot dimensions:
133
+ - 1242x2208 px (5.5-inch iPhone)
134
+ - 2048x2732 px (12.9-inch iPad)
135
+
136
+ #### Preview Video
137
+ - [ ] Optional but increases visibility
138
+ - [ ] 15-30 seconds long
139
+ - [ ] Demonstrates core features
140
+ - [ ] Video format: QuickTime, MP4
141
+ - [ ] Max 500 MB
142
+
143
+ ### App Information
144
+
145
+ #### Metadata
146
+ - [ ] App Name: Clear, concise (30 characters max)
147
+ - [ ] Subtitle: Short description (30 characters max)
148
+ - [ ] Description: Compelling feature list (4,000 characters max)
149
+ - [ ] Keywords: Comma-separated, relevant search terms (100 characters max)
150
+ - [ ] Support URL: Working URL to support page
151
+ - [ ] Privacy Policy URL: Required, must be accessible
152
+ - [ ] Category: Select most relevant category
153
+ - [ ] Age Rating: Fill out App Store questionnaire honestly
154
+
155
+ #### Privacy & Permissions
156
+ - [ ] Privacy Policy clearly explains:
157
+ - What data is collected
158
+ - How data is used
159
+ - Who data is shared with
160
+ - User rights (access, deletion)
161
+ - [ ] Request permissions with justification:
162
+ ```
163
+ **Camera**: "To take photos of properties"
164
+ **Location**: "To show nearby units and properties"
165
+ **Contacts**: "To invite friends"
166
+ **Photos**: "To upload property images"
167
+ **Notifications**: "To notify you of new listings"
168
+ ```
169
+ - [ ] Add permission usage descriptions in `Info.plist`:
170
+ ```xml
171
+ <key>NSCameraUsageDescription</key>
172
+ <string>To take photos of properties</string>
173
+ <key>NSLocationWhenInUseUsageDescription</key>
174
+ <string>To show nearby units and properties</string>
175
+ ```
176
+
177
+ #### Ratings & Age
178
+ - [ ] Accurate age rating (Parental Guidance, 12+, 17+, etc.)
179
+ - [ ] Fill out entire IARC questionnaire
180
+ - [ ] No misleading content ratings
181
+
182
+ ### Technical Requirements
183
+
184
+ #### Performance
185
+ - [ ] App launches in < 20 seconds on iPhone 6s
186
+ - [ ] Memory usage reasonable (no crashes due to leaks)
187
+ - [ ] Battery usage optimized (no excessive CPU/network)
188
+ - [ ] Handles network failures gracefully
189
+ - [ ] Offline mode considered or message shown
190
+
191
+ #### Functionality
192
+ - [ ] All features work as described
193
+ - [ ] No broken links
194
+ - [ ] Forms submit successfully
195
+ - [ ] Authentication flow complete
196
+ - [ ] No placeholder text in production
197
+ - [ ] Loading states visible
198
+ - [ ] Error messages helpful and user-facing
199
+
200
+ #### Design & UX
201
+ - [ ] Uses native iOS UI components where appropriate
202
+ - [ ] Respects Safe Area for notch/dynamic island
203
+ - [ ] Keyboard doesn't cover input fields
204
+ - [ ] Touch targets minimum 44x44 pt
205
+ - [ ] Text is readable (min 11pt for body text)
206
+ - [ ] Supports Dark Mode or declares light-only
207
+ - [ ] No misleading UX (e.g., fake close buttons)
208
+
209
+ #### Navigation
210
+ - [ ] Back button/gesture works as expected
211
+ - [ ] Navigation hierarchy is logical
212
+ - [ ] Tab bar visible and functional
213
+ - [ ] Deep links work (if supported)
214
+
215
+ ### Common Rejection Reasons
216
+
217
+ | Issue | Fix |
218
+ |-------|-----|
219
+ | App crashes on startup | Debug with TestFlight beta, check iOS compatibility |
220
+ | Incomplete metadata | Fill all required fields, ensure correct language |
221
+ | Privacy policy missing | Add URL, ensure policy covers all collected data |
222
+ | Excessive ads/pop-ups | Reduce ad frequency, only show relevant ads |
223
+ | External payment links | Use In-App Purchase for all payments, not external links |
224
+ | No app functionality | Ensure core features work without account required |
225
+ | Outdated API usage | Update to latest iOS SDK (Expo 52+) |
226
+ | Not optimized for iPhone | Test on actual iPhone, not just simulators |
227
+ | Downloaded content uncached | Cache downloaded data, don't re-download unnecessarily |
228
+
229
+ ### Submission Process
230
+
231
+ ```bash
232
+ # Build for App Store
233
+ eas build --platform ios --auto-submit false
234
+
235
+ # Or auto-submit to TestFlight/App Store
236
+ eas build --platform ios --auto-submit
237
+ eas submit --platform ios
238
+
239
+ # Manual submission via Xcode or App Store Connect
240
+ ```
241
+
242
+ ---
243
+
244
+ ## Android Play Store
245
+
246
+ ### Google Play Account
247
+ - [ ] Google Play Developer account created and paid ($25 one-time)
248
+ - [ ] Google Play Console access granted
249
+ - [ ] Package name registered and unique
250
+ - [ ] Keystore created and backed up securely
251
+ ```bash
252
+ keytool -genkey -v -keystore keystore.jks -keyalg RSA -keysize 2048 -validity 10000 -alias upload
253
+ ```
254
+ - [ ] EAS Build has access to keystore (run `eas build --platform android`)
255
+
256
+ ### Required Assets
257
+
258
+ #### App Icon
259
+ - [ ] Icon size: 512x512 px (PNG)
260
+ - [ ] No transparency (solid background)
261
+ - [ ] Placed at `assets/icon.png`
262
+ - [ ] Clear at small sizes
263
+ - [ ] Follows Android Material Design guidelines
264
+
265
+ #### Adaptive Icon (Android 8+)
266
+ - [ ] Foreground: 108x108 px with 72x72 px safe zone (no transparency)
267
+ - [ ] Background: Solid color or simple shape
268
+ - [ ] Placed at `assets/adaptive-icon.png`
269
+
270
+ #### Splash Screen
271
+ - [ ] Size: 1080x1920 px (portrait)
272
+ - [ ] For Android 12+, use Material 3 splash screen API
273
+ - [ ] Minimal branding, fast loading
274
+
275
+ #### Screenshots
276
+ - [ ] At least 2 screenshots required
277
+ - [ ] Recommended 5 screenshots showing features
278
+ - [ ] Device configurations:
279
+ - 1080x1920 px (phone)
280
+ - 1200x1920 px (phone 7-inch)
281
+ - 1600x2560 px (tablet 10-inch)
282
+ - [ ] Screenshots must show actual app content
283
+ - [ ] Text overlays explaining features recommended
284
+
285
+ ### App Information
286
+
287
+ #### Metadata
288
+ - [ ] App Name: Clear, concise (50 characters max)
289
+ - [ ] Short Description: Engaging summary (80 characters)
290
+ - [ ] Full Description: Features, benefits (4,000 characters)
291
+ - [ ] Promoted Genre: Select most relevant
292
+ - [ ] Category: e.g., "Lifestyle", "Shopping", "Finance"
293
+ - [ ] Contact Email: Support email address
294
+ - [ ] Website: Company/app website URL
295
+ - [ ] Privacy Policy URL: Required and accessible
296
+ - [ ] Preferred Language: Select primary language
297
+
298
+ #### Privacy & Permissions
299
+ - [ ] Privacy Policy accessible, explains:
300
+ - Data collection practices
301
+ - Data storage and security
302
+ - Data sharing with third parties
303
+ - User rights and choices
304
+ - [ ] Declare all permissions in manifest:
305
+ ```xml
306
+ <uses-permission android:name="android.permission.CAMERA" />
307
+ <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
308
+ <uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
309
+ ```
310
+ - [ ] Request runtime permissions with rationale:
311
+ ```tsx
312
+ const { status } = await requestPermission('camera');
313
+ if (status !== 'granted') {
314
+ Alert.alert('Permission required for camera access');
315
+ }
316
+ ```
317
+ - [ ] Target API Level 34 (Android 14) minimum
318
+ - [ ] Accurate Data Safety declaration (Google Play requirement as of 2024)
319
+
320
+ #### Content Rating
321
+ - [ ] Complete Google Play content rating questionnaire
322
+ - [ ] Honest answers about app content
323
+ - [ ] Rating determines visibility to age groups
324
+
325
+ ### Technical Requirements
326
+
327
+ #### Performance
328
+ - [ ] App launches in < 5 seconds on Pixel 4a (slower device)
329
+ - [ ] Works on Android 8.0+ (minSdkVersion: 26)
330
+ - [ ] Optimized for various screen sizes (4.5" to 6.7")
331
+ - [ ] Tablet layout support (if claiming tablet compatibility)
332
+ - [ ] No native crashes
333
+ - [ ] Memory usage < 250 MB
334
+
335
+ #### Functionality
336
+ - [ ] All features work as advertised
337
+ - [ ] No broken functionality
338
+ - [ ] Forms submit and validate properly
339
+ - [ ] Network failures handled gracefully
340
+ - [ ] Loading states visible
341
+ - [ ] No placeholder/debug content
342
+ - [ ] Back button navigates correctly
343
+
344
+ #### Design & UX
345
+ - [ ] Uses Material 3 design principles
346
+ - [ ] Respects safe areas (notches, gesture buttons)
347
+ - [ ] Keyboard handling (doesn't hide inputs)
348
+ - [ ] Touch targets 48x48 dp (48 density-independent pixels)
349
+ - [ ] Text readable (minimum 14sp)
350
+ - [ ] Dark mode support or explicit light-only declaration
351
+ - [ ] Proper use of system colors and spacing
352
+
353
+ #### Targeting & Compatibility
354
+ - [ ] Works on various screen sizes (phones and tablets)
355
+ - [ ] Landscape and portrait orientations supported
356
+ - [ ] No orientation lock unless justified
357
+ - [ ] Works with and without Google Play Services
358
+
359
+ ### Data Safety Form
360
+
361
+ Required as of March 2024. Declare:
362
+
363
+ - [ ] Data types collected (location, contacts, identifiers, etc.)
364
+ - [ ] Data usage (analytics, personalization, etc.)
365
+ - [ ] Data sharing with third parties
366
+ - [ ] Data encryption in transit and at rest
367
+ - [ ] Data retention policies
368
+ - [ ] User deletion rights
369
+ - [ ] Third-party SDK data practices
370
+
371
+ Common data types for typical app:
372
+ ```
373
+ • Email: Authentication, customer support
374
+ • User ID: App functionality
375
+ • Location: Map features, nearby search
376
+ • Photos/videos: Profile, content creation
377
+ • Device identifiers: Analytics, crash reporting
378
+ ```
379
+
380
+ ### Common Rejection Reasons
381
+
382
+ | Issue | Fix |
383
+ |-------|-----|
384
+ | Unsafe content | Review and remove inappropriate material |
385
+ | Broken functionality | Test all features work on actual devices |
386
+ | Incomplete metadata | Fill all required fields accurately |
387
+ | Missing privacy policy | Add privacy policy link, ensure content matches declaration |
388
+ | Incorrect targeting | Declare minimum SDK correctly, test on older devices |
389
+ | Excessive permissions | Only request permissions needed for features |
390
+ | Deceptive behavior | No misleading ads, hidden functionality, or dark patterns |
391
+ | Impersonation | Don't use brand names you don't own |
392
+ | Payment issues | Use Google Play Billing, not external payment |
393
+ | Outdated Google Play Services | Update to latest; test authentication, maps, etc. |
394
+ | Missing crash handling | Implement global error boundaries, crash reporting |
395
+
396
+ ### Submission Process
397
+
398
+ ```bash
399
+ # Build for Play Store
400
+ eas build --platform android
401
+
402
+ # Auto-submit to Play Console
403
+ eas submit --platform android
404
+
405
+ # Manual submission via Google Play Console
406
+ # Upload APK/AAB, fill metadata, submit for review
407
+ ```
408
+
409
+ ---
410
+
411
+ ## Pre-Submission Testing
412
+
413
+ ### Device Testing
414
+ - [ ] iPhone (latest): iOS latest version
415
+ - [ ] iPhone (older): iOS 14+ minimum
416
+ - [ ] Android (flagship): Android 14
417
+ - [ ] Android (budget): Android 8-10
418
+ - [ ] Tablet: iPad and Android tablet
419
+ - [ ] Different networks: WiFi, LTE, 3G (slow network)
420
+ - [ ] Offline mode: App gracefully handles no connectivity
421
+
422
+ ### Scenarios to Test
423
+ - [ ] First-time user setup/onboarding
424
+ - [ ] Login and authentication
425
+ - [ ] Main features and user flows
426
+ - [ ] Navigation and deep linking
427
+ - [ ] Form validation and submission
428
+ - [ ] Payment/transactions (if applicable)
429
+ - [ ] Push notifications (if enabled)
430
+ - [ ] Location services (if used)
431
+ - [ ] Biometric authentication (if enabled)
432
+ - [ ] Logout and session expiration
433
+ - [ ] Reinstall and data restoration
434
+ - [ ] Restore from backup
435
+ - [ ] Permission requests and denials
436
+ - [ ] Background app refresh (if applicable)
437
+
438
+ ### App Store Test Flight
439
+ - [ ] Submit build to TestFlight
440
+ - [ ] Invite internal testers (team)
441
+ - [ ] Collect feedback for 1-2 weeks minimum
442
+ - [ ] Fix reported issues
443
+ - [ ] Test analytics and crash reporting
444
+ - [ ] Verify analytics tracking correctly
445
+
446
+ ### Google Play Internal Testing
447
+ - [ ] Upload to internal test track
448
+ - [ ] Invite internal testers
449
+ - [ ] Test for minimum 7 days
450
+ - [ ] Monitor crash reports and ANRs
451
+ - [ ] Fix issues, bump build number
452
+ - [ ] Move to closed/open beta when confident
453
+ - [ ] Monitor feedback, reviews, crashes
454
+ - [ ] Iterate if needed
455
+
456
+ ---
457
+
458
+ ## Post-Submission
459
+
460
+ ### After Approval
461
+ - [ ] Monitor crash logs and error reports daily first week
462
+ - [ ] Respond to user reviews promptly
463
+ - [ ] Fix critical bugs with hotfix builds
464
+ - [ ] Plan updates with meaningful changes
465
+ - [ ] Maintain changelog and release notes
466
+
467
+ ### Update Guidelines
468
+ - [ ] Version number increments: major.minor.patch
469
+ - [ ] Build number always increments
470
+ - [ ] Release notes explain changes in user-friendly terms
471
+ - [ ] Test updates on multiple devices before submitting
472
+ - [ ] Plan for 1-7 day app store review time
473
+
474
+ ### Analytics & Monitoring
475
+ - [ ] Set up Sentry or similar crash reporting
476
+ - [ ] Monitor API error rates
477
+ - [ ] Track user engagement metrics
478
+ - [ ] Monitor app size and performance metrics
479
+ - [ ] Alert on crashes or critical errors
480
+
481
+ ---
482
+
483
+ ## OTA Updates with EAS Update
484
+
485
+ After initial app store release, use EAS Update for faster JS-only updates:
486
+
487
+ ```bash
488
+ # Publish JS-only update (not requiring app store review)
489
+ eas update --branch production
490
+
491
+ # View recent updates
492
+ eas update list
493
+
494
+ # Rollback if needed
495
+ eas update rollback --branch production
496
+ ```
497
+
498
+ Benefits:
499
+ - Update within hours (not days)
500
+ - No app store review
501
+ - Immediate impact on all users
502
+ - Cheaper than full app rebuilds
503
+
504
+ Limitations:
505
+ - Only JS/assets changes (not native changes)
506
+ - Must have published base build first
507
+ - OTA should only include safe changes
508
+
509
+ ---
510
+
511
+ ## Checklist Validation
512
+
513
+ Before submitting to app stores:
514
+
515
+ ```bash
516
+ # 1. Validate app.json and eas.json
517
+ npx eas build --dry-run --platform ios
518
+ npx eas build --dry-run --platform android
519
+
520
+ # 2. Test build locally
521
+ npx expo start --dev-client
522
+
523
+ # 3. Run tests
524
+ npm run test
525
+
526
+ # 4. Check bundle size
527
+ npx expo export --output-dir dist
528
+
529
+ # 5. Lint and format
530
+ npm run lint
531
+ npm run format
532
+ ```
533
+
534
+ Use this checklist at submission time:
535
+
536
+ - [ ] All app store assets prepared
537
+ - [ ] Metadata finalized and accurate
538
+ - [ ] Privacy policy published and accessible
539
+ - [ ] All permissions justified and declared
540
+ - [ ] Build number incremented
541
+ - [ ] Version number updated
542
+ - [ ] No console warnings or errors
543
+ - [ ] Tested on physical devices (iOS and Android)
544
+ - [ ] TestFlight/internal testing completed
545
+ - [ ] Screenshots and descriptions uploaded
546
+ - [ ] OTA update strategy planned
547
+ - [ ] Monitoring and crash reporting configured
548
+ - [ ] Support contact information accurate
549
+ - [ ] Legal documents (privacy, terms) in place
550
+ - [ ] Ready to submit
@@ -0,0 +1,73 @@
1
+ # NestJS Backend Skill
2
+
3
+ A comprehensive, reusable skill for NestJS backend development. Use this skill when working on NestJS API servers, creating endpoints, services, guards, middleware, or any backend logic.
4
+
5
+ ## Contents
6
+
7
+ - **SKILL.md** — Core NestJS patterns and architecture guidelines (446 lines)
8
+ - Project structure with modular design
9
+ - Controller, service, and DTO patterns
10
+ - Error handling, guards, and interceptors
11
+ - Database integration with Supabase
12
+ - Testing strategies
13
+ - Configuration management
14
+ - Idempotency and best practices
15
+
16
+ - **references/templates.md** — Production-quality code templates (1173 lines)
17
+ - Complete feature module example (module + controller + service + DTO + tests)
18
+ - Global exception filter
19
+ - Auth guard with JWT validation
20
+ - Roles guard with decorators
21
+ - Request ID interceptor for tracing
22
+ - Zod validation pipe
23
+ - Supabase database service wrapper
24
+ - Config module with startup validation
25
+ - Current user decorator
26
+ - Logging service
27
+
28
+ ## Usage
29
+
30
+ This skill is designed to be injected into planning documents via the Qualia workflow:
31
+
32
+ ```
33
+ @context ./nestjs-backend/SKILL.md
34
+ ```
35
+
36
+ The skill teaches Claude:
37
+ - Standard NestJS module structure and patterns
38
+ - How to organize code across controllers, services, and DTOs
39
+ - Proper error handling and validation
40
+ - Authentication and authorization patterns
41
+ - Database integration patterns with Supabase
42
+ - Testing approaches
43
+
44
+ ## Key Principles
45
+
46
+ 1. **Thin Controllers** — Controllers validate input and delegate to services
47
+ 2. **Business Logic in Services** — All domain logic lives in services for testability
48
+ 3. **Zod DTOs** — Use Zod schemas for type-safe validation shared across frontend/backend
49
+ 4. **Global Error Handling** — Domain exceptions convert to standardized HTTP responses
50
+ 5. **Supabase Integration** — RLS enforced at DB level, service layer validates access
51
+ 6. **Request Tracing** — Request IDs propagated for debugging and monitoring
52
+
53
+ ## Templates
54
+
55
+ All templates in `references/templates.md` are:
56
+ - Production-quality, not toy examples
57
+ - Ready to copy and adapt
58
+ - Integrated with Supabase
59
+ - Following NestJS best practices
60
+ - Fully typed with TypeScript
61
+
62
+ ## When to Use This Skill
63
+
64
+ Trigger this skill when working on:
65
+ - NestJS applications or API servers
66
+ - Creating new endpoints or controllers
67
+ - Building services with business logic
68
+ - Implementing authentication/authorization
69
+ - Setting up guards, interceptors, or middleware
70
+ - Creating DTOs and validating input
71
+ - Integrating with Supabase database
72
+ - Error handling and exception filtering
73
+ - Configuration management