Skip to content

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).

💬 You ask your agent

« Switch the desktop module to full debug info for its own code. »

→ The agent callseffortless_build_debug
  • stack_id = desktop
  • project = full
NameTypeRequiredDescription
stack_idstringnoModule visé. Absent en lecture : tous ; obligatoire pour régler.
projectstringnoNiveau du code du module : none, lines ou full. Absent : inchangé.
dependenciesstringnoNiveau 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.

💬 You ask your agent

« What would resetting desktop's builds do? Don't run anything. »

→ The agent callseffortless_build_reset
  • stack_id = desktop
  • confirm = false
NameTypeRequiredDescription
stack_idstringyesModule à remettre à zéro. Obligatoire.
confirmbooleanno⛔ 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.

💬 You ask your agent

« How much do the desktop module's build folders weigh? Measure them. »

→ The agent callseffortless_build_volume
  • stack_id = desktop
  • measure = true
NameTypeRequiredDescription
stack_idstringnoModule visé. Absent : tous les modules déclarés.
measurebooleannotrue : 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).

💬 You ask your agent

« Apply the "rest-api" scaffold template in the services/billing folder with the service name "billing". »

→ The agent callseffortless_scaffold_apply
  • template_id = rest-api
  • target_dir = services/billing
  • variables = {"service_name":"billing"}
NameTypeRequiredDescription
template_idstringyesId of the scaffold template (see effortless_scaffold_list). Required.
target_dirstringyesDirectory the template files are written into; existing files are left untouched and reported as skipped. Required.
variablesobjectnoOverrides 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.

💬 You ask your agent

« Apply the "rest-api" scaffold template at the project root. »

→ The agent callseffortless_scaffold_apply_project
  • template_id = rest-api
NameTypeRequiredDescription
template_idstringyesId of the scaffold template (see effortless_scaffold_list). Required.
variablesobjectnoOverrides 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).

💬 You ask your agent

« What is the manifest format of an importable scaffold template? »

→ The agent callseffortless_scaffold_format

No parameters.

scaffold_import ​

effortless_scaffold_import — Stability: beta · no project

Imports an external scaffold manifest into the project store.

💬 You ask your agent

« Import the scaffold manifest ~/templates/api-rest.json into the project. »

→ The agent callseffortless_scaffold_import
  • path = ~/templates/api-rest.json
NameTypeRequiredDescription
pathstringyesPath 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).

💬 You ask your agent

« Which scaffold templates are available in the project? »

→ The agent callseffortless_scaffold_list

No 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.

💬 You ask your agent

« Declare a "site" stack in codebase/site, branch main, with the node model. »

→ The agent callseffortless_stack_add
  • id = site
  • path = codebase/site
  • branch = main
  • scaffold_template = node
NameTypeRequiredDescription
idstringyesId of the new stack (a subdirectory of codebase/); empty or already used ids are refused. Required.
pathstringnoPath of the stack (default codebase/<id>/); a path outside the project makes the stack external.
branchstringnoGit branch associated with the stack (optional).
sharedbooleannoWhether the stack is shared (default false).
scaffold_templatestringnoId of the stack model or scaffold template to apply to the stack (optional); it also pre-fills the declared languages.
driftbooleannoWhether drift monitoring is enabled for the stack (default true).
varsobjectnoValues of the model variables, as a JSON object; used when scaffold_template is rendered and persisted in the stack's vars.
gitbooleannoWhether 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.
languagesarraynoDeclared 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).

💬 You ask your agent

« Run the app stack's build. »

→ The agent callseffortless_stack_build
  • stack_id = app
NameTypeRequiredDescription
stack_idstringyesId 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.

💬 You ask your agent

« Which command runs the site stack's tests? »

→ The agent callseffortless_stack_cycle
  • stack_id = site
  • kind = test
NameTypeRequiredDescription
stack_idstringyesId of the stack. Required.
kindstringyesCycle 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.

💬 You ask your agent

« Declare that the app stack uses Rust 1.80 and TypeScript 5. »

→ The agent callseffortless_stack_declare_languages
  • stack_id = app
  • languages = [{"id":"rust","version":"1.80"},{"id":"typescript","version":"5"}]
NameTypeRequiredDescription
stack_idstringyesId of the stack to correct; an unknown stack is refused. Required.
languagesarrayyesThe 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.

💬 You ask your agent

« What would be purged in the app stack to free up space? Delete nothing. »

→ The agent callseffortless_stack_housekeeping
  • stack_id = app
  • apply = false
NameTypeRequiredDescription
stack_idstringnoId of the stack to inspect (default: all declared stacks).
applybooleannoIf 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.

💬 You ask your agent

« Which code stacks does the project declare? »

→ The agent callseffortless_stack_list

No 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.

💬 You ask your agent

« Which stack models can I use to start a project? »

→ The agent callseffortless_stack_model_list

No 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).

💬 You ask your agent

« Detail the tauri-react stack model: variables, build and test commands. »

→ The agent callseffortless_stack_model_show
  • model_id = tauri-react
NameTypeRequiredDescription
model_idstringyesId 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.

💬 You ask your agent

« Reintegrate the worktree ../wt-export into the repository, the bar being `pnpm test` and `pnpm lint`. »

→ The agent callseffortless_worktree_reintegrate
  • worktree_path = ../wt-export
  • bar = {"test":"pnpm test","lint":"pnpm lint"}
NameTypeRequiredDescription
worktree_pathstringnoPath 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_pathsarray<string>noSeveral 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_worktreebooleannoIf true, keeps the worktree and its merged branch after a successful merge; default false removes them (reported under purged).
barobjectyesBar 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.

Effortless — ArboRithm