# onebox > Free agent skills (SKILL.md, for Claude Code, Codex, Cursor, Gemini CLI and others) and plain guides for getting an Expo / React Native app onto the App Store. If the app needs a backend, it runs on one cheap server (a mini PC at home or a small VPS). MIT licensed. iOS only; Android and the Play Store are not covered. Install in Claude Code: `/plugin marketplace add ggi3201/onebox`, then `/plugin install @onebox`. Other tools: `npx skills add ggi3201/onebox`. Source: https://github.com/ggi3201/onebox Start here: install the `start` plugin, then run `/start:plan` in the app's folder (in other agents, ask for the plan skill). It detects what the app already has, asks what the user wants (server or not, sign-in, paid or free, landing page, AI), and writes PLAN.md with only the guides, skills and plugins that app needs. No app yet: `/start:new-app` makes the repo first. Example of the PLAN.md it writes: https://onebox.lokkesveen.com/example-plan/ ## How it fits together - Your Mac runs the coding agent and every skill. It builds the app locally and submits it to Apple (App Store Connect, TestFlight, App Review). - Phones get the app from TestFlight or the App Store and call your API over HTTPS at api.. - Cloudflare holds DNS and a tunnel, the only way into the box. No open ports. - The box (a mini PC at home or a small VPS) runs Docker: Traefik, the API, Postgres, a staging API and database, nightly backups, and the landing page. - The landing page holds pricing, privacy policy, support and terms. App Store Connect and the paywall link to it. - Your Mac sets up the box over SSH; a git push deploys. RevenueCat (optional) sends webhooks to the API. - The box needs about 15 minutes of care a month (updates, the box check, backups), which an agent can do. It is one point of failure: bigger apps, sensitive data or a team need a larger setup. ## Guides - [Start here: from an idea to the App Store, the cheap way](https://onebox.lokkesveen.com/guides/start-here.md) - [Apple Developer Program](https://onebox.lokkesveen.com/guides/apple-developer.md) - [Xcode](https://onebox.lokkesveen.com/guides/xcode.md) - [Command-line tools: your Mac and your box](https://onebox.lokkesveen.com/guides/tools.md) - [The Expo app](https://onebox.lokkesveen.com/guides/expo-app.md) - [A test loop your coding agent can run](https://onebox.lokkesveen.com/guides/agent-test-loop.md) - [Secrets: for your app and for your agent](https://onebox.lokkesveen.com/guides/secrets.md) - [A domain](https://onebox.lokkesveen.com/guides/domain.md) - [Cloudflare](https://onebox.lokkesveen.com/guides/cloudflare.md) - [A small VPS](https://onebox.lokkesveen.com/guides/vps.md) - [Remote access: fix things from your phone](https://onebox.lokkesveen.com/guides/remote-access.md) - [Uptime alerts: know first when the box is down](https://onebox.lokkesveen.com/guides/uptime-alerts.md) - [The backend: API and Postgres on the box](https://onebox.lokkesveen.com/guides/backend.md) - [A hosted backend: Supabase, Convex or Firebase](https://onebox.lokkesveen.com/guides/hosted-backend.md) - [Sign in with Apple](https://onebox.lokkesveen.com/guides/sign-in-with-apple.md) - [RevenueCat](https://onebox.lokkesveen.com/guides/revenuecat.md) - [Push notifications](https://onebox.lokkesveen.com/guides/push-notifications.md) - [App Store Connect setup (the manual parts)](https://onebox.lokkesveen.com/guides/app-store-connect-setup.md) - [App Store Connect API key](https://onebox.lokkesveen.com/guides/app-store-connect-api-key.md) - [Expo and EAS](https://onebox.lokkesveen.com/guides/expo-eas.md) - [Privacy policy and support page, without a landing page](https://onebox.lokkesveen.com/guides/privacy-and-support-pages.md) - [kie.ai](https://onebox.lokkesveen.com/guides/kie-ai.md) - [Media providers (image and video generation)](https://onebox.lokkesveen.com/guides/media-providers.md) - [An LLM API key](https://onebox.lokkesveen.com/guides/llm-api-key.md) - [Langfuse (optional)](https://onebox.lokkesveen.com/guides/langfuse.md) - [Crash reports and error tracking](https://onebox.lokkesveen.com/guides/crash-reports.md) - [When you are stuck](https://onebox.lokkesveen.com/guides/when-you-are-stuck.md) - [Words you will meet](https://onebox.lokkesveen.com/guides/glossary.md) ## Skills ### ship-ios (runs on: your mac) - [ship-ios:app-store-ready](https://github.com/ggi3201/onebox/blob/main/plugins/ship-ios/skills/app-store-ready/SKILL.md): Tells you why Apple will reject your app, before Apple does. - [ship-ios:expo-local-build](https://github.com/ggi3201/onebox/blob/main/plugins/ship-ios/skills/expo-local-build/SKILL.md): Builds on your own Mac and sends it to TestFlight. No build credits. - [ship-ios:eas-update](https://github.com/ggi3201/onebox/blob/main/plugins/ship-ios/skills/eas-update/SKILL.md): Sends a JavaScript fix to phones without a new build or App Review. - [ship-ios:appstore-connect](https://github.com/ggi3201/onebox/blob/main/plugins/ship-ios/skills/appstore-connect/SKILL.md): TestFlight builds, testers, groups and subscriptions from the terminal. - [ship-ios:ios-preview-build](https://github.com/ggi3201/onebox/blob/main/plugins/ship-ios/skills/ios-preview-build/SKILL.md): A build for your real phone that talks to staging, not production. - [ship-ios:app-store-screenshots](https://github.com/ggi3201/onebox/blob/main/plugins/ship-ios/skills/app-store-screenshots/SKILL.md): Store images from your real screens, in your app’s own fonts. - [ship-ios:store-listing](https://github.com/ggi3201/onebox/blob/main/plugins/ship-ios/skills/store-listing/SKILL.md): Name, subtitle, keywords and description that search finds, within Apple’s limits. - [ship-ios:draw-app-icon](https://github.com/ggi3201/onebox/blob/main/plugins/ship-ios/skills/draw-app-icon/SKILL.md): A vector icon that still reads at home-screen size. - [ship-ios:draw-icon-set](https://github.com/ggi3201/onebox/blob/main/plugins/ship-ios/skills/draw-icon-set/SKILL.md): A set of outline icons that look like one family. ### box (runs on: your server) - [box:box-setup](https://github.com/ggi3201/onebox/blob/main/plugins/box/skills/box-setup/SKILL.md): Takes a fresh VPS to a safe, working baseline in one go. - [box:expose-service](https://github.com/ggi3201/onebox/blob/main/plugins/box/skills/expose-service/SKILL.md): Puts a service on the internet at your domain, with no open ports. - [box:new-landing-page](https://github.com/ggi3201/onebox/blob/main/plugins/box/skills/new-landing-page/SKILL.md): A self-hosted landing page, or your Next.js site moved off Vercel. - [box:staging-env](https://github.com/ggi3201/onebox/blob/main/plugins/box/skills/staging-env/SKILL.md): A second backend for test branches, with its own database. ### content (runs on: your mac) - [content:image](https://github.com/ggi3201/onebox/blob/main/plugins/content/skills/image/SKILL.md): Generate and edit images with kie.ai, fal or Replicate. Look first, pay little, reroll. - [content:video](https://github.com/ggi3201/onebox/blob/main/plugins/content/skills/video/SKILL.md): Animate an approved still. Chain shots so the cuts disappear. ### dev (runs on: your mac) - [dev:test-loop](https://github.com/ggi3201/onebox/blob/main/plugins/dev/skills/test-loop/SKILL.md): Lint, types, tests, then the simulator. Proof before “done”. - [dev:trim-tests](https://github.com/ggi3201/onebox/blob/main/plugins/dev/skills/trim-tests/SKILL.md): Cuts a fifth of your tests and keeps what catches bugs. ### app-features (runs on: your app) - [app-features:agent-harness](https://github.com/ggi3201/onebox/blob/main/plugins/app-features/skills/agent-harness/SKILL.md): An agent in your API that calls your tools, streams, and proposes instead of acting. - [app-features:chat-feature](https://github.com/ggi3201/onebox/blob/main/plugins/app-features/skills/chat-feature/SKILL.md): A chat screen that streams word by word, with Stop, photos and tap-to-apply cards. - [app-features:ai-usage-limits](https://github.com/ggi3201/onebox/blob/main/plugins/app-features/skills/ai-usage-limits/SKILL.md): A monthly budget per user, so one account cannot run up your model bill. - [app-features:ai-consent](https://github.com/ggi3201/onebox/blob/main/plugins/app-features/skills/ai-consent/SKILL.md): The AI consent step App Review asks for, enforced on the server too. - [app-features:durable-jobs](https://github.com/ggi3201/onebox/blob/main/plugins/app-features/skills/durable-jobs/SKILL.md): Slow work as a background job that survives restarts, with cancel and refunds. - [app-features:share-import](https://github.com/ggi3201/onebox/blob/main/plugins/app-features/skills/share-import/SKILL.md): Share a page into your app and get a record back, without the model making things up. ## Skills by others that work well next to these - [ponytail](https://github.com/DietrichGebert/ponytail) by Dietrich Gebert: Stops the agent from overbuilding. The simplest code that works, with safety kept. - [impeccable](https://github.com/pbakaus/impeccable) by Paul Bakaus: Design vocabulary, audits and polish for a landing page or app UI. - [taste-skill](https://github.com/Leonxlnx/taste-skill) by Leonxlnx: Pushes UI away from the generic AI look. Includes a redesign skill for an existing site. - [emil-design-eng](https://github.com/emilkowalski/skills) by Emil Kowalski: Small details that make an interface feel good: motion, timing, polish. - [RevenueCat ai-toolkit](https://github.com/RevenueCat/ai-toolkit) by RevenueCat: RevenueCat's own plugin for the SDK, offerings and the paywall. - [frontend-design](https://github.com/anthropics/claude-plugins-official/tree/main/plugins/frontend-design) by Anthropic: The official plugin for distinctive frontends. /plugin install frontend-design@claude-plugins-official ## Optional - [All guides in one file](https://onebox.lokkesveen.com/llms-full.txt) - [Config contract](https://github.com/ggi3201/onebox/blob/main/CONFIG.md)