@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.
- package/.claude/agents/android-customizer.md +9 -1
- package/.claude/agents/catalog-analyzer.md +57 -0
- package/.claude/agents/ios-customizer.md +9 -1
- package/.claude/agents/react-native-customizer.md +71 -0
- package/.claude/skills/android-customizer/SKILL.md +108 -23
- package/.claude/skills/bug-fixer/SKILL.md +59 -0
- package/.claude/skills/catalog-analyzer/SKILL.md +96 -0
- package/.claude/skills/customization-planner/SKILL.md +44 -5
- package/.claude/skills/design-selector/SKILL.md +3 -1
- package/.claude/skills/design-system/SKILL.md +1 -1
- package/.claude/skills/exploratory-tester/SKILL.md +82 -0
- package/.claude/skills/ios-customizer/SKILL.md +123 -23
- package/.claude/skills/module-integrator/SKILL.md +1 -1
- package/.claude/skills/react-native-customizer/SKILL.md +97 -11
- package/.claude/skills/test-planner/SKILL.md +72 -0
- package/.cursor/agents/README.md +3 -1
- package/.cursor/agents/android-customizer.md +15 -11
- package/.cursor/agents/catalog-analyzer.md +83 -0
- package/.cursor/agents/ios-customizer.md +15 -10
- package/.cursor/agents/react-native-customizer.md +170 -0
- package/.cursor/mcp.json +2 -10
- package/.cursor/rules/safety-guardrails.mdc +1 -1
- package/.cursor/rules/workflow.mdc +52 -18
- package/.cursor/skills/android-customizer/SKILL.md +46 -22
- package/.cursor/skills/bug-fixer/SKILL.md +189 -0
- package/.cursor/skills/catalog-analyzer/SKILL.md +222 -0
- package/.cursor/skills/customization-planner/SKILL.md +55 -8
- package/.cursor/skills/design-selector/SKILL.md +6 -5
- package/.cursor/skills/design-system/SKILL.md +8 -7
- package/.cursor/skills/exploratory-tester/SKILL.md +223 -0
- package/.cursor/skills/ios-customizer/SKILL.md +50 -15
- package/.cursor/skills/module-integrator/SKILL.md +2 -2
- package/.cursor/skills/output-validator/SKILL.md +1 -1
- package/.cursor/skills/react-native-customizer/SKILL.md +115 -25
- package/.cursor/skills/test-planner/SKILL.md +199 -0
- package/AGENTS.md +32 -11
- package/CLAUDE.md +78 -33
- package/README.md +77 -11
- package/designs/DESIGN_CATALOG.md +17 -15
- package/designs/DESIGN_PRINCIPLES.md +53 -0
- package/designs/brands/accessible-high-contrast.md +14 -0
- package/designs/brands/corporate-professional.md +14 -0
- package/designs/brands/dark-luxe.md +14 -0
- package/designs/brands/kids-playful.md +14 -0
- package/designs/brands/medical-clinical.md +14 -0
- package/designs/brands/modern-minimal.md +14 -0
- package/designs/brands/nature-organic.md +14 -0
- package/designs/brands/neo-brutalist.md +14 -0
- package/designs/brands/retro-vintage.md +14 -0
- package/designs/brands/soft-gradient.md +14 -0
- package/designs/brands/sport-athletic.md +14 -0
- package/designs/brands/tech-dynamic.md +14 -0
- package/designs/brands/vibrant-playful.md +14 -0
- package/dist/cli.d.ts +4 -2
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +91 -1
- package/dist/cli.js.map +1 -1
- package/dist/config.d.ts +2 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +2 -0
- package/dist/config.js.map +1 -1
- package/dist/engines/claude-engine.d.ts.map +1 -1
- package/dist/engines/claude-engine.js +16 -4
- package/dist/engines/claude-engine.js.map +1 -1
- package/dist/engines/types.d.ts +1 -1
- package/dist/engines/types.d.ts.map +1 -1
- package/dist/engines/types.js +31 -2
- package/dist/engines/types.js.map +1 -1
- package/dist/github.d.ts +3 -0
- package/dist/github.d.ts.map +1 -1
- package/dist/github.js +47 -4
- package/dist/github.js.map +1 -1
- package/dist/index.js +217 -9
- package/dist/index.js.map +1 -1
- package/dist/prompt-builder.d.ts +11 -1
- package/dist/prompt-builder.d.ts.map +1 -1
- package/dist/prompt-builder.js +216 -1
- package/dist/prompt-builder.js.map +1 -1
- package/dist/validator.d.ts +7 -2
- package/dist/validator.d.ts.map +1 -1
- package/dist/validator.js +61 -41
- package/dist/validator.js.map +1 -1
- package/dist/workspace.js +2 -2
- package/dist/workspace.js.map +1 -1
- package/package.json +2 -2
- package/prompts/agent-prompt.md +35 -18
- package/prompts/deep-test-agent-prompt.md +122 -0
- package/prompts/fix-agent-prompt.md +90 -0
- package/prompts/quick-agent-prompt.md +32 -2
- package/prompts/scratch-agent-prompt.md +5 -8
- package/templates/android/BookTemplate/app/src/main/kotlin/com/appship/book/core/animation/AnimatedTransitionsModifiers.kt +188 -0
- package/templates/android/ChatTemplate/app/src/main/kotlin/com/appship/chat/core/animation/AnimatedTransitionsModifiers.kt +188 -0
- package/templates/android/ChatTemplate/app/src/main/kotlin/com/appship/chat/features/conversations/ConversationsScreen.kt +1 -1
- package/templates/android/DashTemplate/app/src/main/kotlin/com/appship/dash/core/animation/AnimatedTransitionsModifiers.kt +188 -0
- package/templates/android/DashTemplate/app/src/main/kotlin/com/appship/dash/features/navigation/MainScreen.kt +1 -0
- package/templates/android/FamilyTemplate/app/src/main/java/com/appship/family/core/animation/AnimatedTransitionsModifiers.kt +188 -0
- package/templates/android/FamilyTemplate/app/src/main/java/com/appship/family/features/navigation/MainNavigation.kt +5 -1
- package/templates/android/FinanceTemplate/app/src/main/kotlin/com/appship/finance/core/animation/AnimatedTransitionsModifiers.kt +188 -0
- package/templates/android/GameTemplate/app/src/main/kotlin/com/appship/game/core/animation/AnimatedTransitionsModifiers.kt +188 -0
- package/templates/android/GameTemplate/app/src/main/kotlin/com/appship/game/core/animation/MotionPreferencesScreen.kt +3 -3
- package/templates/android/GameTemplate/app/src/main/kotlin/com/appship/game/features/navigation/Navigation.kt +1 -1
- package/templates/android/GameTemplate/app/src/main/kotlin/com/appship/game/features/settings/SettingsScreen.kt +1 -1
- package/templates/android/HealthTemplate/app/src/main/kotlin/com/appship/health/core/animation/AnimatedTransitionsModifiers.kt +188 -0
- package/templates/android/LearnTemplate/app/src/main/kotlin/com/appship/learn/core/animation/AnimatedTransitionsModifiers.kt +188 -0
- package/templates/android/MapTemplate/app/src/main/kotlin/com/appship/map/core/animation/AnimatedTransitionsModifiers.kt +188 -0
- package/templates/android/MediaTemplate/app/src/main/kotlin/com/appship/media/core/animation/AnimatedTransitionsModifiers.kt +188 -0
- package/templates/android/MediaTemplate/app/src/main/kotlin/com/appship/media/features/settings/SettingsScreen.kt +3 -2
- package/templates/android/ReferenceTemplate/app/src/main/kotlin/com/appship/reference/core/animation/AnimatedTransitionsModifiers.kt +188 -0
- package/templates/android/ReferenceTemplate/app/src/main/kotlin/com/appship/reference/features/settings/SettingsScreen.kt +1 -1
- package/templates/android/ShopTemplate/app/src/main/kotlin/com/appship/shop/core/animation/AnimatedTransitionsModifiers.kt +188 -0
- package/templates/android/ShopTemplate/app/src/main/kotlin/com/appship/shop/features/cart/CartScreen.kt +3 -2
- package/templates/android/Skeleton/TESTING_MANIFEST.md +2 -1
- package/templates/android/Skeleton/app/src/main/kotlin/com/appship/skeleton/MainActivity.kt +23 -2
- package/templates/android/Skeleton/app/src/main/kotlin/com/appship/skeleton/core/animation/AnimatedTransitionsModifiers.kt +188 -0
- package/templates/android/Skeleton/app/src/main/kotlin/com/appship/skeleton/core/theme/AppearanceManager.kt +42 -0
- package/templates/android/Skeleton/app/src/main/kotlin/com/appship/skeleton/features/profile/ProfileScreen.kt +20 -8
- package/templates/android/Skeleton/tests/03_detail_screen.yaml +3 -2
- package/templates/android/Skeleton/tests/04_favorites.yaml +3 -2
- package/templates/android/Skeleton/tests/08_full_e2e.yaml +9 -2
- package/templates/android/Skeleton/tests/09_dark_mode.yaml +50 -0
- package/templates/android/SocialTemplate/app/src/main/kotlin/com/appship/social/core/animation/AnimatedTransitionsModifiers.kt +188 -0
- package/templates/android/TaskTemplate/app/src/main/kotlin/com/appship/task/core/animation/AnimatedTransitionsModifiers.kt +188 -0
- package/templates/android/TaskTemplate/app/src/main/kotlin/com/appship/task/features/settings/SettingsScreen.kt +3 -2
- package/templates/android/TrackTemplate/app/src/main/kotlin/com/appship/track/core/animation/AnimatedTransitionsModifiers.kt +188 -0
- package/templates/ios/BookTemplate/BookTemplate/Core/Animation/AnimatedTransitionsView.swift +201 -0
- package/templates/ios/ChatTemplate/ChatTemplate/Core/Animation/AnimatedTransitionsView.swift +201 -0
- package/templates/ios/DashTemplate/DashTemplate/App/AppConfig.swift +1 -0
- package/templates/ios/DashTemplate/DashTemplate/Core/Animation/AnimatedTransitionsView.swift +201 -0
- package/templates/ios/DashTemplate/DashTemplate/Core/Strings.swift +13 -0
- package/templates/ios/DashTemplate/DashTemplate.xcodeproj/project.pbxproj +32 -20
- package/templates/ios/FamilyTemplate/FamilyTemplate/Core/Animation/AnimatedTransitionsView.swift +201 -0
- package/templates/ios/FinanceTemplate/FinanceTemplate/Core/Animation/AnimatedTransitionsView.swift +201 -0
- package/templates/ios/FinanceTemplate/FinanceTemplate/Core/Strings.swift +42 -0
- package/templates/ios/FinanceTemplate/FinanceTemplate.xcodeproj/project.pbxproj +36 -30
- package/templates/ios/GameTemplate/GameTemplate/Core/Animation/AnimatedTransitionsView.swift +201 -0
- package/templates/ios/HealthTemplate/HealthTemplate/Core/Animation/AnimatedTransitionsView.swift +201 -0
- package/templates/ios/LearnTemplate/LearnTemplate/Core/Animation/AnimatedTransitionsView.swift +201 -0
- package/templates/ios/MapTemplate/MapTemplate/Core/Animation/AnimatedTransitionsView.swift +201 -0
- package/templates/ios/MediaTemplate/MediaTemplate/Core/Animation/AnimatedTransitionsView.swift +201 -0
- package/templates/ios/ReferenceTemplate/ReferenceTemplate/Core/Animation/AnimatedTransitionsView.swift +201 -0
- package/templates/ios/ReferenceTemplate/ReferenceTemplate/Core/Strings.swift +12 -0
- package/templates/ios/ReferenceTemplate/ReferenceTemplate/Features/SkeletonLoading/SkeletonLoadingView.swift +2 -37
- package/templates/ios/ShopTemplate/ShopTemplate/Core/Animation/AnimatedTransitionsView.swift +201 -0
- package/templates/ios/Skeleton/Skeleton/Core/Animation/AnimatedTransitionsView.swift +201 -0
- package/templates/ios/Skeleton/tests/08_full_e2e.yaml +4 -0
- package/templates/ios/Skeleton/tests/09_dark_mode.yaml +52 -0
- package/templates/ios/SocialTemplate/SocialTemplate/Core/Animation/AnimatedTransitionsView.swift +201 -0
- package/templates/ios/TaskTemplate/TaskTemplate/Core/Animation/AnimatedTransitionsView.swift +201 -0
- package/templates/ios/TrackTemplate/TrackTemplate/Core/Animation/AnimatedTransitionsView.swift +201 -0
- package/templates/react-native/BookTemplate/src/animation/useAnimatedList.ts +219 -2
- package/templates/react-native/BookTemplate/src/animation/useMotionPreferences.ts +23 -9
- package/templates/react-native/BookTemplate/src/screens/Profile/ProfileScreen.tsx +1 -1
- package/templates/react-native/ChatTemplate/src/animation/useAnimatedList.ts +219 -2
- package/templates/react-native/ChatTemplate/src/animation/useMotionPreferences.ts +23 -9
- package/templates/react-native/ChatTemplate/src/screens/Profile/ProfileScreen.tsx +1 -1
- package/templates/react-native/DashTemplate/src/animation/useAnimatedList.ts +219 -2
- package/templates/react-native/DashTemplate/src/animation/useMotionPreferences.ts +23 -9
- package/templates/react-native/DashTemplate/src/screens/Profile/ProfileScreen.tsx +1 -1
- package/templates/react-native/FamilyTemplate/src/animation/useAnimatedList.ts +219 -2
- package/templates/react-native/FamilyTemplate/src/animation/useMotionPreferences.ts +23 -9
- package/templates/react-native/FamilyTemplate/src/screens/Profile/ProfileScreen.tsx +1 -1
- package/templates/react-native/FinanceTemplate/src/animation/useAnimatedList.ts +219 -2
- package/templates/react-native/FinanceTemplate/src/animation/useMotionPreferences.ts +23 -9
- package/templates/react-native/FinanceTemplate/src/screens/Profile/ProfileScreen.tsx +1 -1
- package/templates/react-native/GameTemplate/src/animation/useAnimatedList.ts +219 -2
- package/templates/react-native/GameTemplate/src/animation/useMotionPreferences.ts +23 -9
- package/templates/react-native/GameTemplate/src/screens/GameDetail/GameDetailScreen.tsx +2 -1
- package/templates/react-native/GameTemplate/src/screens/Profile/ProfileScreen.tsx +1 -1
- package/templates/react-native/HealthTemplate/src/animation/useAnimatedList.ts +219 -2
- package/templates/react-native/HealthTemplate/src/animation/useMotionPreferences.ts +23 -9
- package/templates/react-native/HealthTemplate/src/screens/Profile/ProfileScreen.tsx +1 -1
- package/templates/react-native/HealthTemplate/src/screens/WorkoutDetail/WorkoutDetailScreen.tsx +1 -1
- package/templates/react-native/LearnTemplate/src/animation/useAnimatedList.ts +219 -2
- package/templates/react-native/LearnTemplate/src/animation/useMotionPreferences.ts +23 -9
- package/templates/react-native/LearnTemplate/src/screens/Profile/ProfileScreen.tsx +1 -1
- package/templates/react-native/MapTemplate/src/animation/useAnimatedList.ts +219 -2
- package/templates/react-native/MapTemplate/src/animation/useMotionPreferences.ts +23 -9
- package/templates/react-native/MapTemplate/src/screens/Map/MapScreen.tsx +14 -0
- package/templates/react-native/MapTemplate/src/screens/Profile/ProfileScreen.tsx +1 -1
- package/templates/react-native/MediaTemplate/src/animation/useAnimatedList.ts +219 -2
- package/templates/react-native/MediaTemplate/src/animation/useMotionPreferences.ts +23 -9
- package/templates/react-native/MediaTemplate/src/screens/PlaylistDetail/PlaylistDetailScreen.tsx +1 -1
- package/templates/react-native/MediaTemplate/src/screens/Profile/ProfileScreen.tsx +1 -1
- package/templates/react-native/ReferenceTemplate/src/animation/useAnimatedList.ts +219 -2
- package/templates/react-native/ReferenceTemplate/src/animation/useMotionPreferences.ts +23 -9
- package/templates/react-native/ReferenceTemplate/src/screens/Settings/SettingsScreen.tsx +1 -1
- package/templates/react-native/ShopTemplate/src/animation/useAnimatedList.ts +219 -2
- package/templates/react-native/ShopTemplate/src/animation/useMotionPreferences.ts +23 -9
- package/templates/react-native/ShopTemplate/src/screens/Profile/ProfileScreen.tsx +1 -1
- package/templates/react-native/Skeleton/TESTING_MANIFEST.md +2 -1
- package/templates/react-native/Skeleton/src/animation/useAnimatedList.ts +219 -2
- package/templates/react-native/Skeleton/src/animation/useMotionPreferences.ts +23 -9
- package/templates/react-native/Skeleton/src/screens/Profile/ProfileScreen.tsx +1 -1
- package/templates/react-native/Skeleton/tests/07_profile.yaml +3 -2
- package/templates/react-native/Skeleton/tests/08_full_e2e.yaml +12 -1
- package/templates/react-native/Skeleton/tests/09_dark_mode.yaml +46 -0
- package/templates/react-native/SocialTemplate/src/animation/useAnimatedList.ts +219 -2
- package/templates/react-native/SocialTemplate/src/animation/useMotionPreferences.ts +23 -9
- package/templates/react-native/SocialTemplate/src/screens/Feed/FeedScreen.tsx +1 -0
- package/templates/react-native/SocialTemplate/src/screens/Profile/ProfileScreen.tsx +1 -1
- package/templates/react-native/TaskTemplate/src/animation/useAnimatedList.ts +219 -2
- package/templates/react-native/TaskTemplate/src/animation/useMotionPreferences.ts +23 -9
- package/templates/react-native/TaskTemplate/src/screens/Profile/ProfileScreen.tsx +1 -1
- package/templates/react-native/TrackTemplate/src/animation/useAnimatedList.ts +219 -2
- package/templates/react-native/TrackTemplate/src/animation/useMotionPreferences.ts +23 -9
- package/templates/react-native/TrackTemplate/src/screens/Settings/SettingsScreen.tsx +1 -1
- package/templates/shared/ios/AnimatedTransitions/AnimatedTransitionsView.swift +233 -93
- package/.claude/agents/template-selector.md +0 -39
- package/.claude/skills/module-selector/SKILL.md +0 -81
- package/.claude/skills/template-selector/SKILL.md +0 -44
- package/.cursor/agents/template-selector.md +0 -52
- package/.cursor/skills/module-selector/SKILL.md +0 -135
- 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
|