- Keep V0 local-first and CLI-first.
- Prefer simple JSON files over database state.
- Keep modules focused and under roughly 200 lines when practical.
- Use kebab-case file names.
- Do not log auth credentials.
- Keep image generation and text rendering separate.
- Keep workflow image strategies separate: social slides can use generated visuals, App Store screenshots must start from real app screenshots, and App Ads should keep screenshots for post-production compositing only.
- For App Store screenshots, never ask an image model to invent app UI, labels, product states, accounts, or feature results.
- App Store inspiration references such as before.click are style-only inputs. Do not copy reference brands, UI, text, logos, or exact layouts into final exports.
- For App Ads, never attach screenshot contact sheets to Seedance/Kling; use one clean chroma-green single-shot video reference per generation and composite exact screenshots later.
- Screenshot source capture must use deterministic app-side fixtures or real simulator state, not production customer data.
- Use strict TypeScript.
- Use
zodschemas at file boundaries. - Use explicit domain errors through
OpenLoopError. - Prefer small pure functions for scanner, generator, and renderer helpers.
- Generated campaign output belongs under
.openloop/campaign/. - New campaign output uses module-first layout: common files in
shared/, workflow files inmodules/<module>/. - Within each module, keep lifecycle folders stable:
meta/,references/,raw/,work/,export/, andreview/. - Do not write new workflow assets to legacy root-level
images/,exports/,screenshots/,references/, orvideo-prompts/folders. - Docs belong under
docs/. - Plans and research belong under
plans/. - Repo-scoped Codex skills belong under
.agents/skills/. - Do not commit auth state or generated campaign assets unless explicitly needed.
- Keep hidden agent folders excluded from product scanning so skill text does not pollute campaign briefs.
- Maintain reusable project skills in
.agents/skills/so future Codex sessions can load the same workflow. - The current screenshot preparation skill is
.agents/skills/develop-screenshot-mode/. - A screenshot-mode skill must always audit existing app support first, then reuse, extend, or add mode in that order.
- Skill folders should contain only necessary skill files such as
SKILL.mdandagents/openai.yaml; avoid extra README/changelog clutter inside skill folders.
Run before finishing changes:
npm run typecheck
npm test