AI Guides › Step-by-step guides
By Nigel Guy · 7 min read
Most first builds fail in the first prompt. You type "build me an app that does X", Claude produces a sprawl of screens, accounts and settings, and you spend the remaining time untangling features you never needed. A timer fixes this, because it forces you to choose one screen before you start.
The rule: spend fifteen minutes on exactly one screen that does exactly one thing, plan before Claude edits anything, and stop at the clock whether or not it looks finished.
This guide is a method, not a report of one lucky run. Fifteen minutes is a budget to set, not a result to expect: install time and phone setup are not counted inside it.
You need four things in place before the clock starts.
curl -fsSL https://claude.ai/install.sh | bash. On Windows PowerShell run irm https://claude.ai/install.ps1 | iex. Open a new terminal and run claude --version; a version number means it worked.npx eas-cli@latest go and installed through TestFlight, which requires an active Apple Developer Program subscription, and you must be signed into the same Expo account in the CLI and the app. Check the current Expo page and Apple's price before assuming the iPhone route is free. If you have no Android phone and don't want that subscription, Expo's docs also describe running in an emulator or simulator.Write down your one-sentence idea now, in the form "A screen where I [DO ONE THING] and see [ONE RESULT]". A habit tracker with one button and a streak counter is the right size. A marketplace is not.
Do not spend clock time letting Claude scaffold. In your terminal:
npx create-expo-app@latest my-timebox-app
cd my-timebox-app
npx expo start
The first command is Expo's documented way to create a project. The last starts the development server and prints a QR code. Scan it with your phone camera (Android) or open it in Expo Go, and confirm the default example appears. If your phone cannot connect on public or office Wi-Fi, Expo's docs suggest npx expo start --tunnel, which works but reloads more slowly.
If the default screen shows on your phone, the plumbing works, and any later failure is the app's fault, not the setup's.
Leave the dev server running, open a second terminal in the same folder and run claude. Log in through the browser prompt the first time.
Then switch to plan mode. Per the permission-modes docs, press Shift+Tab to cycle modes (the status bar shows plan mode on), or prefix one prompt with /plan. In plan mode Claude reads and proposes without editing your source until you approve. Note that recent Claude Code versions may start sessions in auto mode, where a classifier approves most actions for you, so check the status bar rather than assuming.
Start the clock here.
Fill in the square brackets. This prompt is deliberately narrow and asks for a plan, not code.
You are a pragmatic mobile developer helping me build a throwaway prototype in a fifteen-minute timebox. The project is an empty Expo (React Native) app created with create-expo-app, already running with Expo Go.
Goal: one screen where I [DO ONE THING] and see [ONE RESULT]. Success means that on my phone I can [ONE TESTABLE ACTION] and the result updates immediately.
Constraints:
- One screen only. No navigation, login, backend, payments or notifications.
- Keep state in memory or in simple on-device storage; no external accounts.
- Use only packages that work in Expo Go. Name any package you want to add before adding it.
- Plain, readable code in as few files as possible.
- Do not delete or rewrite the existing project setup.
Before you write the plan, ask me about anything essential that is missing rather than guessing.
Plan format: (1) the exact screen layout in a short list, (2) the files you will change, (3) the packages you will add, if any, (4) three things you are deliberately leaving out, (5) how I will check it worked on my phone.
Self-check before replying: confirm the plan has one screen, no accounts, and no feature I did not ask for. Do not edit any files yet.
Read the plan. If it contains anything beyond your one sentence, choose No, keep planning and say what to cut. When it fits, approve it. Approving exits plan mode and lets Claude start editing, so this is your only cheap moment to trim scope.
After approval, Claude edits the files and Expo's Fast Refresh updates your phone. Each loop is: look at the phone, name one problem, send one correction. Use this shape.
On my phone I expected [WHAT I EXPECTED] but I see [WHAT I SEE]. Fix only that. If you need to change more than [FILE_NAME], tell me why first. Paste the exact error text from the terminal if there is one.
If a red error screen appears, copy the message into the prompt as written. Describing it from memory costs a loop.
When the timer ends, stop prompting. Run git init and commit if you want to keep it, or ask Claude to summarise what works and what does not in five lines.
If those four hold, the build succeeded, even if it looks plain. A prototype that proves one idea is worth more than a polished screen that proves nothing.
| Failure | What happened | Fix |
|---|---|---|
| No phone preview | iPhone route needed TestFlight and a paid Apple membership you did not expect | Check the Expo page before starting; use Android or an emulator |
| Scope creep | Plan included login, settings or a database | Reject the plan and cut to one screen |
| Package not in Expo Go | Claude added a library needing native code | Make Claude name packages before adding them |
| Loop of vague fixes | "It looks wrong" with no detail | One precise expected-versus-actual per message |
| Wi-Fi mismatch | Phone and computer on different networks | Same network, or --tunnel |