mobile-ai-agents 1.0.32 → 1.0.34

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/README.md CHANGED
@@ -316,7 +316,7 @@ Not sure where to begin? Pick your situation:
316
316
  | `/store-listing` | Conversation → ASO-optimized listing copy |
317
317
  | `/feature-slice` | Epic → independently shippable tickets |
318
318
  | `/release-prep` | Full release checklist from freeze to store |
319
- | `/accessibility-audit` | WCAG 2.1 AA + platform accessibility review |
319
+ | `/accessibility-audit` | WCAG 2.1 AA, reskin contrast, and semantic color-token migration review |
320
320
  | `/api-versioning` | API deprecation strategy for mobile clients |
321
321
  | `/deeplink-debug` | Diagnoses broken deep links across Android and iOS |
322
322
  | `/mobile-mcp-qa` | Run AI-assisted QA on iOS/Android devices, simulators, and emulators |
package/docs/wiki.md CHANGED
@@ -384,6 +384,16 @@ Full guide: [`docs/vscode-copilot-integration.md`](vscode-copilot-integration.md
384
384
 
385
385
  **Specify the exact platform:** `Android-Compose`, `Android-XML`, `iOS-SwiftUI`, `iOS-UIKit`, `Flutter`, or `React-Native`. The fixes differ significantly between frameworks.
386
386
 
387
+ For a reskin or theme migration, run `/accessibility-audit` with the supported themes, theme/token source, affected screens, and resolved foreground/background pairs. It maps by semantic role rather than old hex value, computes WCAG AA contrast for light and dark modes, and reports role collisions where one palette value was incorrectly reused for text, borders, fills, disabled content, or status states. Pair it with `/mobile-app-design` before implementation and `/mobile-mcp-qa` for device screenshots afterward.
388
+
389
+ ```text
390
+ /accessibility-audit
391
+ PLATFORM: React Native
392
+ SUPPORTED_THEMES: light, dark
393
+ Audit the Settings reskin and token migration. Report failed pairs with their ratio,
394
+ required ratio, semantic role, theme/state, and recommended token.
395
+ ```
396
+
387
397
  ---
388
398
 
389
399
  ## 7. How Skills Work
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mobile-ai-agents",
3
- "version": "1.0.32",
3
+ "version": "1.0.34",
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",
@@ -7,7 +7,27 @@
7
7
 
8
8
  ## Purpose
9
9
 
10
- Reviews any mobile screen for WCAG 2.1 AA compliance and platform accessibility standards. Increasingly required by law (EU Accessibility Act 2025, ADA).
10
+ Reviews mobile UI for WCAG 2.1 AA and platform accessibility requirements. It also verifies app reskins and color-token migrations by semantic role so palette replacements do not create invisible text, controls, or status states.
11
+
12
+ ## When to Use
13
+
14
+ - Before releasing a new or redesigned mobile screen.
15
+ - After `/mobile-app-design` changes themes, tokens, components, or navigation.
16
+ - When a reskin replaces hardcoded colors or consolidates competing palettes.
17
+ - When `/mobile-mcp-qa` finds unreadable content or a theme-specific regression.
18
+
19
+ ## Inputs
20
+
21
+ Provide as much of this evidence as is available:
22
+
23
+ ```text
24
+ PLATFORM: Android | iOS | Flutter | React Native
25
+ SUPPORTED_THEMES: light, dark, or named themes
26
+ UI_SOURCE: screen/component and theme/token source files
27
+ COLOR_PAIRS: optional resolved foreground/background pairs by role, theme, and state
28
+ SCREENSHOTS: optional device evidence; never a substitute for computed colors
29
+ RESKIN_PLAN: optional /mobile-app-design screen inventory and token migration plan
30
+ ```
11
31
 
12
32
  ---
13
33
 
@@ -59,5 +79,135 @@ React Native:
59
79
  - accessibilityHint for non-obvious actions.
60
80
  - accessible={false} for decorative elements.
61
81
 
62
- For each issue: element, requirement violated, WCAG criterion, and concrete fix.
82
+ RESKIN AND TOKEN MIGRATION:
83
+ 1. Build a usage inventory before changing or approving tokens. Inspect each occurrence as
84
+ body text, large text, muted/secondary text, icon, border, fill/surface, disabled content,
85
+ disabled fill, status content, status fill, or fixed-tone content/fill.
86
+ 2. Map colors by semantic role, never by old hex value. If one old hex is used for text,
87
+ borders, and fills, those usages require separate destination tokens. Flag a single
88
+ replacement token across different roles as ROLE_COLLISION.
89
+ 3. Resolve the actual foreground and background after aliases, theme selection, state layers,
90
+ opacity, and alpha compositing. Do not infer contrast from token names or visual judgment.
91
+ 4. Compute WCAG relative luminance and contrast ratio for every supported theme and relevant
92
+ state. Use (Llighter + 0.05) / (Ldarker + 0.05).
93
+ 5. Require at least 4.5:1 for body/normal text and 3:1 for large text, icons, borders,
94
+ focus indicators, and other meaningful non-text UI. Large text is at least 18pt regular
95
+ or 14pt bold. Decorative borders and inactive controls do not need 3:1, but enabled
96
+ control boundaries and state indicators do.
97
+ 6. Test these pairs separately in every theme:
98
+ - body text on each surface it appears on
99
+ - muted/secondary text on each surface it appears on
100
+ - icons and meaningful borders against adjacent colors
101
+ - status chips/badges: content on container and container against its surroundings when
102
+ the boundary communicates status
103
+ - disabled content on disabled fill and surrounding surface; disabled state must not rely
104
+ on low contrast or color alone
105
+ - error, success, warning, and info content/containers
106
+ - fixed-tone content on fixed-tone fills, without allowing system theme substitution
107
+ 7. Detect invisible-text risks: foreground and background resolving to the same token/value,
108
+ on-color paired with the wrong container, transparent content composited onto a matching
109
+ surface, fixed-tone content replaced by a theme-dependent token, or a missing dark token
110
+ falling back to a light-theme value.
111
+ 8. Screenshots may reveal where to inspect, but sampled pixels are not sufficient when text
112
+ has antialiasing, transparency, imagery, or gradients. Use resolved source/runtime colors
113
+ for the computed result and mark unavailable pairs UNVERIFIED.
114
+
115
+ For each accessibility issue include the element, requirement, WCAG criterion, severity,
116
+ evidence, and concrete fix. For color failures, recommend a semantic token, not only a hex.
117
+
118
+ OUTPUT FORMAT:
119
+ ACCESSIBILITY AUDIT
120
+ ===================
121
+ Platform:
122
+ Themes audited:
123
+ Evidence:
124
+ Result: PASS | FAIL | PARTIAL | BLOCKED
125
+
126
+ Summary:
127
+ - Critical:
128
+ - High:
129
+ - Medium:
130
+ - Low:
131
+ - Unverified:
132
+
133
+ Role Collision Audit:
134
+ | Old Color/Token | Source Usages | Incorrect Mapping | Required Role Tokens | Result |
135
+ |---|---|---|---|---|
136
+
137
+ Contrast Results:
138
+ | Element/Pair | Role | Theme/State | Foreground | Background | Ratio | Required | Recommended Token | Result |
139
+ |---|---|---|---|---|---:|---:|---|---|
140
+
141
+ Other Findings:
142
+ | Severity | Element | Requirement/WCAG | Evidence | Fix |
143
+ |---|---|---|---|---|
144
+
145
+ Unverified Evidence:
146
+ - Pair or behavior, missing evidence, and exact verification needed.
147
+
148
+ Decision:
149
+ - PASS only when all in-scope themes and states have computed passing pairs and no blocking
150
+ semantic, focus, label, target-size, or announcement failures remain.
151
+ - PARTIAL when available checks pass but required evidence is missing.
152
+ - FAIL when any required pair or accessibility behavior fails.
153
+ ```
154
+
155
+ ## Example
156
+
157
+ **Input:**
158
+
159
+ ```text
160
+ PLATFORM: React Native
161
+ SUPPORTED_THEMES: light, dark
162
+ RESKIN_PLAN: Replace legacy #6B7280 usages with the new secondary token.
163
+ UI_SOURCE:
164
+ - Settings helper text used #6B7280.
165
+ - Card borders used #6B7280.
166
+ - Dark theme maps secondary to #334155 on surface #0F172A.
63
167
  ```
168
+
169
+ **Output:**
170
+
171
+ ```text
172
+ ACCESSIBILITY AUDIT
173
+ ===================
174
+ Platform: React Native
175
+ Themes audited: light, dark
176
+ Evidence: resolved theme tokens and Settings source
177
+ Result: FAIL
178
+
179
+ Summary:
180
+ - Critical: 0
181
+ - High: 1
182
+ - Medium: 1
183
+ - Low: 0
184
+ - Unverified: 0
185
+
186
+ Role Collision Audit:
187
+ | Old Color/Token | Source Usages | Incorrect Mapping | Required Role Tokens | Result |
188
+ |---|---|---|---|---|
189
+ | #6B7280 | helper text, card border | color.secondary | color.onSurfaceVariant, color.outline | ROLE_COLLISION |
190
+
191
+ Contrast Results:
192
+ | Element/Pair | Role | Theme/State | Foreground | Background | Ratio | Required | Recommended Token | Result |
193
+ |---|---|---|---|---|---:|---:|---|---|
194
+ | Settings helper/surface | muted text | dark/default | #334155 | #0F172A | 1.72:1 | 4.5:1 | color.onSurfaceVariant | FAIL |
195
+ | Settings card edge/surface | meaningful border | dark/default | #334155 | #0F172A | 1.72:1 | 3:1 | color.outline | FAIL |
196
+
197
+ Other Findings:
198
+ | Severity | Element | Requirement/WCAG | Evidence | Fix |
199
+ |---|---|---|---|---|
200
+ | HIGH | Settings helper | 1.4.3 contrast | Dark token migration makes text nearly invisible | Map text to color.onSurfaceVariant and verify >= 4.5:1 |
201
+ | MEDIUM | Settings card | 1.4.11 non-text contrast | Border no longer communicates grouping | Map border to color.outline and verify >= 3:1 |
202
+
203
+ Unverified Evidence:
204
+ - None.
205
+
206
+ Decision:
207
+ - FAIL. Split the legacy value by semantic role, recompute both dark-mode pairs, and rerun
208
+ `/mobile-mcp-qa` for Settings in light and dark themes.
209
+ ```
210
+
211
+ ## Composition
212
+
213
+ Use `/mobile-app-design` to define the reskin and token plan, this skill to compute accessibility results, and `/mobile-mcp-qa` to capture device evidence in every supported theme.
@@ -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