mobile-ai-agents 1.0.31 → 1.0.32

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/cli/index.js CHANGED
@@ -245,6 +245,10 @@ const PLATFORM_SKILLS = {
245
245
  // Workflows are always installed regardless of platform selection
246
246
  const ALL_WORKFLOWS = Object.keys(WORKFLOWS);
247
247
 
248
+ function workflowCommandName(name) {
249
+ return (AGENTS[name] || SKILLS[name]) ? `${name}-workflow` : name;
250
+ }
251
+
248
252
  const PRIMARY_MEMORY_DIR = '.mobile-ai-agents';
249
253
  const LEGACY_MEMORY_DIR = '.mobile-agency';
250
254
  const MEMORY_DIR = fs.existsSync(path.join(process.cwd(), LEGACY_MEMORY_DIR)) &&
@@ -881,9 +885,10 @@ async function installForClaude(platforms) {
881
885
  await Promise.all(ALL_WORKFLOWS.map(async (name) => {
882
886
  const meta = WORKFLOWS[name];
883
887
  if (!meta) return;
884
- const dest = path.join(CLAUDE_COMMANDS_DIR, `${name}.md`);
888
+ const commandName = workflowCommandName(name);
889
+ const dest = path.join(CLAUDE_COMMANDS_DIR, `${commandName}.md`);
885
890
  await downloadFile(meta.file, [dest]);
886
- ok(name);
891
+ ok(commandName === name ? name : `${name} → ${commandName}`);
887
892
  }));
888
893
 
889
894
  console.log('');
@@ -923,9 +928,10 @@ async function installForCursor(platforms) {
923
928
  await Promise.all(ALL_WORKFLOWS.map(async (name) => {
924
929
  const meta = WORKFLOWS[name];
925
930
  if (!meta) return;
926
- const dest = path.join(rulesDir, `${name}.mdc`);
931
+ const commandName = workflowCommandName(name);
932
+ const dest = path.join(rulesDir, `${commandName}.mdc`);
927
933
  await downloadFile(meta.file, [dest]);
928
- ok(name);
934
+ ok(commandName === name ? name : `${name} → ${commandName}`);
929
935
  }));
930
936
 
931
937
  console.log('');
@@ -1181,10 +1187,11 @@ async function cmdAdd(args) {
1181
1187
  process.exit(1);
1182
1188
  }
1183
1189
  ensureDir(CLAUDE_COMMANDS_DIR);
1184
- const dest = path.join(CLAUDE_COMMANDS_DIR, `${name}.md`);
1190
+ const commandName = workflowCommandName(name);
1191
+ const dest = path.join(CLAUDE_COMMANDS_DIR, `${commandName}.md`);
1185
1192
  log(`Fetching ${bold(name)} workflow...`);
1186
1193
  await downloadFile(meta.file, [dest]);
1187
- ok(`${name} → ${dim(dest)}`);
1194
+ ok(`${commandName} → ${dim(dest)}`);
1188
1195
  } else {
1189
1196
  err(`Unknown type: ${type}. Use 'agent', 'skill', or 'workflow'.`);
1190
1197
  process.exit(1);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mobile-ai-agents",
3
- "version": "1.0.31",
3
+ "version": "1.0.32",
4
4
  "description": "AI agents, skills, and Loop Engineering workflows for building, testing, auditing, and releasing mobile apps.",
5
5
  "bin": {
6
6
  "mobile-ai-agents": "cli/index.js",
@@ -10,7 +10,7 @@
10
10
 
11
11
  Use Mobile MCP to run AI-assisted QA on a real device, emulator, or simulator. This skill turns a feature flow into a repeatable device test plan using screenshots, accessibility snapshots, element inspection, taps, typing, swipes, app install, app launch, and device orientation checks.
12
12
 
13
- Mobile MCP is best used after implementation, during APPFORGE Stage 7 Full QA, or before store submission.
13
+ Mobile MCP is best used after implementation, during APPFORGE Stage 7 Full QA, after `/mobile-app-design` reskins, or before store submission.
14
14
 
15
15
  ---
16
16
 
@@ -61,6 +61,30 @@ EDGE_CASES:
61
61
  <offline, invalid input, rotation, restart, permissions, api errors>
62
62
  ```
63
63
 
64
+ ### Reskin QA Input
65
+
66
+ Use this format when verifying a `/mobile-app-design` redesign or reskin:
67
+
68
+ ```text
69
+ COMMAND: /mobile-mcp-qa
70
+ MODE: RESKIN_QA
71
+ PLATFORM: <Android | iOS | Flutter | React Native>
72
+ APP_ID: <Android package name or iOS bundle id>
73
+ BUILD_PATH: <optional apk/ipa/app path>
74
+ DEVICE: <optional target device name>
75
+ SUPPORTED_THEMES: <light | dark | light,dark | custom themes>
76
+ SCREEN_INVENTORY:
77
+ | Screen/State | Decision | Expected Change | Route/Tab |
78
+ |---|---|---|---|
79
+ | <screen + state> | REDESIGN | <layout/hierarchy/state change> | <route/tab> |
80
+ BASELINE_EVIDENCE:
81
+ <before screenshots, screenshot paths, or "capture before from current build">
82
+ EXPECTED_REDESIGN:
83
+ <approved reskin plan, navigation changes, theme changes, and state coverage>
84
+ REGRESSION_RISKS:
85
+ <tab reorder, renamed copy, deep links, dark mode, keyboard, safe area, analytics, etc.>
86
+ ```
87
+
64
88
  ---
65
89
 
66
90
  ## Skill Prompt
@@ -68,6 +92,8 @@ EDGE_CASES:
68
92
  ```text
69
93
  Run a Mobile MCP QA pass for the provided mobile app flow.
70
94
 
95
+ If MODE is RESKIN_QA, run the Reskin QA flow instead of ordinary flow QA.
96
+
71
97
  STEP 1 — VERIFY SETUP
72
98
  - List available devices.
73
99
  - Select the requested device, or choose the first available emulator/simulator.
@@ -101,7 +127,79 @@ Check:
101
127
  - App restart preserves required state
102
128
  - Offline/API error behavior is user-safe
103
129
 
104
- STEP 5 — REPORT
130
+ RESKIN QA FLOW
131
+ Use this flow when MODE is RESKIN_QA or when the user provides a `/mobile-app-design` screen inventory.
132
+
133
+ STEP R1 — VERIFY RESKIN INPUTS
134
+ - Read SCREEN_INVENTORY and EXPECTED_REDESIGN.
135
+ - Preserve each inventory decision exactly: REDESIGN, RESTYLE, or LEAVE.
136
+ - Confirm SUPPORTED_THEMES. If the app supports light and dark, both are required.
137
+ - If baseline screenshots are missing and the current build is already the after build, mark before evidence as missing instead of inventing it.
138
+
139
+ STEP R2 — CAPTURE OR REGISTER BASELINE
140
+ - For each inventory row, attach the provided before screenshot or capture a before screenshot if the baseline build is available.
141
+ - Name evidence predictably: before-<theme>-<screen>-<state>.
142
+ - A screen/state without before evidence is still testable after the edit, but its before/after comparison status is UNVERIFIED.
143
+
144
+ STEP R3 — CAPTURE AFTER STATE
145
+ - Launch the after build.
146
+ - Visit every screen/state in SCREEN_INVENTORY.
147
+ - Capture after screenshots for every supported theme.
148
+ - For loading, empty, error, offline, permission-denied, and success states, use controlled test data, network toggles, permissions, or documented setup steps when available.
149
+ - Name evidence predictably: after-<theme>-<screen>-<state>.
150
+
151
+ STEP R4 — VERIFY STRUCTURAL CHANGE
152
+ For each inventory row:
153
+ - REDESIGN must show layout, hierarchy, grouping, density, information-priority, or state-layout changes. Token-only changes are FAIL.
154
+ - RESTYLE may show token/component updates only, but must have a justification.
155
+ - LEAVE should remain intentionally unchanged except for unavoidable global shell or token updates.
156
+ - Mark missing before or after screenshots as UNVERIFIED.
157
+
158
+ STEP R5 — VERIFY REGRESSIONS
159
+ Check:
160
+ - clipped or overlapping text
161
+ - safe areas, status bar, navigation bar, and notches
162
+ - keyboard avoidance
163
+ - minimum 44pt/48dp touch targets
164
+ - light/dark contrast and invisible text risk
165
+ - tab order, selected state, route names, deep links, and back behavior
166
+ - renamed screen/tab copy across labels, empty states, prompts, and accessibility text
167
+ - loading, empty, error, offline, disabled, permission-denied, and success states
168
+ - orientation when the app supports it
169
+
170
+ STEP R6 — REPORT RESKIN QA
171
+ Return:
172
+ MOBILE MCP RESKIN QA REPORT
173
+ ===========================
174
+ Platform:
175
+ Device:
176
+ App:
177
+ Themes:
178
+ Result: PASS | FAIL | PARTIAL | BLOCKED
179
+
180
+ Screen Evidence:
181
+ | Screen/State | Decision | Theme | Before | After | Result |
182
+ |---|---|---|---|---|---|
183
+
184
+ Structural Verification:
185
+ | Screen/State | Decision | Expected Change | Observed Change | Result |
186
+ |---|---|---|---|---|
187
+
188
+ Regression Checks:
189
+ | Check | Screen/State | Result | Evidence |
190
+ |---|---|---|---|
191
+
192
+ Issues:
193
+ | Severity | Screen/State | Issue | Evidence | Fix |
194
+ |---|---|---|---|---|
195
+
196
+ Evidence For PRD Verification:
197
+ - <compact screenshot list and report summary that can be pasted into /prd-verification>
198
+
199
+ Recommended Next Action:
200
+ <single concrete fix or next test>
201
+
202
+ STEP 5 — REPORT ORDINARY FLOW QA
105
203
  Return:
106
204
  MOBILE MCP QA REPORT
107
205
  ====================
@@ -129,6 +227,81 @@ Recommended Next Action:
129
227
  <single concrete fix or next test>
130
228
  ```
131
229
 
230
+ ### Reskin QA Example
231
+
232
+ #### Input
233
+
234
+ ```text
235
+ COMMAND: /mobile-mcp-qa
236
+ MODE: RESKIN_QA
237
+ PLATFORM: React Native
238
+ APP_ID: com.example.habits
239
+ SUPPORTED_THEMES: light,dark
240
+ SCREEN_INVENTORY:
241
+ | Screen/State | Decision | Expected Change | Route/Tab |
242
+ |---|---|---|---|
243
+ | Today/populated | REDESIGN | grouped morning/afternoon/evening sections | Today |
244
+ | Today/empty | REDESIGN | coaching empty state with primary action | Today |
245
+ | Insights/populated | REDESIGN | KPI strip + weekly chart + compact history | Insights |
246
+ | Settings/default | RESTYLE | tokenized surfaces and clearer typography | Settings |
247
+ BASELINE_EVIDENCE:
248
+ before-light-today-populated.png, before-dark-today-populated.png,
249
+ before-light-insights-populated.png, before-dark-insights-populated.png
250
+ EXPECTED_REDESIGN:
251
+ Tabs reordered to Today, Insights, Coach, Settings. Today and Insights require structural layout changes. Settings is restyle only.
252
+ REGRESSION_RISKS:
253
+ dark mode contrast, renamed Strategy copy, tab selected state, safe areas
254
+ ```
255
+
256
+ #### Output
257
+
258
+ ```text
259
+ MOBILE MCP RESKIN QA REPORT
260
+ ===========================
261
+ Platform: React Native
262
+ Device: iPhone 15 Simulator
263
+ App: com.example.habits
264
+ Themes: light, dark
265
+ Result: FAIL
266
+
267
+ Screen Evidence:
268
+ | Screen/State | Decision | Theme | Before | After | Result |
269
+ |---|---|---|---|---|---|
270
+ | Today/populated | REDESIGN | light | before-light-today | after-light-today | PASS |
271
+ | Today/populated | REDESIGN | dark | before-dark-today | after-dark-today | PASS |
272
+ | Insights/populated | REDESIGN | light | before-light-insights | after-light-insights | PASS |
273
+ | Insights/populated | REDESIGN | dark | before-dark-insights | after-dark-insights | FAIL |
274
+ | Settings/default | RESTYLE | dark | missing | after-dark-settings | UNVERIFIED |
275
+
276
+ Structural Verification:
277
+ | Screen/State | Decision | Expected Change | Observed Change | Result |
278
+ |---|---|---|---|---|
279
+ | Today/populated | REDESIGN | grouped sections | sections visible | PASS |
280
+ | Insights/populated | REDESIGN | KPI + chart + history | chart clipped in dark | FAIL |
281
+ | Settings/default | RESTYLE | token updates | no before evidence | UNVERIFIED |
282
+
283
+ Regression Checks:
284
+ | Check | Screen/State | Result | Evidence |
285
+ |---|---|---|---|
286
+ | Dark contrast | Insights | FAIL | chart label unreadable |
287
+ | Tab selected state | All tabs | PASS | selected indicator moves |
288
+ | Renamed copy | Today | PASS | no stale Strategy copy |
289
+
290
+ Issues:
291
+ | Severity | Screen/State | Issue | Evidence | Fix |
292
+ |---|---|---|---|---|
293
+ | WARNING | Insights/dark | Chart label has low contrast | after-dark-insights | Use onSurface token |
294
+ | INFO | Settings/default | Missing baseline | after-dark-settings | Capture before image next run |
295
+
296
+ Evidence For PRD Verification:
297
+ - Today populated: light/dark before-after PASS.
298
+ - Insights dark: FAIL due chart contrast.
299
+ - Settings: UNVERIFIED because baseline missing.
300
+
301
+ Recommended Next Action:
302
+ Fix Insights dark chart label contrast and rerun Reskin QA for Insights and Settings.
303
+ ```
304
+
132
305
  ---
133
306
 
134
307
  ## Example
@@ -1,6 +1,7 @@
1
1
  # Workflow — Mobile MCP QA
2
2
 
3
3
  **Type:** Device automation QA
4
+ **Slash Command:** `/mobile-mcp-qa-workflow` when installed alongside the `/mobile-mcp-qa` skill
4
5
  **Agents Used:** APPFORGE, AXIOM / SWIFT / DART / BRIDGE, CRASHER, PERF, Mobile Memory
5
6
  **Skills Used:** /mobile-mcp-qa, /accessibility-audit, /perf-audit, /mobile-memory-save
6
7