@shaykec/app-agent 1.0.8 → 1.0.10

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 (213) hide show
  1. package/.claude/agents/android-customizer.md +9 -1
  2. package/.claude/agents/catalog-analyzer.md +57 -0
  3. package/.claude/agents/ios-customizer.md +9 -1
  4. package/.claude/agents/react-native-customizer.md +71 -0
  5. package/.claude/skills/android-customizer/SKILL.md +108 -23
  6. package/.claude/skills/bug-fixer/SKILL.md +59 -0
  7. package/.claude/skills/catalog-analyzer/SKILL.md +96 -0
  8. package/.claude/skills/customization-planner/SKILL.md +44 -5
  9. package/.claude/skills/design-selector/SKILL.md +3 -1
  10. package/.claude/skills/design-system/SKILL.md +1 -1
  11. package/.claude/skills/exploratory-tester/SKILL.md +82 -0
  12. package/.claude/skills/ios-customizer/SKILL.md +123 -23
  13. package/.claude/skills/module-integrator/SKILL.md +1 -1
  14. package/.claude/skills/react-native-customizer/SKILL.md +97 -11
  15. package/.claude/skills/test-planner/SKILL.md +72 -0
  16. package/.cursor/agents/README.md +3 -1
  17. package/.cursor/agents/android-customizer.md +15 -11
  18. package/.cursor/agents/catalog-analyzer.md +83 -0
  19. package/.cursor/agents/ios-customizer.md +15 -10
  20. package/.cursor/agents/react-native-customizer.md +170 -0
  21. package/.cursor/mcp.json +2 -10
  22. package/.cursor/rules/safety-guardrails.mdc +1 -1
  23. package/.cursor/rules/workflow.mdc +52 -18
  24. package/.cursor/skills/android-customizer/SKILL.md +46 -22
  25. package/.cursor/skills/bug-fixer/SKILL.md +189 -0
  26. package/.cursor/skills/catalog-analyzer/SKILL.md +222 -0
  27. package/.cursor/skills/customization-planner/SKILL.md +55 -8
  28. package/.cursor/skills/design-selector/SKILL.md +6 -5
  29. package/.cursor/skills/design-system/SKILL.md +8 -7
  30. package/.cursor/skills/exploratory-tester/SKILL.md +223 -0
  31. package/.cursor/skills/ios-customizer/SKILL.md +50 -15
  32. package/.cursor/skills/module-integrator/SKILL.md +2 -2
  33. package/.cursor/skills/output-validator/SKILL.md +1 -1
  34. package/.cursor/skills/react-native-customizer/SKILL.md +115 -25
  35. package/.cursor/skills/test-planner/SKILL.md +199 -0
  36. package/AGENTS.md +32 -11
  37. package/CLAUDE.md +78 -33
  38. package/README.md +77 -11
  39. package/designs/DESIGN_CATALOG.md +17 -15
  40. package/designs/DESIGN_PRINCIPLES.md +53 -0
  41. package/designs/brands/accessible-high-contrast.md +14 -0
  42. package/designs/brands/corporate-professional.md +14 -0
  43. package/designs/brands/dark-luxe.md +14 -0
  44. package/designs/brands/kids-playful.md +14 -0
  45. package/designs/brands/medical-clinical.md +14 -0
  46. package/designs/brands/modern-minimal.md +14 -0
  47. package/designs/brands/nature-organic.md +14 -0
  48. package/designs/brands/neo-brutalist.md +14 -0
  49. package/designs/brands/retro-vintage.md +14 -0
  50. package/designs/brands/soft-gradient.md +14 -0
  51. package/designs/brands/sport-athletic.md +14 -0
  52. package/designs/brands/tech-dynamic.md +14 -0
  53. package/designs/brands/vibrant-playful.md +14 -0
  54. package/dist/cli.d.ts +4 -2
  55. package/dist/cli.d.ts.map +1 -1
  56. package/dist/cli.js +91 -1
  57. package/dist/cli.js.map +1 -1
  58. package/dist/config.d.ts +2 -0
  59. package/dist/config.d.ts.map +1 -1
  60. package/dist/config.js +2 -0
  61. package/dist/config.js.map +1 -1
  62. package/dist/engines/claude-engine.d.ts.map +1 -1
  63. package/dist/engines/claude-engine.js +16 -4
  64. package/dist/engines/claude-engine.js.map +1 -1
  65. package/dist/engines/types.d.ts +1 -1
  66. package/dist/engines/types.d.ts.map +1 -1
  67. package/dist/engines/types.js +31 -2
  68. package/dist/engines/types.js.map +1 -1
  69. package/dist/github.d.ts +3 -0
  70. package/dist/github.d.ts.map +1 -1
  71. package/dist/github.js +47 -4
  72. package/dist/github.js.map +1 -1
  73. package/dist/index.js +217 -9
  74. package/dist/index.js.map +1 -1
  75. package/dist/prompt-builder.d.ts +11 -1
  76. package/dist/prompt-builder.d.ts.map +1 -1
  77. package/dist/prompt-builder.js +216 -1
  78. package/dist/prompt-builder.js.map +1 -1
  79. package/dist/validator.d.ts +7 -2
  80. package/dist/validator.d.ts.map +1 -1
  81. package/dist/validator.js +61 -41
  82. package/dist/validator.js.map +1 -1
  83. package/dist/workspace.js +2 -2
  84. package/dist/workspace.js.map +1 -1
  85. package/package.json +2 -2
  86. package/prompts/agent-prompt.md +35 -18
  87. package/prompts/deep-test-agent-prompt.md +122 -0
  88. package/prompts/fix-agent-prompt.md +90 -0
  89. package/prompts/quick-agent-prompt.md +32 -2
  90. package/prompts/scratch-agent-prompt.md +5 -8
  91. package/templates/android/BookTemplate/app/src/main/kotlin/com/appship/book/core/animation/AnimatedTransitionsModifiers.kt +188 -0
  92. package/templates/android/ChatTemplate/app/src/main/kotlin/com/appship/chat/core/animation/AnimatedTransitionsModifiers.kt +188 -0
  93. package/templates/android/ChatTemplate/app/src/main/kotlin/com/appship/chat/features/conversations/ConversationsScreen.kt +1 -1
  94. package/templates/android/DashTemplate/app/src/main/kotlin/com/appship/dash/core/animation/AnimatedTransitionsModifiers.kt +188 -0
  95. package/templates/android/DashTemplate/app/src/main/kotlin/com/appship/dash/features/navigation/MainScreen.kt +1 -0
  96. package/templates/android/FamilyTemplate/app/src/main/java/com/appship/family/core/animation/AnimatedTransitionsModifiers.kt +188 -0
  97. package/templates/android/FamilyTemplate/app/src/main/java/com/appship/family/features/navigation/MainNavigation.kt +5 -1
  98. package/templates/android/FinanceTemplate/app/src/main/kotlin/com/appship/finance/core/animation/AnimatedTransitionsModifiers.kt +188 -0
  99. package/templates/android/GameTemplate/app/src/main/kotlin/com/appship/game/core/animation/AnimatedTransitionsModifiers.kt +188 -0
  100. package/templates/android/GameTemplate/app/src/main/kotlin/com/appship/game/core/animation/MotionPreferencesScreen.kt +3 -3
  101. package/templates/android/GameTemplate/app/src/main/kotlin/com/appship/game/features/navigation/Navigation.kt +1 -1
  102. package/templates/android/GameTemplate/app/src/main/kotlin/com/appship/game/features/settings/SettingsScreen.kt +1 -1
  103. package/templates/android/HealthTemplate/app/src/main/kotlin/com/appship/health/core/animation/AnimatedTransitionsModifiers.kt +188 -0
  104. package/templates/android/LearnTemplate/app/src/main/kotlin/com/appship/learn/core/animation/AnimatedTransitionsModifiers.kt +188 -0
  105. package/templates/android/MapTemplate/app/src/main/kotlin/com/appship/map/core/animation/AnimatedTransitionsModifiers.kt +188 -0
  106. package/templates/android/MediaTemplate/app/src/main/kotlin/com/appship/media/core/animation/AnimatedTransitionsModifiers.kt +188 -0
  107. package/templates/android/MediaTemplate/app/src/main/kotlin/com/appship/media/features/settings/SettingsScreen.kt +3 -2
  108. package/templates/android/ReferenceTemplate/app/src/main/kotlin/com/appship/reference/core/animation/AnimatedTransitionsModifiers.kt +188 -0
  109. package/templates/android/ReferenceTemplate/app/src/main/kotlin/com/appship/reference/features/settings/SettingsScreen.kt +1 -1
  110. package/templates/android/ShopTemplate/app/src/main/kotlin/com/appship/shop/core/animation/AnimatedTransitionsModifiers.kt +188 -0
  111. package/templates/android/ShopTemplate/app/src/main/kotlin/com/appship/shop/features/cart/CartScreen.kt +3 -2
  112. package/templates/android/Skeleton/TESTING_MANIFEST.md +2 -1
  113. package/templates/android/Skeleton/app/src/main/kotlin/com/appship/skeleton/MainActivity.kt +23 -2
  114. package/templates/android/Skeleton/app/src/main/kotlin/com/appship/skeleton/core/animation/AnimatedTransitionsModifiers.kt +188 -0
  115. package/templates/android/Skeleton/app/src/main/kotlin/com/appship/skeleton/core/theme/AppearanceManager.kt +42 -0
  116. package/templates/android/Skeleton/app/src/main/kotlin/com/appship/skeleton/features/profile/ProfileScreen.kt +20 -8
  117. package/templates/android/Skeleton/tests/03_detail_screen.yaml +3 -2
  118. package/templates/android/Skeleton/tests/04_favorites.yaml +3 -2
  119. package/templates/android/Skeleton/tests/08_full_e2e.yaml +9 -2
  120. package/templates/android/Skeleton/tests/09_dark_mode.yaml +50 -0
  121. package/templates/android/SocialTemplate/app/src/main/kotlin/com/appship/social/core/animation/AnimatedTransitionsModifiers.kt +188 -0
  122. package/templates/android/TaskTemplate/app/src/main/kotlin/com/appship/task/core/animation/AnimatedTransitionsModifiers.kt +188 -0
  123. package/templates/android/TaskTemplate/app/src/main/kotlin/com/appship/task/features/settings/SettingsScreen.kt +3 -2
  124. package/templates/android/TrackTemplate/app/src/main/kotlin/com/appship/track/core/animation/AnimatedTransitionsModifiers.kt +188 -0
  125. package/templates/ios/BookTemplate/BookTemplate/Core/Animation/AnimatedTransitionsView.swift +201 -0
  126. package/templates/ios/ChatTemplate/ChatTemplate/Core/Animation/AnimatedTransitionsView.swift +201 -0
  127. package/templates/ios/DashTemplate/DashTemplate/App/AppConfig.swift +1 -0
  128. package/templates/ios/DashTemplate/DashTemplate/Core/Animation/AnimatedTransitionsView.swift +201 -0
  129. package/templates/ios/DashTemplate/DashTemplate/Core/Strings.swift +13 -0
  130. package/templates/ios/DashTemplate/DashTemplate.xcodeproj/project.pbxproj +32 -20
  131. package/templates/ios/FamilyTemplate/FamilyTemplate/Core/Animation/AnimatedTransitionsView.swift +201 -0
  132. package/templates/ios/FinanceTemplate/FinanceTemplate/Core/Animation/AnimatedTransitionsView.swift +201 -0
  133. package/templates/ios/FinanceTemplate/FinanceTemplate/Core/Strings.swift +42 -0
  134. package/templates/ios/FinanceTemplate/FinanceTemplate.xcodeproj/project.pbxproj +36 -30
  135. package/templates/ios/GameTemplate/GameTemplate/Core/Animation/AnimatedTransitionsView.swift +201 -0
  136. package/templates/ios/HealthTemplate/HealthTemplate/Core/Animation/AnimatedTransitionsView.swift +201 -0
  137. package/templates/ios/LearnTemplate/LearnTemplate/Core/Animation/AnimatedTransitionsView.swift +201 -0
  138. package/templates/ios/MapTemplate/MapTemplate/Core/Animation/AnimatedTransitionsView.swift +201 -0
  139. package/templates/ios/MediaTemplate/MediaTemplate/Core/Animation/AnimatedTransitionsView.swift +201 -0
  140. package/templates/ios/ReferenceTemplate/ReferenceTemplate/Core/Animation/AnimatedTransitionsView.swift +201 -0
  141. package/templates/ios/ReferenceTemplate/ReferenceTemplate/Core/Strings.swift +12 -0
  142. package/templates/ios/ReferenceTemplate/ReferenceTemplate/Features/SkeletonLoading/SkeletonLoadingView.swift +2 -37
  143. package/templates/ios/ShopTemplate/ShopTemplate/Core/Animation/AnimatedTransitionsView.swift +201 -0
  144. package/templates/ios/Skeleton/Skeleton/Core/Animation/AnimatedTransitionsView.swift +201 -0
  145. package/templates/ios/Skeleton/tests/08_full_e2e.yaml +4 -0
  146. package/templates/ios/Skeleton/tests/09_dark_mode.yaml +52 -0
  147. package/templates/ios/SocialTemplate/SocialTemplate/Core/Animation/AnimatedTransitionsView.swift +201 -0
  148. package/templates/ios/TaskTemplate/TaskTemplate/Core/Animation/AnimatedTransitionsView.swift +201 -0
  149. package/templates/ios/TrackTemplate/TrackTemplate/Core/Animation/AnimatedTransitionsView.swift +201 -0
  150. package/templates/react-native/BookTemplate/src/animation/useAnimatedList.ts +219 -2
  151. package/templates/react-native/BookTemplate/src/animation/useMotionPreferences.ts +23 -9
  152. package/templates/react-native/BookTemplate/src/screens/Profile/ProfileScreen.tsx +1 -1
  153. package/templates/react-native/ChatTemplate/src/animation/useAnimatedList.ts +219 -2
  154. package/templates/react-native/ChatTemplate/src/animation/useMotionPreferences.ts +23 -9
  155. package/templates/react-native/ChatTemplate/src/screens/Profile/ProfileScreen.tsx +1 -1
  156. package/templates/react-native/DashTemplate/src/animation/useAnimatedList.ts +219 -2
  157. package/templates/react-native/DashTemplate/src/animation/useMotionPreferences.ts +23 -9
  158. package/templates/react-native/DashTemplate/src/screens/Profile/ProfileScreen.tsx +1 -1
  159. package/templates/react-native/FamilyTemplate/src/animation/useAnimatedList.ts +219 -2
  160. package/templates/react-native/FamilyTemplate/src/animation/useMotionPreferences.ts +23 -9
  161. package/templates/react-native/FamilyTemplate/src/screens/Profile/ProfileScreen.tsx +1 -1
  162. package/templates/react-native/FinanceTemplate/src/animation/useAnimatedList.ts +219 -2
  163. package/templates/react-native/FinanceTemplate/src/animation/useMotionPreferences.ts +23 -9
  164. package/templates/react-native/FinanceTemplate/src/screens/Profile/ProfileScreen.tsx +1 -1
  165. package/templates/react-native/GameTemplate/src/animation/useAnimatedList.ts +219 -2
  166. package/templates/react-native/GameTemplate/src/animation/useMotionPreferences.ts +23 -9
  167. package/templates/react-native/GameTemplate/src/screens/GameDetail/GameDetailScreen.tsx +2 -1
  168. package/templates/react-native/GameTemplate/src/screens/Profile/ProfileScreen.tsx +1 -1
  169. package/templates/react-native/HealthTemplate/src/animation/useAnimatedList.ts +219 -2
  170. package/templates/react-native/HealthTemplate/src/animation/useMotionPreferences.ts +23 -9
  171. package/templates/react-native/HealthTemplate/src/screens/Profile/ProfileScreen.tsx +1 -1
  172. package/templates/react-native/HealthTemplate/src/screens/WorkoutDetail/WorkoutDetailScreen.tsx +1 -1
  173. package/templates/react-native/LearnTemplate/src/animation/useAnimatedList.ts +219 -2
  174. package/templates/react-native/LearnTemplate/src/animation/useMotionPreferences.ts +23 -9
  175. package/templates/react-native/LearnTemplate/src/screens/Profile/ProfileScreen.tsx +1 -1
  176. package/templates/react-native/MapTemplate/src/animation/useAnimatedList.ts +219 -2
  177. package/templates/react-native/MapTemplate/src/animation/useMotionPreferences.ts +23 -9
  178. package/templates/react-native/MapTemplate/src/screens/Map/MapScreen.tsx +14 -0
  179. package/templates/react-native/MapTemplate/src/screens/Profile/ProfileScreen.tsx +1 -1
  180. package/templates/react-native/MediaTemplate/src/animation/useAnimatedList.ts +219 -2
  181. package/templates/react-native/MediaTemplate/src/animation/useMotionPreferences.ts +23 -9
  182. package/templates/react-native/MediaTemplate/src/screens/PlaylistDetail/PlaylistDetailScreen.tsx +1 -1
  183. package/templates/react-native/MediaTemplate/src/screens/Profile/ProfileScreen.tsx +1 -1
  184. package/templates/react-native/ReferenceTemplate/src/animation/useAnimatedList.ts +219 -2
  185. package/templates/react-native/ReferenceTemplate/src/animation/useMotionPreferences.ts +23 -9
  186. package/templates/react-native/ReferenceTemplate/src/screens/Settings/SettingsScreen.tsx +1 -1
  187. package/templates/react-native/ShopTemplate/src/animation/useAnimatedList.ts +219 -2
  188. package/templates/react-native/ShopTemplate/src/animation/useMotionPreferences.ts +23 -9
  189. package/templates/react-native/ShopTemplate/src/screens/Profile/ProfileScreen.tsx +1 -1
  190. package/templates/react-native/Skeleton/TESTING_MANIFEST.md +2 -1
  191. package/templates/react-native/Skeleton/src/animation/useAnimatedList.ts +219 -2
  192. package/templates/react-native/Skeleton/src/animation/useMotionPreferences.ts +23 -9
  193. package/templates/react-native/Skeleton/src/screens/Profile/ProfileScreen.tsx +1 -1
  194. package/templates/react-native/Skeleton/tests/07_profile.yaml +3 -2
  195. package/templates/react-native/Skeleton/tests/08_full_e2e.yaml +12 -1
  196. package/templates/react-native/Skeleton/tests/09_dark_mode.yaml +46 -0
  197. package/templates/react-native/SocialTemplate/src/animation/useAnimatedList.ts +219 -2
  198. package/templates/react-native/SocialTemplate/src/animation/useMotionPreferences.ts +23 -9
  199. package/templates/react-native/SocialTemplate/src/screens/Feed/FeedScreen.tsx +1 -0
  200. package/templates/react-native/SocialTemplate/src/screens/Profile/ProfileScreen.tsx +1 -1
  201. package/templates/react-native/TaskTemplate/src/animation/useAnimatedList.ts +219 -2
  202. package/templates/react-native/TaskTemplate/src/animation/useMotionPreferences.ts +23 -9
  203. package/templates/react-native/TaskTemplate/src/screens/Profile/ProfileScreen.tsx +1 -1
  204. package/templates/react-native/TrackTemplate/src/animation/useAnimatedList.ts +219 -2
  205. package/templates/react-native/TrackTemplate/src/animation/useMotionPreferences.ts +23 -9
  206. package/templates/react-native/TrackTemplate/src/screens/Settings/SettingsScreen.tsx +1 -1
  207. package/templates/shared/ios/AnimatedTransitions/AnimatedTransitionsView.swift +233 -93
  208. package/.claude/agents/template-selector.md +0 -39
  209. package/.claude/skills/module-selector/SKILL.md +0 -81
  210. package/.claude/skills/template-selector/SKILL.md +0 -44
  211. package/.cursor/agents/template-selector.md +0 -52
  212. package/.cursor/skills/module-selector/SKILL.md +0 -135
  213. package/.cursor/skills/template-selector/SKILL.md +0 -123
