plugins/smedjen/skills/expo-simulators/SKILL.md
iOS Simulator and Android Emulator management — setup, screenshots, recording, and debugging tools.
npx skillsauth add hjemmesidekongen/ai expo-simulatorsInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Beyond standard CLI commands — CI integration, platform gotchas, profiling, and device limitations.
GitHub Actions + iOS: macos-14+ runners (Apple Silicon), simulators pre-installed. Boot with xcrun simctl boot in setup step. Headless mode works without Simulator.app.
GitHub Actions + Android: Use reactivecircus/android-emulator-runner. Enable KVM (/dev/kvm), API 31+ google_apis target, emulator-options: -no-window -no-audio -no-boot-anim. Cache AVD snapshots with actions/cache.
Parallel testing: iOS and Android in separate matrix jobs — iOS on macOS, Android on Ubuntu (KVM). Saves 5-10 min per run.
M-series Macs require ARM64 images (google_apis;arm64-v8a). x86_64 images launch but crash or run at 10% speed. Check: sdkmanager --list | grep arm64-v8a. Native ARM emulation — no translation layer.
iOS Instruments: Time Profiler, Allocations, Core Animation (frame rate). Attach to simulator process — no signing needed.
Android Profiler: CPU/Memory/Network/Energy tabs in Android Studio. For RN: --profile-hermes, open .cpuprofile in Chrome DevTools.
Expo: npx expo start --dev-client + shake > Performance Monitor shows JS and UI thread FPS separately.
Not available: Real push notifications (iOS supports .apns drag-and-drop simulation only), camera, NFC, Bluetooth, barometric sensor, accurate GPS (use simulated locations), real perf characteristics.
Behaves differently: Biometrics work via Simulator Features menu / adb -e emu finger touch 1. Deep links via xcrun simctl openurl / adb shell am start -d.
EAS local build: eas build --local --platform ios --profile development — simulator-compatible, requires Xcode CLI tools.
Config plugins: Changes only apply after npx expo prebuild. Native code changes require rebuild — hot reload won't reflect them.
Port conflicts: Two dev clients on same simulator need different ports. Use --port on second instance.
See references/process.md for screen recording, network simulation, multi-device testing, and reset procedures.
development
Creates a brand from scratch through market research and interactive sparring. Runs competitive research via Perplexity, then guides the user through positioning, audience, voice, values, and content pillars. Produces the full brand guideline set at .ai/brand/{name}/. Use when building a new brand, defining brand strategy for a product, or when /våbenskjold:create is invoked.
testing
Loads brand guidelines from .ai/brand/{name}/ and makes them available to the current context. Progressive disclosure: L1 confirms brand exists, L2 loads summary, L3 loads specific files on demand. Use when a downstream skill or user needs brand context, or when /våbenskjold:apply is invoked.
documentation
Guided reinvention of an existing brand guideline. Loads current brand from .ai/brand/{name}/, identifies what to keep vs change, and walks the user through targeted evolution. Preserves brand equity while updating positioning, voice, or values. Use when refreshing a brand or when /våbenskjold:evolve is invoked.
development
Codifies an existing brand from materials, samples, and references. Analyzes provided content to extract voice patterns, values, and positioning. Produces the same guideline format as brand-strategy. Use when a brand already exists but isn't documented, or when /våbenskjold:audit is invoked.