plugins/lisa-expo-cursor/skills/ops-deploy/SKILL.md
Deploy Expo frontend (EAS Update/Build) or serverless backend (Serverless Framework) to dev, staging, or production environments.
npx skillsauth add codyswanngt/lisa ops-deployInstall 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.
Deploy the application to remote environments.
Argument: $ARGUMENTS — environment (dev, staging, production) and optional target (frontend, backend, both; default: both)
.)${BACKEND_DIR:-../backend-v2} — set BACKEND_DIR in .claude/settings.local.json if your backend is elsewhereCRITICAL: Production deployments require explicit human confirmation before proceeding. Always ask for confirmation when $ARGUMENTS contains production.
package.json to discover deploy:*, aws:signin:* scriptspackage.json to discover available scripts.env.{environment} files to find GraphQL URLs for post-deploy verificationThe standard deployment path is via CI/CD — pushing to environment branches triggers auto-deploy. Manual deployment instructions below are for when CI/CD is not suitable.
Use for JS-only changes (no native module changes).
Verify EAS CLI:
eas whoami
If not authenticated: eas login
Copy environment file:
cp .env.{environment} .env
Deploy OTA update:
STAGE={env} NODE_OPTIONS="--max-old-space-size=8192" eas update --auto --channel={env} --message="Manual update"
Verify deployment:
eas update:list --branch {env} --limit 3
app.config.ts or native modules change)eas build --platform all --non-interactive --no-wait --profile={profile}
Check build status:
eas build:list --limit 5
AWS signin (discover script name from backend package.json):
cd "${BACKEND_DIR:-../backend-v2}"
bun run aws:signin:{env}
Deploy all functions:
cd "${BACKEND_DIR:-../backend-v2}"
bun run deploy:{env}
Verify (use the GraphQL URL from .env.{environment}):
curl -sf {graphql-url} -X POST \
-H "Content-Type: application/json" \
-d '{"query":"{ __typename }"}' \
-w "\nHTTP %{http_code} in %{time_total}s\n"
Discover available function names from backend package.json deploy:function:* scripts:
cd "${BACKEND_DIR:-../backend-v2}"
FUNCTION_NAME={fn} bun run deploy:function:{env}
After any deployment:
ops-verify-health skill)ops-check-logs skill)ops-monitor-errors skill)ops-browser-uat skill)Report deployment result as a table:
| Target | Environment | Method | Status | Verification | |--------|-------------|--------|--------|-------------| | Frontend | dev | EAS Update | SUCCESS/FAIL | URL responds | | Backend | dev | Serverless | SUCCESS/FAIL | GraphQL responds |
development
Use Expo DOM components to run web code in a webview on native and as-is on web. Migrate web code to native incrementally.
development
Guidelines for upgrading Expo SDK versions and fixing dependency issues
development
Use when implementing or debugging ANY network request, API call, or data fetching. Covers fetch API, React Query, SWR, error handling, caching, offline support, and Expo Router data loaders (`useLoaderData`).
tools
`@expo/ui/swift-ui` package lets you use SwiftUI Views and modifiers in your app.