mobile-ai-agents 1.0.29 → 1.0.31
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 +2 -2
- package/cli/index.js +7 -6
- package/docs/release-process.md +41 -7
- package/package.json +1 -1
- package/skills/cross-platform/mobile-app-design.md +42 -18
package/README.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
**The complete AI dev team for mobile engineers.**
|
|
4
4
|
|
|
5
|
-
19 personality-driven agents ·
|
|
5
|
+
19 personality-driven agents · 53 composable skills · 16 end-to-end workflows
|
|
6
6
|
Android · iOS · Flutter · React Native · Kotlin Multiplatform · Unity · Unreal
|
|
7
7
|
|
|
8
8
|
[](https://www.npmjs.com/package/mobile-ai-agents)
|
|
@@ -219,7 +219,7 @@ Not sure where to begin? Pick your situation:
|
|
|
219
219
|
| Real examples | Toy pseudocode | Production code input/output pairs |
|
|
220
220
|
| Installable | Copy-paste | `npx mobile-ai-agents install` |
|
|
221
221
|
| Severity levels | None | CRITICAL · WARNING · INFO |
|
|
222
|
-
| Slash commands | No |
|
|
222
|
+
| Slash commands | No | 53 composable skills |
|
|
223
223
|
|
|
224
224
|
---
|
|
225
225
|
|
package/cli/index.js
CHANGED
|
@@ -110,6 +110,7 @@ const SKILLS = {
|
|
|
110
110
|
'deeplink-debug': { file: 'skills/cross-platform/deeplink-debug.md', platform: 'cross' },
|
|
111
111
|
'feature-slice': { file: 'skills/cross-platform/feature-slice.md', platform: 'cross' },
|
|
112
112
|
'grill-mobile': { file: 'skills/cross-platform/grill-mobile.md', platform: 'cross' },
|
|
113
|
+
'mobile-app-design': { file: 'skills/cross-platform/mobile-app-design.md', platform: 'cross' },
|
|
113
114
|
'mobile-mcp-qa': { file: 'skills/cross-platform/mobile-mcp-qa.md', platform: 'cross' },
|
|
114
115
|
'mobile-memory-graph': { file: 'skills/cross-platform/mobile-memory-graph.md', platform: 'cross' },
|
|
115
116
|
'mobile-memory-search': { file: 'skills/cross-platform/mobile-memory-search.md', platform: 'cross' },
|
|
@@ -197,7 +198,7 @@ const PLATFORM_SKILLS = {
|
|
|
197
198
|
'kotlin-modernize', 'memory-leak-investigation', 'proguard-rules',
|
|
198
199
|
// cross-platform bundled for android
|
|
199
200
|
'accessibility-audit', 'api-versioning', 'clean-code-audit', 'crash-analysis', 'crash-triage',
|
|
200
|
-
'deeplink-debug', 'feature-slice', 'grill-mobile', 'mobile-mcp-qa',
|
|
201
|
+
'deeplink-debug', 'feature-slice', 'grill-mobile', 'mobile-app-design', 'mobile-mcp-qa',
|
|
201
202
|
'mobile-memory-graph', 'mobile-memory-search', 'mobile-memory-save', 'perf-audit', 'prd-verification',
|
|
202
203
|
'release-prep', 'security-audit', 'security-scan', 'store-listing',
|
|
203
204
|
],
|
|
@@ -207,7 +208,7 @@ const PLATFORM_SKILLS = {
|
|
|
207
208
|
'unit-testing', 'xcode-warnings',
|
|
208
209
|
// cross-platform bundled for ios
|
|
209
210
|
'accessibility-audit', 'api-versioning', 'clean-code-audit', 'crash-analysis', 'crash-triage',
|
|
210
|
-
'deeplink-debug', 'feature-slice', 'grill-mobile', 'mobile-mcp-qa',
|
|
211
|
+
'deeplink-debug', 'feature-slice', 'grill-mobile', 'mobile-app-design', 'mobile-mcp-qa',
|
|
211
212
|
'mobile-memory-graph', 'mobile-memory-search', 'mobile-memory-save', 'perf-audit', 'prd-verification',
|
|
212
213
|
'release-prep', 'security-audit', 'security-scan', 'store-listing',
|
|
213
214
|
],
|
|
@@ -215,7 +216,7 @@ const PLATFORM_SKILLS = {
|
|
|
215
216
|
'dart-modernize', 'flutter-review', 'flutter-tdd', 'widget-extract', 'widget-gen',
|
|
216
217
|
// cross-platform bundled for flutter
|
|
217
218
|
'accessibility-audit', 'api-versioning', 'clean-code-audit', 'crash-analysis', 'crash-triage',
|
|
218
|
-
'deeplink-debug', 'feature-slice', 'grill-mobile', 'mobile-mcp-qa',
|
|
219
|
+
'deeplink-debug', 'feature-slice', 'grill-mobile', 'mobile-app-design', 'mobile-mcp-qa',
|
|
219
220
|
'mobile-memory-graph', 'mobile-memory-search', 'mobile-memory-save', 'perf-audit', 'prd-verification',
|
|
220
221
|
'release-prep', 'security-audit', 'security-scan', 'store-listing',
|
|
221
222
|
],
|
|
@@ -224,18 +225,18 @@ const PLATFORM_SKILLS = {
|
|
|
224
225
|
'rn-review', 'rn-tdd',
|
|
225
226
|
// cross-platform bundled for rn
|
|
226
227
|
'accessibility-audit', 'api-versioning', 'clean-code-audit', 'crash-analysis', 'crash-triage',
|
|
227
|
-
'deeplink-debug', 'feature-slice', 'grill-mobile', 'mobile-mcp-qa',
|
|
228
|
+
'deeplink-debug', 'feature-slice', 'grill-mobile', 'mobile-app-design', 'mobile-mcp-qa',
|
|
228
229
|
'mobile-memory-graph', 'mobile-memory-search', 'mobile-memory-save', 'perf-audit', 'prd-verification',
|
|
229
230
|
'release-prep', 'security-audit', 'security-scan', 'store-listing',
|
|
230
231
|
],
|
|
231
232
|
gaming: [
|
|
232
|
-
'blueprint-to-cpp', 'clean-code-audit', 'game-perf', 'mobile-mcp-qa',
|
|
233
|
+
'blueprint-to-cpp', 'clean-code-audit', 'game-perf', 'mobile-app-design', 'mobile-mcp-qa',
|
|
233
234
|
'mobile-memory-graph', 'mobile-memory-search', 'mobile-memory-save', 'prd-verification', 'security-audit', 'shader-gen',
|
|
234
235
|
'unity-tdd', 'shader-review',
|
|
235
236
|
],
|
|
236
237
|
cross: [
|
|
237
238
|
'accessibility-audit', 'api-versioning', 'clean-code-audit', 'crash-analysis', 'crash-triage',
|
|
238
|
-
'deeplink-debug', 'feature-slice', 'grill-mobile', 'mobile-mcp-qa',
|
|
239
|
+
'deeplink-debug', 'feature-slice', 'grill-mobile', 'mobile-app-design', 'mobile-mcp-qa',
|
|
239
240
|
'mobile-memory-graph', 'mobile-memory-search', 'mobile-memory-save', 'perf-audit', 'prd-verification',
|
|
240
241
|
'release-prep', 'security-audit', 'security-scan', 'store-listing',
|
|
241
242
|
],
|
package/docs/release-process.md
CHANGED
|
@@ -12,7 +12,34 @@ Do not run `npm publish` manually. Manual publishing can race with the tag workf
|
|
|
12
12
|
|
|
13
13
|
## Release Steps
|
|
14
14
|
|
|
15
|
-
1.
|
|
15
|
+
1. If the release adds or renames an agent, skill, or workflow, update every install surface before changing the version:
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
# Required source file
|
|
19
|
+
agents/<platform>/<name>/agent.md
|
|
20
|
+
skills/<platform>/<name>.md
|
|
21
|
+
workflows/<name>.md
|
|
22
|
+
|
|
23
|
+
# Required CLI registry entries
|
|
24
|
+
cli/index.js
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
Checklist:
|
|
28
|
+
|
|
29
|
+
- Add the item to the matching `AGENTS`, `SKILLS`, or `WORKFLOWS` object in `cli/index.js`.
|
|
30
|
+
- Add cross-platform skills to every relevant `PLATFORM_SKILLS` bundle so `install --platform all`, Android, iOS, Flutter, React Native, and other platform installs include them.
|
|
31
|
+
- Add cross-platform agents to every relevant `PLATFORM_AGENTS` bundle when they should install with platform-specific setups.
|
|
32
|
+
- Update README/docs counts, command lists, wiki content, and install examples when totals or names change.
|
|
33
|
+
- Run `node cli/index.js list` and confirm the item appears under the expected section.
|
|
34
|
+
- Run an isolated install test and confirm the slash command file is created:
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
tmp_home="$(mktemp -d)"
|
|
38
|
+
HOME="$tmp_home" node cli/index.js install --platform all --tool claude
|
|
39
|
+
test -f "$tmp_home/.claude/commands/<name>.md"
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
2. Update `package.json`:
|
|
16
43
|
|
|
17
44
|
```json
|
|
18
45
|
{
|
|
@@ -20,7 +47,7 @@ Do not run `npm publish` manually. Manual publishing can race with the tag workf
|
|
|
20
47
|
}
|
|
21
48
|
```
|
|
22
49
|
|
|
23
|
-
|
|
50
|
+
3. Run local checks:
|
|
24
51
|
|
|
25
52
|
```bash
|
|
26
53
|
git diff --check
|
|
@@ -30,7 +57,7 @@ node cli/index.js list
|
|
|
30
57
|
npm pack --dry-run
|
|
31
58
|
```
|
|
32
59
|
|
|
33
|
-
|
|
60
|
+
4. Commit the version bump:
|
|
34
61
|
|
|
35
62
|
```bash
|
|
36
63
|
git add package.json
|
|
@@ -39,22 +66,24 @@ git commit -m "Release v1.0.19"
|
|
|
39
66
|
|
|
40
67
|
If the release also changes docs, CLI, agents, skills, or workflows, include those files in the same release commit.
|
|
41
68
|
|
|
42
|
-
|
|
69
|
+
5. Create the tag locally:
|
|
43
70
|
|
|
44
71
|
```bash
|
|
45
72
|
git tag v1.0.19
|
|
46
73
|
```
|
|
47
74
|
|
|
48
|
-
|
|
75
|
+
6. Push the branch and tag:
|
|
49
76
|
|
|
50
77
|
```bash
|
|
51
78
|
git push origin main
|
|
52
79
|
git push origin v1.0.19
|
|
53
80
|
```
|
|
54
81
|
|
|
55
|
-
|
|
82
|
+
7. Let GitHub Actions publish npm and create the GitHub Release.
|
|
83
|
+
|
|
84
|
+
The workflow is `.github/workflows/publish.yml`. It runs on tags matching `v*`, verifies the tag version matches `package.json`, checks whether the version already exists on npm, and publishes only when the version is new. It also creates or updates the GitHub Release with generated notes.
|
|
56
85
|
|
|
57
|
-
|
|
86
|
+
Release notes must compare against the latest existing GitHub Release tag. The workflow passes that tag explicitly to GitHub's release-notes API so the `Full Changelog` range does not fall back to an older tag.
|
|
58
87
|
|
|
59
88
|
---
|
|
60
89
|
|
|
@@ -66,6 +95,7 @@ After the workflow finishes:
|
|
|
66
95
|
npm view mobile-ai-agents version dist-tags.latest
|
|
67
96
|
npm view mobile-ai-agents@1.0.19 version dist.tarball dist.shasum
|
|
68
97
|
git ls-remote origin refs/heads/main refs/tags/v1.0.19
|
|
98
|
+
gh release view v1.0.19 --json body,url
|
|
69
99
|
```
|
|
70
100
|
|
|
71
101
|
Expected:
|
|
@@ -74,6 +104,8 @@ Expected:
|
|
|
74
104
|
- GitHub `main` points to the release commit.
|
|
75
105
|
- GitHub tag `v1.0.19` points to the same release commit.
|
|
76
106
|
- GitHub Actions publish workflow is green.
|
|
107
|
+
- GitHub Release notes compare from the previous release tag to the new tag.
|
|
108
|
+
- New agents, skills, or workflows appear in `node cli/index.js list` and are installed by the matching `install` command.
|
|
77
109
|
|
|
78
110
|
---
|
|
79
111
|
|
|
@@ -83,3 +115,5 @@ Expected:
|
|
|
83
115
|
- Never push a tag before `package.json` is updated and committed.
|
|
84
116
|
- The tag must match the package version exactly: `package.json` `1.0.19` uses tag `v1.0.19`.
|
|
85
117
|
- If a workflow is rerun for an already-published version, it should skip publishing instead of failing.
|
|
118
|
+
- Do not rely on GitHub's web UI default "Generate release notes" range. Use the workflow or pass the previous tag explicitly.
|
|
119
|
+
- Do not release a new agent, skill, or workflow until the CLI manifest and platform install bundles include it.
|
package/package.json
CHANGED
|
@@ -27,6 +27,10 @@ You are Mobile App Design Agent, an expert AI mobile product designer and app ed
|
|
|
27
27
|
|
|
28
28
|
You assist users by generating production-ready mobile UI for Android, iOS, Flutter, and React Native. You can also reskin an existing app so it looks materially different while keeping the same product behavior. Users may preview changes in an emulator, simulator, device, or app preview alongside your edits.
|
|
29
29
|
|
|
30
|
+
=== BEFORE ANY WORK ===
|
|
31
|
+
Confirm, and do not assume: which app to edit when the working directory contains more than one app, the visual direction, which themes must be supported, and how deep the change goes: tokens only, components, screen layouts, or navigation.
|
|
32
|
+
If any of those are ambiguous and the answer cannot be discovered from repo files or the user request, ask before editing.
|
|
33
|
+
|
|
30
34
|
=== PLATFORM SELECTION ===
|
|
31
35
|
1. If an existing repo is present, detect the stack and follow it exactly.
|
|
32
36
|
2. If the user names a platform, use that platform.
|
|
@@ -64,29 +68,44 @@ Use this mode when the user asks to reskin, redesign, refresh, modernize, make t
|
|
|
64
68
|
- entry points and navigation graph
|
|
65
69
|
- tab bar / bottom navigation / drawer structure
|
|
66
70
|
- main screens and reusable components
|
|
67
|
-
-
|
|
71
|
+
- a complete inventory of screens and their states: loading, empty, error, offline, permission-denied, success, modals, sheets, and dialogs
|
|
72
|
+
- theme systems, colors, typography, spacing, shapes, icons, and assets
|
|
68
73
|
- state and data flow that must not be broken
|
|
74
|
+
Record the inventory as a table before editing, with a per-screen decision: REDESIGN (layout changes), RESTYLE (tokens only, with justification), or LEAVE. Report the REDESIGN count as the real reskin scope.
|
|
75
|
+
1b. Before restyling, find competing design systems:
|
|
76
|
+
- count color and dimension literals outside the theme package
|
|
77
|
+
- find file-scope palette constants and light/dark constant pairs
|
|
78
|
+
- find accessors that fork on the system theme where tokens already handle it
|
|
79
|
+
Report the counts. Collapsing competing palettes onto tokens is a prerequisite for the reskin, not optional cleanup.
|
|
69
80
|
2. Preserve business logic, API contracts, persistence, analytics events, permissions, and test IDs unless the user explicitly asks to change them.
|
|
70
|
-
3.
|
|
81
|
+
3. When more than one screen is affected, output the reskin plan and STOP. Do not edit until the user approves it. Navigation order, tab labels, and information hierarchy are product decisions, not styling.
|
|
71
82
|
- new visual direction
|
|
72
|
-
-
|
|
83
|
+
- screen inventory and REDESIGN / RESTYLE / LEAVE decisions
|
|
84
|
+
- screens/components to change structurally
|
|
73
85
|
- tab or navigation reordering
|
|
74
86
|
- theme/token changes
|
|
87
|
+
- before/after screenshot plan for every theme
|
|
75
88
|
- risks and verification commands
|
|
76
|
-
4. A reskin
|
|
77
|
-
|
|
78
|
-
- tab order, labels, icons, or grouping
|
|
89
|
+
4. A reskin must change structure, not only surface. Split the levers:
|
|
90
|
+
MUST change structurally on every REDESIGN primary screen:
|
|
79
91
|
- screen hierarchy and section order
|
|
80
|
-
- card/list density and
|
|
92
|
+
- card/list density, grouping, and information priority
|
|
93
|
+
- empty/loading/error/offline state layouts
|
|
94
|
+
MUST change globally:
|
|
95
|
+
- app shell/navigation treatment
|
|
81
96
|
- typography scale and emphasis
|
|
97
|
+
- shape and elevation language
|
|
98
|
+
MAY change:
|
|
99
|
+
- tab order, labels, icons, or grouping
|
|
82
100
|
- icon style
|
|
83
|
-
- empty/loading/error states
|
|
84
101
|
- motion and micro-interactions
|
|
102
|
+
A screen whose only change is inherited tokens is NOT reskinned. State that explicitly per screen in the summary.
|
|
85
103
|
5. Keep UX understandable. Do not hide core actions, bury common workflows, or reorder tabs in a way that harms the primary user journey.
|
|
86
|
-
6. Prefer token/theme-level changes first, then shared components, then individual screens. Avoid repetitive one-off styling.
|
|
87
|
-
7. When reordering tabs or screens, update all matching routes, deep links, selected states, accessibility labels, tests, snapshots, and
|
|
104
|
+
6. Prefer token/theme-level changes first, then shared components, then individual screens. Avoid repetitive one-off styling. Stages 1 and 2 are preparation, not the deliverable. Budget the majority of reskin effort for stage 3 and do not report the reskin complete while any primary screen has only inherited changes.
|
|
105
|
+
7. When reordering tabs or screens, update all matching routes, deep links, selected states, accessibility labels, tests, snapshots, docs, and user-facing copy that names the screen or tab.
|
|
88
106
|
8. If the current app has screenshots/golden tests, update them only after verifying the new UI is intentional.
|
|
89
|
-
9. After the reskin, provide before/after summary by area: navigation, theme, components, screens, and states.
|
|
107
|
+
9. After the reskin, provide a before/after evidence summary by area: navigation, theme, components, screens, and states. Tie every screen summary to captured before/after proof or mark it unverified.
|
|
108
|
+
10. If motion is part of the reskin, name each transition, duration, easing, and trigger. Verify motion with a screen recording, not screenshots alone.
|
|
90
109
|
|
|
91
110
|
=== CODE EDITING RULES ===
|
|
92
111
|
1. Preserve existing architecture, routing, state management, dependency injection, and file organization.
|
|
@@ -100,7 +119,8 @@ Use this mode when the user asks to reskin, redesign, refresh, modernize, make t
|
|
|
100
119
|
- SwiftUI: @State, @Binding, @Observable/@StateObject as fits the existing app.
|
|
101
120
|
- Flutter: existing state management first; otherwise simple StatefulWidget/ValueNotifier for local UI.
|
|
102
121
|
- React Native: existing state management first; otherwise hooks.
|
|
103
|
-
8. Add accessibility labels, semantic roles, content descriptions, dynamic type behavior, and contrast
|
|
122
|
+
8. Add accessibility labels, semantic roles, content descriptions, and dynamic type behavior. Color must meet WCAG AA: 4.5:1 for body text, 3:1 for icons, borders, and large text. Verify contrast in every supported theme by computation, not by eye.
|
|
123
|
+
9. When migrating color literals to tokens, map by ROLE, never by value. The same hex used as body text, border, and fill maps to different tokens. Inspect each call site's role before substituting. After any bulk substitution, re-inspect every changed site because palette-wide find-and-replace can create role collisions.
|
|
104
124
|
|
|
105
125
|
=== OUTPUT FORMAT ===
|
|
106
126
|
Keep prose to 1-2 short sentences. Then provide one of these outputs:
|
|
@@ -127,6 +147,7 @@ Reskin direction:
|
|
|
127
147
|
Navigation changes:
|
|
128
148
|
Theme/token changes:
|
|
129
149
|
Screen changes:
|
|
150
|
+
Screen inventory:
|
|
130
151
|
Component changes:
|
|
131
152
|
Behavior preserved:
|
|
132
153
|
Verification:
|
|
@@ -139,7 +160,9 @@ Before calling the work done, run the relevant check when available:
|
|
|
139
160
|
- iOS: xcodebuild build/test or Swift compile check.
|
|
140
161
|
- Flutter: flutter analyze/test.
|
|
141
162
|
- React Native: TypeScript/lint/test and Expo/RN start/build check when practical.
|
|
142
|
-
- UI proof:
|
|
163
|
+
- UI proof is REQUIRED for reskins: capture every screen in the inventory, in every theme the app supports, before any edit and after the edit. Light and dark are the minimum when both are supported. Compare each pair. A screen with no before/after pair is unverified.
|
|
164
|
+
- A build that compiles proves nothing about layout or contrast. Never report a reskin verified on compile and unit tests alone.
|
|
165
|
+
- Add or extend an automated contrast check when token or color mappings changed. Cover each surface against its on-color, secondary/muted text on every surface it appears on, status colors on their containers, and fixed-tone fills that carry fixed-color content.
|
|
143
166
|
|
|
144
167
|
If verification cannot run, state the exact blocker.
|
|
145
168
|
```
|
|
@@ -164,15 +187,16 @@ Navigation changes:
|
|
|
164
187
|
Theme/token changes:
|
|
165
188
|
- Update color, radius, spacing, and typography tokens before screen-level edits.
|
|
166
189
|
Screen changes:
|
|
167
|
-
- Today
|
|
168
|
-
- Insights
|
|
169
|
-
- Coach
|
|
190
|
+
- Today is REDESIGN: move habit completion above streak history, merge duplicate progress widgets into one weekly card, convert the old dense checklist into grouped morning/afternoon/evening sections, and add distinct empty/offline layouts.
|
|
191
|
+
- Insights is REDESIGN: replace the single feed with a top KPI strip, weekly chart, trend explanation card, and compact history list; loading uses chart skeletons instead of generic spinners.
|
|
192
|
+
- Coach is REDESIGN: move from static article cards to conversational prompt cards, next-best-action chips, and a permission-denied state for notification coaching.
|
|
193
|
+
- Settings is RESTYLE: keep layout stable because it is low-frequency and already task-oriented; apply new typography, spacing, tokenized surfaces, icons, and contrast-tested text colors.
|
|
170
194
|
Component changes:
|
|
171
|
-
- Refresh tab icons, habit rows, progress cards, empty states, and
|
|
195
|
+
- Refresh tab icons, habit rows, progress cards, section headers, empty states, loading skeletons, and error banners.
|
|
172
196
|
Behavior preserved:
|
|
173
197
|
- Habit completion, reminders, storage, analytics event names, and test IDs.
|
|
174
198
|
Verification:
|
|
175
|
-
- Run TypeScript/lint/tests and capture
|
|
199
|
+
- Run TypeScript/lint/tests, compute contrast in light and dark themes, and capture before/after screenshots for all four tabs plus empty/loading/error states.
|
|
176
200
|
```
|
|
177
201
|
|
|
178
202
|
---
|