@@ -0,0 +1,189 @@
1
+ ---
2
+ name: bug-fixer
3
+ description: Reads a bug report from a previous deep-test run and systematically fixes each bug. Rebuilds the app, re-tests the fixed screens, and produces a fix report. Used in Phase 4 of --deep-test --fix or standalone via --fix.
4
+ ---
5
+
6
+ # Bug Fixer Skill
7
+
8
+ Use this skill to fix bugs documented in a bug report from a previous deep-test run. You read the report, fix each bug in the source code, rebuild, and verify the fixes.
9
+
10
+ ## When to Use
11
+
12
+ - As Phase 4 of the `--deep-test --fix` pipeline (after testing phases complete)
13
+ - Standalone via the `--fix` command (reads an existing bug report without re-testing)
14
+ - When you have a `reports/11-bug-report.md` with documented bugs to fix
15
+
16
+ ## Context You Need
17
+
18
+ - **App directory** — path under `output/` (e.g., `output/pawspa-ios/`)
19
+ - **Platform** — `ios`, `android`, or `react-native`
20
+ - **App name** — display name
21
+ - **Bundle ID** — e.g., `com.pawspa.app`
22
+ - **Bug report** — `reports/11-bug-report.md` with categorized bugs
23
+ - **Build artifact path** — for re-testing after fixes (may need to rebuild)
24
+
25
+ ## Instructions
26
+
27
+ ### Step 1 — Read and Prioritize Bugs
28
+
29
+ 1. Read `output/{app-name}/reports/11-bug-report.md`
30
+ 2. Parse all bugs (both `[EXPLORATORY]` and `[STRUCTURED]` tagged)
31
+ 3. Sort by severity: P0 (Critical) → P1 (High) → P2 (Medium) → P3 (Low)
32
+ 4. Triage each bug into one of three categories:
33
+ - **FIX** — can be fixed in the source code
34
+ - **DEFER** — requires major refactoring or design change (document recommendation instead)
35
+ - **SKIP** — false positive or cosmetic non-issue
36
+
37
+ ### Step 2 — Locate Source Files
38
+
39
+ For each bug marked FIX:
40
+
41
+ #### For `[STRUCTURED]` bugs:
42
+ - The bug report typically includes the file path — open it directly
43
+ - Cross-reference with the test plan (`reports/10-test-plan.md`) for additional context
44
+
45
+ #### For `[EXPLORATORY]` bugs:
46
+ - Use the screen name and element description to find the relevant source file
47
+ - **iOS:** Search for `{ScreenName}View.swift` and `{ScreenName}ViewModel.swift`
48
+ - **Android:** Search for `{ScreenName}Screen.kt` and `{ScreenName}ViewModel.kt`
49
+ - **React Native:** Search for `{ScreenName}Screen.tsx` and `use{ScreenName}.ts`
50
+ - For content bugs: also check `AppConfig`, `MockDataProvider`, and string resources
51
+
52
+ #### For `[A11Y]` bugs:
53
+ - Open the View file for the affected screen
54
+ - Search for the element type mentioned in the bug (Image, Button, etc.)
55
+ - Add accessibility modifiers/attributes
56
+
57
+ ### Step 3 — Fix Each Bug
58
+
59
+ Apply fixes in priority order (P0 first, P3 last). For each bug:
60
+
61
+ 1. **Read the source file(s)** involved
62
+ 2. **Understand the root cause** — don't just patch the symptom
63
+ 3. **Apply the minimal fix** — change as little code as possible to fix the bug
64
+ 4. **Document the fix** — record what you changed and why
65
+
66
+ #### Fix Patterns by Bug Type
67
+
68
+ **`[VISUAL]` — Layout/visual issues:**
69
+ - Truncation: add `lineLimit`, adjust `frame`, use `minimumScaleFactor`
70
+ - Overlap: fix `ZStack` ordering, add padding/spacing, fix constraint priorities
71
+ - Spacing: adjust `padding`, `spacing` parameters
72
+
73
+ **`[A11Y]` — Accessibility issues:**
74
+ - Missing label: add `.accessibilityLabel("Description")` (iOS) or `contentDescription` (Android) or `accessibilityLabel` (React Native)
75
+ - Missing image description: add `.accessibilityLabel` to Image views
76
+ - Small touch targets: increase `frame` size or add `.contentShape(Rectangle())` + padding
77
+
78
+ **`[UX]` — Dead buttons / broken navigation:**
79
+ - Dead button: check the action handler — likely missing navigation call or action dispatch
80
+ - Broken navigation: verify `NavigationLink` destination or `navigate()` call
81
+ - Wrong destination: fix the navigation target
82
+
83
+ **`[CONTENT]` — Template leftovers / wrong text:**
84
+ - Search the file for the leftover text and replace with domain-appropriate text
85
+ - Check `AppConfig` and `MockDataProvider` for the source of the wrong text
86
+ - Check string resource files if the text comes from a resource
87
+
88
+ **`[STATE]` — State not persisting:**
89
+ - Check ViewModel — is the state being saved after the action?
90
+ - Check MockDataProvider — is the update method being called?
91
+ - Check binding: is the View observing the ViewModel correctly?
92
+
93
+ **`[CRASH]` — App crashes:**
94
+ - Look for force unwraps (`!`), array index out of bounds, nil reference
95
+ - Add nil checks, use optional binding, add bounds checking
96
+ - If crash is in navigation, check for missing views or circular dependencies
97
+
98
+ ### Step 4 — Rebuild the App
99
+
100
+ After all fixes are applied:
101
+
102
+ 1. Follow the `build-tester` skill to rebuild the app
103
+ 2. If the build fails, fix the compilation errors (your fixes may have introduced syntax issues)
104
+ 3. Maximum **3 rebuild cycles** for build errors
105
+
106
+ ### Step 5 — Verify Fixes
107
+
108
+ After a successful build:
109
+
110
+ 1. Boot a simulator (or use an existing one if already running)
111
+ 2. Install the new build artifact
112
+ 3. Launch the app
113
+ 4. For each fixed bug, navigate to the affected screen and verify:
114
+ - The specific issue is resolved
115
+ - No new issues were introduced on that screen
116
+ - The fix didn't break navigation to/from that screen
117
+
118
+ Use ai-tester MCP tools for verification:
119
+ ```
120
+ inspect({ platform: "{platform}", app: "{bundleId}", deviceName: "{sim}" })
121
+ act({ action: "tap", ... })
122
+ assert({ type: "visible", ... })
123
+ ```
124
+
125
+ ### Step 6 — Write Fix Report
126
+
127
+ Write `output/{app-name}/reports/12-fix-report.md`:
128
+
129
+ ```markdown
130
+ # Fix Report
131
+
132
+ ## Summary
133
+ - Bugs in report: {total}
134
+ - Fixed: {N}
135
+ - Deferred: {N}
136
+ - Skipped (false positive): {N}
137
+
138
+ ## Bugs Fixed
139
+
140
+ ### BUG-{NNN}: [{SEVERITY}][{SOURCE}][{TAG}] {description}
141
+ - **Root cause:** {what was actually wrong}
142
+ - **Fix:** {what you changed}
143
+ - **Files modified:** {list of files}
144
+ - **Verified:** PASS / FAIL
145
+
146
+ ### BUG-{NNN}: ...
147
+ ...
148
+
149
+ ## Bugs Deferred
150
+
151
+ ### BUG-{NNN}: [{SEVERITY}][{SOURCE}][{TAG}] {description}
152
+ - **Reason:** {why this can't be fixed in a quick pass}
153
+ - **Recommendation:** {what should be done to fix it properly}
154
+
155
+ ## Rebuild Result
156
+ - Build: PASS / FAIL
157
+ - Build cycles: {N}
158
+
159
+ ## Verification Result
160
+ - Fixes verified: {N}/{total fixed}
161
+ - Regressions found: {N}
162
+ ```
163
+
164
+ Update `summary.json` — add a step entry:
165
+
166
+ ```json
167
+ {
168
+ "step": 12,
169
+ "name": "bug-fix",
170
+ "result": "PASS",
171
+ "bugsTotal": 0,
172
+ "bugsFixed": 0,
173
+ "bugsDeferred": 0,
174
+ "bugsSkipped": 0,
175
+ "rebuildCycles": 0,
176
+ "verificationsPass": 0
177
+ }
178
+ ```
179
+
180
+ ## Important Rules
181
+
182
+ - **Fix in priority order** — P0 first, P3 last. If you run out of fix cycles, at least the critical bugs are fixed.
183
+ - **Minimal fixes** — change as little code as possible. Don't refactor unrelated code.
184
+ - **Preserve architecture** — keep MVVM separation, don't merge View and ViewModel code
185
+ - **Preserve MockDataProvider** — update data through the provider, don't hardcode data in views
186
+ - **Maximum 3 rebuild cycles** — if you can't get a clean build in 3 tries, stop and document remaining issues
187
+ - **ONLY write files under `output/`** — never modify templates or skills
188
+ - If a bug fix requires adding a new dependency, DEFER it instead — no new dependencies allowed
189
+ - If a bug fix would require significant redesign (>50 lines changed across >3 files), DEFER it with a recommendation
@@ -0,0 +1,222 @@
1
+ ---
2
+ name: catalog-analyzer
3
+ description: Selects the best template from CATALOG.md and the best shared modules from MODULES_CATALOG.md in a single pass. Uses the selected template to boost module selection accuracy via the "Relevant Templates" column.
4
+ ---
5
+
6
+ # Catalog Analyzer Skill
7
+
8
+ Use this skill to select the best template AND the best shared modules for the user's app in one pass.
9
+
10
+ ## When to Use
11
+
12
+ - At Step 0 of the AppAgent workflow, in parallel with prompt validation and design brand selection
13
+ - When you need to pick both a starting template and shared modules
14
+ - Before cloning any template to `output/`
15
+
16
+ ## Context You Need
17
+
18
+ - **User description** — what kind of app the user wants to build
19
+ - **Platform** — `ios`, `android`, or `react-native`
20
+ - **Sanitized description** — from the prompt-validator skill (if available)
21
+
22
+ ## Instructions
23
+
24
+ ### Phase 1 — Template Selection
25
+
26
+ #### Step 1 — Read the Template Catalog
27
+
28
+ Read `templates/CATALOG.md` thoroughly. Understand each template's:
29
+ - Feature set and architecture
30
+ - "Best-For Keywords" in the decision matrix
31
+ - "Best match when" criteria
32
+ - "NOT a match when" exclusion rules
33
+
34
+ #### Step 2 — Score Each Template
35
+
36
+ For each template in the catalog:
37
+ 1. Score it against the user's description using the "Best-For Keywords"
38
+ 2. Check the "Best match when" criteria — how many match?
39
+ 3. Apply the "NOT a match when" rules — does any exclusion trigger?
40
+ 4. Consider navigation pattern similarity (tabs, lists, detail screens)
41
+
42
+ #### Step 3 — Handle Edge Cases
43
+
44
+ - If the app spans multiple categories, check the "Hybrid Apps" table in the catalog
45
+ - If no template is a strong match, follow the "When No Template Fits" guidance — pick the template with the most similar navigation and screen patterns
46
+ - Consider the platform (iOS vs Android vs React Native) — all templates are available on all three platforms. The same template names exist under `templates/ios/`, `templates/android/`, and `templates/react-native/`
47
+
48
+ #### Step 4 — Select ONE Template
49
+
50
+ Choose exactly ONE primary template. Determine confidence:
51
+ - **high** — multiple criteria match, clear winner
52
+ - **medium** — good fit but some aspects don't align perfectly
53
+ - **low** — no great match, picking the closest option
54
+
55
+ If hybrid is needed, identify what to borrow from a secondary template.
56
+
57
+ **Important:** Features covered by shared modules (consent, paywall, push notifications, etc.) should NOT affect template scoring — they are handled by module selection in Phase 2.
58
+
59
+ ### Phase 2 — Module Selection
60
+
61
+ Uses the template selected in Phase 1 for improved accuracy.
62
+
63
+ #### Step 5 — Read the Modules Catalog
64
+
65
+ Read `templates/shared/MODULES_CATALOG.md` thoroughly. Understand each module's:
66
+ - "Best-For Keywords" in the decision matrix
67
+ - "Relevant Templates" column
68
+ - Module dependencies
69
+
70
+ #### Step 6 — Match Modules by Keywords + Relevant Templates
71
+
72
+ For every module in the catalog:
73
+ 1. Compare its "Best-For Keywords" against the user's description (primary signal)
74
+ 2. Check if the **selected template** (from Phase 1) is in the "Relevant Templates" column (boost signal)
75
+ 3. If keyword matches AND template matches → **strong include**
76
+ 4. If keyword matches but template doesn't match → include with lower confidence
77
+ 5. If no keyword match but template matches → consider if implied by domain
78
+
79
+ **Selection guidance:**
80
+ - Aim for **5-15 modules** that genuinely match the app's features
81
+ - Don't over-select — only include modules the app will actually use
82
+ - Don't under-select — if a keyword matches, the module is likely needed
83
+ - Consider implicit needs (e.g., a "shopping app" implies payment, a "social app" implies sharing)
84
+
85
+ #### Step 7 — BaaS Module Selection
86
+
87
+ **BaaS module selection (FirebaseProvider, SupabaseProvider, CachedRepository):**
88
+ - Select FirebaseProvider OR SupabaseProvider (not both) when the description mentions: "real data", "users", "auth", "login", "sign up", "accounts", "cloud", "sync", "backend", "database", "multi-device", "server"
89
+ - Default (no BaaS keywords): NO BaaS module. The app uses `localStorage` (Core Data / Room) by default.
90
+ - If SupabaseProvider is selected, also add CachedRepository (Supabase has no built-in offline cache)
91
+ - If FirebaseProvider is selected, do NOT add CachedRepository (Firestore has built-in offline persistence)
92
+ - Prefer Firebase for "Google ecosystem" keywords, Supabase for "PostgreSQL", "open source", "self-hosted" keywords
93
+ - When both would fit equally, prefer Firebase (more mature mobile SDK)
94
+
95
+ #### Step 8 — Check Dependencies
96
+
97
+ Verify that included modules have their dependencies met:
98
+ - Paywall depends on BiometricAuth (optional)
99
+ - AccountDeletion depends on ConsentPrivacy
100
+ - PushNotifications depends on ConsentPrivacy
101
+ - PaymentMethods depends on Paywall
102
+ - GamificationKit depends on ChartsLibrary
103
+ - NotificationCenter depends on PushNotifications
104
+ - CloudSync depends on NetworkBanner
105
+ - LiveActivities depends on PushNotifications
106
+ - SupabaseProvider depends on CachedRepository (for offline support)
107
+ - FirebaseProvider depends on ErrorHandling (optional), NetworkBanner (optional)
108
+ - SupabaseProvider depends on ErrorHandling (optional), NetworkBanner (optional)
109
+
110
+ If a dependency is missing, add it.
111
+
112
+ #### Step 9 — Animation & Sensory Module Heuristics
113
+
114
+ When the user description contains words like **"stunning", "beautiful", "premium feel", "polished", "delightful", "smooth", "animated", "modern", "sleek", "creative", "artistic", "colorful", "vibrant", "elegant", "stylish", "cool", "interactive"**, consider these signal-word matches:
115
+
116
+ | Signal Word | Consider Modules |
117
+ |---|---|
118
+ | stunning, beautiful, premium, polished | MicroInteractions, AnimatedTransitions, CelebrationEffects |
119
+ | haptic, tactile, vibration, feedback | HapticEngine |
120
+ | sound, audio, click sound, chime | AudioFeedback |
121
+ | parallax, scroll effect, header animation | ScrollEffects |
122
+ | confetti, celebration, achievement | CelebrationEffects |
123
+ | onboarding, walkthrough, tutorial | AnimatedOnboarding |
124
+ | transitions, hero, card flip, animated navigation | AnimatedTransitions |
125
+ | micro-animations, bounce, press, stagger | MicroInteractions |
126
+
127
+ **Auto-include rule:** When ANY of HapticEngine, AudioFeedback, ScrollEffects, CelebrationEffects, MicroInteractions, AnimatedTransitions, or AnimatedOnboarding is selected, **MotionPreferences is automatically added** (it provides the accessibility foundation — reduce motion support).
128
+
129
+ **Visual liveliness rule:** For apps that should feel vibrant and alive (most consumer apps — shopping, social, food, fitness, travel, art, music, creative, lifestyle), automatically include **MicroInteractions** (press feedback, bounces) unless the domain explicitly demands restraint (medical, legal, finance). This ensures every app gets basic visual polish through press feedback and toggle animations.
130
+
131
+ #### Step 10 — Final Module List
132
+
133
+ Produce the final list of selected modules with reasoning for each.
134
+
135
+ ## Report Output
136
+
137
+ Write the report to `output/{app-name}/reports/02-catalog-analysis.md`:
138
+
139
+ ```markdown
140
+ # Catalog Analysis Report
141
+
142
+ **Step:** 0
143
+ **Skill:** catalog-analyzer
144
+ **Timestamp:** {ISO 8601}
145
+ **Result:** PASS
146
+
147
+ ## Template Selection
148
+
149
+ **Selected Template:** {TemplateName}
150
+ **Confidence:** high | medium | low
151
+
152
+ ### Reasoning
153
+
154
+ {2-3 sentences explaining why this template was chosen}
155
+
156
+ ### Scoring
157
+
158
+ | Template | Score | Match Criteria | Exclusions |
159
+ |----------|-------|---------------|------------|
160
+ | {name} | {/10} | {matched} | {any} |
161
+
162
+ ### Hybrid Recommendation
163
+
164
+ **Borrow From:** {other template name} or "none"
165
+ **Hybrid Notes:** {what to borrow and why} or "n/a"
166
+
167
+ ## Module Selection — {N} total
168
+
169
+ | Module | Matched Keywords | Template Boost | Reason |
170
+ |--------|-----------------|----------------|--------|
171
+ | {name} | {keywords} | yes/no | {why included} |
172
+ ...
173
+
174
+ ### Excluded Modules
175
+
176
+ | Module | Reason for Exclusion |
177
+ |--------|---------------------|
178
+ ...
179
+
180
+ ### Dependencies Added
181
+
182
+ | Module | Added Because |
183
+ |--------|--------------|
184
+ | {name} | Required by {other module} |
185
+ ...
186
+ ```
187
+
188
+ Update `output/{app-name}/reports/summary.json` — read the file, append this step.
189
+
190
+ **Timing:** Record the current timestamp when you begin this skill. When writing the step entry, set `"startedAt"` to that timestamp (ISO 8601) and `"durationSeconds"` to the elapsed seconds.
191
+
192
+ ```json
193
+ {
194
+ "step": 0,
195
+ "name": "catalog-analysis",
196
+ "startedAt": "{ISO 8601 timestamp}",
197
+ "durationSeconds": 0,
198
+ "result": "PASS",
199
+ "reportFile": "02-catalog-analysis.md",
200
+ "template": "{TemplateName}",
201
+ "confidence": "high|medium|low",
202
+ "borrowFrom": "{other template or null}",
203
+ "modulesSelected": {N}
204
+ }
205
+ ```
206
+
207
+ Also update the top-level `"template"` field in summary.json.
208
+
209
+ ## Important Rules
210
+
211
+ - This skill is READ-ONLY — do NOT create, edit, or delete any app source files during this step
212
+ - The ONLY files you write are the report files in `reports/`
213
+ - Always recommend exactly ONE primary template
214
+ - If confidence is "low", explain what aspects don't fit well
215
+ - Do NOT recommend building from scratch — always pick the closest template
216
+ - Consider the platform when relevant — all templates are available on iOS, Android, and React Native
217
+ - For React Native, templates use TypeScript + React Navigation + custom hooks (MVVM-hook pattern)
218
+ - Features covered by shared modules should NOT affect template scoring — they are handled in Phase 2
219
+ - No modules are auto-included — every module must earn its place via keyword matching (exception: MotionPreferences is auto-included when any animation/sensory module is selected)
220
+ - Aim for 5-15 modules — be selective, not exhaustive
221
+ - Module integration happens later during customization (Steps 4-5) — this skill only produces the selection list
222
+ - The "Relevant Templates" column is a **boost signal**, not a hard filter — a module can be selected without template match if keywords are strong
@@ -9,8 +9,8 @@ Use this skill to produce a single, comprehensive customization manifest before
9
9
 
