@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
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-
|
|
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
|
|
436
|
-
│
|
|
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
|
-
│ │ ├──
|
|
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
|
-
│ │
|
|
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-
|
|
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
|
-
|
|
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 +
|
|
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,
|
|
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"}
|