/ Directory / Playground / skills
● Community zaferayan ⚡ Instant

skills

by zaferayan · zaferayan/skills

Expo + React Native skill for Claude Code — scaffolds screens, wires navigation, and respects the Expo way instead of reinventing it.

An Expo-flavored skill for Claude Code. Teaches Claude to build mobile apps the Expo way: expo-router for navigation, proper EAS config, Expo SDK modules over random npm packages. Avoids the common trap of LLMs suggesting outdated RN-CLI patterns.

Why use it

Key features

Live Demo

What it looks like in practice

skills-skill-7.replay ▶ ready
0/0

Install

Pick your client

~/Library/Application Support/Claude/claude_desktop_config.json  · Windows: %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "skills-skill-7": {
      "command": "git",
      "args": [
        "clone",
        "https://github.com/zaferayan/skills",
        "~/.claude/skills/skills"
      ],
      "_inferred": true
    }
  }
}

Open Claude Desktop → Settings → Developer → Edit Config. Restart after saving.

~/.cursor/mcp.json · .cursor/mcp.json
{
  "mcpServers": {
    "skills-skill-7": {
      "command": "git",
      "args": [
        "clone",
        "https://github.com/zaferayan/skills",
        "~/.claude/skills/skills"
      ],
      "_inferred": true
    }
  }
}

Cursor uses the same mcpServers schema as Claude Desktop. Project config wins over global.

VS Code → Cline → MCP Servers → Edit
{
  "mcpServers": {
    "skills-skill-7": {
      "command": "git",
      "args": [
        "clone",
        "https://github.com/zaferayan/skills",
        "~/.claude/skills/skills"
      ],
      "_inferred": true
    }
  }
}

Click the MCP Servers icon in the Cline sidebar, then "Edit Configuration".

~/.codeium/windsurf/mcp_config.json
{
  "mcpServers": {
    "skills-skill-7": {
      "command": "git",
      "args": [
        "clone",
        "https://github.com/zaferayan/skills",
        "~/.claude/skills/skills"
      ],
      "_inferred": true
    }
  }
}

Same shape as Claude Desktop. Restart Windsurf to pick up changes.

~/.continue/config.json
{
  "mcpServers": [
    {
      "name": "skills-skill-7",
      "command": "git",
      "args": [
        "clone",
        "https://github.com/zaferayan/skills",
        "~/.claude/skills/skills"
      ]
    }
  ]
}

Continue uses an array of server objects rather than a map.

~/.config/zed/settings.json
{
  "context_servers": {
    "skills-skill-7": {
      "command": {
        "path": "git",
        "args": [
          "clone",
          "https://github.com/zaferayan/skills",
          "~/.claude/skills/skills"
        ]
      }
    }
  }
}

Add to context_servers. Zed hot-reloads on save.

claude mcp add skills-skill-7 -- git clone https://github.com/zaferayan/skills ~/.claude/skills/skills

One-liner. Verify with claude mcp list. Remove with claude mcp remove.

Use Cases

Real-world ways to use skills

Spin up a new Expo app with tabs and auth in one session

👤 Devs starting a new mobile app who want the boring parts done ⏱ ~45 min beginner

When to use: Day zero of a new project — you want tabs, stack, and a sign-in flow without reading three blog posts.

Prerequisites
  • Node 20+, Xcode or Android Studio — Standard Expo requirements
  • Skill installed — git clone https://github.com/zaferayan/skills ~/.claude/skills/skills
Flow
  1. Create the app
    Use the Expo skill. Start a new app 'TaskFlow' with expo-router, TypeScript, and the tabs template. Include a login screen with email/password.✓ Copied
    → npx create-expo-app run, then file structure with app/(tabs)/ and app/(auth)/
  2. Add state
    Wire up Zustand for the auth store and persist to SecureStore.✓ Copied
    → stores/auth.ts with zustand + persist middleware using expo-secure-store
  3. Test on device
    Start the dev server and give me the QR code to scan.✓ Copied
    → npx expo start output

Outcome: A running app on your phone with tabs, auth, and persistence in under an hour.

Pitfalls
  • Claude suggests react-native-cli patterns — Explicitly say 'Expo SDK, expo-router only' in prompts
Combine with: filesystem

Configure EAS Build for iOS and Android

👤 Teams ready to ship TestFlight / Play internal ⏱ ~30 min intermediate

When to use: First time submitting to TestFlight/Play.

Flow
  1. Generate eas.json
    Use the Expo skill. Generate eas.json with preview (internal) and production profiles, correct bundle identifier patterns, and env var injection.✓ Copied
    → Valid eas.json with both profiles
  2. Wire secrets
    Add my Sentry DSN and API base URL as EAS secrets for preview and production separately.✓ Copied
    → eas secret:create commands listed
  3. Trigger the build
    Now trigger a preview build for iOS.✓ Copied
    → eas build --profile preview --platform ios command

Outcome: EAS builds running, secrets managed.

Pitfalls
  • Committing app.json with secrets inline — Secrets go in EAS env, not app.json; let Claude use expo-constants to read them

Integrate a native module using Expo config plugins

👤 Devs adding functionality that requires native code (camera, biometrics, push) ⏱ ~20 min intermediate

When to use: You need functionality beyond JS, but don't want to eject.

Flow
  1. Identify the right package
    Use the Expo skill. I need biometric auth. What's the right Expo SDK module and how do I configure it?✓ Copied
    → expo-local-authentication named with config plugin entries
  2. Wire config plugin
    Add the config plugin entries and required iOS usage strings.✓ Copied
    → app.json diff with plugins array and NSFaceIDUsageDescription

Outcome: Native module integrated via managed workflow.

Pitfalls
  • Adding raw native code and breaking managed workflow — Prefer Expo SDK modules and config plugins; eject only if truly needed

Combinations

Pair with other MCPs for X10 leverage

skills-skill-7 + filesystem

Bulk-apply Expo idioms across an existing RN project

Migrate my RN-CLI app to Expo managed workflow; point at the source tree.✓ Copied
skills-skill-7 + git

Commit each step separately so EAS setup changes are auditable

Commit the EAS config changes as a distinct commit before adding secrets.✓ Copied

Tools

What this MCP exposes

ToolInputsWhen to callCost
expo_scaffold app name, template, features Starting a new app 0
eas_config profiles needed Setting up builds 0
config_plugin_wire native module name Adding native features 0

Cost & Limits

What this costs to run

API quota
None built-in
Tokens per call
Moderate
Monetary
Expo is free; EAS Build has a free tier with paid scaling
Tip
Use EAS local builds during dev; cloud builds only for preview/prod.

Security

Permissions, secrets, blast radius

Credential storage: No direct creds; EAS secrets are managed by Expo
Data egress: None from skill itself

Troubleshooting

Common errors and fixes

Metro can't find module after install

Run npx expo install rather than npm install so SDK-compatible versions are picked

Verify: npx expo-doctor
Build fails with 'unrecognized bundle identifier'

Bundle ID mismatch between app.json and Apple Developer portal; align them

Native module not found at runtime

Config plugin didn't run; rebuild with eas build or npx expo prebuild --clean

Alternatives

skills vs others

AlternativeWhen to use it insteadTradeoff
React Native CLIYou need maximum native control and don't mind managing Xcode/GradleMuch more setup burden
FlutterCross-platform with DartDifferent language, different ecosystem

More

Resources

📖 Read the official README on GitHub

🐙 Browse open issues

🔍 Browse all 400+ MCP servers and Skills