solana-mobile/solana-mobile-skills

solana-mobile

Scaffold, configure, and troubleshoot Solana Mobile apps for Android using the solana-mobile CLI, Expo, and React Native.

소스 보기
원본 Skill 문서

원본 저장소의 제목, 예시, 코드, 표, 링크, 이미지를 유지해 표시합니다.

Solana Mobile projects

Set up and maintain Solana Mobile apps. The solana-mobile CLI does the scaffolding, environment checks, and emulator management — prefer it over hand-rolled setup.

Run it without installing:

bash
npx solana-mobile@latest --help

pnpx solana-mobile@latest and bun x solana-mobile@latest work too. Match whichever package manager the project already uses.

Non-negotiable constraint

Mobile Wallet Adapter requires a development build. Expo Go will not work — MWA depends on native Android modules that Expo Go does not bundle. If someone reports wallet connection failing in Expo Go, that is the cause; there is no workaround, they need expo run:android.

Android is the only platform with wallet support. iOS builds run, but no MWA.

First: work out which situation you are in

SituationDo this
No project yetCreate a new project
Existing Expo app, no SolanaRead references/add-to-existing-app.md
Project exists, build or toolchain brokenCheck the environment
Project exists, needs wallet featuresUse the solana-mobile-wallet skill

Create a new project

bash
npx solana-mobile@latest create

Interactive by default. To skip the prompts, name the project and template:

bash
npx solana-mobile@latest create my-app --template expo-kit-wallet

Useful flags:

FlagEffect
-t, --template <id>Pick a template non-interactively
--pm <manager>Package manager to use
--minimalUse the minimal template
--list-templatesPrint the template catalog
--list-template-idsPrint template ids as a JSON array
--skip-installDo not install dependencies
--skip-gitDo not initialise a git repo
-d, --dry-runShow what would happen, write nothing

Choosing a template

Templates come in two families. *Pick an `expo-kit- template.** @solana/kit` is the current Solana client library, and these are the templates the CLI maintains most actively.

Reach for expo-web3js-* only when the user is deliberately continuing an existing @solana/web3.js codebase, or asks for it by name. If they ask without a reason, say kit is the better starting point before going along with it — a new app on web3.js starts life needing a migration.

expo-kit-minimal is the clearest reference for how the kit pieces fit together, and worth reading even when building on a different template.

TemplateStackUse for
expo-kit-walletKit + MWA + UniwindBest default. Wallet connect, sign, send already wired
expo-kit-minimalKitBare starting point, no UI kit
expo-kit-uniwindKit + UniwindTailwind-style styling, no wallet yet
expo-kit-privyKit + Privy + UniwindPrivy auth instead of, or alongside, MWA
expo-web3js-walletweb3.js + MWALegacy wallet app
expo-web3js-paperweb3.js + RN PaperLegacy, Material UI
expo-web3js-minimalweb3.jsLegacy bare starting point

Template ids are also accepted in full gh:solana-mobile/templates/mobile/<name> form. Re-run --list-templates rather than trusting this table if a template seems missing — the catalog ships with the CLI, not with this skill.

After scaffolding

bash
cd my-app && npm run android

That runs expo run:android, which builds and installs the development build. The first Android build is slow (Gradle cold start); later builds reuse the cache.

Check the environment

Before debugging a build failure, check the toolchain:

bash
npx solana-mobile@latest doctor

It reports on the local Android and Node toolchain with recommendations for anything missing. --json gives a stable report worth parsing when you need to branch on a specific check; --verbose adds resolved paths and diagnostics.

Run doctor first whenever a build fails for reasons that are not obviously in app code.

Manage Android emulators

bash
npx solana-mobile@latest emu list
npx solana-mobile@latest emu status
npx solana-mobile@latest emu create
npx solana-mobile@latest emu start my_phone
npx solana-mobile@latest emu stop my_phone

emu is an alias for emulator. Subcommands: create, delete, images, list, start, status, stop. System images live under emu images (install, list, delete).

Create a named emulator on a specific device profile:

bash
npx solana-mobile@latest emu create local_phone --device pixel_9

Testing wallet flows on an emulator

A fresh emulator has no wallet app installed, so MWA has nothing to connect to. Install an MWA-compatible wallet APK into the emulator first, or test on a physical Android device. Anything gated on the Seeker Genesis Token needs a real Seeker device — see the seeker-genesis-token skill.

Reference material

into an Expo app that already exists: crypto polyfill, providers, dependencies

emulator failures with known causes

Related skills

  • solana-mobile-wallet — connecting wallets, signing, sending transactions
  • seeker-genesis-token — verifying Seeker device ownership
  • seeker-domains.skr domain name resolution

For general non-mobile Solana work — Anchor or Pinocchio programs, Codama client generation, testing, security review — use the Solana Foundation's solana-dev skill instead. create installs it into .agents/skills/solana-dev/, so a scaffolded project already has it.

Links

  • CLI source: https://github.com/solana-mobile/solana-mobile-cli
  • Templates: https://github.com/solana-mobile/templates
  • Solana Mobile docs: https://docs.solanamobile.com
같은 저장소의 Skills

더 많은 Skills

모든 Skills
solana-mobile
커뮤니티

integration-privy

Add Privy authentication to a Solana Expo Android app on top of Mobile Wallet Adapter, using Sign-In-With-Solana. Use when installing @privy-io/expo, mounting PrivyProvider, logging a user in with useLoginWithSiws, linking a wallet to an existing Privy account, reading the Privy access token from a backend, or debugging a Privy plus MWA setup.

설치 수
834
GitHub Stars
6
업데이트
9월 3일
solana-mobile
커뮤니티

seeker-domains

Resolve and display .skr domain names in Solana mobile apps, in both directions between names and wallet addresses. Use when showing .skr names instead of wallet addresses in profiles, friend lists, or transaction history, resolving a .skr domain to an address, reverse-looking-up an address to a domain, or validating .skr input.

설치 수
834
GitHub Stars
6
업데이트
9월 3일
solana-mobile
커뮤니티

seeker-genesis-token

Verify Seeker device ownership by checking for the Seeker Genesis Token (SGT) with Sign-in-with-Solana and server-side token verification. Use when gating content or rewards to Seeker owners, verifying a user holds an SGT, adding anti-Sybil checks to a Solana mobile app, or implementing one-claim-per-device logic.

설치 수
834
GitHub Stars
6
업데이트
9월 3일
solana-mobile
커뮤니티

solana-mobile-wallet

Connect Solana wallets and sign or send transactions in React Native Expo apps using Mobile Wallet Adapter and Wallet UI. Use when adding a connect wallet button, showing a connected address, disconnecting, signing messages, sign-in with Solana, transferring SOL, or sending any transaction from a Solana mobile app.

설치 수
834
GitHub Stars
6
업데이트
9월 3일