@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
package/README.md CHANGED
@@ -36,6 +36,8 @@ AI-powered mobile app generator that turns a natural language description into a
36
36
  - **Quick build mode** -- skeleton template + fast inline customization + smoke test, no analysis overhead
37
37
  - **App management** -- list all previously built apps and re-launch any of them on a simulator/emulator
38
38
  - **Standalone UI testing** -- re-run UI testing on a previously built app without rebuilding from scratch
39
+ - **Deep testing pipeline** -- code-analysis test planning + screenshot/accessibility-driven exploratory testing + structured test execution + detailed bug reports
40
+ - **Standalone bug fixing** -- auto-fix bugs from a previous deep-test run without re-running the full test suite
39
41
 
40
42
  ## Installation
41
43
 
@@ -146,6 +148,9 @@ npm start -- -d "A pet grooming booking app called PawSpa"
146
148
  | `-s`, `--scratch` | Build from scratch using templates as reference instead of cloning (slower, more flexible) |
147
149
  | `-q`, `--quick` | Quick build -- skeleton template, fast inline customization, smoke test only |
148
150
  | `-u`, `--update <source>` | Update an existing app from a GitHub URL, local path, or app name. Creates a branch and PR. |
151
+ | `--deep-test <name>` | Deep test: code analysis, exploratory + structured testing, bug report |
152
+ | `--deep-test <name> --fix` | Deep test + auto-fix discovered bugs |
153
+ | `--fix <name>` | Fix bugs from a previous deep-test bug report |
149
154
 
150
155
  Defaults can also be set via environment variables: `APPAGENT_ENGINE=cursor` or `APPAGENT_PLATFORM=android`.
151
156
 
@@ -183,7 +188,7 @@ $ npm run dev
183
188
  ● [0s] Model: claude-sonnet-4-5-20250929
184
189
  ● [3s] SUBAGENT dispatched: Select best iOS template
185
190
  ● [3s] SUBAGENT dispatched: Select best design brand
186
- ● [10s] Report: 02-template-selection.md
191
+ ● [10s] Report: 02-catalog-analysis.md
187
192
  ● [11s] SHELL: cp -r templates/ios/ShopTemplate/ output/vinylvault-ios/
188
193
  ● [30s] Report: 05-content-brief.md
189
194
  ● [60s] Progress: 48 tool calls, 15 writes, 28 reads
@@ -270,6 +275,57 @@ The `--test` command reads the app's `summary.json` and `customization-manifest.
270
275
 
271
276
  If the build artifact has been cleaned (e.g., DerivedData was deleted), the agent will automatically rebuild the app before testing.
272
277
 
278
+ ### Deep test a previously built app
279
+
280
+ The `--deep-test` command runs a comprehensive 4-phase testing pipeline that goes far beyond the standard `--test` command:
281
+
282
+ 1. **Phase 1: Test Plan Generation** (offline) -- analyzes source code (Views, ViewModels, AppConfig, MockDataProvider) to build a structured test matrix with per-screen checklists, edge cases, and regression checks
283
+ 2. **Phase 2: Exploratory Testing** -- an AI tester explores the app using only screenshots and the accessibility tree (does NOT read source code), finding visual bugs, accessibility issues, UX problems, and template leftovers
284
+ 3. **Phase 3: Structured Testing** -- follows the test plan from Phase 1, systematically verifying each test case
285
+ 4. **Phase 4: Auto-Fix** (optional) -- reads the bug report and fixes each bug, rebuilds, and verifies
286
+
287
+ Phases 2 and 3 run in **parallel** on separate simulators -- the exploratory tester discovers issues code analysis can't predict, while the structured tester verifies known requirements.
288
+
289
+ ```bash
290
+ # Deep test only (generates test plan + bug report)
291
+ npm start -- --deep-test vinylvault-ios
292
+
293
+ # Deep test + auto-fix discovered bugs
294
+ npm start -- --deep-test vinylvault-ios --fix
295
+
296
+ # With npx
297
+ npx @shaykec/app-agent --deep-test vinylvault-ios
298
+ npx @shaykec/app-agent --deep-test vinylvault-ios --fix
299
+
300
+ # Specify engine and model
301
+ npx @shaykec/app-agent --deep-test vinylvault-ios --engine claude --model sonnet-4.5
302
+ ```
303
+
304
+ **Reports generated:**
305
+ - `reports/10-test-plan.md` -- structured test matrix with per-screen checklists
306
+ - `reports/11-bug-report.md` -- merged bug report from exploratory + structured testing
307
+ - `reports/12-fix-report.md` -- fix details with root causes and verification results (only with `--fix`)
308
+
309
+ **How it differs from `--test`:**
310
+ - Generates a test plan before testing (visibility into what will be tested)
311
+ - Adds exploratory testing driven by screenshots + accessibility tree
312
+ - Produces a structured bug report with severity classifications (P0-P3)
313
+ - Supports standalone fix mode
314
+
315
+ ### Fix bugs from a deep test
316
+
317
+ The `--fix` command is a standalone mode that reads an existing bug report from a previous `--deep-test` run and fixes the documented bugs without re-running the full test suite.
318
+
319
+ ```bash
320
+ # Fix bugs from a previous deep-test
321
+ npm start -- --fix vinylvault-ios
322
+
323
+ # With npx
324
+ npx @shaykec/app-agent --fix vinylvault-ios
325
+ ```
326
+
327
+ The agent reads `reports/11-bug-report.md`, prioritizes bugs (P0 Critical → P3 Low), applies minimal fixes, rebuilds, and verifies each fix on a simulator. The fix report is written to `reports/12-fix-report.md`.
328
+
273
329
  ### Build from scratch
