mobile-ai-agents 1.0.31 → 1.0.33

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.33",
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
@@ -27,6 +27,10 @@ IMPLEMENTATION:
27
27
  <changed files, relevant source code, repo tree, or diff>
28
28
  EVIDENCE:
29
29
  <test output, build output, screenshots, Mobile MCP QA report, logs, accessibility report, security report>
30
+ RESKIN_PLAN:
31
+ <optional /mobile-app-design plan with REDESIGN, RESTYLE, and LEAVE screen inventory rows>
32
+ RESKIN_QA:
33
+ <optional /mobile-mcp-qa Reskin QA report, before/after screenshots, state coverage, and theme evidence>
30
34
  KNOWN_LIMITATIONS:
31
35
  <optional explicit constraints, skipped checks, unavailable device, unavailable backend>
32
36
  ```
@@ -45,11 +49,13 @@ Read these inputs in order:
45
49
  1. PRD.md or product requirements
46
50
  2. TASKS.md acceptance criteria
47
51
  3. DESIGN.md or design plan
48
- 4. DEPENDENCIES.md and ROADMAP.md when provided
49
- 5. MOBILE_MEMORY.md or project context when provided
50
- 6. Relevant source code, diff, and file tree
51
- 7. Test/build output
52
- 8. Screenshots, videos, accessibility reports, security reports, or Mobile MCP QA reports
52
+ 4. /mobile-app-design reskin plan and screen inventory when provided
53
+ 5. DEPENDENCIES.md and ROADMAP.md when provided
54
+ 6. MOBILE_MEMORY.md or project context when provided
55
+ 7. Relevant source code, diff, and file tree
56
+ 8. Test/build output
57
+ 9. Screenshots, videos, accessibility reports, security reports, or Mobile MCP QA reports
58
+ 10. /mobile-mcp-qa Reskin QA report when provided
53
59
 
54
60
  Verification rules:
55
61
 
@@ -61,6 +67,10 @@ Verification rules:
61
67
  - Separate confirmed gaps from assumptions.
62
68
  - Do not expand scope beyond the approved PRD unless it creates release risk.
63
69
  - Do not mark release-ready if critical requirements, security blockers, crash risks, or required tests are missing.
70
+ - For mobile reskins, compile/build/test success is not UI proof by itself.
71
+ - For mobile reskins, every required screen inventory row needs screenshot, video, or Mobile MCP evidence.
72
+ - Mark missing required reskin evidence as UNVERIFIED, or PARTIAL only when some states/themes are proven.
73
+ - Reject shallow rethemes: a REDESIGN screen fails when it only inherits token, color, font, spacing, or theme changes.
64
74
 
65
75
  Check these areas:
66
76
 
@@ -81,17 +91,28 @@ Check these areas:
81
91
  - Layout, hierarchy, content, states, responsiveness, and accessibility evidence.
82
92
  - Screenshot or Mobile MCP evidence when available.
83
93
 
84
- 4. TEST AND DEVICE EVIDENCE
94
+ 4. MOBILE RESKIN VERIFICATION
95
+ Use this section when RESKIN_PLAN is provided or the scope mentions /mobile-app-design, reskin, redesign, tab reorder, navigation rename, visual refresh, or restyle.
96
+ - Read every screen inventory row and preserve its decision: REDESIGN, RESTYLE, or LEAVE.
97
+ - REDESIGN must show structural change: layout, hierarchy, grouping, density, information architecture, state layout, tab order, or interaction model.
98
+ - RESTYLE must include justification and must not be counted as structurally redesigned.
99
+ - LEAVE must be intentionally out of scope and should not be reported as a missed redesign unless the PRD required it.
100
+ - Compare before/after screenshots or Mobile MCP evidence for each required screen, state, orientation, and light/dark theme listed in the plan.
101
+ - If navigation changed, verify routes, deep links, selected tab state, back behavior, accessibility labels, tests, snapshots, and docs.
102
+ - If tabs or screens were renamed, verify user-facing copy changed consistently in UI, tests, screenshots, and docs.
103
+ - Use per-screen status values: PASS, FAIL, PARTIAL, or UNVERIFIED.
104
+
105
+ 5. TEST AND DEVICE EVIDENCE
85
106
  - Unit, integration, UI, golden/snapshot, E2E, and manual QA evidence.
86
107
  - Build/install/launch proof.
87
108
  - Device, emulator, simulator, or Mobile MCP proof when available.
88
109
 
89
- 5. SECURITY AND RELEASE BLOCKERS
110
+ 6. SECURITY AND RELEASE BLOCKERS
90
111
  - Security audit findings that affect release.
91
112
  - Sensitive data, auth, storage, network, permissions, deep links, WebViews, logging, and payment/subscription behavior when relevant.
92
113
  - Performance blockers that affect launch readiness.
93
114
 
94
- 6. CONTEXT CONTINUITY
115
+ 7. CONTEXT CONTINUITY
95
116
  - MOBILE_MEMORY.md or project context reflects the current state.
96
117
  - Remaining gaps and next action are captured for future sessions.
97
118
 
@@ -127,6 +148,10 @@ UI Match:
127
148
  | Screen/State | Source | Status | Evidence |
128
149
  |---|---|---|---|
129
150
 
151
+ Mobile Reskin Verification:
152
+ | Screen/State | Decision | Evidence | Status | Reason |
153
+ |---|---|---|---|---|
154
+
130
155
  Test And Device Evidence:
131
156
  | Check | Status | Evidence |
132
157
  |---|---|---|
@@ -157,7 +182,7 @@ Test Gaps:
157
182
  - <gap or "None">
158
183
 
159
184
  Release Readiness:
160
- PASS only if all required PRD items and acceptance criteria are PASS, no critical UI/security/test gaps remain, and unknowns are documented or risk-accepted.
185
+ PASS only if all required PRD items and acceptance criteria are PASS, no critical UI/security/test gaps remain, required reskin evidence is PASS or risk-accepted, and unknowns are documented or risk-accepted.
161
186
 
162
187
  Next Action:
163
188
  1. <single highest priority action>
@@ -299,6 +324,54 @@ Next Action:
299
324
 
300
325
  ---
301
326
 
327
+ ## Mobile Reskin Example
328
+
329
+ Use this guidance when `/mobile-app-design` produced a reskin plan and `/mobile-mcp-qa` produced device evidence.
330
+
331
+ ```text
332
+ RESKIN_PLAN:
333
+ - Home: REDESIGN. Replace feed cards with grouped Today, Progress, and Next Action sections.
334
+ - Profile: RESTYLE. Keep structure, update typography and spacing only.
335
+ - Billing: LEAVE. Out of scope for this release.
336
+
337
+ RESKIN_QA:
338
+ - Mobile MCP Reskin QA has before/after screenshots for Home light and dark.
339
+ - Profile screenshot exists only for light theme.
340
+ - No Billing screenshot because it is marked LEAVE.
341
+ ```
342
+
343
+ Expected verification behavior:
344
+
345
+ ```text
346
+ Mobile Reskin Verification:
347
+ | Screen/State | Decision | Evidence | Status | Reason |
348
+ |---|---|---|---|---|
349
+ | Home light/dark | REDESIGN | MCP screenshots | PASS | Structure changed |
350
+ | Profile light | RESTYLE | Screenshot | PARTIAL | Dark missing |
351
+ | Billing | LEAVE | Plan row | PASS | Out of scope |
352
+
353
+ Verification Details:
354
+ ### UI-001 — Home redesign is proven
355
+ - Source: /mobile-app-design RESKIN_PLAN.
356
+ - Evidence: /mobile-mcp-qa before/after screenshots show new grouped sections.
357
+ - Status: PASS.
358
+ - Confirmed gap: None.
359
+ - Assumption: None.
360
+ - Required fix: None.
361
+
362
+ ### UI-002 — Profile restyle has incomplete evidence
363
+ - Source: /mobile-app-design RESKIN_PLAN.
364
+ - Evidence: Only light theme screenshot was provided.
365
+ - Status: PARTIAL.
366
+ - Confirmed gap: Dark theme evidence is missing.
367
+ - Assumption: Profile was intentionally restyled, not redesigned.
368
+ - Required fix: Capture Profile dark theme screenshot or risk-accept the gap.
369
+ ```
370
+
371
+ If Home only changed colors, fonts, or tokens, mark it FAIL because a REDESIGN requires structural proof.
372
+
373
+ ---
374
+
302
375
  ## Composition Example
303
376
 
304
377
  ```text
@@ -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