reis-mobile 0.10.0 â 1.0.0
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/.claude-plugin/marketplace.json +2 -2
- package/.claude-plugin/plugin.json +1 -1
- package/CHANGELOG.md +32 -0
- package/README.md +81 -32
- package/THIRD_PARTY_NOTICES.md +8 -0
- package/agents/lead-mobile.md +14 -3
- package/agents/mobile-ui-ux-designer.md +33 -0
- package/bin/reis-mobile.mjs +58 -58
- package/commands/debate.md +21 -14
- package/core/commands/payloads.mjs +63 -0
- package/core/mcp/server.mjs +188 -0
- package/core/mcp/tools.mjs +226 -0
- package/core/router/intents.mjs +8 -0
- package/package.json +7 -3
- package/skills/mobile-android/SKILL.md +5 -1
- package/skills/mobile-flutter/SKILL.md +5 -1
- package/skills/mobile-ios/SKILL.md +5 -1
- package/skills/mobile-kmp/SKILL.md +5 -1
- package/skills/mobile-rn/SKILL.md +5 -1
- package/skills/mobile-security/references/ios/keychain.md +105 -0
- package/skills/mobile-security/references/ios.md +1 -1
- package/skills/mobile-ui-ux/SKILL.md +53 -0
- package/skills/mobile-ui-ux/references/android.md +11 -0
- package/skills/mobile-ui-ux/references/apple-design.md +32 -0
- package/skills/mobile-ui-ux/references/flutter.md +11 -0
- package/skills/mobile-ui-ux/references/ios.md +11 -0
- package/skills/mobile-ui-ux/references/kotlin-multiplatform.md +11 -0
- package/skills/mobile-ui-ux/references/react-native.md +11 -0
|
@@ -5,14 +5,14 @@
|
|
|
5
5
|
},
|
|
6
6
|
"metadata": {
|
|
7
7
|
"description": "AI agents for mobile engineering",
|
|
8
|
-
"version": "0.
|
|
8
|
+
"version": "1.0.0"
|
|
9
9
|
},
|
|
10
10
|
"plugins": [
|
|
11
11
|
{
|
|
12
12
|
"name": "reis-mobile",
|
|
13
13
|
"source": "./",
|
|
14
14
|
"description": "AI agents, skills and workflows for Flutter, Android, iOS and React Native development.",
|
|
15
|
-
"version": "0.
|
|
15
|
+
"version": "1.0.0",
|
|
16
16
|
"author": {
|
|
17
17
|
"name": "Warleson Reis"
|
|
18
18
|
},
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "reis-mobile",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "1.0.0",
|
|
4
4
|
"description": "AI agents, skills and workflows for Flutter, Android, iOS and React Native development. Use /reis-mobile:doctor, /reis-mobile:review and /reis-mobile:test.",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Warleson Reis"
|
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,38 @@ Format based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/). The pr
|
|
|
4
4
|
|
|
5
5
|
## [Unreleased]
|
|
6
6
|
|
|
7
|
+
## [1.0.0] - 2026-11-04
|
|
8
|
+
|
|
9
|
+
### Added
|
|
10
|
+
|
|
11
|
+
- `reis-mobile mcp`, a stdio MCP server for editors that cannot load the Claude Code plugin, such as Cursor. Seven tools (`reis_mobile_route`, `reis_mobile_review`, `reis_mobile_debug`, `reis_mobile_test`, `reis_mobile_release`, `reis_mobile_detect` and `reis_mobile_doctor`) return the same JSON as the matching `--json` command, and `reis_mobile_read_instructions` serves the agent, skill and reference files a route points to.
|
|
12
|
+
- Both MCP eras on one process: per-request `_meta` and `server/discover` from the 2026-07-28 revision, and the `initialize` handshake from 2025-11-25 back to 2024-11-05. Validated end to end with Claude Code 2.1.267; the Cursor and Codex configurations in the README follow each client's documented format.
|
|
13
|
+
- `--dir` on `reis-mobile mcp` sets the app directory for tool calls that pass none, so a client can pass its workspace folder.
|
|
14
|
+
- Every MCP tool is read-only and offline. `consult` and the commands that write are not exposed, and the instruction reader resolves symlinks and serves only `agents/`, `skills/` and `docs/agent-context.md`, up to 512 KB.
|
|
15
|
+
- iOS Keychain token storage guide in `mobile-security` (`references/ios/keychain.md`): accessibility classes and backups, biometric access control, access groups, reinstall persistence, migration out of `UserDefaults`, and a Swift token store with `OSStatus` handling. Contributed by @jay23606 in #21.
|
|
16
|
+
|
|
17
|
+
### Changed
|
|
18
|
+
|
|
19
|
+
- 1.0.0 is the first stable release for Flutter, native Android, native iOS and React Native, as planned in the roadmap, and ships the MCP server previously planned for v0.11.0.
|
|
20
|
+
- The read-only commands build their `--json` output in `core/commands/payloads.mjs`, shared by the CLI and the MCP server. The output itself is unchanged.
|
|
21
|
+
|
|
22
|
+
## [0.10.1] - 2026-11-04
|
|
23
|
+
|
|
24
|
+
### Added
|
|
25
|
+
|
|
26
|
+
- `mobile-ui-ux-designer` agent and `mobile-ui-ux` topic skill for mobile journeys, wireframes, design tokens, component states and evidence-based interface reviews across all five stacks.
|
|
27
|
+
- English and Portuguese `design` routing with platform skill selection and regression coverage for architecture, accessibility, tests and unrelated terms.
|
|
28
|
+
- Apple design reading workflow linked to `dickwu/apple-design-skill` at a recorded revision and to official HIG topics. Upstream content is linked, not vendored, because the inspected revision declares no redistribution license.
|
|
29
|
+
|
|
30
|
+
### Changed
|
|
31
|
+
|
|
32
|
+
- The debate now invokes `lead-mobile` for participant selection before the rounds and again for final synthesis. The candidate table includes every specialist, including UI/UX, accessibility and release, with explicit participant validation and a persisted selection rationale.
|
|
33
|
+
- All five platform skills now route design work and link the UI/UX workflow and Apple-target reference.
|
|
34
|
+
|
|
35
|
+
### Fixed
|
|
36
|
+
|
|
37
|
+
- `lead-mobile` now includes the UI/UX designer in its delegation table. A registry test requires every other registered agent, including manual specialists, to appear and rejects unknown agents or self-delegation.
|
|
38
|
+
|
|
7
39
|
## [0.10.0] - 2026-11-04
|
|
8
40
|
|
|
9
41
|
### Added
|
package/README.md
CHANGED
|
@@ -23,7 +23,7 @@ A mobile app is not a generic project. A code review that does not know about `B
|
|
|
23
23
|
|
|
24
24
|
ð **Detects the stack on its own.** Flutter (app or plugin), React Native (including Expo), Kotlin Multiplatform, native Android and iOS, with languages and target platforms. A Flutter app with `android/` and `ios/` is still Flutter.
|
|
25
25
|
|
|
26
|
-
ðĨ **
|
|
26
|
+
ðĨ **22 agents and 27 mobile skills.** Architect, performance and test engineers for Flutter, native Android, native iOS, React Native and Kotlin Multiplatform, plus a staff engineer, a native plugin specialist, a code reviewer, a UI/UX designer, an accessibility auditor, a release engineer and a lead. Topic skills cover the five stacks with focused references for debugging, tests, security, Firebase, accessibility, releases, performance budgets, offline sync, production observability, privacy, networking, authentication, notifications, in-app purchases, migrations, product analytics and device hardware.
|
|
27
27
|
|
|
28
28
|
ð§Đ **Project-specific context.** `/reis-mobile:project` records real app symbols, owners, boundaries and validation commands in `.reis-mobile/project.md`; the team can add product rules that code cannot reveal. Refreshing the verified map preserves team-authored text.
|
|
29
29
|
|
|
@@ -37,6 +37,8 @@ A mobile app is not a generic project. A code review that does not know about `B
|
|
|
37
37
|
|
|
38
38
|
ð **Secrets never reach the model.** The diff sent for review goes through a layer that masks API keys, tokens, JWTs, private keys and keystore passwords.
|
|
39
39
|
|
|
40
|
+
ð **Works in any MCP client.** `reis-mobile mcp` serves stack detection, routing and the review, debug, test and release context to Cursor and other editors, with the agent and skill instructions behind them. See [MCP server](#mcp-server).
|
|
41
|
+
|
|
40
42
|
ðŠķ **Two commands to install.** `npm install -g reis-mobile` and `reis-mobile init eng` set it up in Claude Code and Codex, with zero npm dependencies and no external provider.
|
|
41
43
|
|
|
42
44
|
---
|
|
@@ -44,25 +46,20 @@ A mobile app is not a generic project. A code review that does not know about `B
|
|
|
44
46
|
## What's new
|
|
45
47
|
|
|
46
48
|
<!-- reis-mobile:latest-release:start -->
|
|
47
|
-
###
|
|
49
|
+
### v1.0.0
|
|
48
50
|
|
|
49
51
|
#### Added
|
|
50
52
|
|
|
51
|
-
- `mobile
|
|
52
|
-
|
|
53
|
-
-
|
|
54
|
-
-
|
|
55
|
-
-
|
|
56
|
-
- English and Portuguese `billing`, `analytics` and `hardware` intents, handled by `mobile-staff-engineer`. `mobile-migration` joins the existing `migration` route. Plain "analytics" still routes to observability.
|
|
53
|
+
- `reis-mobile mcp`, a stdio MCP server for editors that cannot load the Claude Code plugin, such as Cursor. Seven tools (`reis_mobile_route`, `reis_mobile_review`, `reis_mobile_debug`, `reis_mobile_test`, `reis_mobile_release`, `reis_mobile_detect` and `reis_mobile_doctor`) return the same JSON as the matching `--json` command, and `reis_mobile_read_instructions` serves the agent, skill and reference files a route points to.
|
|
54
|
+
- Both MCP eras on one process: per-request `_meta` and `server/discover` from the 2026-07-28 revision, and the `initialize` handshake from 2025-11-25 back to 2024-11-05. Validated end to end with Claude Code 2.1.267; the Cursor and Codex configurations in the README follow each client's documented format.
|
|
55
|
+
- `--dir` on `reis-mobile mcp` sets the app directory for tool calls that pass none, so a client can pass its workspace folder.
|
|
56
|
+
- Every MCP tool is read-only and offline. `consult` and the commands that write are not exposed, and the instruction reader resolves symlinks and serves only `agents/`, `skills/` and `docs/agent-context.md`, up to 512 KB.
|
|
57
|
+
- iOS Keychain token storage guide in `mobile-security` (`references/ios/keychain.md`): accessibility classes and backups, biometric access control, access groups, reinstall persistence, migration out of `UserDefaults`, and a Swift token store with `OSStatus` handling. Contributed by @jay23606 in #21.
|
|
57
58
|
|
|
58
59
|
#### Changed
|
|
59
60
|
|
|
60
|
-
-
|
|
61
|
-
-
|
|
62
|
-
|
|
63
|
-
#### Fixed
|
|
64
|
-
|
|
65
|
-
- The router counted any word starting with "pr" as a review request, so prompts such as "implementar paywall premium" or "definir funil de conversÃĢo do produto" went to review. "PR" and "PRs" now count only as whole words.
|
|
61
|
+
- 1.0.0 is the first stable release for Flutter, native Android, native iOS and React Native, as planned in the roadmap, and ships the MCP server previously planned for v0.11.0.
|
|
62
|
+
- The read-only commands build their `--json` output in `core/commands/payloads.mjs`, shared by the CLI and the MCP server. The output itself is unchanged.
|
|
66
63
|
|
|
67
64
|
<!-- reis-mobile:latest-release:end -->
|
|
68
65
|
|
|
@@ -200,7 +197,7 @@ reis-mobile route "review architecture" --json
|
|
|
200
197
|
reis-mobile review --json
|
|
201
198
|
```
|
|
202
199
|
|
|
203
|
-
You can also ask Codex: *"Run `reis-mobile review --json`, read the instructions in the returned files and review the changes using that context."* The CLI selects the instructions and gathers the context; Codex does the analysis.
|
|
200
|
+
You can also ask Codex: *"Run `reis-mobile review --json`, read the instructions in the returned files and review the changes using that context."* The CLI selects the instructions and gathers the context; Codex does the analysis. To let Codex call these commands as tools instead, register the [MCP server](#mcp-server).
|
|
204
201
|
</details>
|
|
205
202
|
|
|
206
203
|
<details>
|
|
@@ -298,9 +295,9 @@ See the [readiness contract](skills/mobile-release/references/readiness.md) and
|
|
|
298
295
|
|
|
299
296
|
### Debate
|
|
300
297
|
|
|
301
|
-
`/reis-mobile:debate`
|
|
298
|
+
`/reis-mobile:debate` first asks `lead-mobile` to select three relevant specialists and explain each assignment. Every specialist is eligible, including UI/UX, accessibility and release; `--agents` supplies explicit choices for the lead to validate. Round 1 is blind, so the first to answer does not anchor the others; in round 2 each one rebuts specific points from the others; at the end, `lead-mobile` returns to analyze the rounds, resolve disagreements and deliver the decision with an action plan. The lead selects and moderates but does not debate. The rounds are stored in `.reis-mobile/debates/`.
|
|
302
299
|
|
|
303
|
-
Participants vary
|
|
300
|
+
Participants vary by role and model. The lead uses the command's `opus`/`sonnet` assignments and selects at least two models automatically; valid explicit `--agents` choices are preserved, with any same-model limitation disclosed. Model diversity does not guarantee independent reasoning: conclusions still require evidence. The command runs the selected participants and records the selection rationale with the context. With `--external`, outside providers join through the existing provider layer; the lead does not enable them on its own.
|
|
304
301
|
|
|
305
302
|
It is expensive: several agents over two rounds. Use it for architecture decisions with a real trade-off â *migrate to Riverpod*, *offline-first with Firestore or a local cache*, *native plugin or an off-the-shelf package* â and not for questions with a single answer, where `/reis-mobile <request>` solves it for less.
|
|
306
303
|
|
|
@@ -369,6 +366,46 @@ The router never invents a specialist: if no agent serves the intent, it warns y
|
|
|
369
366
|
|
|
370
367
|
---
|
|
371
368
|
|
|
369
|
+
## MCP server
|
|
370
|
+
|
|
371
|
+
Editors that cannot load the Claude Code plugin, such as Cursor, can use reis-mobile through MCP. `reis-mobile mcp` is a stdio server shipped in the npm package, so install it with `npm install -g reis-mobile` first.
|
|
372
|
+
|
|
373
|
+
| Client | Register the server |
|
|
374
|
+
|---|---|
|
|
375
|
+
| Cursor | `.cursor/mcp.json` in the project, or `~/.cursor/mcp.json` for every project, as below |
|
|
376
|
+
| Claude Code | `claude mcp add reis-mobile -- reis-mobile mcp` |
|
|
377
|
+
| Codex | `codex mcp add reis-mobile -- reis-mobile mcp` |
|
|
378
|
+
|
|
379
|
+
```json
|
|
380
|
+
{
|
|
381
|
+
"mcpServers": {
|
|
382
|
+
"reis-mobile": {
|
|
383
|
+
"command": "reis-mobile",
|
|
384
|
+
"args": ["mcp", "--dir", "${workspaceFolder}"]
|
|
385
|
+
}
|
|
386
|
+
}
|
|
387
|
+
}
|
|
388
|
+
```
|
|
389
|
+
|
|
390
|
+
`--dir` is the app directory a tool uses when the call does not pass `dir`; Cursor replaces `${workspaceFolder}` with the project folder. In Claude Code the plugin already provides the agents and commands, so the server matters most in the other clients.
|
|
391
|
+
|
|
392
|
+
| Tool | Returns |
|
|
393
|
+
|---|---|
|
|
394
|
+
| `reis_mobile_route` | Intent, stack, agent and skill paths for a request |
|
|
395
|
+
| `reis_mobile_review` | The review route and the git diff, lock files out and secrets masked |
|
|
396
|
+
| `reis_mobile_debug` | The debug route and the installed toolchain versions |
|
|
397
|
+
| `reis_mobile_test` | The test route, the diff and the toolchain checks; runs no tests |
|
|
398
|
+
| `reis_mobile_release` | Candidate release targets and references; builds and uploads nothing |
|
|
399
|
+
| `reis_mobile_detect` | Stack, languages, platforms and the evidence for each |
|
|
400
|
+
| `reis_mobile_doctor` | SDK and project file checks for the detected stack |
|
|
401
|
+
| `reis_mobile_read_instructions` | The agent, skill or reference file a route points to |
|
|
402
|
+
|
|
403
|
+
The model calls a routing tool, reads the instructions it returns and follows them, the same flow the slash commands use. Each tool returns the same JSON as its `--json` command. Every tool is read-only and offline, so `consult`, which sends context to a third party, is not exposed. The server speaks both MCP eras: the 2026-07-28 revision with per-request metadata, and the `initialize` handshake of 2025-11-25 back to 2024-11-05.
|
|
404
|
+
|
|
405
|
+
Validated end to end with Claude Code 2.1.267. The Cursor and Codex entries follow each client's documented configuration but have not been run against those clients yet; if you try one, tell us in an issue.
|
|
406
|
+
|
|
407
|
+
---
|
|
408
|
+
|
|
372
409
|
## Choose by goal
|
|
373
410
|
|
|
374
411
|
| I want to... | Use | Status |
|
|
@@ -405,7 +442,7 @@ The router never invents a specialist: if no agent serves the intent, it warns y
|
|
|
405
442
|
| **Project context** | You explain the stack | Deterministic detection of stack, platform and variant |
|
|
406
443
|
| **Review** | Generic | Mobile checklists: lifecycle, `BuildContext`, MASVS, manifest, ATS |
|
|
407
444
|
| **Secrets in the diff** | Sent as they are | Masked before reaching the model |
|
|
408
|
-
| **Specialists** | None |
|
|
445
|
+
| **Specialists** | None | 22 agents and 27 mobile skills |
|
|
409
446
|
| **Context cost** | Zero | ~5,500 fixed tokens (agent and skill descriptions), no hooks |
|
|
410
447
|
| **Best for** | General tasks | Teams and developers working on mobile apps |
|
|
411
448
|
|
|
@@ -464,13 +501,25 @@ For domain knowledge that code cannot reveal, optionally commit `.reis-mobile/pr
|
|
|
464
501
|
| `kmp-architect` | Kotlin Multiplatform | architecture, offline | Shared source-set ownership, Android/iOS callers and Swift-facing contracts |
|
|
465
502
|
| `kmp-performance-engineer` | Kotlin Multiplatform | performance | Shared Kotlin cost versus Android/iOS host traces and bridge overhead |
|
|
466
503
|
| `kmp-test-engineer` | Kotlin Multiplatform | test | `commonTest`, target tests and Android/iOS host coverage |
|
|
504
|
+
| `mobile-ui-ux-designer` | all | design | Mobile journeys, wireframes, design tokens, adaptive layouts and evidence-based UI/UX reviews |
|
|
467
505
|
| `mobile-accessibility-auditor` | all | accessibility | Screen reader labels, roles and states, touch targets, text scaling, focus and announcements, with fixes per platform |
|
|
468
506
|
| `mobile-release-engineer` | all | release, deployment, observability | Go/no-go readiness, versions and signing, crash symbols, release notes and store copy, CI/CD, staged rollout, production crash and release-health signals |
|
|
469
507
|
| `mobile-staff-engineer` | all | debug, architecture, performance, test, security, migration, dependency, build, offline, observability, privacy, networking, auth, notifications, billing, analytics, hardware | Cross-toolchain diagnosis, migrations and capability workflows when no stack specialist owns the intent |
|
|
470
508
|
| `plugin-native-expert` | Flutter | on demand | MethodChannel, EventChannel, Pigeon and Kotlin/Swift bridges, threading and lifecycle |
|
|
471
509
|
| `lead-mobile` | all | on demand | Coordinates the other agents and consolidates a single action plan |
|
|
472
510
|
|
|
473
|
-
When more than one agent serves the intent, the stack-specific one wins. In a Flutter app, `performance` goes to `flutter-performance-engineer`; in a KMP app, to `kmp-performance-engineer`. `accessibility` goes to `mobile-accessibility-auditor`, `release`, `deployment` and `observability` to `mobile-release-engineer` on every stack, and `offline` to the stack's architect. Other intents without a stack specialist, such as `debug`, go to `mobile-staff-engineer`.
|
|
511
|
+
When more than one agent serves the intent, the stack-specific one wins. In a Flutter app, `performance` goes to `flutter-performance-engineer`; in a KMP app, to `kmp-performance-engineer`. `design` goes to `mobile-ui-ux-designer`, `accessibility` goes to `mobile-accessibility-auditor`, `release`, `deployment` and `observability` to `mobile-release-engineer` on every stack, and `offline` to the stack's architect. Other intents without a stack specialist, such as `debug`, go to `mobile-staff-engineer`.
|
|
512
|
+
|
|
513
|
+
### UI/UX design
|
|
514
|
+
|
|
515
|
+
Ask Claude Code to "use reis-mobile:mobile-ui-ux-designer to redesign this screen", or use `mobile-ui-ux` in a skill-capable host such as Codex. From a mobile app directory, inspect routing with:
|
|
516
|
+
|
|
517
|
+
```bash
|
|
518
|
+
reis-mobile route "review the UI/UX of this screen"
|
|
519
|
+
reis-mobile route "create a mobile design system"
|
|
520
|
+
```
|
|
521
|
+
|
|
522
|
+
The workflow covers journeys, wireframes, tokens, component states, adaptive layouts and implementation when requested. Existing platform skills link it too. Apple-target work includes a reading guide for [dickwu/apple-design-skill](https://github.com/dickwu/apple-design-skill) and official HIG pages. The upstream repository has no explicit redistribution license at the inspected revision, so its content is linked rather than bundled; the new guides are original project content. Current Apple claims require source verification, and Android retains its own conventions.
|
|
474
523
|
|
|
475
524
|
### Skills
|
|
476
525
|
|
|
@@ -482,7 +531,8 @@ Every skill starts with `mobile-`. **Topic** skills cover every stack with one r
|
|
|
482
531
|
| `mobile-code-review` | Review process and checklists | review, performance | Flutter (PR review, widgets, project audit, static analysis), Android, iOS, React Native, KMP |
|
|
483
532
|
| `mobile-debug` | Failing builds and runtime errors | debug, build, dependency, migration | Flutter (build, runtime, layout, packages), Android (Gradle, crashes, ANRs, memory leaks), iOS (Xcode, CocoaPods, crash logs), React Native (Metro, native modules), KMP, deep links |
|
|
484
533
|
| `mobile-test` | Unit, UI, integration and end-to-end tests | test | Flutter (widget, integration, Patrol, mocks, coverage), Android, iOS, React Native, KMP |
|
|
485
|
-
| `mobile-security` | OWASP MASVS security checks | review, security, release | Flutter (token storage), Android (intents), iOS, React Native, KMP, OAuth/OIDC and PKCE |
|
|
534
|
+
| `mobile-security` | OWASP MASVS security checks | review, security, release | Flutter (token storage), Android (intents), iOS (Keychain token storage), React Native, KMP, OAuth/OIDC and PKCE |
|
|
535
|
+
| `mobile-ui-ux` | Journeys, wireframes, visual hierarchy, tokens, component states and Apple HIG reference workflow | design | Flutter, Android, iOS, React Native, KMP and external Apple design reading |
|
|
486
536
|
| `mobile-accessibility` | Screen readers, touch targets, text scaling, contrast, localization | accessibility | Flutter (Semantics), Android (Compose and Views), iOS (SwiftUI and UIKit), React Native, KMP, localization and RTL |
|
|
487
537
|
| `mobile-release` | Release readiness, store copy, billing and CI/CD | release, deployment | Flutter, Android, iOS, React Native, KMP, release notes and store listing, in-app purchases, CI/CD |
|
|
488
538
|
| `mobile-ci` | CI/CD and fastlane setup, Match, beta, release and Snapshot | deployment | Flutter, Android, iOS, React Native, KMP, imported fastlane guides and Xcode Cloud |
|
|
@@ -498,11 +548,11 @@ Every skill starts with `mobile-`. **Topic** skills cover every stack with one r
|
|
|
498
548
|
| `mobile-analytics` | Tracking plans, typed events, funnels, analytics identity and consent-gated collection | analytics | Flutter, Android, iOS, React Native, KMP |
|
|
499
549
|
| `mobile-hardware` | Camera, Bluetooth and BLE, NFC, location, sensors, scanning and haptics | hardware | Flutter, Android, iOS, React Native, KMP |
|
|
500
550
|
| `mobile-firebase` | Firebase setup and 13 products | â | Flutter, Android, iOS, React Native, KMP; check installed SDK support |
|
|
501
|
-
| `mobile-flutter` | Flutter and Dart specifics | review, performance, accessibility, migration | UI and navigation, data, native code, performance, accessibility and i18n, Dart, setup |
|
|
502
|
-
| `mobile-android` | Native Android specifics, from the Android team | performance, release, migration, build, dependency | Compose UI, AGP 9 and R8, profiling, Google Play, identity, camera and media, on-device AI, Wear OS, TV, XR |
|
|
503
|
-
| `mobile-ios` | Native iOS specifics | performance, release, accessibility | UI and navigation, data and networking, platform features, performance and release |
|
|
504
|
-
| `mobile-rn` | React Native and Expo specifics | performance, release, accessibility | UI and navigation, data and networking, platform features, performance and release |
|
|
505
|
-
| `mobile-kmp` | Kotlin Multiplatform shared and target boundaries | architecture, test, performance, review, debug and more | Source sets, Apple interop, shared Compose UI, build and profiling |
|
|
551
|
+
| `mobile-flutter` | Flutter and Dart specifics | design, review, performance, accessibility, migration | UI and navigation, data, native code, performance, accessibility and i18n, Dart, setup |
|
|
552
|
+
| `mobile-android` | Native Android specifics, from the Android team | design, performance, release, migration, build, dependency | Compose UI, AGP 9 and R8, profiling, Google Play, identity, camera and media, on-device AI, Wear OS, TV, XR |
|
|
553
|
+
| `mobile-ios` | Native iOS specifics | design, performance, release, accessibility | UI and navigation, data and networking, platform features, performance and release |
|
|
554
|
+
| `mobile-rn` | React Native and Expo specifics | design, performance, release, accessibility | UI and navigation, data and networking, platform features, performance and release |
|
|
555
|
+
| `mobile-kmp` | Kotlin Multiplatform shared and target boundaries | design, architecture, test, performance, review, debug and more | Source sets, Apple interop, shared Compose UI, build and profiling |
|
|
506
556
|
| `mobile-detect-stack` | Deterministic stack detection with the CLI | â | â |
|
|
507
557
|
|
|
508
558
|
Skills marked â are triggered by Claude Code when the request matches their description, for example *"configure Firestore rules"* â `mobile-firebase`. Notification requests route to `mobile-notifications`, which links Firebase guidance when FCM is the installed provider.
|
|
@@ -529,15 +579,15 @@ About 85 guides come from [flutter/skills](https://github.com/flutter/skills), [
|
|
|
529
579
|
|
|
530
580
|
## Trust, security and limits
|
|
531
581
|
|
|
532
|
-
**Read-only CLI context.** `doctor`, `detect`, `route`, `review`, `test`, `release`, `providers` and `
|
|
582
|
+
**Read-only CLI context.** `doctor`, `detect`, `route`, `review`, `test`, `release`, `providers`, `consult` and the `mcp` server's tools do not modify your project. `/reis-mobile:release` inspects existing release evidence and remains read-only unless execution is explicitly requested. The `/reis-mobile:test` slash command can write or fix tests and execute runners when requested. `/reis-mobile:project` writes only the optional project profile. The `/reis-mobile:review` and `/reis-mobile:debate` commands instruct the model not to edit app code; the debate writes its rounds to `.reis-mobile/debates/` and a consult its briefing to `.reis-mobile/consults/`.
|
|
533
583
|
|
|
534
584
|
**Secrets masked.** The diff goes through [`core/security/redact.mjs`](core/security/redact.mjs) before reaching the model. Lock files and generated code (`*.g.dart`, `*.freezed.dart`, `*.pbxproj`) stay out of the diff. Redaction is a protection layer, not a guarantee. See [SECURITY.md](SECURITY.md).
|
|
535
585
|
|
|
536
|
-
**No telemetry.** `detect`, `doctor`, `route`, `review`, `debug`, `test` and `
|
|
586
|
+
**No telemetry.** `detect`, `doctor`, `route`, `review`, `debug`, `test`, `providers` and the `mcp` server make no network calls (`providers --models` and `consult` do, by request). The update hook and `update-check` request the public npm package metadata; they send no project files or identifiers. Installation downloads the package and registers the plugin. The Google Play policy guide in `mobile-android` runs Python scripts that download your app's public Google Play listing when the model uses it. The AI analysis uses the model of the session you are working in, such as Claude Code or Codex.
|
|
537
587
|
|
|
538
588
|
**Exception: external providers.** Two workflows, and only these two, send project context to a third party: `/reis-mobile:debate --external` and `/reis-mobile:consult`. Both state which providers receive it, and both are opt-in â no other command calls a provider. What leaves is the briefing, including the code excerpts you include; each provider has its own data policy. The question and every answer pass through `redact.mjs`, which is a protection layer and not a guarantee: read the briefing before sending it. API keys are read from the environment by the CLI and never enter the conversation, and `providers:` in `.reis-mobile/config.yaml` lets a team restrict which providers a repository allows. CLI providers (`codex`, `gemini-cli`) are asked for an opinion, not for work: they run in read-only mode (`codex exec --sandbox read-only`, `gemini --approval-mode plan`) inside a temporary directory, never in your repository.
|
|
539
589
|
|
|
540
|
-
**Context cost.** Claude Code loads the descriptions of
|
|
590
|
+
**Context cost.** Claude Code loads the descriptions of 22 agents and 27 skills; the full content of each skill is loaded only when it is used. The exact description cost depends on the host and plugin version.
|
|
541
591
|
|
|
542
592
|
**One session hook.** On session startup or resume, the plugin checks for a newer release and warns only when the installed plugin is outdated. It does not read the project or modify the plugin installation.
|
|
543
593
|
|
|
@@ -568,8 +618,7 @@ About 85 guides come from [flutter/skills](https://github.com/flutter/skills), [
|
|
|
568
618
|
| v0.8.0 | `mobile-performance`, `mobile-offline-sync` and `mobile-observability` topic skills with a reference per stack, plus background execution, OAuth/PKCE, billing lifecycle and localization references | â
|
|
|
569
619
|
| v0.9.0 | Multi-provider layer (OpenAI, Gemini, OpenRouter, Ollama and the Codex/Gemini CLIs), `reis-mobile providers`, `reis-mobile consult` and `/reis-mobile:consult` â previously planned for v0.10.0 | â
|
|
|
570
620
|
| v0.10.0 | `mobile-privacy`, `mobile-networking`, `mobile-auth` and `mobile-notifications` topic skills with a reference per stack, plus the `privacy`, `networking`, `auth` and `notifications` intents | â
|
|
|
571
|
-
|
|
|
572
|
-
| v1.0.0 | First stable version: Flutter, Android, iOS and React Native | âģ |
|
|
621
|
+
| v1.0.0 | First stable version: Flutter, Android, iOS and React Native, with the MCP server previously planned for v0.11.0 | â
|
|
|
573
622
|
|
|
574
623
|
---
|
|
575
624
|
|
|
@@ -597,10 +646,10 @@ Yes. Native Android, native iOS and React Native each have architect, performanc
|
|
|
597
646
|
The plugin's skills live in the `reis-mobile:` namespace and do not conflict, but Claude Code loads both descriptions. To save context, remove the global copies the plugin already covers.
|
|
598
647
|
|
|
599
648
|
**Does it work in Codex?**
|
|
600
|
-
Yes: `reis-mobile init eng` installs the plugin in Codex too. See [installation](#install). Installation does not confirm parity with the Claude Code agents and commands; the `reis-mobile` CLI can also be run by Codex to get diagnostics and context.
|
|
649
|
+
Yes: `reis-mobile init eng` installs the plugin in Codex too. See [installation](#install). Installation does not confirm parity with the Claude Code agents and commands; the `reis-mobile` CLI can also be run by Codex to get diagnostics and context, and the [MCP server](#mcp-server) exposes the same commands as tools.
|
|
601
650
|
|
|
602
651
|
**Does it work in Cursor?**
|
|
603
|
-
The Cursor
|
|
652
|
+
Through the [MCP server](#mcp-server): register `reis-mobile mcp` in `.cursor/mcp.json`. The configuration follows Cursor's documented format but has not been run against Cursor yet. Cursor gets the tools and the instructions, not the Claude Code agents, slash commands or hooks.
|
|
604
653
|
|
|
605
654
|
**What does reis-mobile send outside my machine?**
|
|
606
655
|
The project analysis commands do not make network requests. The update hook and `reis-mobile update-check` request the public npm package metadata without sending project files or identifiers. What the model reads during `/reis-mobile:review` follows the same rules as any Claude Code session.
|
package/THIRD_PARTY_NOTICES.md
CHANGED
|
@@ -353,3 +353,11 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
|
353
353
|
See the License for the specific language governing permissions and
|
|
354
354
|
limitations under the License.
|
|
355
355
|
```
|
|
356
|
+
|
|
357
|
+
## External Apple design reading (not redistributed)
|
|
358
|
+
|
|
359
|
+
Source: https://github.com/dickwu/apple-design-skill
|
|
360
|
+
|
|
361
|
+
Inspected revision: `ff4ebddf0488598723a82bfdce1afb04de0b1c44` on 2026-11-04. Referenced by `mobile-ui-ux` through `references/apple-design.md`.
|
|
362
|
+
|
|
363
|
+
The inspected repository contains no LICENSE file or explicit redistribution license. Its README attributes the reproduced Human Interface Guidelines text to Apple Inc. No upstream skill text, scripts or HIG snapshots are included here. This is an external reference, not an MIT-licensed import; no third-party license text is available to reproduce. The local UI/UX workflow and platform references are original project content.
|
package/agents/lead-mobile.md
CHANGED
|
@@ -14,7 +14,7 @@ Read the [project brief](../docs/agent-context.md) once and build it for the act
|
|
|
14
14
|
|
|
15
15
|
## Assign bounded ownership
|
|
16
16
|
|
|
17
|
-
Agents use the `reis-mobile:` prefix in the Agent tool. Choose by stack and deliverable:
|
|
17
|
+
Every other agent shipped in this plugin is available for your delegation, including agents with manual routing. Keep the assignment table complete when specialists are added or renamed; do not delegate to yourself. Agents use the `reis-mobile:` prefix in the Agent tool. Choose by stack and deliverable:
|
|
18
18
|
|
|
19
19
|
| Assignment | Specialist |
|
|
20
20
|
|---|---|
|
|
@@ -34,6 +34,7 @@ Agents use the `reis-mobile:` prefix in the Agent tool. Choose by stack and deli
|
|
|
34
34
|
| KMP common/target tests and host coverage | `reis-mobile:kmp-test-engineer` |
|
|
35
35
|
| Shared Kotlin versus Android/iOS host performance cause | `reis-mobile:kmp-performance-engineer` |
|
|
36
36
|
| Diff regression with concrete trigger and consequence | `reis-mobile:mobile-code-reviewer` |
|
|
37
|
+
| User journeys, wireframes, visual hierarchy, design tokens and interface states | `reis-mobile:mobile-ui-ux-designer` |
|
|
37
38
|
| Assistive-technology journey and control semantics | `reis-mobile:mobile-accessibility-auditor` |
|
|
38
39
|
| Release identity, artifact gates, notes or pipeline | `reis-mobile:mobile-release-engineer` |
|
|
39
40
|
| Production crash, error and release-health signals | `reis-mobile:mobile-release-engineer` |
|
|
@@ -50,7 +51,7 @@ Give every assignment the shared brief plus: question to resolve, owned paths/sy
|
|
|
50
51
|
|
|
51
52
|
Examples of dependency ordering:
|
|
52
53
|
|
|
53
|
-
- Feature: architecture contracts
|
|
54
|
+
- Feature: involve the UI/UX designer when screens or journeys change, align the interaction design with architecture contracts, then implement and test against those contracts.
|
|
54
55
|
- Native failure: bridge request/lifecycle trace plus platform stack investigation, then one coordinated correction.
|
|
55
56
|
- Audit: split by distinct risk/path and merge overlapping evidence; do not commission duplicate whole-app checklists.
|
|
56
57
|
|
|
@@ -60,9 +61,19 @@ If delegation is unavailable, follow the same boundaries sequentially and state
|
|
|
60
61
|
|
|
61
62
|
Require actual paths/symbols, a trigger or violated contract, evidence level and the next verification. Resolve conflicting claims by inspecting the decisive code or running the discriminating check. Merge findings with one root cause even when their wording differs. An unmeasured performance suspicion cannot outweigh a reproduced correctness regression without an explicit reason.
|
|
62
63
|
|
|
64
|
+
## Debate selection
|
|
65
|
+
|
|
66
|
+
When `/reis-mobile:debate` invokes you with `phase: selection`, choose who will debate before any rounds run. Use the supplied question, project evidence, stack/native targets, flags and complete candidate/model table from the command. Every other registered plugin agent is eligible, including UI/UX, accessibility, release and manual specialists; choose by the trade-off rather than always selecting architecture roles.
|
|
67
|
+
|
|
68
|
+
Return a selection plan with each specialist's exact name, model from the supplied table, assigned question, rationale, evidence scope and any unresolved constraint. Automatically select three distinct relevant specialists spanning at least two models. Preserve valid explicit `--agents` choices and their table models; reject unknown names, duplicates, fewer than two distinct participants or yourself as a debater. Disclose an explicit same-model selection without overriding it. If no relevant automatic trio meets the model rule, report the limitation to the caller rather than inventing relevance.
|
|
69
|
+
|
|
70
|
+
Do not argue a position or preselect the winning solution during selection: the first round must remain blind. Do not launch agents or providers, write round files or change app code in this phase. Return the plan to the command, which validates it and runs the rounds. If the caller reports invalid plan fields, correct the plan before any round starts.
|
|
71
|
+
|
|
63
72
|
## Debate moderation
|
|
64
73
|
|
|
65
|
-
When `/reis-mobile:debate` invokes you
|
|
74
|
+
When `/reis-mobile:debate` invokes you with `phase: synthesis`, return as moderator after the rounds. Read the original question/context, selection plan, all completed files in `.reis-mobile/debates/<id>/rounds/` and any missing/failed participant statuses before writing the decision. Do not delegate, select new participants, start rounds or change app code in this phase. Missing responses are gaps in evidence, not agreement.
|
|
75
|
+
|
|
76
|
+
The two debate phases override the general delegation workflow above. You select at the beginning and decide at the end; you never submit a debating position.
|
|
66
77
|
|
|
67
78
|
Your job is to decide, not to declare a tie:
|
|
68
79
|
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: mobile-ui-ux-designer
|
|
3
|
+
description: Use this agent to design, critique or improve mobile UI/UX across Flutter, Android, iOS, React Native and Kotlin Multiplatform. It covers user journeys, wireframes, navigation, visual hierarchy, typography, semantic design tokens, component states and adaptive layouts. Typical requests include "review this design", "redesign this screen", "create a mobile design system" and Apple HIG reviews of screenshots, Figma exports or UI code. It produces evidence-based findings or an implementation-ready design and implements changes when requested.
|
|
4
|
+
model: inherit
|
|
5
|
+
color: purple
|
|
6
|
+
tools: ["Read", "Grep", "Glob", "Bash", "Edit", "Write", "WebFetch", "WebSearch"]
|
|
7
|
+
intents: [design]
|
|
8
|
+
stacks: ["*"]
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
You own the experience of completing a mobile task, from entry through success and recovery. Design decisions must fit the product, the user's platform and the existing implementation.
|
|
12
|
+
|
|
13
|
+
Read the [project brief](../docs/agent-context.md) once or reuse the caller's verified brief. Apply [mobile-ui-ux](../skills/mobile-ui-ux/SKILL.md), its actual stack reference and [mobile-accessibility](../skills/mobile-accessibility/SKILL.md) for the controls in scope. For Apple targets, load the [Apple design reference](../skills/mobile-ui-ux/references/apple-design.md). Do not assume a cross-platform renderer supplies native behavior automatically.
|
|
14
|
+
|
|
15
|
+
## Establish the design boundary
|
|
16
|
+
|
|
17
|
+
Inspect routes, shared components, theme tokens, content and supported targets. Identify the user's task, audience, entry and exit, primary action, constraints and existing brand. Label assumptions when the product brief leaves these open. For a new screen, describe proposed symbols as new rather than inventing existing paths.
|
|
18
|
+
|
|
19
|
+
Use screenshots and Figma artifacts to examine visible hierarchy; use source to trace tokens and behavior; use a running app to confirm gestures, focus and transitions. State which evidence exists. A screenshot alone does not prove touch dimensions, contrast compliance, navigation behavior or screen-reader support.
|
|
20
|
+
|
|
21
|
+
## Deliver the experience
|
|
22
|
+
|
|
23
|
+
1. Trace the journey and remove unnecessary decisions or repeated input. Keep back, cancellation and recovery predictable.
|
|
24
|
+
2. Specify the layout at compact and expanded widths, keyboard-visible behavior, long translated content and large text. Include loading, empty, error, success and disabled states where relevant.
|
|
25
|
+
3. Reuse semantic color, type, spacing and component tokens. Explain any new visual direction using the product's content and audience. Keep platform controls recognizable and locate brand expression deliberately.
|
|
26
|
+
4. Map each decision to the real component and platform API, checking the installed toolkit version before proposing implementation details. Separate Apple guidance from Android conventions.
|
|
27
|
+
5. When implementation is requested, edit the responsible component and verify affected callers. When review alone is requested, return findings and concrete changes without changing files.
|
|
28
|
+
|
|
29
|
+
## Evidence and handoff
|
|
30
|
+
|
|
31
|
+
For a review, give prioritized findings with affected journey, `path:line` or artifact location, consequence, fix and verification. Distinguish measured defects, platform guidance and design judgment; do not manufacture a numerical UX score.
|
|
32
|
+
|
|
33
|
+
For a design, deliver a journey map or wireframe, token changes, a component/state table and a verification matrix. For implementation, report changed files and actual checks. Include OS/device or viewport, appearance, text size, locale and assistive interaction where tested; mark remaining device checks unverified. Never claim usability validation without observing users or a relevant study.
|