274
330
 
275
331
  By default, AppAgent clones a template and customizes it. The `--scratch` flag enables a from-scratch mode where the agent reads templates as architectural reference and writes all code itself. This is useful when:
@@ -432,17 +488,18 @@ Two speed tiers:
432
488
  │ ├── agent-prompt.md # Template-mode build prompt (default)
433
489
  │ ├── scratch-agent-prompt.md # From-scratch build prompt (used by --scratch)
434
490
  │ ├── quick-agent-prompt.md # Quick build prompt (used by --quick)
435
- │ ├── update-agent-prompt.md # Update mode prompt (used by --update)
436
- └── test-agent-prompt.md # UI testing prompt template (used by --test)
491
+ │ ├── update-agent-prompt.md # Update mode prompt (used by --update)
492
+ ├── test-agent-prompt.md # UI testing prompt template (used by --test)
493
+ │ ├── deep-test-agent-prompt.md # Deep testing prompt (used by --deep-test)
494
+ │ └── fix-agent-prompt.md # Bug fix prompt (used by --fix)
437
495
 
438
496
  ├── CLAUDE.md # Claude Code always-applied rules (workflow + safety)
439
497
 
440
498
  ├── .cursor/ # Cursor CLI engine configuration
441
499
  │ ├── skills/ # Skills (step-by-step procedures the agent follows)
442
500
  │ │ ├── prompt-validator/ # Step 0: Validate prompt for injection/malice
443
- │ │ ├── template-selector/ # Step 0: Pick the best template
501
+ │ │ ├── catalog-analyzer/ # Step 0: Pick the best template + shared modules
444
502
  │ │ ├── design-selector/ # Step 0: Pick the best design brand
445
- │ │ ├── module-selector/ # Step 0: Pick shared modules by keyword
446
503
  │ │ ├── module-integrator/ # Step 4: Read module references and write adapted code
447
504
  │ │ ├── app-renaming/ # Step 2: Rename app consistently
448
505
  │ │ ├── customization-planner/ # Step 3: Produce customization manifest
@@ -455,7 +512,10 @@ Two speed tiers:
455
512
  │ │ ├── build-tester/ # Step 6: Compile and report errors
456
513
  │ │ ├── code-auditor/ # Step 7: Security code audit
457
514
  │ │ ├── output-validator/ # Step 7: Completeness/consistency check
458
- │ │ └── ui-tester/ # Steps 8-10: Simulator testing + Maestro
515
+ │ │ ├── ui-tester/ # Steps 8-10: Simulator testing + Maestro
516
+ │ │ ├── test-planner/ # Deep-test Phase 1: Code analysis → test plan
517
+ │ │ ├── exploratory-tester/ # Deep-test Phase 2: Screenshot + a11y testing
518
+ │ │ └── bug-fixer/ # Deep-test Phase 4: Fix bugs from report
459
519
  │ │
460
520
  │ ├── agents/ # Subagent definitions (read inline by Cursor)
461
521
  │ ├── rules/ # Agent rules (always-on guardrails)
@@ -508,8 +568,7 @@ Two speed tiers:
508
568
  ├── {app source files}