10
10
  ## When to Use
11
11
 
12
- - After Step 0 (Prompt Validation), Step 1 (Template Selection), and Step 4a (Design Brand Selection) are complete
13
- - After Step 1 (Clone) and Step 3 (Rename) are complete — the output app directory exists
12
+ - After Step 0 (Prompt Validation, Catalog Analysis, Design Brand Selection) is complete
13
+ - After Step 1 (Clone) and Step 2 (Rename) are complete — the output app directory exists
14
14
  - BEFORE any code modifications (AppConfig, MockDataProvider, screens, theme)
15
15
 
16
16
  ## Context You Need
@@ -23,7 +23,7 @@ Use this skill to produce a single, comprehensive customization manifest before
23
23
  - **Selected template** — which template was cloned (e.g., "TrackTemplate")
24
24
  - **Selected design brand** — brand name and file path (e.g., "VibrantPlayful", `designs/brands/vibrant-playful.md`)
25
25
  - **Adaptation suggestions** — from the design-selector (if any)
26
- - **Selected modules** — from the module selection report (`reports/02b-module-selection.md`)
26
+ - **Selected modules** — from the catalog analysis report (`reports/02-catalog-analysis.md`)
27
27
 
28
28
  ## Instructions
29
29
 
@@ -37,7 +37,7 @@ Read these files in parallel (batch your read calls):
37
37
  4. **MockDataProvider** — find and read the MockDataProvider file — understand seed data structure, entity types, item counts
