@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
@@ -1,39 +0,0 @@
1
- ---
2
- name: template-selector
3
- description: Analyzes user app requirements against CATALOG.md to select the best template. Use when you need to pick a template for a new app. Returns the template name, reasoning, and any hybrid-app recommendations.
4
- tools: Read, Grep, Glob, LS
5
- model: haiku
6
- permissionMode: plan
7
- ---
8
-
9
- You are a specialised subagent for selecting the best mobile app template. You have deep knowledge of the template catalog and selection criteria.
10
-
11
- ## Instructions
12
-
13
- 1. Read `templates/CATALOG.md` thoroughly
14
- 2. Given the user's app description and target platform, evaluate each template:
15
- - Score against the "Best-For Keywords" in the decision matrix
16
- - Check the "Best match when" criteria for each template
17
- - Apply the "NOT a match when" rules to eliminate poor fits
18
- - Consider the "Hybrid Apps" table if the app spans categories
19
- 3. 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
20
-
21
- ## Output Format
22
-
23
- Return your answer in this exact format:
24
-
25
- ```
26
- SELECTED TEMPLATE: {TemplateName}
27
- CONFIDENCE: high | medium | low
28
- REASONING: {1-2 sentence explanation}
29
- BORROW FROM: {other template name, if hybrid} or "none"
30
- HYBRID NOTES: {what to borrow and why} or "n/a"
31
- ```
32
-
33
- ## Rules
34
-
35
- - Always recommend exactly ONE primary template
36
- - If confidence is "low", explain what aspects of the user's request don't fit well
37
- - For hybrid apps, identify which template to START with and what to borrow from the secondary template
38
- - Do NOT recommend building from scratch — always pick the closest template
39
- - Consider the platform (iOS vs Android) — some templates have platform-specific presets
@@ -1,81 +0,0 @@
1
- # Module Selector Skill
2
-
3
- Select shared modules based on keyword matching against the user's description.
4
-
5
- ## When to Use
6
-
7
- - Step 0, in parallel with template and design brand selection
8
-
9
- ## Context You Need
10
-
11
- - **User description** — app features
12
- - **Platform** — `ios` or `android`
13
- - **Selected template** (if available)
14
-
15
- ## Instructions
16
-
17
- ### Step 1 — Read Catalog
18
-
19
- Read `templates/shared/MODULES_CATALOG.md`. Note each module's keywords, relevant templates, and dependencies.
20
-
21
- ### Step 2 — Match by Keywords
22
-
23
- For every module: compare "Best-For Keywords" against the user's description. Include if **any keyword matches** or the feature is clearly implied.
24
-
25
- **Guidance:** Aim for **5-15 modules**. Don't over-select. Consider implicit needs (shopping → payment, social → sharing).
26
-
27
- ### Step 3 — Check Dependencies
28
-
29
- Verify dependencies are met (Paywall→BiometricAuth, AccountDeletion→ConsentPrivacy, etc.). Add missing dependencies.
30
-
31
- ### Step 4 — Final List
32
-
33
- Produce selected modules with reasoning.
34
-
35
- ## Report Output
36
-
37
- Write to `output/{app-name}/reports/02b-module-selection.md`:
38
-
39
- ```markdown
40
- # Module Selection Report
41
-
42
- **Step:** 0 (parallel)
43
- **Skill:** module-selector
44
- **Timestamp:** {ISO 8601}
45
- **Result:** PASS
46
-
47
- ## Selected Modules — {N} total
48
-
49
- | Module | Matched Keywords | Reason |
50
- |--------|-----------------|--------|
51
- | {name} | {keywords} | {why included} |
52
-
53
- ## Excluded Modules
54
-
55
- | Module | Reason for Exclusion |
56
- |--------|---------------------|
57
-
58
- ## Dependencies Added
59
-
60
- | Module | Added Because |
61
- |--------|--------------|
62
- ```
63
-
64
- Update `summary.json`:
65
-
66
- ```json
67
- {
68
- "step": 0,
69
- "name": "module-selection",
70
- "result": "PASS",
71
- "reportFile": "02b-module-selection.md",
72
- "modulesSelected": {N}
73
- }
74
- ```
75
-
76
- ## Rules
77
-
78
- - READ-ONLY — only write report files
79
- - No auto-include — every module must match via keywords
80
- - Aim for 5-15 modules
81
- - Module integration happens later (Steps 4-5), not here
@@ -1,44 +0,0 @@
1
- ---
2
- name: template-selector
3
- description: Analyzes user app requirements against CATALOG.md to select the best template. Returns the template name, reasoning, confidence level, and hybrid-app recommendations.
4
- allowed-tools: Read, Grep, Glob, LS
5
- context: fork
6
- agent: Explore
7
- ---
8
-
9
- # Template Selector Skill
10
-
11
- Use this skill to select the best mobile app template for the user's requirements.
12
-
13
- ## When to Use
14
-
15
- - At Step 1 of the AppAgent workflow, after prompt validation passes
16
- - Before cloning any template to output/
17
-
18
- ## Instructions
19
-
20
- ### Step 1 — Read the Template Catalog
21
-
22
- Read `templates/CATALOG.md`. Understand each template's feature set, "Best-For Keywords", "Best match when" criteria, and "NOT a match when" rules.
23
-
24
- ### Step 2 — Score Each Template
25
-
26
- For each template: score against user description keywords, check match criteria, apply exclusion rules, consider navigation pattern similarity.
27
-
28
- ### Step 3 — Handle Edge Cases
29
-
30
- Check the "Hybrid Apps" table if the app spans categories. Follow "When No Template Fits" guidance if needed.
31
-
32
- ### Step 4 — Make the Selection
33
-
34
- Choose exactly ONE primary template. Determine confidence (high/medium/low).
35
-
36
- ## Report Output
37
-
38
- Write `output/{app-name}/reports/02-template-selection.md` and update `summary.json`.
39
-
40
- ## Important Rules
41
-
42
- - READ-ONLY — only write report files
43
- - Always recommend exactly ONE primary template
44
- - Do NOT recommend building from scratch
@@ -1,52 +0,0 @@
1
- ---
2
- name: template-selector
3
- description: Analyzes user app requirements against CATALOG.md to select the best template. Use when you need to pick a template for a new app. Returns the template name, reasoning, and any hybrid-app recommendations.
4
- tools:
5
- - Read
6
- - Grep
7
- - Glob
8
- - LS
9
- readonly: true
10
- ---
11
-
12
- # Template Selector
13
-
14
- You are a specialised subagent for selecting the best mobile app template. You have deep knowledge of the template catalog and selection criteria.
15
-
16
- ## Logging Protocol
17
-
18
- When you start, print:
19
- `[SUBAGENT:template-selector] Starting — template selection for "{app description}"`
20
-
21
- When you finish, print:
22
- `[SUBAGENT:template-selector] Completed — selected {TemplateName} (confidence: {high|medium|low})`
23
-
24
- ## Instructions
25
-
26
- 1. Read `templates/CATALOG.md` thoroughly
27
- 2. Given the user's app description and target platform, evaluate each template:
28
- - Score against the "Best-For Keywords" in the decision matrix
29
- - Check the "Best match when" criteria for each template
30
- - Apply the "NOT a match when" rules to eliminate poor fits
31
- - Consider the "Hybrid Apps" table if the app spans categories
32
- 3. 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
33
-
34
- ## Output Format
35
-
36
- Return your answer in this exact format:
37
-
38
- ```
39
- SELECTED TEMPLATE: {TemplateName}
40
- CONFIDENCE: high | medium | low
41
- REASONING: {1-2 sentence explanation}
42
- BORROW FROM: {other template name, if hybrid} or "none"
43
- HYBRID NOTES: {what to borrow and why} or "n/a"
44
- ```
45
-
46
- ## Rules
47
-
48
- - Always recommend exactly ONE primary template
49
- - If confidence is "low", explain what aspects of the user's request don't fit well
50
- - For hybrid apps, identify which template to START with and what to borrow from the secondary template
51
- - Do NOT recommend building from scratch — always pick the closest template
52
- - Consider the platform (iOS vs Android) — some templates have platform-specific presets
@@ -1,135 +0,0 @@
1
- # Module Selector Skill
2
-
3
- Select which shared modules to integrate into the user's app based on keyword matching against the user's description.
4
-
5
- ## When to Use
6
-
7
- - At Step 0 of the AppAgent workflow, in parallel with template selection and design brand selection
8
- - When you need to determine which shared modules to include in the generated app
9
-
10
- ## Context You Need
11
-
12
- - **User description** — what kind of app the user wants to build
13
- - **Platform** — `ios` or `android`
14
- - **Selected template** (if available) — helps inform which modules are relevant
15
-
16
- ## Instructions
17
-
18
- ### Step 1 — Read the Modules Catalog
19
-
20
- Read `templates/shared/MODULES_CATALOG.md` thoroughly. Understand each module's:
21
- - "Best-For Keywords" in the decision matrix
22
- - "Relevant Templates" column
23
- - Module dependencies
24
-
25
- ### Step 2 — Match Modules by Keywords
26
-
27
- For every module in the catalog:
28
- 1. Compare its "Best-For Keywords" against the user's description
29
- 2. Check if the selected template is in the "Relevant Templates" column
30
- 3. If **any keyword matches** OR the feature is clearly implied by the app description → include the module
31
-
32
- **Selection guidance:**
33
- - Aim for **5-15 modules** that genuinely match the app's features
34
- - Don't over-select — only include modules the app will actually use
35
- - Don't under-select — if a keyword matches, the module is likely needed
36
- - Consider implicit needs (e.g., a "shopping app" implies payment, a "social app" implies sharing)
37
-
38
- **BaaS module selection (FirebaseProvider, SupabaseProvider, CachedRepository):**
39
- - 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"
40
- - Default (no BaaS keywords): NO BaaS module. The app uses `localStorage` (Core Data / Room) by default.
41
- - If SupabaseProvider is selected, also add CachedRepository (Supabase has no built-in offline cache)
42
- - If FirebaseProvider is selected, do NOT add CachedRepository (Firestore has built-in offline persistence)
43
- - Prefer Firebase for "Google ecosystem" keywords, Supabase for "PostgreSQL", "open source", "self-hosted" keywords
44
- - When both would fit equally, prefer Firebase (more mature mobile SDK)
45
-
46
- ### Step 3 — Check Dependencies
47
-
48
- Verify that included modules have their dependencies met:
49
- - Paywall depends on BiometricAuth (optional)
50
- - AccountDeletion depends on ConsentPrivacy
51
- - PushNotifications depends on ConsentPrivacy
52
- - PaymentMethods depends on Paywall
53
- - GamificationKit depends on ChartsLibrary
54
- - NotificationCenter depends on PushNotifications
55
- - CloudSync depends on NetworkBanner
56
- - LiveActivities depends on PushNotifications
57
- - SupabaseProvider depends on CachedRepository (for offline support)
58
- - FirebaseProvider depends on ErrorHandling (optional), NetworkBanner (optional)
59
- - SupabaseProvider depends on ErrorHandling (optional), NetworkBanner (optional)
60
-
61
- If a dependency is missing, add it.
62
-
63
- ### Step 4 — Final Module List
64
-
65
- Produce the final list of selected modules with reasoning for each.
66
-
67
- ## Report Output
68
-
69
- Write the report to `output/{app-name}/reports/02b-module-selection.md`:
70
-
71
- ```markdown
72
- # Module Selection Report
73
-
74
- **Step:** 0 (parallel)
75
- **Skill:** module-selector
76
- **Timestamp:** {ISO 8601}
77
- **Result:** PASS
78
-
79
- ## Selected Modules — {N} total
80
-
81
- | Module | Matched Keywords | Reason |
82
- |--------|-----------------|--------|
83
- | {name} | {keywords} | {why included} |
84
- ...
85
-
86
- ## Excluded Modules
87
-
88
- | Module | Reason for Exclusion |
89
- |--------|---------------------|
90
- ...
91
-
92
- ## Dependencies Added
93
-
94
- | Module | Added Because |
95
- |--------|--------------|
96
- | {name} | Required by {other module} |
97
- ...
98
- ```
99
-
100
- Update `output/{app-name}/reports/summary.json` — append this step entry:
101
-
102
- ```json
103
- {
104
- "step": 0,
105
- "name": "module-selection",
106
- "result": "PASS",
107
- "reportFile": "02b-module-selection.md",
108
- "modulesSelected": {N}
109
- }
110
- ```
111
-
112
- ## Important Rules
113
-
114
- - This skill is READ-ONLY — do NOT create, edit, or delete any app source files
115
- - The ONLY files you write are the report files in `reports/`
116
- - 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)
117
- - Aim for 5-15 modules — be selective, not exhaustive
118
- - Module integration happens later during customization (Steps 4-5) — this skill only produces the selection list
119
-
120
- ### Animation & Sensory Module Selection Heuristics
121
-
122
- When the user description contains words like **"stunning", "beautiful", "premium feel", "polished", "delightful", "smooth", "animated"**, consider these signal-word matches:
123
-
124
- | Signal Word | Consider Modules |
125
- |---|---|
126
- | stunning, beautiful, premium, polished | MicroInteractions, AnimatedTransitions, CelebrationEffects |
127
- | haptic, tactile, vibration, feedback | HapticEngine |
128
- | sound, audio, click sound, chime | AudioFeedback |
129
- | parallax, scroll effect, header animation | ScrollEffects |
130
- | confetti, celebration, achievement | CelebrationEffects |
131
- | onboarding, walkthrough, tutorial | AnimatedOnboarding |
132
- | transitions, hero, card flip, animated navigation | AnimatedTransitions |
133
- | micro-animations, bounce, press, stagger | MicroInteractions |
134
-
135
- **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).
@@ -1,123 +0,0 @@
1
- ---
2
- name: template-selector
3
- description: Analyzes user app requirements against CATALOG.md to select the best template. Returns the template name, reasoning, confidence level, and any hybrid-app recommendations.
4
- ---
5
-
6
- # Template Selector Skill
7
-
8
- Use this skill to select the best mobile app template for the user's requirements.
9
-
10
- ## When to Use
11
-
12
- - At Step 1 of the AppAgent workflow, after prompt validation passes
13
- - When you need to pick a starting template from the catalog
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
- ### Step 1 — Read the Template Catalog
25
-
26
- Read `templates/CATALOG.md` thoroughly. Understand each template's:
27
- - Feature set and architecture
28
- - "Best-For Keywords" in the decision matrix
29
- - "Best match when" criteria
30
- - "NOT a match when" exclusion rules
31
-
32
- ### Step 2 — Score Each Template
33
-
34
- For each template in the catalog:
35
- 1. Score it against the user's description using the "Best-For Keywords"
36
- 2. Check the "Best match when" criteria — how many match?
37
- 3. Apply the "NOT a match when" rules — does any exclusion trigger?
38
- 4. Consider navigation pattern similarity (tabs, lists, detail screens)
39
-
40
- ### Step 3 — Handle Edge Cases
41
-
42
- - If the app spans multiple categories, check the "Hybrid Apps" table in the catalog
43
- - 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
44
- - Consider the platform (iOS vs Android vs React Native) — all 16 templates are available on all three platforms. The same template names exist under `templates/ios/`, `templates/android/`, and `templates/react-native/`
45
-
46
- ### Step 4 — Make the Selection
47
-
48
- Choose exactly ONE primary template. Determine confidence:
49
- - **high** — multiple criteria match, clear winner
50
- - **medium** — good fit but some aspects don't align perfectly
51
- - **low** — no great match, picking the closest option
52
-
53
- If hybrid is needed, identify what to borrow from a secondary template.
54
-
55
- ## Report Output
56
-
57
- Write the report to `output/{app-name}/reports/02-template-selection.md`:
58
-
59
- ```markdown
60
- # Template Selection Report
61
-
62
- **Step:** 1
63
- **Skill:** template-selector
64
- **Timestamp:** {ISO 8601}
65
- **Result:** PASS
66
-
67
- ## Selection
68
-
69
- **Selected Template:** {TemplateName}
70
- **Confidence:** high | medium | low
71
-
72
- ## Reasoning
73
-
74
- {2-3 sentences explaining why this template was chosen}
75
-
76
- ## Scoring
77
-
78
- | Template | Score | Match Criteria | Exclusions |
79
- |----------|-------|---------------|------------|
80
- | {name} | {/10} | {matched} | {any} |
81
-
82
- ## Hybrid Recommendation
83
-
84
- **Borrow From:** {other template name} or "none"
85
- **Hybrid Notes:** {what to borrow and why} or "n/a"
86
- ```
87
-
88
- Update `output/{app-name}/reports/summary.json` — read the file, append this step.
89
-
90
- **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.
91
-
92
- ```json
93
- {
94
- "step": 1,
95
- "name": "template-selection",
96
- "startedAt": "{ISO 8601 timestamp}",
97
- "durationSeconds": 0,
98
- "result": "PASS",
99
- "reportFile": "02-template-selection.md",
100
- "template": "{TemplateName}",
101
- "confidence": "high|medium|low",
102
- "borrowFrom": "{other template or null}"
103
- }
104
- ```
105
-
106
- Also update the top-level `"template"` field in summary.json.
107
-
108
- ## Shared Modules
109
-
110
- After selecting a template, note that **shared modules** from `templates/shared/MODULES_CATALOG.md` will be integrated separately by the `module-selector` skill. The template selection is independent of module selection — templates provide the app skeleton, modules add cross-cutting features (consent, paywall, biometric auth, charts, etc.).
111
-
112
- If the user's description mentions features that are covered by shared modules rather than the template itself (e.g., "with subscription support", "biometric login", "push notifications"), do NOT let those features influence template selection — they will be handled by module integration.
113
-
114
- ## Important Rules
115
-
116
- - This skill is READ-ONLY — do NOT create, edit, or delete any app source files during this step
117
- - The ONLY files you write are the report files in `reports/`
118
- - Always recommend exactly ONE primary template
119
- - If confidence is "low", explain what aspects don't fit well
120
- - Do NOT recommend building from scratch — always pick the closest template
121
- - Consider the platform when relevant — all templates are available on iOS, Android, and React Native
122
- - For React Native, templates use TypeScript + React Navigation + custom hooks (MVVM-hook pattern)
123
- - Features covered by shared modules (consent, paywall, push notifications, etc.) should NOT affect template scoring — they are integrated separately