509
569
  ├── reports/ # Audit trail from each workflow step
510
570
  │ ├── 01-prompt-validation.md
511
- │ ├── 02-template-selection.md
512
- │ ├── 02b-module-selection.md
571
+ │ ├── 02-catalog-analysis.md
513
572
  │ ├── 03-design-brand.md
514
573
  │ ├── customization-manifest.md
515
574
  │ ├── 04-content-brief.md
@@ -539,9 +598,8 @@ flowchart TD
539
598
 
540
599
  subgraph Step0 ["Step 0 PARALLEL — 4 Subagents"]
541
600
  PV[["prompt-validator"]]
542
- TS[["template-selector"]]
601
+ CA[["catalog-analyzer"]]
543
602
  DS[["design-selector"]]
544
- MS[["module-selector"]]
545
603
  end
546
604
 
547
605
  Step0 -->|"Validation FAIL"| Abort(["ABORT"])
@@ -597,7 +655,7 @@ flowchart TD
597
655
 
598
656
  | Step | Action | Parallelism | Skill | Report |
599
657
  |------|--------|-------------|-------|--------|
600
- | 0 | Validate prompt + select template + select design + select modules | **4 parallel tasks** | `prompt-validator`, `template-selector`, `design-selector`, `module-selector` | `01-prompt-validation.md`, `02-template-selection.md`, `03-design-brand.md`, `02b-module-selection.md` |
658
+ | 0 | Validate prompt + catalog analysis + select design | **3 parallel tasks** | `prompt-validator`, `catalog-analyzer`, `design-selector` | `01-prompt-validation.md`, `02-catalog-analysis.md`, `03-design-brand.md` |
601
659
  | 1 | Clone template to `output/` | -- | -- | -- |
602
660
  | 4 | Integrate shared modules | -- | `module-integrator` | -- |
603
661
  | 2 | Rename the app | -- | `app-renaming` | -- |
@@ -629,6 +687,14 @@ Every skill writes a markdown report to `output/{app-name}/reports/`. A `summary
629
687
  }
630
688
  ```
631
689
 
690
+ The `--deep-test` pipeline generates additional reports:
691
+
692
+ | Report | Generated By | Description |
693
+ |--------|-------------|-------------|
694
+ | `10-test-plan.md` | `test-planner` skill | Structured test matrix with per-screen checklists, edge cases, regression checks |
695
+ | `11-bug-report.md` | `exploratory-tester` + `ui-tester` | Merged bug report with severity (P0-P3) and category tags |
696
+ | `12-fix-report.md` | `bug-fixer` skill | Fix details, root causes, files modified, verification results (only with `--fix`) |
697
+
632
698
  ## Template Catalog
633
699
 
634
700
  14 production-ready templates, each available for both iOS (Swift/SwiftUI) and Android (Kotlin/Jetpack Compose):
@@ -8,21 +8,23 @@
8
8
 
9
9
  ## Decision Matrix
10
10
 