38
38
  5. **Template Features directory** — list all screen files in `Features/` (iOS), `features/` (Android), or `src/screens/` (React Native)
39
39
  6. **TESTING_MANIFEST.md** — `output/{app-name}/TESTING_MANIFEST.md` — all test IDs, screens, element counts
40
- 7. **Module selection report** — `output/{app-name}/reports/02b-module-selection.md` — which shared modules were selected
40
+ 7. **Catalog analysis report** — `output/{app-name}/reports/02-catalog-analysis.md` — which template and shared modules were selected
41
41
 
42
42
  ### Step 2 — Produce the Design Brief
43
43
 
@@ -165,7 +165,7 @@ DATA REPOSITORY:
165
165
 
166
166
  ### Step 6 — Produce Module Integration Plan
167
167
 
168
- Read the module selection report (`output/{app-name}/reports/02b-module-selection.md`). For each selected module, plan how it connects to the app:
168
+ Read the "Module Selection" section from `output/{app-name}/reports/02-catalog-analysis.md`. For each selected module, plan how it connects to the app:
169
169
 
170
170
  ```
171
171
  MODULE INTEGRATION PLAN:
@@ -271,6 +271,39 @@ Write the complete manifest to `output/{app-name}/reports/customization-manifest
271
271
  - Spacing: {scale}
