reis-mobile 0.10.0 → 0.10.1
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 +17 -0
- package/README.md +31 -21
- package/THIRD_PARTY_NOTICES.md +8 -0
- package/agents/lead-mobile.md +14 -3
- package/agents/mobile-ui-ux-designer.md +33 -0
- package/commands/debate.md +21 -14
- package/core/router/intents.mjs +8 -0
- package/package.json +1 -1
- 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-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.10.
|
|
8
|
+
"version": "0.10.1"
|
|
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.10.
|
|
15
|
+
"version": "0.10.1",
|
|
16
16
|
"author": {
|
|
17
17
|
"name": "Warleson Reis"
|
|
18
18
|
},
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "reis-mobile",
|
|
3
|
-
"version": "0.10.
|
|
3
|
+
"version": "0.10.1",
|
|
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,23 @@ Format based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/). The pr
|
|
|
4
4
|
|
|
5
5
|
## [Unreleased]
|
|
6
6
|
|
|
7
|
+
## [0.10.1] - 2026-11-04
|
|
8
|
+
|
|
9
|
+
### Added
|
|
10
|
+
|
|
11
|
+
- `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.
|
|
12
|
+
- English and Portuguese `design` routing with platform skill selection and regression coverage for architecture, accessibility, tests and unrelated terms.
|
|
13
|
+
- 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.
|
|
14
|
+
|
|
15
|
+
### Changed
|
|
16
|
+
|
|
17
|
+
- 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.
|
|
18
|
+
- All five platform skills now route design work and link the UI/UX workflow and Apple-target reference.
|
|
19
|
+
|
|
20
|
+
### Fixed
|
|
21
|
+
|
|
22
|
+
- `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.
|
|
23
|
+
|
|
7
24
|
## [0.10.0] - 2026-11-04
|
|
8
25
|
|
|
9
26
|
### 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
|
|
|
@@ -44,25 +44,22 @@ A mobile app is not a generic project. A code review that does not know about `B
|
|
|
44
44
|
## What's new
|
|
45
45
|
|
|
46
46
|
<!-- reis-mobile:latest-release:start -->
|
|
47
|
-
### v0.10.
|
|
47
|
+
### v0.10.1
|
|
48
48
|
|
|
49
49
|
#### Added
|
|
50
50
|
|
|
51
|
-
- `mobile-
|
|
52
|
-
|
|
53
|
-
-
|
|
54
|
-
- English and Portuguese `privacy`, `networking`, `auth` and `notifications` intents, handled by the existing staff engineer, with five-stack routing, prompt discovery and explicit-override tests.
|
|
55
|
-
- `mobile-billing`, `mobile-migration`, `mobile-analytics` and `mobile-hardware` topic skills, each with Flutter, Android, iOS, React Native and Kotlin Multiplatform references: in-app purchases verified by the backend before acknowledgement and recovered after process death; migrations planned as buildable steps, with on-device data that survives skipped releases and interrupted launches; tracking plans with typed events, identity reset on sign-out and consent-gated collection; device hardware from the availability check to the release of the resource, with real-device test matrices.
|
|
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.
|
|
51
|
+
- `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.
|
|
52
|
+
- English and Portuguese `design` routing with platform skill selection and regression coverage for architecture, accessibility, tests and unrelated terms.
|
|
53
|
+
- 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.
|
|
57
54
|
|
|
58
55
|
#### Changed
|
|
59
56
|
|
|
60
|
-
-
|
|
61
|
-
-
|
|
57
|
+
- 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.
|
|
58
|
+
- All five platform skills now route design work and link the UI/UX workflow and Apple-target reference.
|
|
62
59
|
|
|
63
60
|
#### Fixed
|
|
64
61
|
|
|
65
|
-
-
|
|
62
|
+
- `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.
|
|
66
63
|
|
|
67
64
|
<!-- reis-mobile:latest-release:end -->
|
|
68
65
|
|
|
@@ -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
|
|
|
@@ -405,7 +402,7 @@ The router never invents a specialist: if no agent serves the intent, it warns y
|
|
|
405
402
|
| **Project context** | You explain the stack | Deterministic detection of stack, platform and variant |
|
|
406
403
|
| **Review** | Generic | Mobile checklists: lifecycle, `BuildContext`, MASVS, manifest, ATS |
|
|
407
404
|
| **Secrets in the diff** | Sent as they are | Masked before reaching the model |
|
|
408
|
-
| **Specialists** | None |
|
|
405
|
+
| **Specialists** | None | 22 agents and 27 mobile skills |
|
|
409
406
|
| **Context cost** | Zero | ~5,500 fixed tokens (agent and skill descriptions), no hooks |
|
|
410
407
|
| **Best for** | General tasks | Teams and developers working on mobile apps |
|
|
411
408
|
|
|
@@ -464,13 +461,25 @@ For domain knowledge that code cannot reveal, optionally commit `.reis-mobile/pr
|
|
|
464
461
|
| `kmp-architect` | Kotlin Multiplatform | architecture, offline | Shared source-set ownership, Android/iOS callers and Swift-facing contracts |
|
|
465
462
|
| `kmp-performance-engineer` | Kotlin Multiplatform | performance | Shared Kotlin cost versus Android/iOS host traces and bridge overhead |
|
|
466
463
|
| `kmp-test-engineer` | Kotlin Multiplatform | test | `commonTest`, target tests and Android/iOS host coverage |
|
|
464
|
+
| `mobile-ui-ux-designer` | all | design | Mobile journeys, wireframes, design tokens, adaptive layouts and evidence-based UI/UX reviews |
|
|
467
465
|
| `mobile-accessibility-auditor` | all | accessibility | Screen reader labels, roles and states, touch targets, text scaling, focus and announcements, with fixes per platform |
|
|
468
466
|
| `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
467
|
| `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
468
|
| `plugin-native-expert` | Flutter | on demand | MethodChannel, EventChannel, Pigeon and Kotlin/Swift bridges, threading and lifecycle |
|
|
471
469
|
| `lead-mobile` | all | on demand | Coordinates the other agents and consolidates a single action plan |
|
|
472
470
|
|
|
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`.
|
|
471
|
+
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`.
|
|
472
|
+
|
|
473
|
+
### UI/UX design
|
|
474
|
+
|
|
475
|
+
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:
|
|
476
|
+
|
|
477
|
+
```bash
|
|
478
|
+
reis-mobile route "review the UI/UX of this screen"
|
|
479
|
+
reis-mobile route "create a mobile design system"
|
|
480
|
+
```
|
|
481
|
+
|
|
482
|
+
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
483
|
|
|
475
484
|
### Skills
|
|
476
485
|
|
|
@@ -483,6 +492,7 @@ Every skill starts with `mobile-`. **Topic** skills cover every stack with one r
|
|
|
483
492
|
| `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
493
|
| `mobile-test` | Unit, UI, integration and end-to-end tests | test | Flutter (widget, integration, Patrol, mocks, coverage), Android, iOS, React Native, KMP |
|
|
485
494
|
| `mobile-security` | OWASP MASVS security checks | review, security, release | Flutter (token storage), Android (intents), iOS, React Native, KMP, OAuth/OIDC and PKCE |
|
|
495
|
+
| `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
496
|
| `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
497
|
| `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
498
|
| `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 +508,11 @@ Every skill starts with `mobile-`. **Topic** skills cover every stack with one r
|
|
|
498
508
|
| `mobile-analytics` | Tracking plans, typed events, funnels, analytics identity and consent-gated collection | analytics | Flutter, Android, iOS, React Native, KMP |
|
|
499
509
|
| `mobile-hardware` | Camera, Bluetooth and BLE, NFC, location, sensors, scanning and haptics | hardware | Flutter, Android, iOS, React Native, KMP |
|
|
500
510
|
| `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 |
|
|
511
|
+
| `mobile-flutter` | Flutter and Dart specifics | design, review, performance, accessibility, migration | UI and navigation, data, native code, performance, accessibility and i18n, Dart, setup |
|
|
512
|
+
| `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 |
|
|
513
|
+
| `mobile-ios` | Native iOS specifics | design, performance, release, accessibility | UI and navigation, data and networking, platform features, performance and release |
|
|
514
|
+
| `mobile-rn` | React Native and Expo specifics | design, performance, release, accessibility | UI and navigation, data and networking, platform features, performance and release |
|
|
515
|
+
| `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
516
|
| `mobile-detect-stack` | Deterministic stack detection with the CLI | — | — |
|
|
507
517
|
|
|
508
518
|
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.
|
|
@@ -537,7 +547,7 @@ About 85 guides come from [flutter/skills](https://github.com/flutter/skills), [
|
|
|
537
547
|
|
|
538
548
|
**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
549
|
|
|
540
|
-
**Context cost.** Claude Code loads the descriptions of
|
|
550
|
+
**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
551
|
|
|
542
552
|
**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
553
|
|
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.
|
package/commands/debate.md
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
description: Structured debate between the mobile specialists —
|
|
2
|
+
description: Structured debate between the mobile specialists — lead-mobile selects the participants, specialists defend and rebut positions, and lead-mobile returns to decide
|
|
3
3
|
argument-hint: "[--rounds N] [--agents a,b,c] [--external] [--providers a,b] <question>"
|
|
4
4
|
allowed-tools: ["Bash(node:*)", "Bash(mkdir:*)", "Agent", "Read", "Write", "Grep", "Glob"]
|
|
5
5
|
---
|
|
@@ -8,7 +8,7 @@ allowed-tools: ["Bash(node:*)", "Bash(mkdir:*)", "Agent", "Read", "Write", "Grep
|
|
|
8
8
|
|
|
9
9
|
Arguments received: `$ARGUMENTS`
|
|
10
10
|
|
|
11
|
-
Use this command for
|
|
11
|
+
Use this command for mobile decisions with real trade-offs, including architecture, UI/UX, accessibility and release readiness. A debate runs several specialists over the configured rounds; avoid it for routine questions. If the question has a single answer that can be verified in the code, answer it directly and tell the user why it was not worth a debate.
|
|
12
12
|
|
|
13
13
|
## 1. Parse the arguments
|
|
14
14
|
|
|
@@ -31,9 +31,11 @@ The JSON carries the stack and the `language` for the whole debate: `en` English
|
|
|
31
31
|
|
|
32
32
|
If the question mentions files or directories, resolve the paths and read them now: participants receive the content in the briefing, not the path. If it fails, show the error and stop.
|
|
33
33
|
|
|
34
|
-
## 3.
|
|
34
|
+
## 3. Lead selects the participants
|
|
35
35
|
|
|
36
|
-
|
|
36
|
+
Invoke `Agent(subagent_type: "reis-mobile:lead-mobile", model: "opus")` with `phase: selection`, following the **Debate selection** section of `${CLAUDE_PLUGIN_ROOT}/agents/lead-mobile.md`. Pass the question, detected stack and native targets, language, relevant file contents, flags and the complete candidate/model table below. The lead owns participant selection; the command executes the returned plan and does not independently replace participants.
|
|
37
|
+
|
|
38
|
+
Ask the lead to choose **three** distinct specialists automatically, with relevant perspectives that can expose the question's trade-offs. Disagreement must come from evidence and competing constraints, not a requirement to invent conflict. Every specialist in the plugin is eligible; the lead itself is the selector and moderator, not a debater.
|
|
37
39
|
|
|
38
40
|
| Agent | Defends | Model |
|
|
39
41
|
|---|---|---|
|
|
@@ -55,19 +57,24 @@ Choose **three** agents whose priorities genuinely conflict on the question. A d
|
|
|
55
57
|
| `reis-mobile:plugin-native-expert` | Flutter–native boundary, platform channels, lifecycle | `opus` |
|
|
56
58
|
| `reis-mobile:mobile-staff-engineer` | Build, release, migration, cross-platform trade-offs | `opus` |
|
|
57
59
|
| `reis-mobile:mobile-code-reviewer` | Concrete risk in the code that already exists | `sonnet` |
|
|
60
|
+
| `reis-mobile:mobile-ui-ux-designer` | User journeys, visual hierarchy, interaction cost and design consistency | `opus` |
|
|
61
|
+
| `reis-mobile:mobile-accessibility-auditor` | Assistive interaction, readable content, focus and inclusive task completion | `sonnet` |
|
|
62
|
+
| `reis-mobile:mobile-release-engineer` | Artifact provenance, release gates, rollout and production readiness | `opus` |
|
|
58
63
|
|
|
59
|
-
Pass the `model` from the table on
|
|
64
|
+
Pass the `model` from the table on each participant's `Agent` call. The lead uses `opus` for both selection and synthesis. Model diversity is a configured perspective check, not proof of independent reasoning or correct conclusions.
|
|
60
65
|
|
|
61
|
-
Automatic selection must end with **at least two different models** among the participants.
|
|
66
|
+
Automatic selection must end with **at least two different models** among the participants. The lead must choose a relevant adjacent specialist using the other model when needed and explain the trade-off. If no relevant mixed-model trio fits the evidence, the lead reports that limitation instead of adding an unrelated role; resolve the scope before launching rounds.
|
|
62
67
|
|
|
63
68
|
Selection rules:
|
|
64
69
|
|
|
65
|
-
- The detected stack rules.
|
|
66
|
-
-
|
|
67
|
-
- `--agents` overrides
|
|
68
|
-
- `reis-mobile:lead-mobile` never debates
|
|
70
|
+
- The detected stack rules. Match `flutter-*` to Flutter, `android-*` to native Android, `ios-*` to native iOS, `rn-*` to React Native and `kmp-*` Kotlin Multiplatform. For architecture questions, consider the stack's architect, performance and test specialists. For design, accessibility or release questions, prioritize the corresponding cross-stack specialists. All `mobile-*` specialists fit any stack; native specialists may join cross-platform projects when the question implicates their native paths.
|
|
71
|
+
- Select `plugin-native-expert` only for Flutter projects with an implicated native bridge or plugin path.
|
|
72
|
+
- `--agents` overrides automatic membership, but not the models. The lead validates the supplied names (with or without the `reis-mobile:` prefix), requires at least two distinct specialists and preserves valid explicit choices. Unknown names, duplicates or the lead as a participant: explain the error and stop before rounds. An explicit same-model selection is allowed; disclose that limitation without substituting participants.
|
|
73
|
+
- `reis-mobile:lead-mobile` never debates: it selects in step 3 and returns to moderate in step 7. Neither lead call launches participants or external providers.
|
|
74
|
+
|
|
75
|
+
The lead returns a selection plan containing each participant's exact name, model, assigned question, rationale and evidence scope, plus unresolved constraints. Check the returned names/models against the table, uniqueness, explicit membership and the automatic model mix. If invalid, return the validation errors to the lead for correction before starting; do not silently repair its choices. If Agent delegation is unavailable, report that the debate could not run rather than claiming specialists participated.
|
|
69
76
|
|
|
70
|
-
Before starting, tell the user in one line the stack, the participants with their models and the number of rounds.
|
|
77
|
+
Before starting, tell the user in one line the stack, the lead-selected participants with their models and the number of rounds.
|
|
71
78
|
|
|
72
79
|
## 4. Prepare the folder
|
|
73
80
|
|
|
@@ -75,11 +82,11 @@ Before starting, tell the user in one line the stack, the participants with thei
|
|
|
75
82
|
mkdir -p ".reis-mobile/debates/<NNN-question-slug>/rounds"
|
|
76
83
|
```
|
|
77
84
|
|
|
78
|
-
`NNN` is sequential within `.reis-mobile/debates/`. Write `context.md` in the folder with the question, the stack, the language, the participants, the flags and the context read in step 2.
|
|
85
|
+
`NNN` is sequential within `.reis-mobile/debates/`. Write `context.md` in the folder with the question, the stack, the language, the participants, the flags, the lead's selection plan with its rationale and the context read in step 2.
|
|
79
86
|
|
|
80
87
|
## 5. Round 1 — blind positions
|
|
81
88
|
|
|
82
|
-
Launch the participants **in parallel**, each with `Agent(subagent_type: "<agent>", model: "<model from the table>", run_in_background: true)`, in a single tool block. Nobody sees anyone else's position in this round: that is what keeps the first to answer from anchoring the rest.
|
|
89
|
+
Launch the participants **in parallel**, each with `Agent(subagent_type: "<agent>", model: "<model from the table>", run_in_background: true)`, in a single tool block. Pass each specialist its assigned question and evidence scope from the lead's plan. Instruct every participant to return analysis only, without editing app code or launching subagents. Nobody sees anyone else's position in this round: that is what keeps the first to answer from anchoring the rest.
|
|
83
90
|
|
|
84
91
|
Each briefing, self-contained:
|
|
85
92
|
|
|
@@ -140,7 +147,7 @@ Rebutting the generic thesis does not count: every rebuttal cites a concrete cla
|
|
|
140
147
|
|
|
141
148
|
## 7. Synthesis
|
|
142
149
|
|
|
143
|
-
Invoke `reis-mobile:lead-mobile` with all rounds, following the **Debate moderation** section of `${CLAUDE_PLUGIN_ROOT}/agents/lead-mobile.md`. It resolves the disagreements and
|
|
150
|
+
Invoke `Agent(subagent_type: "reis-mobile:lead-mobile", model: "opus")` again with `phase: synthesis`, the selection plan, original context, all completed rounds and any missing/failed participant statuses, following the **Debate moderation** section of `${CLAUDE_PLUGIN_ROOT}/agents/lead-mobile.md`. It reads the rounds, verifies decisive evidence, resolves the disagreements and delivers the decision with an ordered action plan. This call does not select new participants or start additional rounds.
|
|
144
151
|
|
|
145
152
|
Before accepting the synthesis, confirm any decisive claim in the code yourself: participants do not verify each other. Write the result to `.reis-mobile/debates/<id>/synthesis.md`.
|
|
146
153
|
|
package/core/router/intents.mjs
CHANGED
|
@@ -51,6 +51,14 @@ export const INTENTS = {
|
|
|
51
51
|
'acessibilidade', 'accessibility', 'a11y', 'leitor de tela', 'screen reader',
|
|
52
52
|
'talkback', 'voiceover', 'contraste', 'semantics',
|
|
53
53
|
],
|
|
54
|
+
// Keep visual design separate from software architecture and UI test requests.
|
|
55
|
+
design: [
|
|
56
|
+
'ui/ux', 'ux/ui', 'ui design', 'ux design', 'design review', 'design de interface',
|
|
57
|
+
'design de tela', 'design system', 'visual design', 'interface design',
|
|
58
|
+
'wireframe', 'usabilidade', 'usability', 'hierarquia visual', 'visual hierarchy',
|
|
59
|
+
'tipografia', 'typography', 'apple hig', 'human interface guidelines',
|
|
60
|
+
'liquid glass', 'redesign', 'redesenhar',
|
|
61
|
+
],
|
|
54
62
|
review: [
|
|
55
63
|
'review', 'revis', 'code review', 'pull request', 'pr', 'prs', 'analis', 'avali', 'audit',
|
|
56
64
|
'code smell',
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "reis-mobile",
|
|
3
|
-
"version": "0.10.
|
|
3
|
+
"version": "0.10.1",
|
|
4
4
|
"description": "AI agents and skills for Flutter, Android, iOS, React Native and Kotlin Multiplatform — a Claude Code and Codex plugin for reviews, debugging, tests, architecture, security and Firebase.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: mobile-android
|
|
3
3
|
description: Builds native Android apps with the Android team's guides — Jetpack Compose UI, adaptive layouts, edge-to-edge, Compose styles, migrating XML views to Compose, Navigation 3 and predictive back; Android Gradle Plugin 9 upgrades, R8 keep rule analysis, profiling with Android Studio and Perfetto, and the Android CLI; Google Play policy compliance, Play Billing upgrades and the Engage SDK; Credential Manager restore and verified email; CameraX and Media3 Cast; App Functions and the ML Kit GenAI Prompt API; Wear OS, Android TV and display glasses. Use when writing, upgrading or auditing native Android (Kotlin) code for any of these topics, even if the user does not name the library.
|
|
4
|
-
intents: [performance, release, migration, build, dependency]
|
|
4
|
+
intents: [design, performance, release, migration, build, dependency]
|
|
5
5
|
stacks: [android]
|
|
6
6
|
---
|
|
7
7
|
|
|
@@ -27,3 +27,7 @@ Each topic file lists its guides; open only the ones the task needs.
|
|
|
27
27
|
|
|
28
28
|
- Check the AGP, Kotlin, Compose BOM and `compileSdk`/`targetSdk` versions in the build files and version catalog; several guides depend on minimum versions.
|
|
29
29
|
- Several guides prescribe running specific tools or scripts and following steps strictly; run what writes files only with the user's agreement.
|
|
30
|
+
|
|
31
|
+
## Interface design
|
|
32
|
+
|
|
33
|
+
For UI/UX reviews, wireframes, design systems and screen redesigns, use [mobile-ui-ux](../mobile-ui-ux/SKILL.md) and its reference for this stack. For Apple targets, also consult its [Apple design workflow](../mobile-ui-ux/references/apple-design.md); validate platform claims against current official guidance and the installed toolkit.
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: mobile-flutter
|
|
3
3
|
description: Builds Flutter apps with guides for everything specific to Flutter and Dart — layouts, responsive UI, forms, animations, theming, declarative routing with go_router, widget previews and home screen widgets; HTTP, JSON serialization, local databases and caching; plugins, platform channels and native views; isolates and app size; accessibility and localization; Effective Dart, Dart 3 features and pattern matching; and macOS setup. Use when writing or changing Flutter UI, data or native integration code, or when the user asks how to do something in Flutter, even if they do not name the topic.
|
|
4
|
-
intents: [review, performance, accessibility, migration]
|
|
4
|
+
intents: [design, review, performance, accessibility, migration]
|
|
5
5
|
stacks: [flutter]
|
|
6
6
|
---
|
|
7
7
|
|
|
@@ -28,3 +28,7 @@ Each topic file lists its guides; open only the ones the task needs.
|
|
|
28
28
|
- Follow the project: its state management, folder structure, lints and packages already in `pubspec.yaml`.
|
|
29
29
|
- Check the Flutter SDK pin (`.fvmrc`, toolchain config or CI) and the installed `flutter --version` before using newer APIs; `pubspec.lock` records resolved packages, not the exact Flutter SDK version.
|
|
30
30
|
- Prefer packages the project already depends on over adding new ones; when adding one, check that it supports every platform the app targets.
|
|
31
|
+
|
|
32
|
+
## Interface design
|
|
33
|
+
|
|
34
|
+
For UI/UX reviews, wireframes, design systems and screen redesigns, use [mobile-ui-ux](../mobile-ui-ux/SKILL.md) and its reference for this stack. For Apple targets, also consult its [Apple design workflow](../mobile-ui-ux/references/apple-design.md); validate platform claims against current official guidance and the installed toolkit.
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: mobile-ios
|
|
3
3
|
description: Builds native iOS apps in Swift — SwiftUI and UIKit screens, state and data flow, NavigationStack, lists, forms and accessibility; networking with URLSession and Codable, persistence with SwiftData, Core Data, files and the Keychain; permissions, push notifications, universal links, background tasks, widgets, App Intents and StoreKit 2 purchases; performance with Instruments and MetricKit; and release with signing, TestFlight and App Store Connect. Use when writing or changing native iOS code, adding a platform feature, preparing a build for TestFlight or the App Store, or when the user asks how to do something on iOS, even if they do not name the framework.
|
|
4
|
-
intents: [performance, release, accessibility]
|
|
4
|
+
intents: [design, performance, release, accessibility]
|
|
5
5
|
stacks: [ios]
|
|
6
6
|
---
|
|
7
7
|
|
|
@@ -23,3 +23,7 @@ Guides for building native iOS apps. Cross-platform topics live in their own ski
|
|
|
23
23
|
- Check the deployment target (`IPHONEOS_DEPLOYMENT_TARGET`), the Swift language version and the Xcode version: many APIs in these guides need iOS 16 or 17, and Swift 6 changes concurrency checking.
|
|
24
24
|
- Follow the project: SwiftUI or UIKit, its architecture, and dependencies already in `Package.resolved` or `Podfile.lock`.
|
|
25
25
|
- Apple's requirements change every year (minimum SDK for uploads, privacy manifests, review guidelines); check the current ones instead of relying on these guides for dates or version numbers.
|
|
26
|
+
|
|
27
|
+
## Interface design
|
|
28
|
+
|
|
29
|
+
For UI/UX reviews, wireframes, design systems and screen redesigns, use [mobile-ui-ux](../mobile-ui-ux/SKILL.md) and its reference for this stack. For Apple targets, also consult its [Apple design workflow](../mobile-ui-ux/references/apple-design.md); validate platform claims against current official guidance and the installed toolkit.
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: mobile-kmp
|
|
3
3
|
description: Works on Kotlin Multiplatform mobile projects with shared Kotlin source sets and Android/iOS targets. Use for architecture, tests, debugging, reviews, performance, security, accessibility, dependencies and releases when `org.jetbrains.kotlin.multiplatform` is applied; inspect actual targets, `commonMain`/`commonTest`, target source sets, Compose Multiplatform and the iOS framework/host app before giving platform advice.
|
|
4
|
-
intents: [architecture, test, performance, review, debug, security, release, accessibility, migration, dependency, build, deployment]
|
|
4
|
+
intents: [design, architecture, test, performance, review, debug, security, release, accessibility, migration, dependency, build, deployment]
|
|
5
5
|
stacks: [kotlin-multiplatform]
|
|
6
6
|
---
|
|
7
7
|
|
|
@@ -24,3 +24,7 @@ KMP is a sharing mechanism, not a promise that both apps use the same UI or SDK.
|
|
|
24
24
|
4. Use the topic skill for the requested work. Use `mobile-android` or `mobile-ios` only for an affected host or target-specific implementation; do not apply native-app instructions blindly to `commonMain`.
|
|
25
25
|
|
|
26
26
|
The [Kotlin Multiplatform source-set reference](https://kotlinlang.org/docs/multiplatform/multiplatform-dsl-reference.html) defines `commonMain`, `commonTest` and target compilations. Confirm DSL and task names in the project's installed Kotlin and Gradle versions.
|
|
27
|
+
|
|
28
|
+
## Interface design
|
|
29
|
+
|
|
30
|
+
For UI/UX reviews, wireframes, design systems and screen redesigns, use [mobile-ui-ux](../mobile-ui-ux/SKILL.md) and its reference for this stack. For Apple targets, also consult its [Apple design workflow](../mobile-ui-ux/references/apple-design.md); validate platform claims against current official guidance and the installed toolkit.
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: mobile-rn
|
|
3
3
|
description: Builds React Native and Expo apps in TypeScript — navigation with React Navigation or Expo Router, lists, forms, styling, gestures and animations with Reanimated, safe areas, accessibility and localization; networking with TanStack Query, response validation, persistence with MMKV, AsyncStorage, SQLite and secure storage; permissions, push notifications, deep links, background tasks, native modules and config plugins; performance with Hermes and the React profiler; and release with EAS Build, EAS Submit and EAS Update or bare Gradle and Xcode builds. Use when writing or changing React Native code, adding a native capability, configuring Expo, preparing a store build or an over-the-air update, or when the user asks how to do something in React Native, even if they do not name the library.
|
|
4
|
-
intents: [performance, release, accessibility]
|
|
4
|
+
intents: [design, performance, release, accessibility]
|
|
5
5
|
stacks: [react-native]
|
|
6
6
|
---
|
|
7
7
|
|
|
@@ -24,3 +24,7 @@ Guides for building React Native and Expo apps. Cross-platform topics live in th
|
|
|
24
24
|
- Install libraries with `npx expo install` in Expo projects, so versions match the SDK.
|
|
25
25
|
- Libraries with native code need a new native build (a development build in Expo); they do not work in Expo Go unless the Expo SDK includes them.
|
|
26
26
|
- Native requirements of each platform still apply; see `mobile-ios` and `mobile-android` for store and platform specifics.
|
|
27
|
+
|
|
28
|
+
## Interface design
|
|
29
|
+
|
|
30
|
+
For UI/UX reviews, wireframes, design systems and screen redesigns, use [mobile-ui-ux](../mobile-ui-ux/SKILL.md) and its reference for this stack. For Apple targets, also consult its [Apple design workflow](../mobile-ui-ux/references/apple-design.md); validate platform claims against current official guidance and the installed toolkit.
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: mobile-ui-ux
|
|
3
|
+
description: Designs and reviews mobile interfaces across Flutter, Android, iOS, React Native and Kotlin Multiplatform. Use for UI/UX, wireframes, screen redesigns, design systems, visual hierarchy, typography, adaptive layouts, navigation flows, component states and usability reviews of screenshots, Figma artifacts or UI code. Includes an Apple HIG reference workflow for Apple targets while preserving Android conventions.
|
|
4
|
+
intents: [design]
|
|
5
|
+
stacks: ["*"]
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Mobile UI/UX
|
|
9
|
+
|
|
10
|
+
Turn a product task into a coherent mobile journey and a design that can be implemented and checked. Reuse the app's visual language unless the requested scope calls for a new one.
|
|
11
|
+
|
|
12
|
+
## Choose references
|
|
13
|
+
|
|
14
|
+
| Target or task | Read |
|
|
15
|
+
|---|---|
|
|
16
|
+
| Flutter | [Flutter](references/flutter.md) |
|
|
17
|
+
| Native Android | [Android](references/android.md) |
|
|
18
|
+
| Native iOS | [iOS](references/ios.md) |
|
|
19
|
+
| React Native / Expo | [React Native](references/react-native.md) |
|
|
20
|
+
| Kotlin Multiplatform | [Kotlin Multiplatform](references/kotlin-multiplatform.md) |
|
|
21
|
+
| Apple HIG review, Apple-target design, materials or platform-specific behavior | [Apple design](references/apple-design.md) |
|
|
22
|
+
|
|
23
|
+
Also use [mobile-accessibility](../mobile-accessibility/SKILL.md) for accessibility verification. Open only the references needed for the current target and interaction.
|
|
24
|
+
|
|
25
|
+
## Ground the work
|
|
26
|
+
|
|
27
|
+
Read the product brief and real routes, screen components, themes and supported OS/toolkit versions. Identify the task, audience, primary action, constraints and success condition. For a new feature, state assumptions and distinguish proposed components from existing ones. Respect supplied brand assets and designs. Do not invent customer research or conversion results.
|
|
28
|
+
|
|
29
|
+
Choose the requested mode: review, design or implementation. A review needs evidence and actionable fixes; a design needs a flow, layout and interaction contract; an implementation needs working code and verification. Do not stop at advice when the user asks for changes.
|
|
30
|
+
|
|
31
|
+
## Specify the flow and visual system
|
|
32
|
+
|
|
33
|
+
- Map entry, decisions, completion, back and cancel. Name the destination of each action and what happens to unsaved input.
|
|
34
|
+
- Inventory relevant states: initial, loading, populated, empty, validation error, network error, retry, disabled and success. Explain how focus and feedback change between them.
|
|
35
|
+
- Establish hierarchy with real content. Identify the main action, secondary actions and information groups before choosing decoration.
|
|
36
|
+
- Reuse or propose semantic tokens for surfaces, text, actions, status, type roles, spacing, shape and motion. Show where each token is consumed, its light/dark behavior and how it scales. Avoid creating a parallel theme for one screen.
|
|
37
|
+
- Describe what makes the design appropriate to this product. Preserve familiar navigation and input behavior while giving content and brand a deliberate visual treatment.
|
|
38
|
+
- Specify compact and expanded layouts using available space, safe areas and keyboard constraints. Include long content, localization/RTL, large text and reduced motion. Select actual test dimensions from supported targets.
|
|
39
|
+
- Write labels in the product's vocabulary; errors should explain recovery and preserve useful input. Pair gestures with discoverable alternatives.
|
|
40
|
+
|
|
41
|
+
## Review with evidence
|
|
42
|
+
|
|
43
|
+
Trace shared components and resolved theme values before claiming a defect. Cite source locations or annotate the supplied artifact. A static image can reveal visual hierarchy but cannot prove hit area, reading order, back behavior or screen-reader output. Measure rendered colors and effective sizes when available; otherwise record what must be checked.
|
|
44
|
+
|
|
45
|
+
Read the relevant official platform guidance before calling something a platform requirement. Cite the page and section consulted. Check API availability against the project's deployment target and dependency versions. When browsing is unavailable, label current requirements unverified and continue with the evidence available.
|
|
46
|
+
|
|
47
|
+
Rank issues by blocked tasks and recovery cost, then recurring friction and visual polish. Separate platform guidance, confirmed defects and aesthetic judgment. Do not treat every stylistic preference as a violation or apply iOS conventions to Android-only UI.
|
|
48
|
+
|
|
49
|
+
## Deliver and verify
|
|
50
|
+
|
|
51
|
+
Provide a compact journey/wireframe and a table of component, state, action, destination/feedback and implementation owner. For changes, list reused/new tokens and the affected files. Verify the primary journey plus failure/retry, back/cancel and keyboard input on supported targets. Inspect light/dark, large text and the relevant assistive technology. Use existing screenshot or UI tests when they cover the change; add regression tests for behavior rather than mirroring token constants.
|
|
52
|
+
|
|
53
|
+
State exactly what ran, what was observed and which device checks remain. A source-only review is not a usability study or accessibility certification.
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
# Android interface design
|
|
2
|
+
|
|
3
|
+
Start with the app's existing Compose or Views components and theme. Use [Android UI guides](../../mobile-android/references/ui.md) and current [Android mobile design guidance](https://developer.android.com/design/ui/mobile).
|
|
4
|
+
|
|
5
|
+
- Use the app's Material theme roles and component defaults as the baseline. Document brand overrides and check semantic colors in both appearances.
|
|
6
|
+
- Select navigation and pane structure from available window space and the user's task. Preserve back behavior and navigation state when the window changes.
|
|
7
|
+
- Include system bars, display cutouts and keyboard insets in the layout contract. Test resizing and long content rather than assuming a fixed phone canvas.
|
|
8
|
+
- Specify form focus, keyboard actions, validation recovery and state restoration. Keep transient messages distinct from persistent errors that need action.
|
|
9
|
+
- Check text scaling, effective touch regions and TalkBack semantics using the actual rendered components; load the [Android accessibility reference](../../mobile-accessibility/references/android.md).
|
|
10
|
+
|
|
11
|
+
Use preview variants for fast visual feedback, then verify the journey on the supported device/window sizes. Apple references may inform a comparison, but do not make iOS bars or gestures Android requirements.
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
# Apple design reference workflow
|
|
2
|
+
|
|
3
|
+
## External material and provenance
|
|
4
|
+
|
|
5
|
+
The user-requested [apple-design-skill by dickwu](https://github.com/dickwu/apple-design-skill) is an optional external reading source for Apple-oriented interface reviews. Inspected revision: `ff4ebddf0488598723a82bfdce1afb04de0b1c44` (2026-11-04). Its [skill entry point at that revision](https://github.com/dickwu/apple-design-skill/blob/ff4ebddf0488598723a82bfdce1afb04de0b1c44/SKILL.md) links its topic references.
|
|
6
|
+
|
|
7
|
+
That revision has no LICENSE file or explicit redistribution license; its README attributes the reproduced HIG text to Apple. This plugin does not vendor its instructions, scripts or HIG snapshots, and does not assign them this repository's MIT license. The workflow here is original plugin guidance with external links. See [third-party notices](../../../THIRD_PARTY_NOTICES.md).
|
|
8
|
+
|
|
9
|
+
Read the external skill when the task calls for its Apple-focused perspective, then open only the topics relevant to the actual screen. Treat it as secondary reference material: check claims, numeric thresholds, hardware assumptions and API availability against current official documentation and the project's supported targets. Do not execute its download script or install its tool-specific configuration as part of a review.
|
|
10
|
+
|
|
11
|
+
## Choose official sources by decision
|
|
12
|
+
|
|
13
|
+
| Decision | Official starting point |
|
|
14
|
+
|---|---|
|
|
15
|
+
| Platform conventions and current topic index | [Apple HIG](https://developer.apple.com/design/human-interface-guidelines) |
|
|
16
|
+
| Adaptive organization, available space and positioning | [Layout](https://developer.apple.com/design/human-interface-guidelines/layout) |
|
|
17
|
+
| Text roles and scaling | [Typography](https://developer.apple.com/design/human-interface-guidelines/typography) |
|
|
18
|
+
| Semantic palette and appearance | [Color](https://developer.apple.com/design/human-interface-guidelines/color), [Dark mode](https://developer.apple.com/design/human-interface-guidelines/dark-mode) |
|
|
19
|
+
| Assistive interactions and accessibility settings | [Accessibility](https://developer.apple.com/design/human-interface-guidelines/accessibility) |
|
|
20
|
+
| Navigation destinations and modal tasks | [Tab bars](https://developer.apple.com/design/human-interface-guidelines/tab-bars), [Sheets](https://developer.apple.com/design/human-interface-guidelines/sheets) |
|
|
21
|
+
| Translucency and system materials | [Materials](https://developer.apple.com/design/human-interface-guidelines/materials) |
|
|
22
|
+
| Form behavior | [Entering data](https://developer.apple.com/design/human-interface-guidelines/entering-data) |
|
|
23
|
+
|
|
24
|
+
Read the page before citing a requirement; record the heading and URL. If a page has moved, find it through the official index. If unavailable, mark the claim unverified rather than treating a cached third-party statement as current Apple policy.
|
|
25
|
+
|
|
26
|
+
## Apply to this app
|
|
27
|
+
|
|
28
|
+
Identify the Apple target and actual renderer before choosing components. In Flutter, React Native and shared Compose, separate the desired behavior from the framework implementation and verify both. Keep Android-specific decisions in the Android reference.
|
|
29
|
+
|
|
30
|
+
For each proposed change, connect the user task to a real screen/control, the consulted guidance, the intended behavior and a concrete verification step. Preserve brand identity where it does not interfere with comprehension and task completion. For materials, check readability with actual content behind the surface and relevant accessibility settings, and specify a fallback supported by the deployment target.
|
|
31
|
+
|
|
32
|
+
When reviewing a static artifact, report visual observations separately from runtime questions. When reviewing source, follow wrappers and resolved tokens. Never present estimated sizes, unmeasured contrast or untested assistive interactions as verified failures.
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
# Flutter interface design
|
|
2
|
+
|
|
3
|
+
Inspect the existing widget tree, routing package, ThemeData/CupertinoTheme and supported targets. Reuse [Flutter UI guides](../../mobile-flutter/references/ui.md) for implementation.
|
|
4
|
+
|
|
5
|
+
- Resolve colors and text roles through the app theme, including custom theme extensions already present. Do not replace scalable text with fixed-height containers.
|
|
6
|
+
- Design from layout constraints; inspect SafeArea, scroll ownership and keyboard insets. Check narrow widths, large text and long translated labels together.
|
|
7
|
+
- Choose Material or Cupertino controls to match the target and app contract. An adaptive constructor does not guarantee every gesture, sheet or navigation convention is native.
|
|
8
|
+
- Specify selected, pressed, disabled, loading and validation states in shared widgets. Keep action labels and semantic roles available when icons or motion carry visual meaning.
|
|
9
|
+
- On iOS, consult [Apple design](apple-design.md); on Android, use [Android design guidance](android.md). Verify each target rather than copying Apple's styling into both.
|
|
10
|
+
|
|
11
|
+
Use existing widget/golden coverage for changed components, then exercise the complete flow on the intended target. A golden screenshot does not prove focus or gesture behavior.
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
# iOS interface design
|
|
2
|
+
|
|
3
|
+
Read [Apple design](apple-design.md) for the source workflow and [iOS UI and navigation](../../mobile-ios/references/ui-navigation.md) for implementation. Identify SwiftUI versus UIKit, deployment target, supported devices and existing component wrappers.
|
|
4
|
+
|
|
5
|
+
- Use semantic system text and color roles through the app's theme. Check Dynamic Type, dark appearance and content expansion before accepting a fixed frame.
|
|
6
|
+
- Specify navigation destinations, selection, back behavior and sheet dismissal using the existing navigation model. Preserve work when a modal is cancelled or a size change rearranges panes.
|
|
7
|
+
- Test safe areas, keyboard presentation, compact/expanded layouts and multiline controls. Distinguish a visual icon's dimensions from the interactive area.
|
|
8
|
+
- Prefer supported system controls for platform-specific behavior. Verify availability and fallback before proposing newer materials or APIs; a custom blur is not proof of native material behavior.
|
|
9
|
+
- Keep focus and spoken feedback in the interaction specification; consult [iOS accessibility](../../mobile-accessibility/references/ios.md).
|
|
10
|
+
|
|
11
|
+
Preview light/dark and large-text variants with realistic content. Confirm interactions on the supported runtime. Do not infer App Review acceptance from a visual inspection.
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
# Kotlin Multiplatform interface design
|
|
2
|
+
|
|
3
|
+
Determine whether UI is shared Compose Multiplatform or separate Android/iOS hosts. Read [shared Compose UI](../../mobile-kmp/references/compose-ui.md) and inspect the actual renderer for each screen.
|
|
4
|
+
|
|
5
|
+
- Share the journey, content states and semantic token meanings where appropriate. Map them to each host's controls, navigation and accessibility behavior.
|
|
6
|
+
- For shared Compose, verify the installed version's target support; do not assume Material controls acquire UIKit behavior on iOS.
|
|
7
|
+
- For native hosts, use [Android](android.md) and [iOS](ios.md) independently. Maintain consistent task completion without forcing identical layouts.
|
|
8
|
+
- Specify how state survives pane changes, rotation, navigation and cancellation. Locate the shared state owner and the host responsible for focus, keyboard and safe areas.
|
|
9
|
+
- Check typography, localized text, appearance and assistive interaction on each target. An Android preview cannot validate the iOS host.
|
|
10
|
+
|
|
11
|
+
For Apple-target decisions consult [Apple design](apple-design.md). Deliver a table of shared decisions and target-specific components so implementation ownership is clear.
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
# React Native interface design
|
|
2
|
+
|
|
3
|
+
Inspect the installed React Native/Expo versions, navigator and component library. Use [React Native UI and navigation](../../mobile-rn/references/ui-navigation.md) for implementation.
|
|
4
|
+
|
|
5
|
+
- Reuse the theme and token layer; map system appearance into semantic surface, text and action roles. Keep font scaling enabled and test multiline content.
|
|
6
|
+
- Identify native-stack versus JavaScript-rendered headers, sheets and tabs before promising native behavior. Check back/swipe behavior and route state on each OS.
|
|
7
|
+
- Specify safe-area ownership, keyboard avoidance and scroll behavior together to prevent duplicate insets or hidden primary actions.
|
|
8
|
+
- Preserve accessible roles, labels, states and focus across custom Pressable wrappers. Verify disabled and loading behavior rather than relying on opacity alone.
|
|
9
|
+
- Consult [Apple design](apple-design.md) for iOS and [Android](android.md) for Android. Share semantic tokens while retaining target-specific interaction details.
|
|
10
|
+
|
|
11
|
+
Verify the complete flow on both intended runtimes, including large text, dark appearance and keyboard-visible forms. JavaScript component tests alone do not verify native transitions or screen-reader behavior.
|