11
- | Brand | Tone | Best-For Keywords |
12
- |-------|------|------------------|
13
- | ModernMinimal | minimal | clean, simple, productivity, tools, notes, tasks, utilities, dev tools, calculator, scanner, minimalist |
14
- | VibrantPlayful | playful | fun, colorful, kids, pets, games, social, casual food, party, events, birthday, rewards, stickers |
15
- | CorporateProfessional | professional | business, finance, legal, medical, enterprise, B2B, insurance, banking, consulting, HR, compliance |
16
- | DarkLuxe | bold | luxury, premium, nightlife, music, fashion, high-end retail, VIP, concierge, wine, jewelry, watches |
17
- | NatureOrganic | playful | nature, eco, organic, wellness, outdoor, garden, farm, hiking, sustainability, herbal, plant-based |
18
- | NeoBrutalist | bold | creative, media, agency, youth, raw, edgy, art, magazine, portfolio, streetwear, punk, indie |
19
- | SoftGradient | playful | calm, meditation, weather, dating, lifestyle, sleep, mood, journal, affirmations, self-care, astrology |
20
- | TechDynamic | bold | fitness, sport, automotive, gaming, tech, fast, performance, racing, esports, crypto, dashboard |
21
- | KidsPlayful | fun | children, kids, toddler, education, learning, ABCs, math, family, safe, COPPA, parenting, school, ages 3-12 |
22
- | MedicalClinical | clinical | health, medical, telemedicine, patient, hospital, pharmacy, symptoms, HIPAA, clinical, doctor, nurse, wellness |
23
- | RetroVintage | nostalgic | vintage, retro, coffee, artisan, handmade, bookstore, analog, nostalgia, craft, antique, journal, photography |
24
- | SportAthletic | energetic | athletic, sport, training, competition, running, cycling, gym, Nike-like, Adidas-like, race, team, coach |
25
- | AccessibleHighContrast | inclusive | accessible, high contrast, WCAG AAA, elderly, vision, inclusive, government, public service, universal design |
11
+ | Brand | Tone | Energy | Best-For Keywords |
12
+ |-------|------|--------|------------------|
13
+ | ModernMinimal | minimal | 1 | clean, simple, productivity, tools, notes, tasks, utilities, dev tools, calculator, scanner, minimalist |
14
+ | VibrantPlayful | playful | 5 | fun, colorful, kids, pets, games, social, casual food, party, events, birthday, rewards, stickers |
15
+ | CorporateProfessional | professional | 1 | business, finance, legal, medical, enterprise, B2B, insurance, banking, consulting, HR, compliance |
16
+ | DarkLuxe | bold | 3 | luxury, premium, nightlife, music, fashion, high-end retail, VIP, concierge, wine, jewelry, watches |
17
+ | NatureOrganic | playful | 2 | nature, eco, organic, wellness, outdoor, garden, farm, hiking, sustainability, herbal, plant-based |
18
+ | NeoBrutalist | bold | 4 | creative, media, agency, youth, raw, edgy, art, magazine, portfolio, streetwear, punk, indie |
19
+ | SoftGradient | playful | 3 | calm, meditation, weather, dating, lifestyle, sleep, mood, journal, affirmations, self-care, astrology |
20
+ | TechDynamic | bold | 4 | fitness, sport, automotive, gaming, tech, fast, performance, racing, esports, crypto, dashboard |
21
+ | KidsPlayful | fun | 5 | children, kids, toddler, education, learning, ABCs, math, family, safe, COPPA, parenting, school, ages 3-12 |
22
+ | MedicalClinical | clinical | 1 | health, medical, telemedicine, patient, hospital, pharmacy, symptoms, HIPAA, clinical, doctor, nurse, wellness |
23
+ | RetroVintage | nostalgic | 2 | vintage, retro, coffee, artisan, handmade, bookstore, analog, nostalgia, craft, antique, journal, photography |
24
+ | SportAthletic | energetic | 4 | athletic, sport, training, competition, running, cycling, gym, Nike-like, Adidas-like, race, team, coach |
25
+ | AccessibleHighContrast | inclusive | 1 | accessible, high contrast, WCAG AAA, elderly, vision, inclusive, government, public service, universal design |
26
+
27
+ > **Energy** (1-5): How visually dynamic and animated the brand feels. Higher = more shadows, gradients, animations, micro-interactions. When brands tie on match score, prefer higher energy. For ambiguous domains, bias toward Energy >= 3.
26
28
 
27
29
  ---
28
30
 
@@ -264,3 +264,56 @@
264
264
  - Tab bar / Bottom navigation: 49-80pt (plus safe area)
265
265
  - Content top padding: 16pt below navigation bar
266
266
  - Content bottom padding: 16pt above tab bar (before safe area)
