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
|
|
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
|
@@ -7,7 +7,27 @@
|
|
|
7
7
|
|
|
8
8
|
## Purpose
|
|
9
9
|
|
|
10
|
-
Reviews
|
|
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
|
-
|
|
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.
|
|
49
|
-
5.
|
|
50
|
-
6.
|
|
51
|
-
7.
|
|
52
|
-
8.
|
|
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.
|
|
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
|
-
|
|
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
|
-
|
|
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
|