From jutsu-expo
Use when building and deploying Expo apps with EAS Build. Covers build configuration, development builds, production builds, and app store submission.
How this skill is triggered — by the user, by Claude, or both
Slash command
/jutsu-expo:expo-buildThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
Use this skill when building and deploying Expo applications using EAS (Expo Application Services) Build.
Use this skill when building and deploying Expo applications using EAS (Expo Application Services) Build.
// eas.json
{
"cli": {
"version": ">= 5.9.0"
},
"build": {
"development": {
"developmentClient": true,
"distribution": "internal",
"ios": {
"simulator": true
}
},
"preview": {
"distribution": "internal"
},
"production": {
"autoIncrement": true
}
},
"submit": {
"production": {}
}
}
# Development build
eas build --profile development --platform ios
eas build --profile development --platform android
# Preview build
eas build --profile preview --platform all
# Production build
eas build --profile production --platform all
# Local build
eas build --profile production --platform ios --local
{
"build": {
"development": {
"developmentClient": true,
"distribution": "internal",
"env": {
"NODE_ENV": "development"
}
}
}
}
// eas.json
{
"build": {
"production": {
"env": {
"APP_ENV": "production",
"API_URL": "https://api.myapp.com"
}
},
"staging": {
"env": {
"APP_ENV": "staging",
"API_URL": "https://staging-api.myapp.com"
}
}
}
}
# Set secrets
eas secret:create --scope project --name API_KEY --value your_api_key
eas secret:create --scope project --name GOOGLE_SERVICES_JSON --value "$(cat google-services.json)" --type file
# List secrets
eas secret:list
# Use in eas.json
{
"build": {
"production": {
"env": {
"API_KEY": "$(EAS_SECRET_API_KEY)"
}
}
}
}
// eas.json
{
"build": {
"production": {
"autoIncrement": true,
"ios": {
"buildNumber": "1"
},
"android": {
"versionCode": 1
}
}
}
}
{
"build": {
"production": {
"prebuild": "npm run generate-assets",
"postbuild": "npm run cleanup"
}
}
}
// eas.json
{
"build": {
"development": {
"developmentClient": true,
"channel": "development",
"distribution": "internal"
},
"staging": {
"channel": "staging",
"distribution": "internal",
"ios": {
"bundleIdentifier": "com.myapp.staging"
},
"android": {
"package": "com.myapp.staging"
}
},
"production": {
"channel": "production",
"autoIncrement": true
}
}
}
{
"build": {
"production": {
"ios": {
"buildConfiguration": "Release"
},
"android": {
"gradleCommand": ":app:bundleRelease"
}
}
}
}
# iOS
eas submit --platform ios
# Android
eas submit --platform android
# Configure submission
# eas.json
{
"submit": {
"production": {
"ios": {
"appleId": "[email protected]",
"ascAppId": "1234567890",
"appleTeamId": "AB12CD34EF"
},
"android": {
"serviceAccountKeyPath": "./service-account.json",
"track": "production"
}
}
}
}
# View build status
eas build:list
# View specific build
eas build:view [build-id]
# Cancel build
eas build:cancel [build-id]
// Bad - Secrets in eas.json
{
"build": {
"production": {
"env": {
"API_KEY": "sk_live_1234567890"
}
}
}
}
// Good - Use EAS Secrets
eas secret:create --scope project --name API_KEY --value sk_live_1234567890
// Bad - Manual version management
{
"build": {
"production": {
"autoIncrement": false
}
}
}
// Good - Auto increment
{
"build": {
"production": {
"autoIncrement": true
}
}
}
npx claudepluginhub thedotmack/han --plugin jutsu-expoGuides completion of development work by verifying tests, detecting environment, and presenting structured options for merge, PR, or cleanup.
Enforces test-driven development: write failing test first, then minimal code to pass. Use when implementing features or bugfixes.
Guides creation and editing of skills using test-driven development with pressure scenarios and subagents to verify agent compliance.