Skip to content

First run

The goal of this step is not to write a test. It is to let the base detect which stage it is at on its own, and to set the rhythm the AI will use when it asks you questions. Usually wraps under 10 minutes.

If Clone and install ended with cd my-app-e2e, stay in that folder and run:

Terminal window
claude

When the Claude Code prompt comes up, it reads CLAUDE.md and the automation rules silently. Nothing much shows on screen — that is fine.

Type this into the Claude Code prompt:

start project setup

Or /start. Either way, it triggers the start router skill. The first thing the router does is quietly detect the current stage.

The stage is a name for how far you have gotten. It climbs in order: empty (nothing done) → paced (rhythm set) → analyzed (decided what to test) → designed (tools decided) → scaffolded (skeleton laid) → implemented (tests written) → verified (validation passed).

On the very first run the stage reads empty. The router auto-generates the empty templates (active.md, progress.md, MEMORY.md) and then suggests /1-pace.

When /1-pace runs, one question shows up.

What pace would you like to move at? I’ll match the rhythm of my questions.

  • First time, or I’d like to go slow (novice)
  • Comfortable with development, let’s move fast (experienced)

If this is your first time, novice is the safer pick. The AI walks the decision questions from the steps ahead (which track your app is, which flows are fatal, which tools to use) one at a time. It explains each option in detail and recommends the safest default first.

Pick experienced and related questions arrive in bundles of two or three. Both routes reach the same decisions — the rhythm differs. One exception: decisions that are expensive to undo (tool choice, for one) get asked one at a time even on the experienced rhythm.

Your answer gets pinned into .claude/state/user-pace.json. Every step from here on rides on that rhythm. If you change your mind later, call /1-pace again and choose “keep / change.”

Once the rhythm is set, the router shows the next flow that fits the detected stage on one screen and asks whether to proceed. On a first run, something like this is on screen.

/1-pace → /2-setup-base → /3-analyze-target → /4-design-suite
→ /5-implement-suite → /6-cleanup-residue → /run-suite → /review-e2e

That line is the whole journey ahead. The names may be unfamiliar, but you do not need to memorize them. At each step the AI tells you what to call next.

If you agree to proceed, the router calls /2-setup-base first and then the rest in order. That step lays or confirms the common test skeleton (TypeScript config, package manager choice, package.json scripts). The track tool for your app does not get installed yet. That comes after you pick a track.

Healthy shape: a progress line like Phase 2 setup-base complete rolls past, followed by guidance on what to call next. On a first run it usually pauses here, and you move on to Choose your target.

Where it pauses: if the AI asks “what app are we testing?”, that means it has flowed naturally into the next step (/3-analyze-target). If your app’s details are not sorted out yet, do not rush the answer — it is cleaner to read Choose your target first and come back to answer.

If /start is not recognized: the .claude/skills/ folder did not come along with your fork. Run ls .claude/skills/ and check that a start directory is there. If it is missing, you need to pull the base again.

If you took a few days off, or /clear wiped the chat window, call /resume in the next session. It composes “which stage you are at, what you did last, and what to call next” into one screen. The fuller flow is laid out in When the AI gets stuck.

With the rhythm set, it is time to introduce your app to the base. Head to Choose your target.