Stacks, models and code
Declare modules, pick a stack model, scaffold, build, measure and slim down builds, reintegrate a worktree.
build_debug
effortless_build_debug — Stability: beta · no project
LIT ou RÈGLE le niveau d'informations de débogage des builds de dev d'un module (192/002) : none, lines ou full, pour project (code du module) et dependencies. Le niveau se traduit en variables d'environnement déclarées par le langage, posées sur les commandes qu'Effortless lance (barre, livraison) ; les fichiers du projet ne sont JAMAIS réécrits. Sans niveau : lecture, avec settable par portée. Une portée non déclarée est refusée (build:debugNotSettable).
« Switch the desktop module to full debug info for its own code. »
| Name | Type | Required | Description |
|---|---|---|---|
stack_id | string | no | Module visé. Absent en lecture : tous ; obligatoire pour régler. |
project | string | no | Niveau du code du module : none, lines ou full. Absent : inchangé. |
dependencies | string | no | Niveau des dépendances : none, lines ou full, si le langage le rend réglable. Absent : inchangé. |
build_reset
effortless_build_reset — Stability: beta · no project
REMET À ZÉRO les dossiers de build d'un module (192/002) en lançant la commande DÉCLARÉE par son langage (housekeeping.reset, ex. cargo clean), dans le dossier déclaré. ⛔ SIMULATION par défaut : nomme la commande, les dossiers et la taille, et ne lance rien ; confirm: true exécute, après accord de l'utilisateur. La compilation suivante sera complète. Refus nommés : build:resetUndeclared, build:rootOutsideProject, build:programNotFound, build:resetFailed.
« What would resetting desktop's builds do? Don't run anything. »
| Name | Type | Required | Description |
|---|---|---|---|
stack_id | string | yes | Module à remettre à zéro. Obligatoire. |
confirm | boolean | no | ⛔ true : EXÉCUTE la commande déclarée. Absent ou faux : simulation, rien n'est lancé. |
build_volume
effortless_build_volume — Stability: beta · no project
MESURE la volumétrie des dossiers de build de chaque module (192/002) : chemins déclarés par la stack (languages[].housekeeping) et dossiers détectés par CACHEDIR.TAG, total sans double compte. measure: true parcourt le disque et enregistre la mesure (propre au poste) ; absent, rend la dernière mesure et sa date. N'écrit rien d'autre, ne supprime rien. Rend aussi le seuil d'alerte du projet.
« How much do the desktop module's build folders weigh? Measure them. »
| Name | Type | Required | Description |
|---|---|---|---|
stack_id | string | no | Module visé. Absent : tous les modules déclarés. |
measure | boolean | no | true : nouvelle mesure (parcourt les dossiers de build). Absent ou faux : rend la dernière mesure enregistrée, sans rien parcourir. |
scaffold_apply
effortless_scaffold_apply — Stability: beta · no project
Applies a scaffold template in a target directory (idempotent, anti-traversal guard).
« Apply the "rest-api" scaffold template in the services/billing folder with the service name "billing". »
effortless_scaffold_applytemplate_id=rest-apitarget_dir=services/billingvariables={"service_name":"billing"}
| Name | Type | Required | Description |
|---|---|---|---|
template_id | string | yes | Id of the scaffold template (see effortless_scaffold_list). Required. |
target_dir | string | yes | Directory the template files are written into; existing files are left untouched and reported as skipped. Required. |
variables | object | no | Overrides of the template variables, as a JSON object of name to value (default: the template's own defaults). |
scaffold_apply_project
effortless_scaffold_apply_project — Stability: beta · no project
Applies a scaffold template at the root of the current project.
« Apply the "rest-api" scaffold template at the project root. »
| Name | Type | Required | Description |
|---|---|---|---|
template_id | string | yes | Id of the scaffold template (see effortless_scaffold_list). Required. |
variables | object | no | Overrides of the template variables, as a JSON object of name to value (default: the template's own defaults). |
scaffold_format
effortless_scaffold_format — Stability: beta · no project
Returns the scaffold manifest schema (contract for writing an importable template).
« What is the manifest format of an importable scaffold template? »
effortless_scaffold_formatNo parameters.
scaffold_import
effortless_scaffold_import — Stability: beta · no project
Imports an external scaffold manifest into the project store.
« Import the scaffold manifest ~/templates/api-rest.json into the project. »
| Name | Type | Required | Description |
|---|---|---|---|
path | string | yes | Path of the JSON scaffold manifest to import into the project store; an invalid manifest is refused. Required. |
scaffold_list
effortless_scaffold_list — Stability: beta · no project
Lists the available scaffold templates (project store).
« Which scaffold templates are available in the project? »
effortless_scaffold_listNo parameters.
stack_add
effortless_stack_add — Stability: beta · no project
Declares a code stack (id, path, branch), scaffolds codebase/<id>/ and applies the model (scaffold_template = model_id) with its variables. The norms of the declared languages (languages, which take precedence over the model's) are written to .ai/ndd/ at the project root; missing ones are named. git: true for a stack that has its own repository.
« Declare a "site" stack in codebase/site, branch main, with the node model. »
effortless_stack_addid=sitepath=codebase/sitebranch=mainscaffold_template=node
| Name | Type | Required | Description |
|---|---|---|---|
id | string | yes | Id of the new stack (a subdirectory of codebase/); empty or already used ids are refused. Required. |
path | string | no | Path of the stack (default codebase/<id>/); a path outside the project makes the stack external. |
branch | string | no | Git branch associated with the stack (optional). |
shared | boolean | no | Whether the stack is shared (default false). |
scaffold_template | string | no | Id of the stack model or scaffold template to apply to the stack (optional); it also pre-fills the declared languages. |
drift | boolean | no | Whether drift monitoring is enabled for the stack (default true). |
vars | object | no | Values of the model variables, as a JSON object; used when scaffold_template is rendered and persisted in the stack's vars. |
git | boolean | no | Whether the stack has its own git repository (default false); declare it for a stack outside the project, otherwise only the project's repository is tracked. |
languages | array | no | Declared languages of the stack. Array of objects {id, version?, ndd?}: id is the language (for example rust), version the targeted version, ndd the norm metadata {id, version, source} where source defaults to embedded. Takes precedence over the model's pre-filled languages. |
stack_build
effortless_stack_build — Stability: beta · project
Runs the build strategy of a stack's model and returns the result (status, artifacts, logs).
« Run the app stack's build. »
| Name | Type | Required | Description |
|---|---|---|---|
stack_id | string | yes | Id of the stack to build; its model must have a build block. Required. |
stack_cycle
effortless_stack_cycle — Stability: beta · project
Returns the resolved cycle command (test|lint|run) of a stack's model.
« Which command runs the site stack's tests? »
| Name | Type | Required | Description |
|---|---|---|---|
stack_id | string | yes | Id of the stack. Required. |
kind | string | yes | Cycle to resolve: test, lint or run. Required. |
stack_declare_languages
effortless_stack_declare_languages — Stability: beta · no project
Declares or corrects a stack's languages. The declaration replaces the previous one and does not merge. Each entry is an object {id, version?, ndd?{id, version, source}}. An empty list is accepted and declares "no standard". Refuses an unknown stack and a malformed declaration, entry by entry.
« Declare that the app stack uses Rust 1.80 and TypeScript 5. »
effortless_stack_declare_languagesstack_id=applanguages=[{"id":"rust","version":"1.80"},{"id":"typescript","version":"5"}]
| Name | Type | Required | Description |
|---|---|---|---|
stack_id | string | yes | Id of the stack to correct; an unknown stack is refused. Required. |
languages | array | yes | The COMPLETE declaration, which replaces the previous one; an empty array declares that the stack has no norm. Array of objects {id, version?, ndd?}: id is the language (for example rust), version the targeted version, ndd the norm metadata {id, version, source} where source defaults to embedded. Required. |
stack_housekeeping
effortless_stack_housekeeping — Stability: beta · no project
Reports the declared housekeeping of stacks: what would be purged, its size and for which language. Deletes nothing by default; apply: true is an explicit step. The policy lives in languages[].housekeeping of each stack. Refuses, by name, an absolute or parent-escaping path, one targeting a reserved root (target/release, .git, .effortless, blueprints, src, tests), a symbolic link, or one resolving outside the stack.
« What would be purged in the app stack to free up space? Delete nothing. »
| Name | Type | Required | Description |
|---|---|---|---|
stack_id | string | no | Id of the stack to inspect (default: all declared stacks). |
apply | boolean | no | If true, actually performs the purge; absent or false only reports what would be purged and deletes nothing. |
stack_list
effortless_stack_list — Stability: beta · no project
Lists the declared code stacks of the project.
« Which code stacks does the project declare? »
effortless_stack_listNo parameters.
stack_model_list
effortless_stack_model_list — Stability: beta · no project · usable before any project
Lists the available stack models (embedded: rust, node, python, generic, tauri, react, tauri-react, tauri-react-tailwind; plus the templates from the project store). Usable before init.
« Which stack models can I use to start a project? »
effortless_stack_model_listNo parameters.
stack_model_show
effortless_stack_model_show — Stability: beta · no project · usable before any project
Details a stack model: variables + build strategy + cycle (test/lint/run).
« Detail the tauri-react stack model: variables, build and test commands. »
| Name | Type | Required | Description |
|---|---|---|---|
model_id | string | yes | Id of the stack model (an embedded one such as rust, node, python, generic, or a project template). Required. |
worktree_reintegrate
effortless_worktree_reintegrate — Stability: beta · no project
Merges a worktree's work back into the repository if and only if the bar measured inside that worktree is green; otherwise refuses without writing anything. After a successful merge, removes the worktree and its branch (reported under purged); keep_worktree: true keeps them.
« Reintegrate the worktree ../wt-export into the repository, the bar being `pnpm test` and `pnpm lint`. »
effortless_worktree_reintegrateworktree_path=../wt-exportbar={"test":"pnpm test","lint":"pnpm lint"}
| Name | Type | Required | Description |
|---|---|---|---|
worktree_path | string | no | Path of the worktree to reintegrate; the engine never creates one, it reintegrates a tree already set up by the harness. Give this or worktree_paths. |
worktree_paths | array<string> | no | Several worktrees, one per repository of a composed project (the first is the project's); the bar is measured once, then one merge per repository, and a partial failure is named, never rolled back. |
keep_worktree | boolean | no | If true, keeps the worktree and its merged branch after a successful merge; default false removes them (reported under purged). |
bar | object | yes | Bar measured INSIDE the worktree: object mapping a name (test, lint, typecheck, build) to a shell command, or to an object with command and optionally cwd or stack; reintegration is refused unless it is green. Required. |