reis-mobile 0.9.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 +37 -0
- package/README.md +64 -29
- package/THIRD_PARTY_NOTICES.md +41 -0
- package/agents/lead-mobile.md +14 -3
- package/agents/mobile-release-engineer.md +2 -0
- package/agents/mobile-staff-engineer.md +17 -3
- package/agents/mobile-ui-ux-designer.md +33 -0
- package/commands/debate.md +21 -14
- package/core/router/intent-detector.mjs +3 -2
- package/core/router/intents.mjs +59 -2
- package/package.json +1 -1
- package/skills/mobile-analytics/SKILL.md +55 -0
- package/skills/mobile-analytics/references/android.md +9 -0
- package/skills/mobile-analytics/references/flutter.md +10 -0
- package/skills/mobile-analytics/references/ios.md +9 -0
- package/skills/mobile-analytics/references/kotlin-multiplatform.md +8 -0
- package/skills/mobile-analytics/references/react-native.md +9 -0
- package/skills/mobile-android/SKILL.md +5 -1
- package/skills/mobile-auth/SKILL.md +55 -0
- package/skills/mobile-auth/references/android.md +10 -0
- package/skills/mobile-auth/references/flutter.md +9 -0
- package/skills/mobile-auth/references/ios.md +10 -0
- package/skills/mobile-auth/references/kotlin-multiplatform.md +9 -0
- package/skills/mobile-auth/references/react-native.md +9 -0
- package/skills/mobile-billing/SKILL.md +58 -0
- package/skills/mobile-billing/references/android.md +11 -0
- package/skills/mobile-billing/references/flutter.md +11 -0
- package/skills/mobile-billing/references/ios.md +11 -0
- package/skills/mobile-billing/references/kotlin-multiplatform.md +9 -0
- package/skills/mobile-billing/references/react-native.md +10 -0
- package/skills/mobile-ci/SKILL.md +49 -0
- package/skills/mobile-ci/references/android.md +8 -0
- package/skills/mobile-ci/references/fastlane/beta.md +75 -0
- package/skills/mobile-ci/references/fastlane/match.md +288 -0
- package/skills/mobile-ci/references/fastlane/release.md +113 -0
- package/skills/mobile-ci/references/fastlane/setup-fastlane.md +150 -0
- package/skills/mobile-ci/references/fastlane/snapshot.md +394 -0
- package/skills/mobile-ci/references/fastlane/xcode-cloud.md +110 -0
- package/skills/mobile-ci/references/flutter.md +8 -0
- package/skills/mobile-ci/references/ios.md +9 -0
- package/skills/mobile-ci/references/kotlin-multiplatform.md +8 -0
- package/skills/mobile-ci/references/react-native.md +8 -0
- package/skills/mobile-firebase/SKILL.md +3 -1
- package/skills/mobile-flutter/SKILL.md +5 -1
- package/skills/mobile-hardware/SKILL.md +58 -0
- package/skills/mobile-hardware/references/android.md +12 -0
- package/skills/mobile-hardware/references/flutter.md +10 -0
- package/skills/mobile-hardware/references/ios.md +11 -0
- package/skills/mobile-hardware/references/kotlin-multiplatform.md +9 -0
- package/skills/mobile-hardware/references/react-native.md +10 -0
- package/skills/mobile-ios/SKILL.md +5 -1
- package/skills/mobile-kmp/SKILL.md +5 -1
- package/skills/mobile-migration/SKILL.md +66 -0
- package/skills/mobile-migration/references/android.md +9 -0
- package/skills/mobile-migration/references/flutter.md +10 -0
- package/skills/mobile-migration/references/ios.md +10 -0
- package/skills/mobile-migration/references/kotlin-multiplatform.md +9 -0
- package/skills/mobile-migration/references/react-native.md +10 -0
- package/skills/mobile-networking/SKILL.md +50 -0
- package/skills/mobile-networking/references/android.md +10 -0
- package/skills/mobile-networking/references/flutter.md +9 -0
- package/skills/mobile-networking/references/ios.md +10 -0
- package/skills/mobile-networking/references/kotlin-multiplatform.md +9 -0
- package/skills/mobile-networking/references/react-native.md +11 -0
- package/skills/mobile-notifications/SKILL.md +51 -0
- package/skills/mobile-notifications/references/android.md +10 -0
- package/skills/mobile-notifications/references/flutter.md +10 -0
- package/skills/mobile-notifications/references/ios.md +11 -0
- package/skills/mobile-notifications/references/kotlin-multiplatform.md +9 -0
- package/skills/mobile-notifications/references/react-native.md +10 -0
- package/skills/mobile-observability/SKILL.md +1 -1
- package/skills/mobile-offline-sync/SKILL.md +2 -0
- package/skills/mobile-privacy/SKILL.md +54 -0
- package/skills/mobile-privacy/references/android.md +10 -0
- package/skills/mobile-privacy/references/flutter.md +9 -0
- package/skills/mobile-privacy/references/ios.md +10 -0
- package/skills/mobile-privacy/references/kotlin-multiplatform.md +9 -0
- package/skills/mobile-privacy/references/react-native.md +9 -0
- package/skills/mobile-release/SKILL.md +1 -0
- package/skills/mobile-release/references/billing.md +2 -0
- package/skills/mobile-release/references/ci-cd.md +2 -0
- package/skills/mobile-rn/SKILL.md +5 -1
- package/skills/mobile-security/SKILL.md +2 -0
- 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": "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.
|
|
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.
|
|
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,43 @@ 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
|
+
|
|
24
|
+
## [0.10.0] - 2026-11-04
|
|
25
|
+
|
|
26
|
+
### Added
|
|
27
|
+
|
|
28
|
+
- `mobile-ci` topic skill for deployment pipelines across all five stacks, with the setup, Match, beta, release and Snapshot guides plus Xcode Cloud documentation imported from `greenstevester/fastlane-skill` (MIT), attributed and pinned to their upstream revision.
|
|
29
|
+
|
|
30
|
+
- Four topic skills, each with Flutter, Android, iOS, React Native and Kotlin Multiplatform references: `mobile-privacy` for consent and data lifecycle, `mobile-networking` for API integration and request recovery, `mobile-auth` for identity/session flows, and `mobile-notifications` for push/local notification lifecycles.
|
|
31
|
+
- 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.
|
|
32
|
+
- `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.
|
|
33
|
+
- 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.
|
|
34
|
+
|
|
35
|
+
### Changed
|
|
36
|
+
|
|
37
|
+
- Authentication requests now have a dedicated `auth` intent instead of relying on security vocabulary. Explicit security audits retain the security workflow.
|
|
38
|
+
- `mobile-staff-engineer` serves the `billing`, `analytics` and `hardware` intents and loads `mobile-migration` for migration plans.
|
|
39
|
+
|
|
40
|
+
### Fixed
|
|
41
|
+
|
|
42
|
+
- 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.
|
|
43
|
+
|
|
7
44
|
## [0.9.0] - 2026-10-13
|
|
8
45
|
|
|
9
46
|
### 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,28 +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.
|
|
47
|
+
### v0.10.1
|
|
48
48
|
|
|
49
49
|
#### Added
|
|
50
50
|
|
|
51
|
-
- `
|
|
52
|
-
-
|
|
53
|
-
-
|
|
54
|
-
- `/reis-mobile:consult [options] <question>`, also reachable as `/reis-mobile consult ...`: routes the question through the stack's specialist, requires its own position first, builds a self-contained briefing in `.reis-mobile/consults/`, consults the providers and then reconciles every outside claim against the code as confirmed with `file:line`, unverifiable or wrong.
|
|
55
|
-
- `providers:` in `.reis-mobile/config.yaml`: the allowlist of external providers a repository accepts, committed with the repository. An absent key allows all, an empty list allows none, and a blocked provider says so instead of failing.
|
|
56
|
-
- `providers.<id>.model` and `providers.<id>.enabled` in `~/.config/reis-mobile/config.json`, with precedence `--model`, then the provider's model variable (`OPENAI_MODEL`, `GEMINI_MODEL`, `OPENROUTER_MODEL`, `OLLAMA_MODEL`), then the config file.
|
|
57
|
-
- `reis-mobile doctor` lists the configured providers under Integrations, with a single informational row when none is configured. It still makes no network call.
|
|
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.
|
|
58
54
|
|
|
59
55
|
#### Changed
|
|
60
56
|
|
|
61
|
-
-
|
|
62
|
-
-
|
|
63
|
-
- `/reis-mobile:review` points at `/reis-mobile:consult` when a finding should be cross-checked outside the session, and still never sends project context itself.
|
|
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.
|
|
64
59
|
|
|
65
60
|
#### Fixed
|
|
66
61
|
|
|
67
|
-
-
|
|
68
|
-
- A failing CLI provider reported its opening banner (`YOLO mode is enabled...`) instead of the cause. The reported line is now the first one that names a failure, falling back to the last line of stderr.
|
|
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.
|
|
69
63
|
|
|
70
64
|
<!-- reis-mobile:latest-release:end -->
|
|
71
65
|
|
|
@@ -301,9 +295,9 @@ See the [readiness contract](skills/mobile-release/references/readiness.md) and
|
|
|
301
295
|
|
|
302
296
|
### Debate
|
|
303
297
|
|
|
304
|
-
`/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/`.
|
|
305
299
|
|
|
306
|
-
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.
|
|
307
301
|
|
|
308
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.
|
|
309
303
|
|
|
@@ -389,6 +383,7 @@ The router never invents a specialist: if no agent serves the intent, it warns y
|
|
|
389
383
|
| Build a plugin or debug MethodChannel/EventChannel | agent `plugin-native-expert` | ✅ |
|
|
390
384
|
| Audit a screen for TalkBack, VoiceOver, touch targets and text scaling | agent `mobile-accessibility-auditor` | ✅ |
|
|
391
385
|
| Check release readiness, write release notes or set up CI/CD | agent `mobile-release-engineer` | ✅ |
|
|
386
|
+
| Set up fastlane lanes, Match, TestFlight or automated screenshots | skill [`mobile-ci`](skills/mobile-ci/SKILL.md) | ✅ |
|
|
392
387
|
| Set startup, frame, memory and battery budgets and guard them in CI | skill `mobile-performance` | ✅ |
|
|
393
388
|
| Make the app work offline, queue writes and resolve conflicts | skill `mobile-offline-sync` | ✅ |
|
|
394
389
|
| Get usable crashes, errors, traces and release-health alerts in production | skill `mobile-observability` | ✅ |
|
|
@@ -407,8 +402,8 @@ The router never invents a specialist: if no agent serves the intent, it warns y
|
|
|
407
402
|
| **Project context** | You explain the stack | Deterministic detection of stack, platform and variant |
|
|
408
403
|
| **Review** | Generic | Mobile checklists: lifecycle, `BuildContext`, MASVS, manifest, ATS |
|
|
409
404
|
| **Secrets in the diff** | Sent as they are | Masked before reaching the model |
|
|
410
|
-
| **Specialists** | None |
|
|
411
|
-
| **Context cost** | Zero | ~
|
|
405
|
+
| **Specialists** | None | 22 agents and 27 mobile skills |
|
|
406
|
+
| **Context cost** | Zero | ~5,500 fixed tokens (agent and skill descriptions), no hooks |
|
|
412
407
|
| **Best for** | General tasks | Teams and developers working on mobile apps |
|
|
413
408
|
|
|
414
409
|
**In short:** Claude Code already knows how to code. reis-mobile makes it look at what matters in a mobile app.
|
|
@@ -466,13 +461,25 @@ For domain knowledge that code cannot reveal, optionally commit `.reis-mobile/pr
|
|
|
466
461
|
| `kmp-architect` | Kotlin Multiplatform | architecture, offline | Shared source-set ownership, Android/iOS callers and Swift-facing contracts |
|
|
467
462
|
| `kmp-performance-engineer` | Kotlin Multiplatform | performance | Shared Kotlin cost versus Android/iOS host traces and bridge overhead |
|
|
468
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 |
|
|
469
465
|
| `mobile-accessibility-auditor` | all | accessibility | Screen reader labels, roles and states, touch targets, text scaling, focus and announcements, with fixes per platform |
|
|
470
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 |
|
|
471
|
-
| `mobile-staff-engineer` | all | debug, architecture, performance, test, security, migration, dependency, build, offline, observability | Cross-toolchain diagnosis and
|
|
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 |
|
|
472
468
|
| `plugin-native-expert` | Flutter | on demand | MethodChannel, EventChannel, Pigeon and Kotlin/Swift bridges, threading and lifecycle |
|
|
473
469
|
| `lead-mobile` | all | on demand | Coordinates the other agents and consolidates a single action plan |
|
|
474
470
|
|
|
475
|
-
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.
|
|
476
483
|
|
|
477
484
|
### Skills
|
|
478
485
|
|
|
@@ -485,20 +492,46 @@ Every skill starts with `mobile-`. **Topic** skills cover every stack with one r
|
|
|
485
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 |
|
|
486
493
|
| `mobile-test` | Unit, UI, integration and end-to-end tests | test | Flutter (widget, integration, Patrol, mocks, coverage), Android, iOS, React Native, KMP |
|
|
487
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 |
|
|
488
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 |
|
|
489
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 |
|
|
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 |
|
|
490
499
|
| `mobile-performance` | Startup, rendering, memory, battery, app size and regression gates | performance | Flutter, Android, iOS, React Native, KMP, background execution and battery |
|
|
491
500
|
| `mobile-offline-sync` | Local store, outbox, idempotency, conflict resolution, reconnection | offline | Flutter, Android, iOS, React Native, KMP |
|
|
492
501
|
| `mobile-observability` | Crashes, errors, breadcrumbs, traces, alerts, sampling and privacy | observability | Flutter, Android, iOS, React Native, KMP |
|
|
502
|
+
| `mobile-privacy` | Consent lifecycle, SDK collection, account/data deletion and retention | privacy | Flutter, Android, iOS, React Native, KMP |
|
|
503
|
+
| `mobile-networking` | API contracts, cancellation, pagination, refresh coordination and resumable transfers | networking | Flutter, Android, iOS, React Native, KMP |
|
|
504
|
+
| `mobile-auth` | Sign-in, passkeys, recovery, provider linking and session transitions | auth | Flutter, Android, iOS, React Native, KMP |
|
|
505
|
+
| `mobile-notifications` | Push/local notifications, token bindings, permissions and cold-start taps | notifications | Flutter, Android, iOS, React Native, KMP |
|
|
506
|
+
| `mobile-billing` | In-app purchases, subscriptions, backend verification, acknowledgement and restore | billing | Flutter, Android, iOS, React Native, KMP |
|
|
507
|
+
| `mobile-migration` | Toolchain and library upgrades, incremental UI moves and on-device data migrations | migration | Flutter, Android, iOS, React Native, KMP |
|
|
508
|
+
| `mobile-analytics` | Tracking plans, typed events, funnels, analytics identity and consent-gated collection | analytics | Flutter, Android, iOS, React Native, KMP |
|
|
509
|
+
| `mobile-hardware` | Camera, Bluetooth and BLE, NFC, location, sensors, scanning and haptics | hardware | Flutter, Android, iOS, React Native, KMP |
|
|
493
510
|
| `mobile-firebase` | Firebase setup and 13 products | — | Flutter, Android, iOS, React Native, KMP; check installed SDK support |
|
|
494
|
-
| `mobile-flutter` | Flutter and Dart specifics | review, performance, accessibility, migration | UI and navigation, data, native code, performance, accessibility and i18n, Dart, setup |
|
|
495
|
-
| `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 |
|
|
496
|
-
| `mobile-ios` | Native iOS specifics | performance, release, accessibility | UI and navigation, data and networking, platform features, performance and release |
|
|
497
|
-
| `mobile-rn` | React Native and Expo specifics | performance, release, accessibility | UI and navigation, data and networking, platform features, performance and release |
|
|
498
|
-
| `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 |
|
|
499
516
|
| `mobile-detect-stack` | Deterministic stack detection with the CLI | — | — |
|
|
500
517
|
|
|
501
|
-
Skills marked — are triggered by Claude Code when the request matches their description, for example *"
|
|
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.
|
|
519
|
+
|
|
520
|
+
The seven capability intents (`privacy`, `networking`, `auth`, `notifications`, `billing`, `analytics` and `hardware`) select `mobile-staff-engineer` and the matching topic skill; `mobile-migration` joins the existing `migration` route. Use these from your mobile app directory:
|
|
521
|
+
|
|
522
|
+
```bash
|
|
523
|
+
reis-mobile route "implement account deletion"
|
|
524
|
+
reis-mobile route "implement resumable uploads"
|
|
525
|
+
reis-mobile route "implement sign-in with passkeys"
|
|
526
|
+
reis-mobile route "implement local notifications"
|
|
527
|
+
reis-mobile route "add in-app purchases"
|
|
528
|
+
reis-mobile route "create a tracking plan"
|
|
529
|
+
reis-mobile route "connect to a Bluetooth device"
|
|
530
|
+
reis-mobile route "migrate from BLoC to Riverpod"
|
|
531
|
+
reis-mobile route --intent auth "review the session lifecycle"
|
|
532
|
+
```
|
|
533
|
+
|
|
534
|
+
The CLI returns the selected agent and instruction paths; it does not implement a login, delete an account, send a notification or make a purchase. An explicit intent takes precedence over the prompt. Existing security audits, tests and release work retain their own routes, and a plain "analytics" request still goes to `mobile-observability`. When a short prompt is ambiguous, pass `--intent` or invoke the skill directly in the host.
|
|
502
535
|
|
|
503
536
|
About 85 guides come from [flutter/skills](https://github.com/flutter/skills), [dart-lang/skills](https://github.com/dart-lang/skills), [evanca/flutter-ai-rules](https://github.com/evanca/flutter-ai-rules) and [android/skills](https://github.com/android/skills), unchanged and credited in [THIRD_PARTY_NOTICES.md](THIRD_PARTY_NOTICES.md).
|
|
504
537
|
|
|
@@ -514,7 +547,7 @@ About 85 guides come from [flutter/skills](https://github.com/flutter/skills), [
|
|
|
514
547
|
|
|
515
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.
|
|
516
549
|
|
|
517
|
-
**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.
|
|
518
551
|
|
|
519
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.
|
|
520
553
|
|
|
@@ -544,7 +577,8 @@ About 85 guides come from [flutter/skills](https://github.com/flutter/skills), [
|
|
|
544
577
|
| v0.7.3 | `/reis-mobile:release` with per-target evidence, required gates and deterministic readiness verdicts (previously planned for v0.8.0) | ✅ |
|
|
545
578
|
| 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 | ✅ |
|
|
546
579
|
| 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 | ✅ |
|
|
547
|
-
| v0.10.0 |
|
|
580
|
+
| 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 | ✅ |
|
|
581
|
+
| v0.11.0 | MCP server | ⏳ |
|
|
548
582
|
| v1.0.0 | First stable version: Flutter, Android, iOS and React Native | ⏳ |
|
|
549
583
|
|
|
550
584
|
---
|
|
@@ -576,7 +610,7 @@ The plugin's skills live in the `reis-mobile:` namespace and do not conflict, bu
|
|
|
576
610
|
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.
|
|
577
611
|
|
|
578
612
|
**Does it work in Cursor?**
|
|
579
|
-
The Cursor integration has not been validated yet. The MCP server remains on the roadmap for v0.
|
|
613
|
+
The Cursor integration has not been validated yet. The MCP server remains on the roadmap for v0.11.0.
|
|
580
614
|
|
|
581
615
|
**What does reis-mobile send outside my machine?**
|
|
582
616
|
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.
|
|
@@ -612,6 +646,7 @@ Questions: [Discussions](https://github.com/wrsilva/reis-mobile/discussions). Wh
|
|
|
612
646
|
|
|
613
647
|
## Attribution
|
|
614
648
|
|
|
649
|
+
- **[greenstevester/fastlane-skill](https://github.com/greenstevester/fastlane-skill)** (MIT): five fastlane guides and Xcode Cloud documentation in [`mobile-ci`](skills/mobile-ci/SKILL.md). The source revision and license are recorded in [Third-Party Notices](THIRD_PARTY_NOTICES.md).
|
|
615
650
|
- **[flutter/skills](https://github.com/flutter/skills)** (BSD-3-Clause): 25 Flutter skills.
|
|
616
651
|
- **[dart-lang/skills](https://github.com/dart-lang/skills)** (BSD-3-Clause): 8 Dart skills.
|
|
617
652
|
- **[evanca/flutter-ai-rules](https://github.com/evanca/flutter-ai-rules)** (MIT): 28 Flutter, testing and Firebase skills.
|
package/THIRD_PARTY_NOTICES.md
CHANGED
|
@@ -1,5 +1,38 @@
|
|
|
1
1
|
# Third-Party Notices
|
|
2
2
|
|
|
3
|
+
## greenstevester/fastlane-skill
|
|
4
|
+
|
|
5
|
+
- Source: https://github.com/greenstevester/fastlane-skill
|
|
6
|
+
- Revision: `cab4eff8e678391671916228d7b6446d438da4a9`
|
|
7
|
+
- License: MIT
|
|
8
|
+
- Integrated into `mobile-ci` as references; no standalone upstream skills are registered.
|
|
9
|
+
- Adapted files under `skills/`: `setup-fastlane` → `mobile-ci/references/fastlane/setup-fastlane.md` and `mobile-ci/references/fastlane/xcode-cloud.md` (upstream `docs/xcode-cloud.md`); `match` → `mobile-ci/references/fastlane/match.md`; `beta` → `mobile-ci/references/fastlane/beta.md`; `release` → `mobile-ci/references/fastlane/release.md`; `snapshot` → `mobile-ci/references/fastlane/snapshot.md`.
|
|
10
|
+
- Adaptation: removed skill frontmatter, added attribution and relocated the Xcode Cloud link. Original guide bodies are otherwise preserved; project-specific integration guidance lives in `mobile-ci/SKILL.md`.
|
|
11
|
+
|
|
12
|
+
```text
|
|
13
|
+
MIT License
|
|
14
|
+
|
|
15
|
+
Copyright (c) 2024 greenstevester
|
|
16
|
+
|
|
17
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
18
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
19
|
+
in the Software without restriction, including without limitation the rights
|
|
20
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
21
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
22
|
+
furnished to do so, subject to the following conditions:
|
|
23
|
+
|
|
24
|
+
The above copyright notice and this permission notice shall be included in all
|
|
25
|
+
copies or substantial portions of the Software.
|
|
26
|
+
|
|
27
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
28
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
29
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
30
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
31
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
32
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
33
|
+
SOFTWARE.
|
|
34
|
+
```
|
|
35
|
+
|
|
3
36
|
reis-mobile is distributed under the MIT License (see [LICENSE](LICENSE)). The skills listed below were derived from third-party projects and remain under their original licenses. Each of these skills declares `source` and `license` in its `SKILL.md` frontmatter.
|
|
4
37
|
|
|
5
38
|
Changes made by reis-mobile: every third-party skill was moved into a reis-mobile skill (`mobile-test`, `mobile-firebase`, `mobile-code-review`, `mobile-debug`, `mobile-security`, `mobile-architecture`, `mobile-flutter`, `mobile-android`). Its instructions are unchanged apart from a leading attribution line and the removed frontmatter; skills that shipped extra files (references, scripts, examples) moved as whole folders with the instructions in `GUIDE.md`, so their relative links still work. Each section lists the upstream skill and the file that holds it now. Some copies correspond to earlier revisions of the upstream files.
|
|
@@ -320,3 +353,11 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
|
320
353
|
See the License for the specific language governing permissions and
|
|
321
354
|
limitations under the License.
|
|
322
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
|
|
|
@@ -28,6 +28,8 @@ Use the [project brief](../docs/agent-context.md) once or reuse the supplied bri
|
|
|
28
28
|
|
|
29
29
|
## Scope and decision
|
|
30
30
|
|
|
31
|
+
For pipeline implementation and fastlane automation, load [mobile-ci](../skills/mobile-ci/SKILL.md) and its relevant platform and task references.
|
|
32
|
+
|
|
31
33
|
A release audit authorizes inspection and preparation. Version bumps, tags and publishing follow the user's requested scope; do not infer an upload from a readiness question. For an explicitly requested deployment, complete the reviewable preparation and reuse existing authorization. Avoid executing a lane before inspecting whether it publishes.
|
|
32
34
|
|
|
33
35
|
Return the release identity, GO/GO WITH RISKS/NO-GO verdict where relevant, gates with evidence, exact prepared commands/artifacts and outstanding external state. Define rollout monitoring using the project's metrics and thresholds; proposed thresholds must be labeled as proposals. Never imply that halting store distribution removes a binary already installed.
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: mobile-staff-engineer
|
|
3
|
-
description: Use this agent for senior-level guidance across Flutter/Dart, Android (Kotlin) and iOS (Swift) — debugging complex build and runtime issues, architecture decisions for native apps, migrations, dependency and build problems, CI/CD and release pipelines, security and cross-platform trade-offs. Typical triggers are "the Android build broke after upgrading Gradle", planning a payment flow and choosing between native and cross-platform approaches.
|
|
3
|
+
description: Use this agent for senior-level guidance across Flutter/Dart, Android (Kotlin) and iOS (Swift) — debugging complex build and runtime issues, architecture decisions for native apps, migrations, dependency and build problems, CI/CD and release pipelines, security, privacy, API integration, authentication, notifications, in-app purchases, product analytics, device hardware and cross-platform trade-offs. Typical triggers are "the Android build broke after upgrading Gradle", planning a payment flow and choosing between native and cross-platform approaches.
|
|
4
4
|
model: inherit
|
|
5
5
|
color: blue
|
|
6
6
|
tools: ["Read", "Grep", "Glob", "Bash"]
|
|
7
|
-
intents: [debug, architecture, performance, test, security, migration, dependency, build, offline, observability]
|
|
7
|
+
intents: [debug, architecture, performance, test, security, migration, dependency, build, offline, observability, privacy, networking, auth, notifications, billing, analytics, hardware]
|
|
8
8
|
stacks: ["*"]
|
|
9
9
|
---
|
|
10
10
|
|
|
@@ -14,6 +14,20 @@ Read the [project brief](../docs/agent-context.md) once or reuse the supplied br
|
|
|
14
14
|
|
|
15
15
|
## Build a causal chain
|
|
16
16
|
|
|
17
|
+
For privacy work, load [mobile-privacy](../skills/mobile-privacy/SKILL.md). Follow its implementation and verification workflow using actual app objects; the failure record below applies when diagnosing a defect, not to every capability request.
|
|
18
|
+
|
|
19
|
+
For API integration and network lifecycle work, load [mobile-networking](../skills/mobile-networking/SKILL.md) and bind its request/cancellation contract to the actual client and repository.
|
|
20
|
+
|
|
21
|
+
For identity and session flows, load [mobile-auth](../skills/mobile-auth/SKILL.md) and trace the provider, session owner and account-scoped data boundaries.
|
|
22
|
+
|
|
23
|
+
For push or local notification flows, load [mobile-notifications](../skills/mobile-notifications/SKILL.md) and trace token ownership, app lifecycle and authorized tap navigation.
|
|
24
|
+
|
|
25
|
+
For in-app purchases and subscriptions, load [mobile-billing](../skills/mobile-billing/SKILL.md) and trace the purchase listener, backend verification and every entitlement read.
|
|
26
|
+
|
|
27
|
+
For product analytics, load [mobile-analytics](../skills/mobile-analytics/SKILL.md) and trace each event from its trigger through the app's analytics boundary to the destination.
|
|
28
|
+
|
|
29
|
+
For camera, Bluetooth, NFC, location, sensors or haptics, load [mobile-hardware](../skills/mobile-hardware/SKILL.md) and trace each capability from its availability check to the release of the resource.
|
|
30
|
+
|
|
17
31
|
1. Recover the exact command, working directory, app root, variant/scheme and first actionable error. Locate the failure phase: resolution, generation, compilation, linking, signing, packaging, startup or runtime.
|
|
18
32
|
2. Read the last relevant change and the versions actually selected by wrappers, lock files and CI. Compare local and CI toolchain evidence; a declared dependency constraint is not necessarily the resolved version.
|
|
19
33
|
3. Trace the failing symbol/configuration from the error to its source file or build input. In cross-platform apps, distinguish Dart/JavaScript callers, generated integration code and native implementation. Identify the source of generated files before proposing an edit.
|
|
@@ -22,7 +36,7 @@ Read the [project brief](../docs/agent-context.md) once or reuse the supplied br
|
|
|
22
36
|
|
|
23
37
|
## Migrations need a compatibility contract
|
|
24
38
|
|
|
25
|
-
Record the current and target toolchain/dependency versions from verified sources, minimum supported platforms, affected native modules and generated code. Split the migration into buildable steps with a check after each. Preserve the app's existing state, storage and public API contracts unless changing them is the objective.
|
|
39
|
+
Load [mobile-migration](../skills/mobile-migration/SKILL.md) for the step plan, on-device data migrations and rollout. Record the current and target toolchain/dependency versions from verified sources, minimum supported platforms, affected native modules and generated code. Split the migration into buildable steps with a check after each. Preserve the app's existing state, storage and public API contracts unless changing them is the objective.
|
|
26
40
|
|
|
27
41
|
Compare two viable options only when the choice matters. Name the actual module/type changed by each, operational cost, reversible step and condition that would invalidate the decision. Avoid broad prescriptions such as replacing the state library or upgrading every dependency to solve one failure.
|
|
28
42
|
|
|
@@ -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
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { AREAS, DEBUG_DOMINATES, INTENTS, INTENT_IDS, STACK_HINTS } from './intents.mjs';
|
|
1
|
+
import { AREAS, DEBUG_DOMINATES, INTENTS, INTENT_IDS, STACK_HINTS, WHOLE_WORDS } from './intents.mjs';
|
|
2
2
|
|
|
3
3
|
export function normalize(text) {
|
|
4
4
|
return String(text ?? '')
|
|
@@ -48,7 +48,8 @@ function matchTerms(text, groups) {
|
|
|
48
48
|
const counts = new Map();
|
|
49
49
|
|
|
50
50
|
for (const { id, word } of terms) {
|
|
51
|
-
const
|
|
51
|
+
const wordEnd = WHOLE_WORDS.has(word) ? '(?![\\p{L}\\p{N}])' : '';
|
|
52
|
+
const pattern = new RegExp(`(?<![\\p{L}\\p{N}])${escapeRegExp(word)}${wordEnd}`, 'gu');
|
|
52
53
|
for (const match of text.matchAll(pattern)) {
|
|
53
54
|
const start = match.index;
|
|
54
55
|
const end = start + word.length;
|