Initialize Your Project
Clean the template, interview for your product plan, connect services, and prepare an editable app tree before native launch.
Initialize your project
Initialization turns a clean clone into a buyer-owned development tree. It has one job before anything else: remove inherited identity and prove that the template is no longer pointing at someone else's app.
It then asks the product questions that an agent needs to work well: audience, problem, core loop, launch scope, platforms, inspiration, design direction, business model, activation event, growth hypothesis, and success metrics. The answers become the product, feature, roadmap, growth, key setup, and initialization-plan documents that the rest of the workflow reads.
Run the planning form on a fresh clone. Use --no-native while you are still reviewing the plan or waiting for credentials. A pending initialization is an editable development tree, not a bootable native app and not release proof.
The recommended path
clean clone
→ identity cleanup
→ product and growth interview
→ product, features, roadmap and Wire growth docs
→ service choices: MCP, manual, later or skip
→ buyer acceptance
→ validate acceptance
→ bounded feature work
→ .env and native prerequisites
→ prebuild and iOS or Android launchWire is part of the plan from the beginning. The initializer defines the activation event, lifecycle funnel, event map, first onboarding experiment, learning review, and optimization backlog. It is the growth system for experiments and analytics, not a later upsell paragraph.
Before you run it
You need a fresh checkout, Node and Yarn. Read the repository startup files first: AGENTS.md, CLAUDE.md, GEMINI.md, agents.md, or .cursorrules when the active host exposes them. Each adapter routes to ai_rules/project_init_workflow.md and the required project rules.
For a native launch, you will later need your own bundle identifier, Android package, URL scheme, Firebase files, app assets, and the environment values listed in .env.example. You can leave service credentials and assets pending during planning.
AI Pro testers should verify the exact reviewed candidate before changing anything:
git branch --show-current
git rev-parse HEADExpected starting commit for the pinned AI Pro tester flow: a7f6cb36f1fc3ecd8b3a7d9c8956afa30bf39984. Work on the tester branch you created from that commit.
Run planning first
The safest non-interactive form is:
node init.js --answers answers.json --no-nativeKeep answers.json local and free of secrets. Use file paths for buyer Firebase files, never paste their contents into the JSON.
For an interactive run, use:
yarn init:projectThe interactive prompts collect the identity and brand inputs, then continue with the product and growth interview. If you are not ready to prebuild, leave the final platform prompt blank or use the non-interactive --no-native form.
The answers.json file can contain these identity keys:
projectName, pitch, category, iosBundleIdentifier, androidPackage,
scheme, googleClientId, googleServicesJson, googleServiceInfoPlist,
theme, brandColorLight, brandColorDark, vibe, radius, iconSource, platformIt can also contain these planning keys:
audience, jobProblem, coreLoop, launchScope, platforms, inspiration,
designDirection, businessModel, activationEvent, growthHypothesis,
successMetrics, features, servicesfeatures is an array of buyer-owned feature objects. Each object may include name, scope, priority, and dependencies. services records only the selected mode and MCP availability. It never stores secret values.
What the initializer creates
| Phase | What happens | Evidence it leaves |
|---|---|---|
| Clean | Records inherited identity, rewrites app identifiers, removes inherited Google and Firebase references when not supplied, applies the selected brand ramp, and handles assets | .init/identity.json, app.json, auth constants, token files |
| Interview | Collects product, platform, business, activation, growth, and metric answers | .init/state.json |
| Plan | Measures existing feature modules and writes buyer-owned planning artifacts | docs/PRODUCT.md, docs/FEATURES.md, docs/ROADMAP.md, docs/GROWTH.md, docs/KEYS.md, docs/INIT-PLAN.md |
| Tasks | Creates bounded feature briefs with dependencies and protected files | docs/tasks/*.md |
| Memory | Derives technical memory from accepted planning documents and archives the replaced active files without deleting history | .memory/ and .memory/archive/pre-init/ |
| Acceptance | Records an artifact-set digest after the buyer reviews the plan | .init/state.json |
The six canonical buyer documents are the source of truth. Memory is derived from accepted documents, not the other way around. Editing a canonical document or task after acceptance invalidates the acceptance digest and returns the state to planned.
Service setup is explicit
For each required service, choose mcp, manual, or later where that service supports it. Optional services may also be skip. Wire supports mcp, manual, or later, and cannot be skipped because the growth plan always needs a Wire workstream.
The initializer does not create accounts, call a service console, or infer a connection. mcp means the current host must actually expose the connector and produce a receipt. If it does not, the generated status remains manual_required. later remains pending. Never paste secret values into answers.json, planning documents, logs, or git.
Accept before feature work
Read all six documents and the task briefs. Confirm the product definition, MVP feature order, Wire growth plan, and service statuses with the buyer. Record acceptance by rerunning the same complete answers file with --accept:
node init.js --answers answers.json --no-native --acceptThen validate the recorded digest immediately before feature work:
node init.js --validate-initOnly explicit acceptance with a matching digest can authorize feature work. With no pending requirements, the accepted state is ready_for_feature_work. With pending services or assets, it remains initialized_with_pending. That state is honest and useful, but it does not authorize native launch.
If services or assets are still pending, run the source checks that do not claim identity or release readiness:
yarn type:check
yarn lint:check
yarn i18n:validate
yarn test:ciAfter replacing the app assets, Firebase files, identity, and required provider configuration, run the complete fail-closed gate:
yarn validateFor the reviewed AI Pro candidate this covers type checking, linting, identity verification, and Jest. The accepted buyer replay passed 65 suites and 652 tests. yarn validate is expected to fail while required identity inputs are pending. A source-suite pass still does not prove a native build or provider connection.
After validation, the active host may assign the generated, dependency-ready task briefs to bounded subagents. The host must have those subagents available and must report receipts. The initializer itself does not launch Codex, Claude, Gemini, or any proprietary agent CLI.
Host adapters
The workflow is shared across coding hosts through the repository entry files:
| Host | Entry file | What is guaranteed |
|---|---|---|
| Codex | AGENTS.md when present, otherwise the repository adapter | The host can load the shared workflow when its project configuration exposes the file |
| Claude Code | CLAUDE.md | Claude Code reads its adapter and can follow the shared workflow |
| Gemini CLI | GEMINI.md | Gemini CLI reads its adapter when the file is present |
These files describe a capability contract. They are not proof that a particular host, MCP connector, or subagent ran on your machine. Check the active host's exposed tools before delegating.
Native launch comes last
Before any prebuild or launch, create .env and replace placeholders with your own values:
cp .env.example .envFollow Tool Integration for service setup, then First App Launch for the environment check and native commands. Do not use yarn web as a Standard buyer path. The app's supported validation and launch targets are native development builds.
When your environment and assets are ready, the native path is:
npx expo prebuild --clean
yarn ios # macOS with Xcode
yarn android # Android SDK and emulator or deviceRun the identity verifier after prebuild:
yarn verify:identityRestart Metro after adding or changing .env values. Expo reads public configuration when the bundle starts; a stale Metro process can make valid Wire or provider settings look absent.
Release readiness belongs to the release preflight and a real native build. Initialization, acceptance, and a green source test suite do not grant that status.
What the two testers should record
Each tester should keep a short, secret-free receipt with:
- the tested commit and platform
- initializer and
yarn validateexit codes - the final initialization state
- native build and first-launch result
- one ordinary app or screen event visible in Wire
- the instrumented activation event visible in Wire
- the static onboarding fallback result with Wire configuration removed
- any failed step with the exact command and first useful error
Do not record API keys, Firebase file contents, tokens, or signing credentials.
Recovery
The older U-AMOS pages are recovery material for projects that already have the template and need to repair one artifact. Start with the canonical workflow above, then use Product Description, Features List, Memory Bank, or Design System as needed.