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.
- package/README.md +50 -0
- package/bin/cli.js +519 -0
- package/framework/agents/architecture-strategist.md +53 -0
- package/framework/agents/backend-agent.md +150 -0
- package/framework/agents/code-simplicity-reviewer.md +86 -0
- package/framework/agents/frontend-agent.md +111 -0
- package/framework/agents/kieran-typescript-reviewer.md +96 -0
- package/framework/agents/performance-oracle.md +111 -0
- package/framework/agents/qualia-codebase-mapper.md +760 -0
- package/framework/agents/qualia-debugger.md +1203 -0
- package/framework/agents/qualia-executor.md +881 -0
- package/framework/agents/qualia-integration-checker.md +423 -0
- package/framework/agents/qualia-phase-researcher.md +453 -0
- package/framework/agents/qualia-plan-checker.md +699 -0
- package/framework/agents/qualia-planner.md +1241 -0
- package/framework/agents/qualia-project-researcher.md +602 -0
- package/framework/agents/qualia-research-synthesizer.md +236 -0
- package/framework/agents/qualia-roadmapper.md +605 -0
- package/framework/agents/qualia-verifier.md +685 -0
- package/framework/agents/team-orchestrator.md +228 -0
- package/framework/agents/teams/full-stack-team.md +48 -0
- package/framework/agents/teams/optimize-team.md +53 -0
- package/framework/agents/teams/review-team.md +62 -0
- package/framework/agents/teams/ship-team.md +86 -0
- package/framework/agents/test-agent.md +182 -0
- package/framework/askpass.sh +2 -0
- package/framework/commands/design.md +53 -0
- package/framework/commands/quick-db.md +22 -0
- package/framework/config/retention.json +35 -0
- package/framework/core/PRINCIPLES.md +77 -0
- package/framework/hooks/auto-format.sh +45 -0
- package/framework/hooks/block-env-edit.sh +42 -0
- package/framework/hooks/branch-guard.sh +46 -0
- package/framework/hooks/confirm-delete.sh +56 -0
- package/framework/hooks/migration-validate.sh +68 -0
- package/framework/hooks/notification-speak.sh +15 -0
- package/framework/hooks/pre-commit.sh +80 -0
- package/framework/hooks/pre-compact.sh +55 -0
- package/framework/hooks/pre-deploy-gate.sh +151 -0
- package/framework/hooks/qualia-colors.sh +32 -0
- package/framework/hooks/retention-cleanup.sh +43 -0
- package/framework/hooks/save-session-state.sh +153 -0
- package/framework/hooks/session-context-loader.sh +28 -0
- package/framework/hooks/session-learn.sh +30 -0
- package/framework/knowledge/claudecode-bible.md +1384 -0
- package/framework/knowledge/client-prefs.md +22 -0
- package/framework/knowledge/common-fixes.md +25 -0
- package/framework/knowledge/deployment-map.md +35 -0
- package/framework/knowledge/email-signature.html +1 -0
- package/framework/knowledge/employees.md +8 -0
- package/framework/knowledge/learned-patterns.md +51 -0
- package/framework/knowledge/optimization-research-2026.md +137 -0
- package/framework/knowledge/qualia-context.md +67 -0
- package/framework/knowledge/supabase-patterns.md +50 -0
- package/framework/knowledge/voice-agent-patterns.md +46 -0
- package/framework/qualia-engine/VERSION +1 -0
- package/framework/qualia-engine/bin/qualia-tools.js +2160 -0
- package/framework/qualia-engine/bin/qualia-tools.test.js +1054 -0
- package/framework/qualia-engine/references/checkpoints.md +775 -0
- package/framework/qualia-engine/references/continuation-format.md +249 -0
- package/framework/qualia-engine/references/decimal-phase-calculation.md +65 -0
- package/framework/qualia-engine/references/design-quality.md +56 -0
- package/framework/qualia-engine/references/git-integration.md +254 -0
- package/framework/qualia-engine/references/git-planning-commit.md +50 -0
- package/framework/qualia-engine/references/model-profile-resolution.md +32 -0
- package/framework/qualia-engine/references/model-profiles.md +73 -0
- package/framework/qualia-engine/references/phase-argument-parsing.md +61 -0
- package/framework/qualia-engine/references/planning-config.md +195 -0
- package/framework/qualia-engine/references/questioning.md +141 -0
- package/framework/qualia-engine/references/tdd.md +263 -0
- package/framework/qualia-engine/references/ui-brand.md +160 -0
- package/framework/qualia-engine/references/verification-patterns.md +612 -0
- package/framework/qualia-engine/templates/DEBUG.md +159 -0
- package/framework/qualia-engine/templates/DESIGN.md +81 -0
- package/framework/qualia-engine/templates/UAT.md +247 -0
- package/framework/qualia-engine/templates/codebase/architecture.md +255 -0
- package/framework/qualia-engine/templates/codebase/concerns.md +310 -0
- package/framework/qualia-engine/templates/codebase/conventions.md +307 -0
- package/framework/qualia-engine/templates/codebase/integrations.md +280 -0
- package/framework/qualia-engine/templates/codebase/stack.md +186 -0
- package/framework/qualia-engine/templates/codebase/structure.md +285 -0
- package/framework/qualia-engine/templates/codebase/testing.md +480 -0
- package/framework/qualia-engine/templates/config.json +35 -0
- package/framework/qualia-engine/templates/context.md +283 -0
- package/framework/qualia-engine/templates/continue-here.md +78 -0
- package/framework/qualia-engine/templates/debug-subagent-prompt.md +91 -0
- package/framework/qualia-engine/templates/discovery.md +146 -0
- package/framework/qualia-engine/templates/milestone-archive.md +123 -0
- package/framework/qualia-engine/templates/milestone.md +115 -0
- package/framework/qualia-engine/templates/phase-prompt.md +567 -0
- package/framework/qualia-engine/templates/planner-subagent-prompt.md +117 -0
- package/framework/qualia-engine/templates/project.md +184 -0
- package/framework/qualia-engine/templates/projects/ai-agent.md +156 -0
- package/framework/qualia-engine/templates/projects/mobile-app.md +181 -0
- package/framework/qualia-engine/templates/projects/voice-agent.md +134 -0
- package/framework/qualia-engine/templates/projects/website.md +137 -0
- package/framework/qualia-engine/templates/requirements.md +231 -0
- package/framework/qualia-engine/templates/research-project/ARCHITECTURE.md +204 -0
- package/framework/qualia-engine/templates/research-project/FEATURES.md +147 -0
- package/framework/qualia-engine/templates/research-project/PITFALLS.md +200 -0
- package/framework/qualia-engine/templates/research-project/STACK.md +120 -0
- package/framework/qualia-engine/templates/research-project/SUMMARY.md +170 -0
- package/framework/qualia-engine/templates/research.md +552 -0
- package/framework/qualia-engine/templates/roadmap.md +202 -0
- package/framework/qualia-engine/templates/state.md +176 -0
- package/framework/qualia-engine/templates/summary-complex.md +59 -0
- package/framework/qualia-engine/templates/summary-minimal.md +41 -0
- package/framework/qualia-engine/templates/summary-standard.md +48 -0
- package/framework/qualia-engine/templates/summary.md +246 -0
- package/framework/qualia-engine/templates/user-setup.md +311 -0
- package/framework/qualia-engine/templates/verification-report.md +322 -0
- package/framework/qualia-engine/workflows/add-phase.md +179 -0
- package/framework/qualia-engine/workflows/add-todo.md +157 -0
- package/framework/qualia-engine/workflows/audit-milestone.md +241 -0
- package/framework/qualia-engine/workflows/check-todos.md +176 -0
- package/framework/qualia-engine/workflows/complete-milestone.md +858 -0
- package/framework/qualia-engine/workflows/diagnose-issues.md +219 -0
- package/framework/qualia-engine/workflows/discovery-phase.md +289 -0
- package/framework/qualia-engine/workflows/discuss-phase.md +534 -0
- package/framework/qualia-engine/workflows/execute-phase.md +559 -0
- package/framework/qualia-engine/workflows/execute-plan.md +438 -0
- package/framework/qualia-engine/workflows/help.md +470 -0
- package/framework/qualia-engine/workflows/insert-phase.md +220 -0
- package/framework/qualia-engine/workflows/list-phase-assumptions.md +178 -0
- package/framework/qualia-engine/workflows/map-codebase.md +327 -0
- package/framework/qualia-engine/workflows/new-milestone.md +363 -0
- package/framework/qualia-engine/workflows/new-project.md +1037 -0
- package/framework/qualia-engine/workflows/pause-work.md +122 -0
- package/framework/qualia-engine/workflows/plan-milestone-gaps.md +256 -0
- package/framework/qualia-engine/workflows/plan-phase.md +422 -0
- package/framework/qualia-engine/workflows/progress.md +354 -0
- package/framework/qualia-engine/workflows/quick.md +252 -0
- package/framework/qualia-engine/workflows/remove-phase.md +326 -0
- package/framework/qualia-engine/workflows/research-phase.md +74 -0
- package/framework/qualia-engine/workflows/resume-project.md +306 -0
- package/framework/qualia-engine/workflows/set-profile.md +80 -0
- package/framework/qualia-engine/workflows/settings.md +145 -0
- package/framework/qualia-engine/workflows/transition.md +556 -0
- package/framework/qualia-engine/workflows/update.md +197 -0
- package/framework/qualia-engine/workflows/verify-phase.md +195 -0
- package/framework/qualia-engine/workflows/verify-work.md +625 -0
- package/framework/rules/context7.md +11 -0
- package/framework/rules/deployment.md +29 -0
- package/framework/rules/frontend.md +33 -0
- package/framework/rules/security.md +12 -0
- package/framework/rules/speed.md +20 -0
- package/framework/scripts/__pycache__/say.cpython-314.pyc +0 -0
- package/framework/scripts/apply-retention.sh +120 -0
- package/framework/scripts/bootstrap-pop-os.sh +354 -0
- package/framework/scripts/claude-voice +13 -0
- package/framework/scripts/cleanup.sh +131 -0
- package/framework/scripts/cowork-mode.sh +141 -0
- package/framework/scripts/generate-project-claude-md.sh +153 -0
- package/framework/scripts/load-test-webhook.js +172 -0
- package/framework/scripts/say.py +236 -0
- package/framework/scripts/showcase-video-recorder/ffmpeg-builder.js +167 -0
- package/framework/scripts/showcase-video-recorder/playwright-helpers.js +216 -0
- package/framework/scripts/speak.py +55 -0
- package/framework/scripts/speak.sh +18 -0
- package/framework/scripts/status.sh +138 -0
- package/framework/scripts/sync-to-framework.sh +65 -0
- package/framework/scripts/voice-hotkey.py +227 -0
- package/framework/scripts/voice-input.sh +51 -0
- package/framework/skills/animate/SKILL.md +202 -0
- package/framework/skills/bolder/SKILL.md +144 -0
- package/framework/skills/browser-qa/SKILL.md +536 -0
- package/framework/skills/clarify/SKILL.md +179 -0
- package/framework/skills/colorize/SKILL.md +170 -0
- package/framework/skills/critique/SKILL.md +126 -0
- package/framework/skills/deep-research/SKILL.md +271 -0
- package/framework/skills/delight/SKILL.md +329 -0
- package/framework/skills/deploy/SKILL.md +261 -0
- package/framework/skills/deploy-verify/SKILL.md +377 -0
- package/framework/skills/deploy-verify/scripts/canary-check.sh +206 -0
- package/framework/skills/deploy-verify/scripts/check-console-errors.js +147 -0
- package/framework/skills/deploy-verify/scripts/check-cwv.js +139 -0
- package/framework/skills/deploy-verify/scripts/project-detect.sh +84 -0
- package/framework/skills/deploy-verify/scripts/verify.sh +548 -0
- package/framework/skills/design-quieter/SKILL.md +130 -0
- package/framework/skills/distill/SKILL.md +149 -0
- package/framework/skills/docs-lookup/SKILL.md +78 -0
- package/framework/skills/fcm-notifications/SKILL.md +125 -0
- package/framework/skills/financial-ledger/SKILL.md +1039 -0
- package/framework/skills/frontend-master/NOTICE.md +4 -0
- package/framework/skills/frontend-master/SKILL.md +127 -0
- package/framework/skills/frontend-master/reference/color-and-contrast.md +132 -0
- package/framework/skills/frontend-master/reference/interaction-design.md +123 -0
- package/framework/skills/frontend-master/reference/motion-design.md +99 -0
- package/framework/skills/frontend-master/reference/responsive-design.md +114 -0
- package/framework/skills/frontend-master/reference/spatial-design.md +100 -0
- package/framework/skills/frontend-master/reference/typography.md +131 -0
- package/framework/skills/frontend-master/reference/ux-writing.md +107 -0
- package/framework/skills/harden/SKILL.md +357 -0
- package/framework/skills/i18n-rtl/SKILL.md +752 -0
- package/framework/skills/learn/SKILL.md +71 -0
- package/framework/skills/memory/SKILL.md +50 -0
- package/framework/skills/mobile-expo/SKILL.md +864 -0
- package/framework/skills/mobile-expo/references/store-checklist.md +550 -0
- package/framework/skills/nestjs-backend/README.md +73 -0
- package/framework/skills/nestjs-backend/SKILL.md +446 -0
- package/framework/skills/nestjs-backend/references/templates.md +1173 -0
- package/framework/skills/normalize/SKILL.md +79 -0
- package/framework/skills/onboard/SKILL.md +242 -0
- package/framework/skills/polish/SKILL.md +209 -0
- package/framework/skills/pr/SKILL.md +66 -0
- package/framework/skills/qualia/SKILL.md +153 -0
- package/framework/skills/qualia-add-todo/SKILL.md +68 -0
- package/framework/skills/qualia-audit-milestone/SKILL.md +92 -0
- package/framework/skills/qualia-check-todos/SKILL.md +55 -0
- package/framework/skills/qualia-complete-milestone/SKILL.md +108 -0
- package/framework/skills/qualia-debug/SKILL.md +149 -0
- package/framework/skills/qualia-design/SKILL.md +203 -0
- package/framework/skills/qualia-discuss-phase/SKILL.md +72 -0
- package/framework/skills/qualia-execute-phase/SKILL.md +86 -0
- package/framework/skills/qualia-help/SKILL.md +67 -0
- package/framework/skills/qualia-idk/SKILL.md +352 -0
- package/framework/skills/qualia-list-phase-assumptions/SKILL.md +67 -0
- package/framework/skills/qualia-new-milestone/SKILL.md +72 -0
- package/framework/skills/qualia-new-project/SKILL.md +92 -0
- package/framework/skills/qualia-optimize/SKILL.md +417 -0
- package/framework/skills/qualia-pause-work/SKILL.md +96 -0
- package/framework/skills/qualia-plan-milestone-gaps/SKILL.md +57 -0
- package/framework/skills/qualia-plan-phase/SKILL.md +101 -0
- package/framework/skills/qualia-progress/SKILL.md +53 -0
- package/framework/skills/qualia-quick/SKILL.md +89 -0
- package/framework/skills/qualia-research-phase/SKILL.md +88 -0
- package/framework/skills/qualia-resume-work/SKILL.md +62 -0
- package/framework/skills/qualia-review/SKILL.md +263 -0
- package/framework/skills/qualia-start/SKILL.md +182 -0
- package/framework/skills/qualia-verify-work/SKILL.md +105 -0
- package/framework/skills/qualia-workflow/SKILL.md +130 -0
- package/framework/skills/rag/SKILL.md +750 -0
- package/framework/skills/responsive/SKILL.md +231 -0
- package/framework/skills/retro/SKILL.md +284 -0
- package/framework/skills/sakani-conventions/SKILL.md +136 -0
- package/framework/skills/sakani-conventions/evals/evals.json +23 -0
- package/framework/skills/sakani-conventions/references/entities.md +365 -0
- package/framework/skills/sakani-conventions/references/error-codes.md +95 -0
- package/framework/skills/seo-master/SKILL.md +490 -0
- package/framework/skills/seo-master/references/checklist.md +199 -0
- package/framework/skills/seo-master/references/structured-data.md +609 -0
- package/framework/skills/ship/SKILL.md +202 -0
- package/framework/skills/stack-researcher/SKILL.md +215 -0
- package/framework/skills/status/SKILL.md +154 -0
- package/framework/skills/status/scripts/health-check.sh +562 -0
- package/framework/skills/subscription-payments/SKILL.md +250 -0
- package/framework/skills/supabase/SKILL.md +973 -0
- package/framework/skills/supabase/references/templates.md +159 -0
- package/framework/skills/team/SKILL.md +67 -0
- package/framework/skills/test-runner/SKILL.md +202 -0
- package/framework/skills/voice-agent/SKILL.md +407 -0
- package/framework/skills/zoho-workflow/SKILL.md +51 -0
- package/framework/statusline-command.sh +117 -0
- package/package.json +24 -0
- package/profiles/fawzi.json +16 -0
- package/profiles/hasan.json +16 -0
- package/profiles/moayad.json +16 -0
- package/templates/CLAUDE-owner.md +52 -0
- package/templates/CLAUDE.md.hbs +58 -0
- package/templates/env.claude.template +12 -0
- 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
|