267
+
268
+ ## Visual Effects Tokens
269
+
270
+ These tokens control visual depth, motion, and polish. Every brand MUST define values for these categories.
271
+
272
+ ### Shadow System
273
+
274
+ All apps MUST use shadows for visual depth. Cards, elevated surfaces, FABs, and modals should have appropriate shadow levels.
275
+
276
+ | Token | Blur | Y-Offset | Opacity | Usage |
277
+ |-------|------|----------|---------|-------|
278
+ | shadowSmall | 4pt/dp | 2pt/dp | 6% | Chips, badges, subtle elevation |
279
+ | shadowMedium | 8pt/dp | 4pt/dp | 8% | Cards, list items, elevated surfaces |
280
+ | shadowLarge | 16pt/dp | 8pt/dp | 12% | FABs, floating elements, modals |
281
+
282
+ Shadow color: neutral (black) by default. Brands may override with primary-tinted shadows (e.g., primary at 10% opacity) for a more vibrant look. Colored shadows are preferred for playful/bold brands.
283
+
284
+ ### Gradient System
285
+
286
+ Gradients add visual richness. Use sparingly on key surfaces — hero sections, primary CTAs, onboarding backgrounds.
287
+
288
+ | Token | Direction | Usage |
289
+ |-------|-----------|-------|
290
+ | primaryGradient | 135deg (top-left to bottom-right) | Hero sections, prominent CTAs, onboarding |
291
+ | accentGradient | 135deg | Secondary actions, badges, decorative elements |
292
+ | subtleGradient | 180deg (top to bottom) | Section backgrounds, surface variation |
293
+
294
+ Gradient stops derived from brand palette: primaryGradient uses primary → secondary, accentGradient uses secondary → tertiary, subtleGradient uses surfaceVariant → background. Brands define their own stop colors.
295
+
296
+ ### Animation Presets
297
+
298
+ Motion brings interfaces to life. All apps should have entrance animations, press feedback, and state change animations.
299
+
300
+ | Token | Response | Damping | Usage |
301
+ |-------|----------|---------|-------|
302
+ | springBouncy | 0.4s | 0.65 | Playful brands, toggles, celebrations, exaggerated feedback |
303
+ | springSmooth | 0.5s | 0.85 | Professional brands, navigation transitions, subtle fades |
304
+ | springSnappy | 0.3s | 0.75 | Bold/tech brands, press feedback, quick responses |
305
+ | staggerDelay | 50ms | — | Delay between consecutive list item entrance animations |
306
+ | pressScale | 0.95 | — | Button/card scale factor on press (springs back to 1.0) |
307
+
308
+ Each brand selects which spring preset to use as its default. All animations MUST respect system Reduce Motion preferences.
309
+
310
+ ### Elevation System
311
+
312
+ Consistent elevation creates visual hierarchy. Higher elevation = more prominent.
313
+
314
+ | Level | iOS Shadow | Android Elevation | React Native |
315
+ |-------|-----------|-------------------|-------------|
316
+ | elevationNone | no shadow | 0dp | elevation: 0 |
317
+ | elevationLow | shadow(radius: 2, y: 1) | 2dp | elevation: 2 |
318
+ | elevationMedium | shadow(radius: 8, y: 4) | 4dp | elevation: 4 |
319
+ | elevationHigh | shadow(radius: 16, y: 8) | 8dp | elevation: 8 |
@@ -93,6 +93,20 @@
93
93
 
94
94
  ---
95
95
 
96
+ ## Motion & Effects
97
+
98
+ | Token | Value | Notes |
99
+ |-------|-------|-------|
100
+ | Default spring | `springSmooth` | Gentle transitions; must respect `prefers-reduced-motion` |
101
+ | Press scale | 0.96 | Subtle feedback — not disorienting |
102
+ | Stagger delay | 60ms | Slow, trackable entrance for cognitive accessibility |
103
+ | Shadow style | neutral | Visible shadows paired with 2pt borders |
104
+ | Gradient usage | none | NO gradients — high contrast requires flat colors |
105
+ | Depth approach | borders | Thick 2pt borders are the primary depth indicator |
106
+ | Haptic | key actions only | On confirmations, errors — never decorative |
107
+
108
+ ---
109
+
96
110
  ## Do's and Don'ts
97
111
 
98
112
  ### Do
@@ -81,6 +81,20 @@
81
81
 
82
82
  ---
83
83
 
84
+ ## Motion & Effects
85
+
86
+ | Token | Value | Notes |
87
+ |-------|-------|-------|
88
+ | Default spring | `springSmooth` | Professional, predictable transitions |
89
+ | Press scale | 0.96 | Subtle, restrained feedback |
90
+ | Stagger delay | 50ms | Measured list entrance |
91
+ | Shadow style | neutral | Standard gray shadows — nothing decorative |
92
+ | Gradient usage | none | NO gradients — solid, trustworthy surfaces |
93
+ | Depth approach | elevation | Standard Material-style elevation system |
94
+ | Haptic | key actions only | On confirmations, form submissions |
95
+
96
+ ---
97
+
84
98
  ## Do's and Don'ts
85
99
 
86
100
  ### Do
@@ -83,6 +83,20 @@ Note: This brand is dark-first. The "light mode" is a warm gray variant, not pur
83
83
 
84
84
  ---
85
85
 
