From react-native-brownfield-migration
Assesses whether an existing mobile product should migrate to React Native by auditing repositories, choosing brownfield/greenfield paths, and preparing ROI decisions.
How this skill is triggered — by the user, by Claude, or both
Slash command
/react-native-brownfield-migration:assess-react-native-migrationThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Produce a read-only migration decision. Diagnose the product and delivery system; do not execute the migration.
Produce a read-only migration decision. Diagnose the product and delivery system; do not execute the migration.
Run the assessment from a workspace that exposes as many production client codebases as possible. The current checkout is not evidence that it contains the whole product.
Before assessing readiness:
When iOS and Android are both supported, inspect both native codebases before recommending a path. If a codebase remains unavailable, mark its evidence unknown, state that the assessment covers only the accessible platforms, and lower confidence accordingly. Do not infer that a platform is unsupported merely because its project is absent from the current repository.
Scope gate: every supported production client is listed, and each codebase is accessible, explicitly unavailable, or confirmed not to exist.
When the scope gate has not passed, the first response must be exactly:
**Question:** Where can I access the production codebase for each client platform this product supports, including iOS and Android if both exist?
**Why it matters:** A migration path based on only one platform can miss native dependencies, product behavior, and delivery constraints that change the decision.
After the scope gate passes, grill rather than survey when repository evidence is unavailable.
If the measurable migration driver is unknown, the first response must be exactly:
**Question:** What measurable delivery or business problem should a React Native migration solve?
**Why it matters:** This determines whether migration is relevant and which outcomes the assessment must test.
If the driver is already known, ask only the next highest-impact unknown using the same two-line shape. End the turn immediately after the question and reason. Do not add a preamble, questionnaire, recommendation, or implementation guidance.
observed, measured, reported, assumed, or unknown.Use repository-backed assessment when source code or delivery artifacts are available:
Use interview assessment when the repository is unavailable or material evidence remains missing:
Before the evidence gate passes, every response must contain only:
**Question:** [one question]
**Why it matters:** [one sentence]
Do not include a questionnaire, path recommendation, checkpoint, or implementation guidance during these turns. If the user pauses the interview, return the current evidence state and the single highest-impact unknown without pretending the assessment is complete.
Interview turn gate: one answer has been requested, its decision impact is explicit, and no second question appears.
State the decision, deadline, current alternative, and measurable driver. A framework preference is not a driver.
Inspect these dimensions:
| Dimension | Minimum evidence |
|---|---|
| Product | Supported platforms, app variants, shared versus platform-specific roadmap, critical flows, accessibility, analytics, and edge cases |
| Native surface | SDKs, modules, permissions, background work, app extensions, payments, hardware APIs, custom rendering, and viable React Native paths |
| Continuity | Auth and sessions, secure and persisted storage, push tokens, deep links, subscriptions, installed-user update, legal, security, and offline constraints |
| Verification | Reproducible builds, test accounts, manual and automated QA, device control, native-reference evidence, performance baselines, and independent review |
| Release | Current cadence and recovery, internal distribution, flags, experiments, store rollout, and desired binary plus optional OTA lanes |
| Ownership | Decision authority and owners for artifacts, parity, native boundaries, shared foundations, verification, and releases |
| Agent governance | Approved model and source boundary, protected secrets and test data, least-privilege access, evidence retention, audit trail, and human architecture and release approval |
| Delivery baseline | Duplicate implementation and review, waiting and handoffs, parity gap, two-platform verification, release metrics, defects, rework, and maintenance cost |
For an OTA-dependent plan, require an owner plus runtime compatibility, rollout, observability, rollback or republish, and audit policy. OTA availability alone is not a migration benefit.
Use a small migration core that combines existing product and native knowledge with React Native migration expertise. Ask only for missing facts that could change the decision; expose the rest as assumptions.
Gate: every dimension has evidence or an explicit unknown, and every path-blocking unknown is named.
Choose one outcome and state why the alternatives lose.
| Outcome | Recommend when |
|---|---|
| Path A: brownfield | Release or installed-user continuity dominates, native coupling is deep, flows can move independently, or whole-app cutover risk is unacceptable. Include the cost of host boundaries and dual architecture. |
| Path B: greenfield | Behavior is recoverable, native dependencies have credible replacements, continuity can be proven, verification is strong, and legacy scope can be controlled until replacement. |
| Path C: greenfield-first checkpoint with brownfield fallback | Greenfield offers a simpler target but material uncertainty remains, and completed React Native work can be proven inside the native hosts before scaling. |
| Defer | The business case is plausible, but evidence, verification, ownership, budget, or release readiness is missing. Name the smallest readiness work and reopening condition. |
| Do not migrate | The native system meets the desired outcomes, duplicated mobile delivery is not material, the roadmap is asymmetric, platform-specific work dominates, or risk-adjusted return is not credible. |
Treat Path C as Callstack's emerging post-2025 operating model, not an industry benchmark. Agent access makes behavioral porting more viable; only a measured checkpoint on this product establishes speed and quality.
After Path A is accepted, hand implementation planning to react-native-brownfield-migration. Do not repeat its Expo, XCFramework, AAR, or host-integration guidance.
Gate: one outcome is supported by decisive evidence, rejected alternatives have reasons, and confidence reflects evidence quality.
Use a checkpoint for Path C and whenever one uncertainty could invalidate the recommended path. Set a fixed calendar and effort budget supplied by the organization. Select two or three vertical flows:
Tie each flow to native source references, runtime evidence, owners, and parity scenarios. Do not select only easy screens.
Define measurable acceptance criteria against the existing product:
Run two passes on at least one flow:
Before scaling, assign owners for MIGRATION.md, SCREENS.tsv, STATE_AND_STORAGE.tsv, DEPENDENCIES.tsv, EVENTS.tsv, and PARITY_CHECKS.md. During assessment, identify missing artifacts rather than creating full inventories unless asked.
End with one decision: continue greenfield, continue Path C, move completed work into Path A, defer, or stop. Do not extend the checkpoint merely because its result is inconvenient.
Gate: flows, budget, criteria, evidence, owners, and terminal decisions are explicit.
Map one representative change from ready-for-implementation to verified availability on both platforms. Capture two clocks:
Count potential return from removed duplicate implementation and business-logic review, lower parity coordination, engineer mobility, and measured release or recovery improvements. Keep iOS and Android device verification in the model. Keep web convergence outside the base case unless separately funded and assessed.
Count full investment: checkpoint, dual maintenance, native modules, training, idiomatic second pass, testing and device automation, observability, release infrastructure, platform ownership, cutover, and native-surface retirement.
Do not invent payback inputs. Use ranges when supplied data is uncertain. Revise, defer, or stop when verification and boundary work consume expected savings, native surfaces keep growing, dual maintenance has no retirement bound, agents add rework without verified throughput, parity improves without delivery improvement, or released capacity has no planned use.
Gate: marginal benefits and full investment can be compared without treating two-platform verification as removed work.
Use this contract only after the evidence gate passes or when the user ends the interview.
Return a concise report in this order:
Keep the conclusion diagnostic. If execution comes up, state only that orchestration, task contracts, prompts, retry rules, and private agents are engagement-specific. Never expose or invent private implementation material.
npx claudepluginhub callstackincubator/agent-skills --plugin react-native-brownfield-migrationGuides incremental brownfield migration from native iOS/Android to React Native or Expo using @callstack/react-native-brownfield. Covers setup, artifact packaging (XCFramework/AAR), and phased host integration.
Guides incremental migration of native iOS/Android apps to React Native or Expo using @callstack/react-native-brownfield, covering setup, XCFramework/AAR packaging, and host integration.
Analyzes mobile app stacks for React Native, Flutter, Swift iOS, and Kotlin Android, covering navigation, state management, native modules/bridges, builds, distribution, testing, and CI/CD. Activates on pubspec.yaml, Package.swift, build.gradle.kts, or react-native deps.