Get started
This journey opens a job: create a new project, take over a project that already exists, or connect Effortless to your agent. You come here once per project, or once per machine for the deployment.
What you ask the agent
« Create an Effortless project here, with the tauri-react-tailwind model. »
« Which stack models exist? Show me the detail of rust. »
effortless_stack_model_list« This repository already exists: prepare its migration to Effortless, without writing anything for now. »
« Apply the migration. »
« Bring this project up to date with the current Effortless version. »
« Move the root code into codebase/. »
What the agent does
Create a new project
effortless_stack_model_listlists the available models (usable before any project).effortless_stack_model_showdetails one model: variables, build strategy, test/lint/run cycle. Parameter:model_id.effortless_initcreates the project in the current directory. It passesmodel_idto apply the model (folder tree and standards under.ai/ndd/), and can passproject_name,description,context(greenfield,existingormigration). It also writesAGENTS.mdandCLAUDE.md(see With an agent).
Take over an existing project
effortless_migrate_initanalyzes the repository. Withconfirm: false(default) it is a preview that writes nothing; withconfirm: trueit writes the configuration, an epic, a story andmigration_plan.json.effortless_migrate_applycarries out the moves in the plan. Withdry_run: trueit is an audit; withdry_run: falseit really moves the files and writesmigration_report.md.effortless_codebase_relocate, if you want it, moves the root code undercodebase/<stack>/.dry_rundefaults totrue.
Bring a project up to date
effortless_migrate replays the migrations up to the current schema. confirm: false (default) shows what would be done; confirm: true applies it, with .bak backups. The old verbs effortless_migrate_nomenclature and effortless_migrate_state are deprecated: they are aliases of effortless_migrate.
Deploy
effortless_deploy installs the server in your clients, the global guide and, for Claude Code, the status bar (see With an agent). targets limits the clients, scope chooses user (default) or a project, grant_permissions: true also sets the server's permissions. It is an action on your machine: the agent runs it when you ask.
What you get
- A project with
effortless.json,.effortless/, the model's folder tree and, if the model carries any, the standards under.ai/ndd/. AGENTS.mdandCLAUDE.mdat the root.- For a takeover:
migration_plan.json, thenmigration_report.mdonce the plan is applied. - On screen: the project opens from the workspace picker (Open a workspace); the deployment shows in Preferences › MCP & Skills (Profile and preferences).
When the agent is refused
| Situation | What the refusal says | What to do |
|---|---|---|
| A project verb is called outside a project | mcp:racineProjetIntrouvable | Set EFFORTLESS_PROJECT in the server configuration if the project exists elsewhere; otherwise effortless_init creates one here. |
EFFORTLESS_PROJECT points to a folder with no project | mcp:projetInexistantALEndroitDeclare | Call effortless_init there: your configuration is not at fault. |
effortless_init on an already initialized folder | create:alreadyExists | Pass force: true to overwrite, or pick another directory. |
effortless_init with an unknown model_id | create:modelUnknown | effortless_stack_model_list names the available models. Nothing is written. |
effortless_init with a name made of spaces | create:blankName | Pass a project_name with at least one non-blank character. |
effortless_migrate_init on an already initialized project | adopt:alreadyInitialized | Pass force: true (a .bak backup is written). |
effortless_migrate_apply with no plan | adopt:planNotFound | effortless_migrate_init writes the migration plan. |
effortless_stack_model_show with an unknown model | "model … not found" message, no code | effortless_stack_model_list gives the valid ids. |
effortless_codebase_relocate in semi-auto mode | not a refusal: the reply carries gated: true and no moves | Switch the project to full mode with effortless_mode_set. |
init with force: true also empties .effortless/epics/, backlog.json and state.json: the agent only does it at your explicit request.