86
+ ## Motion & Effects
87
+
88
+ | Token | Value | Notes |
89
+ |-------|-------|-------|
90
+ | Default spring | `springSmooth` | Elegant, unhurried transitions |
91
+ | Press scale | 0.96 | Barely perceptible — luxury is subtle |
92
+ | Stagger delay | 50ms | Measured, graceful cascade |
93
+ | Shadow style | colored (gold at 8%) | Warm gold-tinted shadows in dark mode |
94
+ | Gradient usage | hero + CTA | Subtle gold-to-champagne on premium surfaces |
95
+ | Depth approach | shadows + glow | Subtle glow in dark mode, soft shadows in light |
96
+ | Haptic | key actions only | On premium interactions — purchases, favorites |
97
+
98
+ ---
99
+
86
100
  ## Do's and Don'ts
87
101
 
88
102
  ### Do
@@ -88,6 +88,20 @@
88
88
 
89
89
  ---
90
90
 
91
+ ## Motion & Effects
92
+
93
+ | Token | Value | Notes |
94
+ |-------|-------|-------|
95
+ | Default spring | `springBouncy` | High bounce (0.6+) for fun, exaggerated motion |
96
+ | Press scale | 0.90 | Big squish — satisfying for small hands |
97
+ | Stagger delay | 50ms | Visible cascade that children can follow |
98
+ | Shadow style | colored (primary at 12%) | Bright, friendly colored shadows |
99
+ | Gradient usage | everywhere | Backgrounds, cards, buttons — color is fun |
100
+ | Depth approach | shadows | Soft, colorful shadows define layers |
101
+ | Haptic | all taps | Every tap gives feedback for children |
102
+
103
+ ---
104
+
91
105
  ## Do's and Don'ts
92
106
 
93
107
  ### Do
@@ -91,6 +91,20 @@
91
91
 
92
92
  ---
93
93
 
94
+ ## Motion & Effects
95
+
96
+ | Token | Value | Notes |
97
+ |-------|-------|-------|
98
+ | Default spring | `springSmooth` | Calm, ease-in-out only — no bounce or spring |
99
+ | Press scale | 0.97 | Near-invisible — clinical precision |
100
+ | Stagger delay | 50ms | Gentle, non-distracting entrance |
101
+ | Shadow style | neutral | Minimal, clean shadows |
102
+ | Gradient usage | none | NO gradients — clinical clarity |
103
+ | Depth approach | elevation | Standard subtle elevation |
104
+ | Haptic | none | No haptic — avoid sensory surprises in medical context |
105
+
106
+ ---
107
+
94
108
  ## Do's and Don'ts
95
109
 
96
110
  ### Do
@@ -81,6 +81,20 @@
81
81
 
82
82
  ---
83
83
 
84
+ ## Motion & Effects
85
+
86
+ | Token | Value | Notes |
87
+ |-------|-------|-------|
88
+ | Default spring | `springSmooth` | Subtle, barely-there transitions |
89
+ | Press scale | 0.97 | Near-invisible press — motion is minimal |
90
+ | Stagger delay | 50ms | Gentle fade-in, not bouncy cascade |
91
+ | Shadow style | neutral (faint) | Near-invisible shadows; prefer borders |
92
+ | Gradient usage | none | NO gradients — solid colors only |
93
+ | Depth approach | flat / borders | Thin borders and spacing define hierarchy |
94
+ | Haptic | none | No haptic — minimal sensory footprint |
95
+
96
+ ---
97
+
84
98
  ## Do's and Don'ts
85
99
 
86
100
  ### Do
@@ -82,6 +82,20 @@
82
82
 
83
83
  ---
84
84
 
85
+ ## Motion & Effects
86
+
87
+ | Token | Value | Notes |
88
+ |-------|-------|-------|
89
+ | Default spring | `springSmooth` | Organic, flowing motion |
90
+ | Press scale | 0.96 | Gentle press — soft, not aggressive |
91
+ | Stagger delay | 60ms | Natural, unhurried cascade |
92
+ | Shadow style | colored (warm brown at 6%) | Warm earth-tinted shadows |
93
+ | Gradient usage | subtle | Subtle warm gradients on section backgrounds only |
94
+ | Depth approach | shadows | Soft, warm shadows (no borders) |
95
+ | Haptic | key actions only | On plant watering, check-in, save actions |
96
+
97
+ ---
98
+
85
99
  ## Do's and Don'ts
86
100
 
87
101
  ### Do
@@ -81,6 +81,20 @@
81
81
 
82
82
  ---
83
83
 