272
272
  - Icon style: {filled|outlined}
273
273
 
274
+ ### Visual Polish Plan
275
+
276
+ #### Shadow Style
277
+ | Token | Value |
278
+ |-------|-------|
279
+ | Shadow type | {colored / neutral} |
280
+ | Shadow color | {primary at X% / black at X%} |
281
+ | Shadow blur | {X}pt |
282
+ | Shadow y-offset | {X}pt |
283
+ | Floating element shadow | {deeper: blur Xpt, y Xpt} |
284
+
285
+ #### Gradient Usage
286
+ - Hero sections: {primary-to-secondary gradient / subtle gradient / none}
287
+ - CTA buttons: {gradient / solid}
288
+ - Section backgrounds: {subtle gradient / solid}
289
+
290
+ #### Animation Choreography
291
+ | Token | Value |
292
+ |-------|-------|
293
+ | Spring preset | {bouncy / smooth / snappy} |
294
+ | Spring response | {X}s |
295
+ | Spring damping | {X} |
296
+ | Stagger delay | {X}ms per item |
297
+ | Press scale | {0.95} |
298
+ | Button feedback | {scale + haptic (light)} |
299
+ | Favorite toggle | {heart bounce + haptic} |
300
+ | Success event | {confetti / sparkle / none} |
301
+
302
+ #### Depth & Material
303
+ - Sheet backgrounds: {glass blur / solid / gradient}
304
+ - Navigation bar: {transparent+blur / solid / gradient}
305
+ - Tab bar: {blur / solid / elevated}
306
+
274
307
  ### Icon Mapping — Tabs
