@shaykec/app-agent 1.0.9 → 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/catalog-analyzer.md +57 -0
- package/.claude/skills/android-customizer/SKILL.md +23 -10
- 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 +29 -8
- package/.claude/skills/module-integrator/SKILL.md +1 -1
- package/.claude/skills/react-native-customizer/SKILL.md +22 -10
- package/.claude/skills/test-planner/SKILL.md +72 -0
- package/.cursor/agents/README.md +3 -1
- package/.cursor/agents/catalog-analyzer.md +83 -0
- package/.cursor/rules/safety-guardrails.mdc +1 -1
- package/.cursor/rules/workflow.mdc +52 -18
- package/.cursor/skills/android-customizer/SKILL.md +43 -19
- 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 +47 -12
- 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 +46 -16
- 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/app/src/main/kotlin/com/appship/skeleton/core/animation/AnimatedTransitionsModifiers.kt +188 -0
- package/templates/android/Skeleton/tests/03_detail_screen.yaml +1 -1
- package/templates/android/Skeleton/tests/04_favorites.yaml +1 -1
- package/templates/android/Skeleton/tests/08_full_e2e.yaml +7 -1
- 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/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 +1 -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/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/dist/validator.js
CHANGED
|
@@ -9,9 +9,9 @@ import { PATHS } from "./config.js";
|
|
|
9
9
|
* 1. Output directory exists and is non-empty
|
|
10
10
|
* 2. Key files are present (AppConfig, MockDataProvider, entry point)
|
|
11
11
|
* 3. No leftover template placeholder names
|
|
12
|
-
* 4.
|
|
12
|
+
* 4. Report files present (skipped in quick/update modes)
|
|
13
13
|
*/
|
|
14
|
-
export async function validateOutput(platform, targetAppDir) {
|
|
14
|
+
export async function validateOutput(platform, targetAppDir, options) {
|
|
15
15
|
const errors = [];
|
|
16
16
|
const warnings = [];
|
|
17
17
|
// 1. Find the app directory in output/
|
|
@@ -107,55 +107,75 @@ export async function validateOutput(platform, targetAppDir) {
|
|
|
107
107
|
}
|
|
108
108
|
}
|
|
109
109
|
}
|
|
110
|
-
// 4. Check for report files
|
|
110
|
+
// 4. Check for report files (skipped in quick/update modes which don't generate full reports)
|
|
111
|
+
const mode = options?.mode ?? "full";
|
|
111
112
|
const reportsDir = path.join(appDir, "reports");
|
|
112
|
-
if (
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
"
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
const reportPath = path.join(reportsDir, report);
|
|
125
|
-
if (!(await fs.pathExists(reportPath))) {
|
|
126
|
-
warnings.push(`Missing report file: reports/${report}`);
|
|
113
|
+
if (mode === "quick" || mode === "update") {
|
|
114
|
+
// Quick and update modes produce at most a minimal summary.json — don't warn about missing reports
|
|
115
|
+
if (await fs.pathExists(reportsDir)) {
|
|
116
|
+
const summaryPath = path.join(reportsDir, "summary.json");
|
|
117
|
+
if (await fs.pathExists(summaryPath)) {
|
|
118
|
+
try {
|
|
119
|
+
const raw = await fs.readFile(summaryPath, "utf-8");
|
|
120
|
+
JSON.parse(raw); // Just validate it's parseable
|
|
121
|
+
}
|
|
122
|
+
catch {
|
|
123
|
+
warnings.push("summary.json is malformed or not valid JSON");
|
|
124
|
+
}
|
|
127
125
|
}
|
|
128
126
|
}
|
|
129
|
-
//
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
127
|
+
// No warning if reports/ is missing — it's expected in these modes
|
|
128
|
+
}
|
|
129
|
+
else {
|
|
130
|
+
// Full and scratch modes expect complete report files
|
|
131
|
+
if (await fs.pathExists(reportsDir)) {
|
|
132
|
+
const expectedReports = [
|
|
133
|
+
"01-prompt-validation.md",
|
|
134
|
+
"02-catalog-analysis.md",
|
|
135
|
+
"03-design-brand.md",
|
|
136
|
+
"04-content-brief.md",
|
|
137
|
+
"05-customization.md",
|
|
138
|
+
"06-build.md",
|
|
139
|
+
"07-security-audit.md",
|
|
140
|
+
"summary.json",
|
|
141
|
+
];
|
|
142
|
+
for (const report of expectedReports) {
|
|
143
|
+
const reportPath = path.join(reportsDir, report);
|
|
144
|
+
if (!(await fs.pathExists(reportPath))) {
|
|
145
|
+
warnings.push(`Missing report file: reports/${report}`);
|
|
140
146
|
}
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
+
}
|
|
148
|
+
// Validate summary.json structure
|
|
149
|
+
const summaryPath = path.join(reportsDir, "summary.json");
|
|
150
|
+
if (await fs.pathExists(summaryPath)) {
|
|
151
|
+
try {
|
|
152
|
+
const raw = await fs.readFile(summaryPath, "utf-8");
|
|
153
|
+
const summary = JSON.parse(raw);
|
|
154
|
+
if (!summary.steps || !Array.isArray(summary.steps)) {
|
|
155
|
+
warnings.push("summary.json is missing 'steps' array");
|
|
156
|
+
}
|
|
157
|
+
if (!summary.overallResult) {
|
|
158
|
+
warnings.push("summary.json is missing 'overallResult'");
|
|
159
|
+
}
|
|
160
|
+
// Check that steps have timing fields
|
|
161
|
+
if (Array.isArray(summary.steps)) {
|
|
162
|
+
for (const step of summary.steps) {
|
|
163
|
+
if (step && typeof step === "object" && "name" in step) {
|
|
164
|
+
if (!("startedAt" in step) || !("durationSeconds" in step)) {
|
|
165
|
+
warnings.push(`summary.json step "${step.name}" is missing timing fields (startedAt / durationSeconds)`);
|
|
166
|
+
}
|
|
147
167
|
}
|
|
148
168
|
}
|
|
149
169
|
}
|
|
150
170
|
}
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
171
|
+
catch {
|
|
172
|
+
warnings.push("summary.json is malformed or not valid JSON");
|
|
173
|
+
}
|
|
154
174
|
}
|
|
155
175
|
}
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
176
|
+
else {
|
|
177
|
+
warnings.push("Missing reports/ directory — agent may not have generated report files");
|
|
178
|
+
}
|
|
159
179
|
}
|
|
160
180
|
return {
|
|
161
181
|
valid: errors.length === 0,
|
package/dist/validator.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validator.js","sourceRoot":"","sources":["../src/validator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,KAAK,CAAC,MAAM,gBAAgB,CAAC;AACpC,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"validator.js","sourceRoot":"","sources":["../src/validator.ts"],"names":[],"mappings":"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"}
|
package/dist/workspace.js
CHANGED
|
@@ -218,7 +218,7 @@ async function generateMcpConfig() {
|
|
|
218
218
|
}
|
|
219
219
|
else {
|
|
220
220
|
p.log.warn("ai-tester MCP server not found. UI testing (Steps 8-10) will be unavailable.\n" +
|
|
221
|
-
"Install it with: npm install -g @
|
|
221
|
+
"Install it with: npm install -g @wix/ai-tester\n" +
|
|
222
222
|
"Or set AI_TESTER_PATH to the ai-tester installation directory.");
|
|
223
223
|
}
|
|
224
224
|
}
|
|
@@ -248,7 +248,7 @@ function resolveAiTesterPath() {
|
|
|
248
248
|
}
|
|
249
249
|
// 2. Try require.resolve — works regardless of hoisting or nesting
|
|
250
250
|
try {
|
|
251
|
-
const resolved = require.resolve("@
|
|
251
|
+
const resolved = require.resolve("@wix/ai-tester/dist/mcp/index.js");
|
|
252
252
|
if (resolved && fs.existsSync(resolved))
|
|
253
253
|
return resolved;
|
|
254
254
|
}
|
package/dist/workspace.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workspace.js","sourceRoot":"","sources":["../src/workspace.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,KAAK,CAAC,MAAM,gBAAgB,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEzE,6DAA6D;AAC7D,MAAM,YAAY,GAAa,EAAE,CAAC;AAElC;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB;IACrC,IAAI,CAAC,YAAY;QAAE,OAAO;IAE1B,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAC;IAEzD,wEAAwE;IACxE,MAAM,kBAAkB,CAAC,WAAW,CAAC,CAAC;IACtC,MAAM,kBAAkB,CAAC,SAAS,CAAC,CAAC;IACpC,MAAM,kBAAkB,CAAC,SAAS,CAAC,CAAC;IAEpC,wEAAwE;IACxE,MAAM,iBAAiB,EAAE,CAAC;IAE1B,wEAAwE;IACxE,MAAM,iBAAiB,EAAE,CAAC;IAE1B,wEAAwE;IACxE,MAAM,eAAe,CAAC,WAAW,CAAC,CAAC;IACnC,MAAM,eAAe,CAAC,WAAW,CAAC,CAAC;IAEnC,wEAAwE;IACxE,MAAM,iBAAiB,EAAE,CAAC;IAE1B,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;AACjC,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB;IACpC,IAAI,CAAC,YAAY,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IAEvD,iEAAiE;IACjE,KAAK,MAAM,IAAI,IAAI,CAAC,GAAG,YAAY,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC;QAC/C,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;YACpD,IAAI,CAAC,IAAI;gBAAE,SAAS;YAEpB,IAAI,IAAI,CAAC,cAAc,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;gBAC3C,MAAM,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACxB,CAAC;iBAAM,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;gBAC9B,0DAA0D;gBAC1D,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;gBACvC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACzB,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACvB,CAAC;YACH,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,oDAAoD;QACtD,CAAC;IACH,CAAC;IAED,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC;AAC1B,CAAC;AAED,6EAA6E;AAE7E;;;GAGG;AACH,KAAK,UAAU,kBAAkB,CAAC,IAAY;IAC5C,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;IAC7C,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;IAEjD,IAAI,MAAM,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC;QAAE,OAAO;IAC1C,IAAI,CAAC,MAAM,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC;QAAE,OAAO;IAEzC,MAAM,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IACnC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC9B,CAAC;AAED;;;GAGG;AACH,KAAK,UAAU,eAAe,CAAC,IAAY;IACzC,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;IAC1C,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;IAE7C,IAAI,MAAM,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO;IACtC,IAAI,CAAC,MAAM,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,OAAO;IAEtC,MAAM,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IACzB,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,gBAAgB,CAAC,OAAe;IAC7C,IAAI,MAAM,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC;QAAE,OAAO,KAAK,CAAC;IAC/C,MAAM,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACzB,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC3B,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;GAMG;AACH,KAAK,UAAU,iBAAiB;IAC9B,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC;IAEvD,wEAAwE;IACxE,IAAI,MAAM,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC;QAAE,OAAO;IAE3C,MAAM,gBAAgB,CAAC,SAAS,CAAC,CAAC;IAElC,iEAAiE;IACjE,KAAK,MAAM,MAAM,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE,CAAC;QAC1C,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;QAC1D,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QAC9C,IAAI,MAAM,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;YAChC,MAAM,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;YACnC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC;IAED,2EAA2E;IAC3E,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,SAAS,EAAE,eAAe,CAAC,CAAC;IACxE,IAAI,MAAM,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QACrC,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC;QAC3D,MAAM,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;QACzC,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAClC,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,KAAK,UAAU,iBAAiB;IAC9B,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC;IAEvD,wEAAwE;IACxE,IAAI,MAAM,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC;QAAE,OAAO;IAE3C,MAAM,gBAAgB,CAAC,SAAS,CAAC,CAAC;IAElC,yBAAyB;IACzB,KAAK,MAAM,MAAM,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,CAAC,EAAE,CAAC;QAC5D,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;QAC1D,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QAC9C,IAAI,MAAM,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;YAChC,MAAM,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;YACnC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC;IAED,kBAAkB;IAClB,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC;IAClE,IAAI,MAAM,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAClC,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;QACrD,MAAM,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;QACnC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC/B,CAAC;IAED,4DAA4D;IAC5D,MAAM,YAAY,GAAG,mBAAmB,EAAE,CAAC;IAC3C,IAAI,YAAY,EAAE,CAAC;QACjB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;QACjD,MAAM,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE;YAC1B,UAAU,EAAE;gBACV,WAAW,EAAE;oBACX,OAAO,EAAE,MAAM;oBACf,IAAI,EAAE,CAAC,YAAY,CAAC;oBACpB,GAAG,EAAE,EAAE,aAAa,EAAE,MAAM,EAAE;iBAC/B;aACF;SACF,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;QAClB,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC7B,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,KAAK,UAAU,iBAAiB;IAC9B,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC;IACvD,IAAI,MAAM,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC;QAAE,OAAO;IAEzC,MAAM,YAAY,GAAG,mBAAmB,EAAE,CAAC;IAC3C,IAAI,YAAY,EAAE,CAAC;QACjB,MAAM,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE;YAC1B,UAAU,EAAE;gBACV,WAAW,EAAE;oBACX,OAAO,EAAE,MAAM;oBACf,IAAI,EAAE,CAAC,YAAY,CAAC;oBACpB,GAAG,EAAE,EAAE,aAAa,EAAE,MAAM,EAAE;iBAC/B;aACF;SACF,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;QAClB,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC7B,CAAC;SAAM,CAAC;QACN,CAAC,CAAC,GAAG,CAAC,IAAI,CACR,gFAAgF;YAChF,
|
|
1
|
+
{"version":3,"file":"workspace.js","sourceRoot":"","sources":["../src/workspace.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@shaykec/app-agent",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.10",
|
|
4
4
|
"description": "AI-powered mobile app generator using Cursor CLI and templates",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -51,7 +51,7 @@
|
|
|
51
51
|
"zod": "^3.24.2"
|
|
52
52
|
},
|
|
53
53
|
"optionalDependencies": {
|
|
54
|
-
"@
|
|
54
|
+
"@wix/ai-tester": "^0.5.0"
|
|
55
55
|
},
|
|
56
56
|
"devDependencies": {
|
|
57
57
|
"@types/fs-extra": "^11.0.4",
|
package/prompts/agent-prompt.md
CHANGED
|
@@ -13,9 +13,8 @@ You have specialised skills available in `.cursor/skills/`. Each skill contains
|
|
|
13
13
|
| Step | Skill | Purpose |
|
|
14
14
|
|------|-------|---------|
|
|
15
15
|
| 0 | `prompt-validator` | Validate user prompt for injection/malicious intent |
|
|
16
|
-
| 0 | `
|
|
16
|
+
| 0 | `catalog-analyzer` | Select the best template from CATALOG.md AND shared modules from MODULES_CATALOG.md |
|
|
17
17
|
| 0 | `design-selector` | Select the best design brand from DESIGN_CATALOG.md |
|
|
18
|
-
| 0 | `module-selector` | Select shared modules from MODULES_CATALOG.md based on app keywords |
|
|
19
18
|
| 4 | `module-integrator` | Read shared module references and write adapted code into the app |
|
|
20
19
|
| 2 | `app-renaming` | Rename app consistently across all files |
|
|
21
20
|
| 3 | `customization-planner` | Produce a manifest with design brief, content brief, per-screen changes, and parallel batches |
|
|
@@ -37,8 +36,7 @@ Every skill writes a report file to `output/{app-name}/reports/`. These reports
|
|
|
37
36
|
```
|
|
38
37
|
output/{app-name}/reports/
|
|
39
38
|
01-prompt-validation.md
|
|
40
|
-
02-
|
|
41
|
-
02b-module-selection.md
|
|
39
|
+
02-catalog-analysis.md
|
|
42
40
|
03-design-brand.md
|
|
43
41
|
customization-manifest.md
|
|
44
42
|
04-content-brief.md
|
|
@@ -69,26 +67,46 @@ Wait for all parallel tasks to complete before proceeding to the next step.
|
|
|
69
67
|
|
|
70
68
|
| Group | Steps | Why They're Independent |
|
|
71
69
|
|-------|-------|------------------------|
|
|
72
|
-
| A | 0 (Prompt Validation) + 0 (
|
|
70
|
+
| A | 0 (Prompt Validation) + 0 (Catalog Analysis) + 0 (Design Brand Selection) | All are read-only analysis of the user description against catalogs |
|
|
73
71
|
| B | Screen customization batches (from planner) | Each subagent edits only its assigned screen files |
|
|
74
|
-
| C |
|
|
72
|
+
| C | 7 (Security Audit) + 7 (Output Validation) + 7 (Boot Sims) | Read-only scans + independent sim boot |
|
|
75
73
|
| D | Interactive testing batches (from planner) | Each subagent tests its screens on its own simulator |
|
|
76
74
|
| E | Maestro test batches (from planner) | Each subagent runs YAML tests on its own simulator |
|
|
77
75
|
|
|
76
|
+
## Design Quality Standards
|
|
77
|
+
|
|
78
|
+
Generated apps must NOT look like generic templates. Every app should feel handcrafted and alive. When applying the Visual Polish Plan from the manifest:
|
|
79
|
+
|
|
80
|
+
These modifiers are built into every template and always available (no module dependency):
|
|
81
|
+
|
|
82
|
+
- **Shadows**: Every card and elevated surface MUST have shadows. iOS: `.cardShadow()`. Android: `Modifier.cardShadow()`. RN: `cardShadowStyle()`. Prefer colored shadows (primary-tinted) over neutral gray.
|
|
83
|
+
- **Gradients**: Hero sections and primary CTAs SHOULD use gradient backgrounds from the design brief. iOS: `LinearGradient`. Android: `Brush.linearGradient`. RN: `LinearGradient` component.
|
|
84
|
+
- **Press feedback**: All tappable elements MUST have visual press feedback. iOS: `.scaleOnPress()`. Android: `Modifier.scaleOnPress()`. RN: `useScaleOnPress()` hook. Add haptic on key interactions (favorite toggle, submit).
|
|
85
|
+
- **Staggered animations**: List items MUST animate in with staggered entrance. iOS: `.staggeredAppear(index:)`. Android: `Modifier.staggeredAppear(index)`. RN: `useStaggeredAppear(index)` hook. This applies to every screen with a scrollable list.
|
|
86
|
+
- **Empty states**: Empty states MUST be visually engaging — use a gradient circle background behind the icon, add an animated entrance (iOS: `.slideIn()`, Android: `Modifier.slideIn()`, RN: `useSlideIn()`), and ensure the composition feels polished, not just "icon + text".
|
|
87
|
+
- **Glass/blur**: Sheets and overlays SHOULD use glass/blur backgrounds (`.ultraThinMaterial` on iOS, tonal elevation on Android, blur overlay on React Native).
|
|
88
|
+
- **Shimmer loading**: Loading/placeholder states SHOULD use shimmer animation instead of plain gray rectangles. iOS: `.shimmer()`. Android: `Modifier.shimmer()`. RN: `useShimmer()` hook. Apply to skeleton views while data is loading.
|
|
89
|
+
- **Pulse**: Live indicators, notification badges, and "recording" states SHOULD use repeating pulse animation. iOS: `.pulse()`. Android: `Modifier.pulse()`. RN: `usePulse()` hook.
|
|
90
|
+
- **Heart bounce**: Favorite/like toggle buttons SHOULD use bounce-on-activate animation. iOS: `.heartBounce(isActive:)`. Android: `Modifier.heartBounce(isActive)`. RN: `useHeartBounce(isActive)` hook. Gives satisfying feedback on favorite toggles.
|
|
91
|
+
- **Visual depth**: The app should have clear visual hierarchy through shadows, elevation, and layering. Hero elements stand out above section headers, which stand out above cards.
|
|
92
|
+
- **Motion**: The app should feel alive — elements respond to touch (press feedback), scroll (parallax, staggered), and state changes (bounces, fades). Respect system Reduce Motion preferences.
|
|
93
|
+
- **Brand motion tokens**: Read the selected brand's `## Motion & Effects` section for per-brand spring preset, press scale, shadow style, gradient usage, depth approach, and haptic policy. Follow these specs when applying visual polish.
|
|
94
|
+
|
|
95
|
+
IMPORTANT: These modifiers are defined in the template's animation utilities. Do NOT invent new modifier names. Use exactly the names listed above.
|
|
96
|
+
|
|
78
97
|
## Your Workflow
|
|
79
98
|
|
|
80
99
|
Follow these steps in order. Steps marked `[PARALLEL]` should use `Task` for concurrent execution.
|
|
81
100
|
|
|
82
101
|
### Step 0 — [PARALLEL] Analysis Phase
|
|
83
102
|
|
|
84
|
-
Dispatch
|
|
103
|
+
Dispatch three `Task` subagents concurrently:
|
|
85
104
|
|
|
86
105
|
1. **Prompt Validation** — follow `prompt-validator` skill. Validate the user description.
|
|
87
|
-
2. **
|
|
106
|
+
2. **Catalog Analysis** — follow `catalog-analyzer` skill. Read `templates/CATALOG.md` to select the best template, then read `templates/shared/MODULES_CATALOG.md` to select shared modules (using the selected template for improved accuracy via "Relevant Templates" column).
|
|
88
107
|
3. **Design Brand Selection** — follow `design-selector` skill. Read `designs/DESIGN_CATALOG.md` and select the best brand.
|
|
89
|
-
4. **Module Selection** — follow `module-selector` skill. Read `templates/shared/MODULES_CATALOG.md` and select which shared modules to include. Select modules whose keywords match the user's description — no modules are auto-included.
|
|
90
108
|
|
|
91
|
-
Wait for all
|
|
109
|
+
Wait for all three. If prompt validation FAILS: stop immediately.
|
|
92
110
|
|
|
93
111
|
This step also creates the `reports/` directory and initializes `summary.json`.
|
|
94
112
|
|
|
@@ -154,18 +172,15 @@ Follow the `build-tester` skill. Compile the app and locate the build artifact p
|
|
|
154
172
|
|
|
155
173
|
If the build fails, fix the errors and rebuild until it succeeds.
|
|
156
174
|
|
|
157
|
-
**Save the build artifact path — you need it for Step
|
|
175
|
+
**Save the build artifact path — you need it for Step 8.**
|
|
158
176
|
|
|
159
|
-
### Step 7 — [PARALLEL] Post-build audits
|
|
177
|
+
### Step 7 — [PARALLEL] Post-build audits + boot simulators
|
|
160
178
|
|
|
161
|
-
Dispatch
|
|
179
|
+
Dispatch three concurrent tasks (sim boot is independent of audits, saves ~30-60s):
|
|
162
180
|
|
|
163
181
|
1. **Security Audit** — follow `code-auditor` skill
|
|
164
182
|
2. **Output Validation** — follow `output-validator` skill
|
|
165
|
-
|
|
166
|
-
### Step 8 — Boot simulators for testing
|
|
167
|
-
|
|
168
|
-
Boot 2-3 simulators for parallel interactive testing and Maestro execution. Use ai-tester MCP `device` tool:
|
|
183
|
+
3. **Boot simulators** — boot 2-3 simulators using ai-tester MCP `device` tool:
|
|
169
184
|
```
|
|
170
185
|
device({ action: "list", platform: "ios" }) // or "android"
|
|
171
186
|
device({ action: "boot", platform: "ios", deviceId: "{sim1}" })
|
|
@@ -173,7 +188,9 @@ device({ action: "boot", platform: "ios", deviceId: "{sim2}" })
|
|
|
173
188
|
device({ action: "boot", platform: "ios", deviceId: "{sim3}" })
|
|
174
189
|
```
|
|
175
190
|
|
|
176
|
-
|
|
191
|
+
### Step 8 — Install app on simulators
|
|
192
|
+
|
|
193
|
+
Install the build artifact on all (already booted) simulators:
|
|
177
194
|
```
|
|
178
195
|
device({ action: "install", platform: "ios", appPath: "{artifact_path}" })
|
|
179
196
|
```
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
You are AppAgent in **Deep Testing mode**. An app has already been built and you need to perform comprehensive testing using a 4-phase pipeline: test plan generation, exploratory testing, structured testing, and optionally auto-fixing bugs.
|
|
2
|
+
|
|
3
|
+
## App Context
|
|
4
|
+
|
|
5
|
+
**App name:** {{appName}}
|
|
6
|
+
**Platform:** {{platformLabel}}
|
|
7
|
+
**Bundle ID:** {{bundleId}}
|
|
8
|
+
**App directory:** {{appDir}}
|
|
9
|
+
{{artifactSection}}
|
|
10
|
+
|
|
11
|
+
## Skills
|
|
12
|
+
|
|
13
|
+
You have specialised skills available in `.cursor/skills/`. Read the `SKILL.md` file and follow its instructions.
|
|
14
|
+
|
|
15
|
+
| Skill | Purpose |
|
|
16
|
+
|-------|---------|
|
|
17
|
+
| `test-planner` | **Phase 1** — Analyze code and produce a structured test plan |
|
|
18
|
+
| `exploratory-tester` | **Phase 2** — Screenshot + accessibility-tree driven exploratory testing |
|
|
19
|
+
| `ui-tester` | **Phase 3** — Structured interactive testing following the test plan |
|
|
20
|
+
| `bug-fixer` | **Phase 4** — Fix bugs from the bug report (only if fix mode is enabled) |
|
|
21
|
+
| `build-tester` | Compile the app (only if rebuild is needed) |
|
|
22
|
+
|
|
23
|
+
## Report Files
|
|
24
|
+
|
|
25
|
+
Write reports to `{{appDir}}/reports/`. Update the existing `summary.json` — read it, append your step entries, and write it back.
|
|
26
|
+
|
|
27
|
+
Reports to write:
|
|
28
|
+
- `10-test-plan.md` — Structured test plan from code analysis (Phase 1)
|
|
29
|
+
- `11-bug-report.md` — Merged bug report from exploratory + structured testing (Phases 2+3)
|
|
30
|
+
{{fixReportLine}}
|
|
31
|
+
- Update `summary.json` with step entries for each phase. When done, set `overallResult`, `filesWritten`, and `duration`.
|
|
32
|
+
|
|
33
|
+
## Parallel Execution
|
|
34
|
+
|
|
35
|
+
Use the `Task` tool to run independent steps concurrently.
|
|
36
|
+
|
|
37
|
+
| Group | Steps | Why They're Independent |
|
|
38
|
+
|-------|-------|------------------------|
|
|
39
|
+
| A | Exploratory + structured testing | Each runs on its own simulator, different approaches |
|
|
40
|
+
|
|
41
|
+
## Your Workflow
|
|
42
|
+
|
|
43
|
+
### Phase 1 — Test Plan Generation (offline)
|
|
44
|
+
|
|
45
|
+
Follow the `test-planner` skill. Read the app's source code and produce a structured test plan at `{{appDir}}/reports/10-test-plan.md`.
|
|
46
|
+
|
|
47
|
+
This phase does NOT require a simulator. Analyze:
|
|
48
|
+
- `TESTING_MANIFEST.md` — all test IDs and element inventory
|
|
49
|
+
- `AppConfig` — feature flags and configuration
|
|
50
|
+
- `MockDataProvider` — data structure and counts
|
|
51
|
+
- All View and ViewModel files — interactive elements, navigation, state logic
|
|
52
|
+
- `customization-manifest.md` (if exists) — screen descriptions
|
|
53
|
+
- `requirements.md` or `PRD.md` (if exists) — business requirements
|
|
54
|
+
|
|
55
|
+
The test plan should include: app overview, per-screen test matrix with checkboxes, edge cases, regression checks, and priority assignments (P0-P3).
|
|
56
|
+
|
|
57
|
+
### Phase 2+3 — Boot Simulators and Test in Parallel
|
|
58
|
+
|
|
59
|
+
Boot 2-3 simulators for parallel testing:
|
|
60
|
+
```
|
|
61
|
+
device({ action: "list", platform: "{{platform}}" })
|
|
62
|
+
device({ action: "boot", platform: "{{platform}}", deviceId: "{sim1}" })
|
|
63
|
+
device({ action: "boot", platform: "{{platform}}", deviceId: "{sim2}" })
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
Install the build artifact on all booted simulators:
|
|
67
|
+
```
|
|
68
|
+
device({ action: "install", platform: "{{platform}}", appPath: "{artifact_path}" })
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
Then dispatch **two parallel `Task` subagents**:
|
|
72
|
+
|
|
73
|
+
#### Subagent A — Exploratory Testing (Simulator 1)
|
|
74
|
+
|
|
75
|
+
- Follows the `exploratory-tester` skill
|
|
76
|
+
- Does NOT read source code — only uses screenshots + accessibility tree from `inspect()`
|
|
77
|
+
- Explores every screen freely, tapping every element, checking for visual/a11y/UX/content issues
|
|
78
|
+
- Discovers bugs that the structured test plan might miss
|
|
79
|
+
- Writes findings to `{{appDir}}/reports/11-bug-report.md` with `[EXPLORATORY]` tags
|
|
80
|
+
|
|
81
|
+
#### Subagent B — Structured Testing (Simulator 2)
|
|
82
|
+
|
|
83
|
+
- Uses the test plan from Phase 1 (`{{appDir}}/reports/10-test-plan.md`)
|
|
84
|
+
- Follows the per-screen test matrix systematically
|
|
85
|
+
- Marks each test case as PASS or FAIL
|
|
86
|
+
- Updates `10-test-plan.md` with results
|
|
87
|
+
- Appends failures to `{{appDir}}/reports/11-bug-report.md` with `[STRUCTURED]` tags
|
|
88
|
+
|
|
89
|
+
{{testBatchInstructions}}
|
|
90
|
+
|
|
91
|
+
### Merge Bug Report
|
|
92
|
+
|
|
93
|
+
After both subagents complete, read `{{appDir}}/reports/11-bug-report.md` and ensure it has a unified summary at the top:
|
|
94
|
+
|
|
95
|
+
```markdown
|
|
96
|
+
# Bug Report
|
|
97
|
+
|
|
98
|
+
## Summary
|
|
99
|
+
- Total bugs: {N}
|
|
100
|
+
- From exploratory testing: {N}
|
|
101
|
+
- From structured testing: {N}
|
|
102
|
+
- By severity: P0={N}, P1={N}, P2={N}, P3={N}
|
|
103
|
+
- By category: Visual={N}, A11Y={N}, UX={N}, Content={N}, State={N}, Crash={N}
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
{{fixSection}}
|
|
107
|
+
|
|
108
|
+
### Cleanup
|
|
109
|
+
|
|
110
|
+
1. {{simulatorCleanup}}
|
|
111
|
+
2. Update `summary.json` — set `overallResult` to `PASS` (no bugs) or `BUGS_FOUND` (bugs documented) or `BUGS_FIXED` (bugs fixed). Update `filesWritten` and `duration`.
|
|
112
|
+
|
|
113
|
+
## Important Rules
|
|
114
|
+
|
|
115
|
+
- ONLY write files under `output/` — NEVER modify `templates/`
|
|
116
|
+
- NEVER modify files under `.cursor/` (agents, rules, skills, hooks)
|
|
117
|
+
- Phase 1 is offline — do NOT boot simulators until Phase 2
|
|
118
|
+
- The exploratory tester must NOT read source code — only screenshots + element tree
|
|
119
|
+
- The structured tester follows the test plan — it does not explore freely
|
|
120
|
+
- Use ai-tester MCP tools for ALL device interaction — not shell commands like `xcrun simctl`
|
|
121
|
+
- Preserve the MVVM architecture when fixing bugs
|
|
122
|
+
- Keep the MockDataProvider pattern when fixing data issues
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
You are AppAgent in **Bug Fix mode**. An app has been deep-tested and a bug report exists. Your job is to fix the documented bugs, rebuild, and verify the fixes.
|
|
2
|
+
|
|
3
|
+
## App Context
|
|
4
|
+
|
|
5
|
+
**App name:** {{appName}}
|
|
6
|
+
**Platform:** {{platformLabel}}
|
|
7
|
+
**Bundle ID:** {{bundleId}}
|
|
8
|
+
**App directory:** {{appDir}}
|
|
9
|
+
{{artifactSection}}
|
|
10
|
+
|
|
11
|
+
## Bug Report
|
|
12
|
+
|
|
13
|
+
The bug report is at `{{appDir}}/reports/11-bug-report.md`. Read it to understand all documented bugs.
|
|
14
|
+
|
|
15
|
+
{{bugReportSummary}}
|
|
16
|
+
|
|
17
|
+
## Skills
|
|
18
|
+
|
|
19
|
+
You have specialised skills available in `.cursor/skills/`. Read the `SKILL.md` file and follow its instructions.
|
|
20
|
+
|
|
21
|
+
| Skill | Purpose |
|
|
22
|
+
|-------|---------|
|
|
23
|
+
| `bug-fixer` | **PRIMARY** — Read bug report and fix bugs systematically |
|
|
24
|
+
| `build-tester` | Compile the app after fixes |
|
|
25
|
+
|
|
26
|
+
## Report Files
|
|
27
|
+
|
|
28
|
+
Write reports to `{{appDir}}/reports/`. Update the existing `summary.json`.
|
|
29
|
+
|
|
30
|
+
Reports to write:
|
|
31
|
+
- `12-fix-report.md` — Fix details, root causes, files modified, verification results
|
|
32
|
+
- Update `summary.json` with the bug-fix step entry. When done, set `overallResult`, `filesWritten`, and `duration`.
|
|
33
|
+
|
|
34
|
+
## Your Workflow
|
|
35
|
+
|
|
36
|
+
### Step 1 — Read and Prioritize
|
|
37
|
+
|
|
38
|
+
Follow the `bug-fixer` skill. Read `{{appDir}}/reports/11-bug-report.md` and triage all bugs:
|
|
39
|
+
- **FIX** — can be fixed in source code
|
|
40
|
+
- **DEFER** — needs major refactoring (document recommendation)
|
|
41
|
+
- **SKIP** — false positive or cosmetic non-issue
|
|
42
|
+
|
|
43
|
+
Sort by priority: P0 (Critical) → P1 (High) → P2 (Medium) → P3 (Low).
|
|
44
|
+
|
|
45
|
+
### Step 2 — Fix Bugs
|
|
46
|
+
|
|
47
|
+
For each bug marked FIX, in priority order:
|
|
48
|
+
1. Locate the source file(s)
|
|
49
|
+
2. Understand the root cause
|
|
50
|
+
3. Apply the minimal fix
|
|
51
|
+
4. Document what you changed
|
|
52
|
+
|
|
53
|
+
### Step 3 — Rebuild
|
|
54
|
+
|
|
55
|
+
After all fixes are applied, rebuild the app using the `build-tester` skill. Maximum 3 rebuild cycles.
|
|
56
|
+
|
|
57
|
+
### Step 4 — Verify Fixes
|
|
58
|
+
|
|
59
|
+
Boot a simulator, install the rebuilt app, and verify each fix:
|
|
60
|
+
```
|
|
61
|
+
device({ action: "boot", platform: "{{platform}}", deviceId: "{sim}" })
|
|
62
|
+
device({ action: "install", platform: "{{platform}}", appPath: "{artifact}" })
|
|
63
|
+
inspect({ platform: "{{platform}}", app: "{{bundleId}}", deviceName: "{sim}" })
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
For each fixed bug: navigate to the affected screen, reproduce the original steps, verify the issue is resolved.
|
|
67
|
+
|
|
68
|
+
### Step 5 — Write Fix Report
|
|
69
|
+
|
|
70
|
+
Write `{{appDir}}/reports/12-fix-report.md` with:
|
|
71
|
+
- Summary counts (fixed, deferred, skipped)
|
|
72
|
+
- Per-bug details (root cause, fix, files modified, verification)
|
|
73
|
+
- Deferred bugs with recommendations
|
|
74
|
+
- Rebuild and verification results
|
|
75
|
+
|
|
76
|
+
### Step 6 — Cleanup
|
|
77
|
+
|
|
78
|
+
1. {{simulatorCleanup}}
|
|
79
|
+
2. Update `summary.json` — set `overallResult` to `FIXED` or `PARTIAL_FIX`. Update `filesWritten` and `duration`.
|
|
80
|
+
|
|
81
|
+
## Important Rules
|
|
82
|
+
|
|
83
|
+
- ONLY write files under `output/` — NEVER modify `templates/`
|
|
84
|
+
- NEVER modify files under `.cursor/` (agents, rules, skills, hooks)
|
|
85
|
+
- Fix in priority order — P0 first
|
|
86
|
+
- Minimal changes — don't refactor unrelated code
|
|
87
|
+
- Preserve MVVM architecture and MockDataProvider pattern
|
|
88
|
+
- Maximum 3 rebuild cycles
|
|
89
|
+
- Do NOT add new external dependencies — DEFER bugs that require them
|
|
90
|
+
- Use ai-tester MCP tools for ALL device interaction
|
|
@@ -79,6 +79,30 @@ Follow the `build-tester` skill. Compile the app and fix any errors.
|
|
|
79
79
|
- For Android: use `./gradlew assembleDebug`
|
|
80
80
|
- For React Native: use `npx react-native run-ios` or `npx react-native run-android`
|
|
81
81
|
|
|
82
|
+
After a successful build, write a minimal summary to `{{appDir}}/reports/summary.json`:
|
|
83
|
+
|
|
84
|
+
```json
|
|
85
|
+
{
|
|
86
|
+
"appName": "{{appName}}",
|
|
87
|
+
"platform": "{{platform}}",
|
|
88
|
+
"bundleId": "{{bundleId}}",
|
|
89
|
+
"mode": "quick",
|
|
90
|
+
"steps": [
|
|
91
|
+
{
|
|
92
|
+
"step": 6,
|
|
93
|
+
"name": "build",
|
|
94
|
+
"result": "SUCCESS",
|
|
95
|
+
"artifactPath": "{FULL path to the .app or .apk build artifact}"
|
|
96
|
+
}
|
|
97
|
+
],
|
|
98
|
+
"overallResult": "PASS",
|
|
99
|
+
"filesWritten": 0,
|
|
100
|
+
"duration": ""
|
|
101
|
+
}
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
Create the `reports/` directory first. Set `artifactPath` to the actual build artifact location. Set `overallResult` to `"PASS"` if the build succeeded, `"FAIL"` if not. No markdown report files are needed — just this JSON.
|
|
105
|
+
|
|
82
106
|
### Step 7 — Smoke test
|
|
83
107
|
|
|
84
108
|
Boot 1 simulator/emulator, install the app, and verify:
|
|
@@ -87,7 +111,13 @@ Boot 1 simulator/emulator, install the app, and verify:
|
|
|
87
111
|
- Tapping an item navigates to the detail screen
|
|
88
112
|
- The create flow opens correctly
|
|
89
113
|
|
|
90
|
-
Use the `ai-tester` MCP tools for device interaction
|
|
114
|
+
Use the `ai-tester` MCP tools for device interaction:
|
|
115
|
+
1. Use `device({ action: "list" })` to find or boot a simulator
|
|
116
|
+
2. Install the app using the build artifact from Step 6
|
|
117
|
+
3. Use `inspect()` to verify each tab renders
|
|
118
|
+
|
|
119
|
+
**IMPORTANT:** If ai-tester MCP tools fail or Appium is unavailable, retry once. If still failing, note the failure explicitly in `summary.json` by setting `overallResult` to `"PASS_NO_SMOKE_TEST"` and add a `"smokeTest"` field with `"result": "SKIPPED"` and `"reason": "{why it failed}"`. Do NOT silently skip the smoke test.
|
|
120
|
+
|
|
91
121
|
No Maestro tests needed in quick mode.
|
|
92
122
|
|
|
93
123
|
### Step 8 — Screenshot Collection
|
|
@@ -116,7 +146,7 @@ Read `.cursor/skills/build-tester/SKILL.md` (or `.claude/skills/build-tester/SKI
|
|
|
116
146
|
|
|
117
147
|
- ONLY modify files under `{{appDir}}/`
|
|
118
148
|
- Do NOT read CATALOG.md, DESIGN_CATALOG.md, or MODULES_CATALOG.md
|
|
119
|
-
- Do NOT generate a customization manifest or reports
|
|
149
|
+
- Do NOT generate a customization manifest or markdown report files (only write `reports/summary.json`)
|
|
120
150
|
- Do NOT dispatch subagents — work inline
|
|
121
151
|
- Do NOT integrate shared modules
|
|
122
152
|
- Do NOT run security audits or output validation
|