84
+ ## Motion & Effects
85
+
86
+ | Token | Value | Notes |
87
+ |-------|-------|-------|
88
+ | Default spring | `springSnappy` | Quick, raw, no-frills motion |
89
+ | Press scale | 0.94 | Firm, deliberate press feedback |
90
+ | Stagger delay | 40ms | Snappy cascade |
91
+ | Shadow style | none | NO shadows — thick borders define structure |
92
+ | Gradient usage | none | NO gradients — raw, flat aesthetic |
93
+ | Depth approach | borders | 3pt borders define all edges and layers |
94
+ | Haptic | key actions only | On submit, delete, key structural interactions |
95
+
96
+ ---
97
+
84
98
  ## Do's and Don'ts
85
99
 
86
100
  ### Do
@@ -82,6 +82,20 @@
82
82
 
83
83
  ---
84
84
 
85
+ ## Motion & Effects
86
+
87
+ | Token | Value | Notes |
88
+ |-------|-------|-------|
89
+ | Default spring | `springSmooth` | Gentle, unhurried — nothing flashy |
90
+ | Press scale | 0.95 | Subtle press feedback |
91
+ | Stagger delay | 60ms | Leisurely cascade, relaxed feel |
92
+ | Shadow style | colored (warm brown at 8%) | Warm sepia-tinted shadows |
93
+ | Gradient usage | none | No gradients — this brand is about texture, not effects |
94
+ | Depth approach | shadows | Warm-tinted soft shadows only |
95
+ | Haptic | key actions only | On saves, favorites, key confirmations |
96
+
97
+ ---
98
+
85
99
  ## Do's and Don'ts
86
100
 
87
101
  ### Do
@@ -96,6 +96,20 @@ All gradients flow **top-left to bottom-right** (135 degrees).
96
96
 
97
97
  ---
98
98
 
99
+ ## Motion & Effects
100
+
101
+ | Token | Value | Notes |
102
+ |-------|-------|-------|
103
+ | Default spring | `springSmooth` | Gentle, flowing transitions match the dreamy tone |
104
+ | Press scale | 0.95 | Subtle press — nothing jarring |
105
+ | Stagger delay | 60ms | Slow, graceful cascade |
106
+ | Shadow style | colored (primary at 8%) | Soft violet-tinted shadows |
107
+ | Gradient usage | hero + CTA + sections | Signature element — gradients everywhere appropriate |
108
+ | Depth approach | shadows | Soft, diffused shadows (no borders) |
109
+ | Haptic | key actions only | Subtle — only on submit, favorite, important taps |
110
+
111
+ ---
112
+
99
113
  ## Do's and Don'ts
100
114
 
101
115
  ### Do
@@ -87,6 +87,20 @@
87
87
 
88
88
  ---
89
89
 
90
+ ## Motion & Effects
91
+
92
+ | Token | Value | Notes |
93
+ |-------|-------|-------|
94
+ | Default spring | `springSnappy` | Fast, aggressive — 200ms or less |
95
+ | Press scale | 0.93 | Firm press for competitive energy |
96
+ | Stagger delay | 30ms | Rapid-fire list entrances |
97
+ | Shadow style | neutral | Strong, defined shadows for depth |
98
+ | Gradient usage | hero + CTA | Bold red-to-orange on key surfaces |
99
+ | Depth approach | elevation | Strong elevation with visible shadows |
100
+ | Haptic | all taps | Every interaction gets physical feedback |
101
+
102
+ ---
103
+
90
104
  ## Do's and Don'ts
91
105
 
92
106
  ### Do
@@ -98,6 +98,20 @@ This brand is data-heavy. Use these colors for charts, graphs, and metrics:
98
98
 
99
99
  ---
100
100
 
101
+ ## Motion & Effects
102
+
103
+ | Token | Value | Notes |
104
+ |-------|-------|-------|
105
+ | Default spring | `springSnappy` | Fast, responsive — performance-oriented feel |
106
+ | Press scale | 0.95 | Quick, controlled compression |
107
+ | Stagger delay | 30ms | Rapid cascade for data-dense lists |
108
+ | Shadow style | neutral | Clean shadows; glow effects in dark mode only |
109
+ | Gradient usage | hero + CTA | Blue-to-cyan gradients on key surfaces |
110
+ | Depth approach | elevation | Standard elevation system + dark mode glow |
111
+ | Haptic | key actions only | On data refreshes, confirmations, key interactions |
112
+
113
+ ---
114
+
101
115
  ## Do's and Don'ts
102
116
 
103
117
  ### Do
@@ -81,6 +81,20 @@
81
81
 