275
308
  | Tab | Label | iOS (SF Symbol) | Android (Material) |
276
309
  |-----|-------|-----------------|-------------------|
@@ -364,11 +397,25 @@ Write the complete manifest to `output/{app-name}/reports/customization-manifest
364
397
  {List selected animation/sensory modules and their purpose in this app}
365
398
 
366
399
  ### Per-Screen Animation Modifiers
400
+
401
+ **Built-in modifiers (always available, no module required):**
402
+ - `.staggeredAppear(index:)` — staggered fade+slide for list items
403
+ - `.slideIn()` — slide-from-bottom on appear
404
+ - `.slideAndFade()` — slide-from-side + fade on appear
405
+ - `.scaleOnPress()` — scale-down press feedback (0.95 + spring)
406
+ - `.hapticFeedback()` / `.hapticFeedback(.medium)` — haptic on tap
407
+ - `.bounceOnChange(isActive:)` — scale bounce on state toggle
408
+ - `.cardShadow()` — subtle shadow for cards/elevated surfaces
409
+ - `.elevatedShadow()` — deeper shadow for FABs/floating elements
410
+ - `.shimmer()` — shimmer loading overlay for skeleton/placeholder views
411
+ - `.pulse()` — repeating scale pulse for live indicators, notification badges
412
+ - `.heartBounce(isActive:)` — bounce-on-activate for favorite/like buttons
413
+
367
414
  | Screen File | Modifiers to Apply | Notes |
368
415
  |---|---|---|
369
- | HomeView.swift | `.staggeredAppearance()`, `.hapticFeedback(.selection)` | List items stagger in on appear |
370
- | DetailView.swift | `.slideAndFade()`, `.parallaxHeader()` | Hero image parallax, content slides in |
371
- | CreateView.swift | `.scaleOnPress()`, `.hapticFeedback(.success)` on save | Button feedback |
416
+ | HomeView.swift | `.staggeredAppear(index:)`, `.cardShadow()` | List items stagger in, cards have shadows |
417
+ | DetailView.swift | `.slideAndFade()`, `.cardShadow()` | Content slides in with shadows |
418
+ | CreateView.swift | `.scaleOnPress()`, `.hapticFeedback(.medium)` on save | Button feedback |
372
419
  | {screen} | {modifiers} | {notes} |
373
420
  ...
374
421
 
@@ -9,7 +9,7 @@ Use this skill to select the best visual design brand for the user's app.
9
9
 
10
10
  ## When to Use
11
11
 
12
- - At Step 4a of the AppAgent workflow, after the template is cloned and renamed
12
+ - At Step 0 of the AppAgent workflow, in parallel with prompt validation and catalog analysis
13
13
  - When you need to pick a visual identity from the design brand catalog
14
14
  - Before applying design tokens to the app
15
15
 
@@ -18,7 +18,7 @@ Use this skill to select the best visual design brand for the user's app.
18
18
  - **App name** — display name (e.g., "PawSpa")
19
19
  - **App description** — what the app does and who it's for
20
20
  - **Platform** — `ios` or `android`
21
- - **App template** — which template was selected (e.g., "BookTemplate")
21
+ - **App template** (optional) — which template was selected, if available (may not be when running in parallel)
22
22
  - **User style preferences** — any explicit color, style, or visual direction the user mentioned (may be empty)
23
23
 
24
24
  ## Instructions
@@ -40,6 +40,7 @@ For each brand in the catalog:
40
40
  3. Apply "NOT a match when" exclusion rules
41
41
  4. Follow the "Brand Selection Guide" decision flow
42
42
  5. Consider the "Hybrid Brands" table if the app spans categories
43
+ 6. **Energy bias**: When multiple brands score equally, prefer the one with higher Energy score (from the catalog's decision matrix). For ambiguous domains (not explicitly medical, finance, or corporate), bias toward brands with Energy >= 3. Apps should feel vibrant and alive by default — only choose low-energy brands when the domain clearly demands restraint.
43
44
 
44
45
  ### Step 3 — Handle User Style Preferences
45
46
 
@@ -59,7 +60,7 @@ Write the report to `output/{app-name}/reports/03-design-brand.md`:
59
60
  ```markdown
