Skip to content

Project Onboarding Flows

Planu has two different onboarding paths:

  1. Existing project — Planu should inspect what is already there before asking you to choose a language or framework.
  2. New project — Planu should ask what you want to build and where the app should live before it initializes anything.

This separation prevents the most common setup mistake: starting your AI assistant from a parent workspace such as Documents/desarrollo and accidentally initializing Planu in that parent folder instead of the actual app folder.

Existing Project

When a project already exists, Planu should be evidence-first. It scans manifests, lockfiles, config files, source structure, and existing agent instructions. If the stack is clear, it suggests what it found. If the stack is ambiguous, it asks you to confirm the primary language/framework.

mermaid
flowchart TD
  A["User asks Planu to work in an existing repo"] --> B["Scan project evidence"]
  B --> C{"Language/framework clear?"}
  C -- "Yes" --> D["Suggest detected stack with evidence"]
  C -- "No or ambiguous" --> E["Ask user to confirm primary stack"]
  D --> F["Verify official docs and versions"]
  E --> F
  F --> G["Persist stack decision in spec"]
  G --> H["Agents implement only the approved contract"]

The result should feel like:

Planu detected TypeScript, Node, and an MCP SDK from package.json, tsconfig.json, and the lockfile. Confirm this is the primary stack before creating the spec.

Planu should not silently switch frameworks, pick a popular default, or let the model choose a stack because it prefers one.

New Project

When you are starting from a parent workspace, Planu should not initialize that parent directory. It should confirm the app folder first, then initialize Planu inside that folder only.

mermaid
flowchart TD
  A["User starts from parent workspace"] --> B["Detect new project request"]
  B --> C["Ask app name and target folder"]
  C --> D["Ask language/framework or suggest from goal"]
  D --> E["Verify official docs and versions"]
  E --> F["Create or confirm project folder"]
  F --> G["Run init_project inside project folder only"]
  G --> H["Create initial spec before production code"]

Example:

text
Current folder:
/workspace/Documents/desarrollo

User request:
"Use Planu and create an appointments API"

Correct project folder:
/workspace/Documents/desarrollo/citas-api

Planu should initialize citas-api, not desarrollo.

Technology Selection Contract

Planu should pass stack decisions to agents as a contract, not as hardcoded product preference.

SituationPlanu behavior
Existing project with clear evidenceDetect first, then suggest with evidence
Existing project with conflictsAsk which language/framework is primary
New projectAsk for app name, folder, language, framework, and platform
User is unsureSuggest options from the goal and official sources
Versions or APIs matterVerify against official docs before approval
Agent implementation startsUse only the approved stack decision

Forbidden behavior:

  • choosing a framework because the LLM likes it;
  • hardcoding a default stack in Planu code;
  • initializing a parent workspace when the user wants a new app folder;
  • treating a fallback or guess as an official decision.

What Planu Creates

When init_project runs inside the correct project folder, Planu may create:

Planu canonical state

PathPurpose
planu.jsonProject-level Planu configuration
planu/conventions.jsonDetected conventions and project scan summary
planu/context.mdPortable project context for agents to resume quickly
planu/project.jsonPortable logical project identity; operational session state remains external
planu/releases/pending.jsonPending release metadata when a release is being prepared
planu/specs/SPEC-XXX-slug/spec.mdThe unified spec file created by create_spec

Host-native adapters

Planu does not store agents, skills, or rules as primary files under planu/. Those files are generated where each host actually reads them.

PathPurpose
.planu/skill-registry.jsonLocal skill registry metadata
AGENTS.mdUniversal agent instructions for hosts that read AGENTS.md
.cursorrules / .windsurfrulesCursor and Windsurf workflow hints
.openai/config.tomlCodex workspace config when Codex is detected
.agents/skills/*Codex skills when Codex is detected
.codex/agents/*Codex role agents when Codex supports local role files
.cursor/rules/planu.mdcCursor project rule when Cursor is detected
.claude/rules/*Claude Code rules when Claude Code is detected
.claude/skills/*Claude Code workflow skills when Claude Code is detected
.claude/agents/*Claude Code subagents when Claude Code is detected
.claude/hooks/*Claude Code hooks when Claude Code is detected
GEMINI.md / .gemini/skills/*Gemini instructions and skills when Gemini is detected

Runtime project memory is stored outside the repo under the user-level Planu data directory, keyed by the project path. The checked-in project files stay focused on specs, config, rules, skills, and host instructions.

Practical Rule

If you are in a parent folder and ask for a new app, expect Planu to ask:

  • What should the app folder be called?
  • Which language and framework do you want to use?
  • Should Planu create the folder now?
  • Should Planu initialize specs inside that folder?

If you are inside an existing repo, expect Planu to inspect first and ask only when the detected stack is incomplete or ambiguous.

Next: read the SDD Workflow to see how the approved spec moves through implementation and validation.

Join the communityAsk questions, share feedback, and connect with other developers using Planu.
Join Discord