82
82
  ---
83
83
 
84
+ ## Motion & Effects
85
+
86
+ | Token | Value | Notes |
87
+ |-------|-------|-------|
88
+ | Default spring | `springBouncy` | Playful, exaggerated feedback on interactions |
89
+ | Press scale | 0.92 | Noticeable squish on tap for tactile feel |
90
+ | Stagger delay | 40ms | Quick cascade for energetic list entrances |
91
+ | Shadow style | colored (primary at 10%) | Soft, primary-tinted shadows on cards |
92
+ | Gradient usage | hero + CTA | Header backgrounds and primary action buttons |
93
+ | Depth approach | shadows | Soft colored shadows define elevation |
94
+ | Haptic | all taps | Every interactive element gets haptic feedback |
95
+
96
+ ---
97
+
84
98
  ## Do's and Don'ts
85
99
 
86
100
  ### Do
package/dist/cli.d.ts CHANGED
@@ -13,14 +13,16 @@ export interface CliParseResult {
13
13
  input: UserInput;
14
14
  flags: CliFlags;
15
15
  }
16
- /** Result when a management command (--list, --run, --test, --preview, --screenshot, --configure) is detected */
16
+ /** Result when a management command (--list, --run, --test, --deep-test, --fix, --preview, --screenshot, --configure) is detected */
17
17
  export interface ManagementCommand {
18
- command: "list" | "run" | "test" | "preview" | "screenshot" | "configure";
18
+ command: "list" | "run" | "test" | "deep-test" | "fix" | "preview" | "screenshot" | "configure";
19
19
  appName?: string;
20
20
  engine?: Engine;
21
21
  model?: Model;
22
22
  keysFile?: string;
23
23
  skipVerify?: boolean;
24
+ /** Whether --fix flag was passed alongside --deep-test */
25
+ autoFix?: boolean;
24
26
  }
25
27
  /** Result from interactive mode: either a build input or a management command */
26
28
  export type InteractiveResult = {
package/dist/cli.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAA2B,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAIrF,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;AAE9B,mDAAmD;AACnD,MAAM,WAAW,QAAQ;IACvB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,SAAS,CAAC;IACjB,KAAK,EAAE,QAAQ,CAAC;CACjB;AAED,iHAAiH;AACjH,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,SAAS,GAAG,YAAY,GAAG,WAAW,CAAC;IAC1E,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,iFAAiF;AACjF,MAAM,MAAM,iBAAiB,GACzB;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,SAAS,CAAA;CAAE,GACnC;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,OAAO,EAAE,iBAAiB,CAAA;CAAE,CAAC;AAEvD;;;GAGG;AACH,wBAAgB,sBAAsB,IAAI,iBAAiB,GAAG,IAAI,CAgGjE;AAED;;;GAGG;AACH,wBAAgB,YAAY,IAAI,cAAc,GAAG,IAAI,CAyGpD;AAED;;;GAGG;AACH,wBAAsB,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC,CA4D/C;AAED;;;GAGG;AACH,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,iBAAiB,CAAC,CA4LnE;AAoHD,uEAAuE;AACvE,wBAAsB,YAAY,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,CAkDrE"}
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAA2B,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAIrF,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;AAE9B,mDAAmD;AACnD,MAAM,WAAW,QAAQ;IACvB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,SAAS,CAAC;IACjB,KAAK,EAAE,QAAQ,CAAC;CACjB;AAED,qIAAqI;AACrI,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,WAAW,GAAG,KAAK,GAAG,SAAS,GAAG,YAAY,GAAG,WAAW,CAAC;IAChG,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,0DAA0D;IAC1D,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,iFAAiF;AACjF,MAAM,MAAM,iBAAiB,GACzB;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,SAAS,CAAA;CAAE,GACnC;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,OAAO,EAAE,iBAAiB,CAAA;CAAE,CAAC;AAEvD;;;GAGG;AACH,wBAAgB,sBAAsB,IAAI,iBAAiB,GAAG,IAAI,CAqKjE;AAED;;;GAGG;AACH,wBAAgB,YAAY,IAAI,cAAc,GAAG,IAAI,CAyGpD;AAED;;;GAGG;AACH,wBAAsB,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC,CA4D/C;AAED;;;GAGG;AACH,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,iBAAiB,CAAC,CAoNnE;AAoHD,uEAAuE;AACvE,wBAAsB,YAAY,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,CAkDrE"}