60
61
  # Design Brand Report
61
62
 
62
- **Step:** 4
63
+ **Step:** 0
63
64
  **Skill:** design-selector
64
65
  **Timestamp:** {ISO 8601}
65
66
  **Result:** PASS
@@ -99,7 +100,7 @@ Update `output/{app-name}/reports/summary.json` — read the file, append this s
99
100
 
100
101
  ```json
101
102
  {
102
- "step": 4,
103
+ "step": 0,
103
104
  "name": "design-brand",
104
105
  "startedAt": "{ISO 8601 timestamp}",
105
106
  "durationSeconds": 0,
@@ -121,4 +122,4 @@ Also update the top-level `"designBrand"` field in summary.json.
121
122
  - Do NOT recommend building a custom brand from scratch — always start with a catalog brand
122
123
  - If the user mentioned specific colors, put them in adaptations — never ignore user style preferences
123
124
  - The brand file path must use the exact filename from the catalog (kebab-case .md)
124
- - Consider the app template when relevant — a FinanceTemplate naturally pairs with CorporateProfessional, but can be overridden
125
+ - If the app template is available, consider it as a weak hint — a FinanceTemplate naturally pairs with CorporateProfessional, but the user description keywords are the primary signal
@@ -9,9 +9,9 @@ Use this skill to produce a complete design brief for a newly cloned app. The pr
9
9
 
10
10
  ## When to Use
11
11
 
12
- - After the `design-selector` subagent has picked a brand (Step 4a complete)
13
- - Before AppConfig customization (Step 6) — the design brief feeds into CUSTOMIZE:THEME
14
- - Before the platform customizer runs (Step 8) — it applies the tokens to code
12
+ - After the `design-selector` subagent has picked a brand (Step 0 complete)
13
+ - Before AppConfig customization (Step 4) — the design brief feeds into CUSTOMIZE:THEME
14
+ - Before the platform customizer runs (Step 5) — it applies the tokens to code
15
15
 
16
16
  ## What You Produce
17
17
 
@@ -39,8 +39,9 @@ If the `design-selector` provided a brand:
39
39
  3. Extract layout tokens (corner radius, spacing scale, card elevation, border width)
40
40
  4. Extract typography settings (font family, heading weight, body weight, body size)
41
41
  5. Extract icon style preferences (filled vs outlined, line weight)
42
- 6. Note any brand-specific do's, don'ts, and overrides
43
- 7. Note any ADAPT suggestions from the design-selector
42
+ 6. Extract **Motion & Effects** tokens (default spring, press scale, stagger delay, shadow style, gradient usage, depth approach, haptic policy)
43
+ 7. Note any brand-specific do's, don'ts, and overrides
44
+ 8. Note any ADAPT suggestions from the design-selector
44
45
 
45
46
  **If the design-selector suggested adaptations** (in the ADAPT field):
46
47
  - Apply color overrides (e.g., "shift primary to teal for pet domain")
@@ -256,7 +257,7 @@ ACCESSIBILITY:
256
257
 
257
258
  After producing the design brief, the tokens are applied to specific files in subsequent steps. All templates follow a standardized theme structure:
258
259
 
259
- ### iOS (applied by ios-customizer in Step 8)
260
+ ### iOS (applied by ios-customizer in Step 5)
260
261
 
261
262
  | Token Category | File | Structure |
262
263
  |---------------|------|-----------|
@@ -268,7 +269,7 @@ After producing the design brief, the tokens are applied to specific files in su
268
269
  | Domain-specific colors | `Core/Theme/Colors.swift` | Semantic color tokens (e.g., `Color.incomeColor`, `Color.starFilled`) |
269
270
  | Gradient definitions | `Core/Theme/Colors.swift` | `LinearGradient` extensions |
270
271
 
271
- ### Android (applied by android-customizer in Step 8)
272
+ ### Android (applied by android-customizer in Step 5)
272
273
 
273
274
  | Token Category | File | Structure |
274
275
  |---------------|------|-----------|