Skip to content

Stacks, modèles et code ​

Déclarer les modules, choisir un modèle de stack, échafauder, construire, mesurer et alléger les builds, réintégrer un worktree.

build_debug ​

effortless_build_debug — Stabilité : beta · sans projet

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

💬 Vous demandez à l’agent

« Passe le module desktop en débogage complet pour son propre code. »

→ L’agent appelleeffortless_build_debug
  • stack_id = desktop
  • project = full
NomTypeRequisDescription
stack_idstringnonModule visé. Absent en lecture : tous ; obligatoire pour régler.
projectstringnonNiveau du code du module : none, lines ou full. Absent : inchangé.
dependenciesstringnonNiveau des dépendances : none, lines ou full, si le langage le rend réglable. Absent : inchangé.

build_reset ​

effortless_build_reset — Stabilité : beta · sans projet

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.

💬 Vous demandez à l’agent

« Que ferait une remise à zéro des builds de desktop ? Ne lance rien. »

→ L’agent appelleeffortless_build_reset
  • stack_id = desktop
  • confirm = false
NomTypeRequisDescription
stack_idstringouiModule à remettre à zéro. Obligatoire.
confirmbooleannon⛔ true : EXÉCUTE la commande déclarée. Absent ou faux : simulation, rien n'est lancé.

build_volume ​

effortless_build_volume — Stabilité : beta · sans projet

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.

💬 Vous demandez à l’agent

« Combien pèsent les dossiers de build du module desktop ? Mesure-les. »

→ L’agent appelleeffortless_build_volume
  • stack_id = desktop
  • measure = true
NomTypeRequisDescription
stack_idstringnonModule visé. Absent : tous les modules déclarés.
measurebooleannontrue : 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 — Stabilité : beta · sans projet

Applique un template de scaffold dans un répertoire cible (idempotent, garde anti-traversée).

💬 Vous demandez à l’agent

« Applique le template de scaffold « api-rest » dans le dossier services/billing avec le nom de service « billing ». »

→ L’agent appelleeffortless_scaffold_apply
  • template_id = api-rest
  • target_dir = services/billing
  • variables = {"service_name":"billing"}
NomTypeRequisDescription
template_idstringouiId du template de scaffold (voir effortless_scaffold_list). Obligatoire.
target_dirstringouiRépertoire dans lequel les fichiers du template sont écrits ; les fichiers existants sont laissés intacts et rapportés comme ignorés. Obligatoire.
variablesobjectnonSurcharges des variables du template, sous forme d'objet JSON nom → valeur (défaut : les valeurs propres au template).

scaffold_apply_project ​

effortless_scaffold_apply_project — Stabilité : beta · sans projet

Applique un template de scaffold à la racine du projet courant.

💬 Vous demandez à l’agent

« Applique le template de scaffold « api-rest » à la racine du projet. »

→ L’agent appelleeffortless_scaffold_apply_project
  • template_id = api-rest
NomTypeRequisDescription
template_idstringouiId du template de scaffold (voir effortless_scaffold_list). Obligatoire.
variablesobjectnonSurcharges des variables du template, sous forme d'objet JSON nom → valeur (défaut : les valeurs propres au template).

scaffold_format ​

effortless_scaffold_format — Stabilité : beta · sans projet

Retourne le schéma de manifeste de scaffold (contrat pour écrire un template importable).

💬 Vous demandez à l’agent

« Quel est le format du manifeste d'un template de scaffold importable ? »

→ L’agent appelleeffortless_scaffold_format

Aucun paramètre.

scaffold_import ​

effortless_scaffold_import — Stabilité : beta · sans projet

Importe un manifeste de scaffold externe dans le store projet.

💬 Vous demandez à l’agent

« Importe le manifeste de scaffold ~/templates/api-rest.json dans le projet. »

→ L’agent appelleeffortless_scaffold_import
  • path = ~/templates/api-rest.json
NomTypeRequisDescription
pathstringouiChemin du manifeste de scaffold JSON à importer dans le store du projet ; un manifeste invalide est refusé. Obligatoire.

scaffold_list ​

effortless_scaffold_list — Stabilité : beta · sans projet

Liste les templates de scaffold disponibles (store projet).

💬 Vous demandez à l’agent

« Quels templates de scaffold sont disponibles dans le projet ? »

→ L’agent appelleeffortless_scaffold_list

Aucun paramètre.

stack_add ​

effortless_stack_add — Stabilité : beta · sans projet

Déclare une stack de code (id, chemin, branche), scaffolde codebase/<id>/ et applique le modèle (scaffold_template = model_id) avec ses variables. Les normes des langages déclarés (languages, qui priment sur ceux du modèle) sont posées dans .ai/ndd/ à la racine du projet ; celles qui manquent sont nommées. git: true pour une stack qui a son propre dépôt.

💬 Vous demandez à l’agent

« Déclare une stack « site » dans codebase/site, branche main, avec le modèle node. »

→ L’agent appelleeffortless_stack_add
  • id = site
  • path = codebase/site
  • branch = main
  • scaffold_template = node
NomTypeRequisDescription
idstringouiId de la nouvelle stack (sous-répertoire de codebase/) ; un id vide ou déjà utilisé est refusé. Obligatoire.
pathstringnonChemin de la stack (défaut codebase/<id>/) ; un chemin hors du projet rend la stack externe.
branchstringnonBranche git associée à la stack (optionnelle).
sharedbooleannonIndique si la stack est partagée (défaut false).
scaffold_templatestringnonId du modèle de stack ou du template de scaffold à appliquer à la stack (optionnel) ; il pré-remplit aussi les langages déclarés.
driftbooleannonIndique si la surveillance de dérive est active pour la stack (défaut true).
varsobjectnonValeurs des variables du modèle, sous forme d'objet JSON ; utilisées au rendu de scaffold_template et persistées dans vars de la stack.
gitbooleannonIndique si la stack a son PROPRE dépôt git (défaut false) ; à déclarer pour une stack hors du projet, sinon seul le dépôt du projet est suivi.
languagesarraynonLangages déclarés de la stack. Tableau d'objets {id, version?, ndd?} : id est le langage (par exemple rust), version la version visée, ndd la méta de la norme {id, version, source} où source vaut embedded par défaut. Prime sur le pré-remplissage du modèle.

stack_build ​

effortless_stack_build — Stabilité : beta · projet

Exécute la stratégie de build du modèle d'une stack et renvoie le résultat (status, artefacts, logs).

💬 Vous demandez à l’agent

« Lance le build de la stack app. »

→ L’agent appelleeffortless_stack_build
  • stack_id = app
NomTypeRequisDescription
stack_idstringouiId de la stack à builder ; son modèle doit avoir un bloc build. Obligatoire.

stack_cycle ​

effortless_stack_cycle — Stabilité : beta · projet

Renvoie la commande de cycle (test|lint|run) résolue du modèle d'une stack.

💬 Vous demandez à l’agent

« Quelle commande lance les tests de la stack site ? »

→ L’agent appelleeffortless_stack_cycle
  • stack_id = site
  • kind = test
NomTypeRequisDescription
stack_idstringouiId de la stack. Obligatoire.
kindstringouiCycle à résoudre : test, lint ou run. Obligatoire.

stack_declare_languages ​

effortless_stack_declare_languages — Stabilité : beta · sans projet

Déclare ou corrige les langages d'une stack. La déclaration remplace la précédente, elle ne fusionne pas. Chaque entrée est un objet {id, version?, ndd?{id, version, source}}. Une liste vide est acceptée et déclare « aucune norme ». Refuse une stack inconnue et une déclaration malformée, entrée par entrée.

💬 Vous demandez à l’agent

« Déclare que la stack app utilise Rust 1.80 et TypeScript 5. »

→ L’agent appelleeffortless_stack_declare_languages
  • stack_id = app
  • languages = [{"id":"rust","version":"1.80"},{"id":"typescript","version":"5"}]
NomTypeRequisDescription
stack_idstringouiId de la stack à corriger ; une stack inconnue est refusée. Obligatoire.
languagesarrayouiLa déclaration COMPLÈTE, qui remplace la précédente ; un tableau vide déclare que la stack n'a aucune norme. Tableau d'objets {id, version?, ndd?} : id est le langage (par exemple rust), version la version visée, ndd la méta de la norme {id, version, source} où source vaut embedded par défaut. Obligatoire.

stack_housekeeping ​

effortless_stack_housekeeping — Stabilité : beta · sans projet

Constate l'entretien déclaré des stacks : ce qui serait purgé, sa taille et pour quel langage. Ne supprime rien par défaut, apply: true est un geste explicite. La politique vit dans languages[].housekeeping de chaque stack. Refuse par leur nom un chemin absolu, remontant, visant une racine réservée (target/release, .git, .effortless, blueprints, src, tests), lien symbolique ou résolu hors de la stack.

💬 Vous demandez à l’agent

« Qu'est-ce qui serait purgé dans la stack app pour libérer de la place ? Ne supprime rien. »

→ L’agent appelleeffortless_stack_housekeeping
  • stack_id = app
  • apply = false
NomTypeRequisDescription
stack_idstringnonId de la stack visée (défaut : toutes les stacks déclarées).
applybooleannonSi true, EXÉCUTE la purge ; absent ou false, constat seul, rien n'est supprimé.

stack_list ​

effortless_stack_list — Stabilité : beta · sans projet

Liste les stacks de code déclarées du projet.

💬 Vous demandez à l’agent

« Quelles stacks de code le projet déclare-t-il ? »

→ L’agent appelleeffortless_stack_list

Aucun paramètre.

stack_model_list ​

effortless_stack_model_list — Stabilité : beta · sans projet · utilisable avant tout projet

Liste les modèles de stack disponibles (embarqués : rust, node, python, generic, tauri, react, tauri-react, tauri-react-tailwind ; plus les templates du store projet). Utilisable avant init.

💬 Vous demandez à l’agent

« Quels modèles de stack puis-je utiliser pour démarrer un projet ? »

→ L’agent appelleeffortless_stack_model_list

Aucun paramètre.

stack_model_show ​

effortless_stack_model_show — Stabilité : beta · sans projet · utilisable avant tout projet

Détaille un modèle de stack : variables + stratégie build + cycle (test/lint/run).

💬 Vous demandez à l’agent

« Détaille le modèle de stack tauri-react : variables, build et commandes de test. »

→ L’agent appelleeffortless_stack_model_show
  • model_id = tauri-react
NomTypeRequisDescription
model_idstringouiId du modèle de stack (un modèle embarqué comme rust, node, python, generic, ou un template du projet). Obligatoire.

worktree_reintegrate ​

effortless_worktree_reintegrate — Stabilité : beta · sans projet

Réintègre le travail d'un worktree dans le dépôt, si et seulement si la barre mesurée dans ce worktree est verte ; sinon refuse sans rien écrire. Après une fusion réussie, retire le worktree et sa branche (rapportés sous purged) ; keep_worktree: true les conserve.

💬 Vous demandez à l’agent

« Réintègre le worktree ../wt-export dans le dépôt, la barre étant `pnpm test` et `pnpm lint`. »

→ L’agent appelleeffortless_worktree_reintegrate
  • worktree_path = ../wt-export
  • bar = {"test":"pnpm test","lint":"pnpm lint"}
NomTypeRequisDescription
worktree_pathstringnonChemin du worktree à réintégrer ; le moteur n'en crée jamais, il réintègre un arbre que le harnais a déjà posé. À fournir, ou worktree_paths.
worktree_pathsarray<string>nonPlusieurs worktrees, un par dépôt d'un projet composé (le premier est celui du projet) ; la barre est mesurée une fois, puis un merge par dépôt, et un échec partiel est nommé, jamais annulé.
keep_worktreebooleannonSi true, garde le worktree et sa branche fusionnée après une fusion réussie ; défaut false, ils sont retirés (rapportés sous purged).
barobjectouiBarre mesurée DANS le worktree : objet associant un nom (test, lint, typecheck, build) à une commande shell, ou à un objet avec command et éventuellement cwd ou stack ; la réintégration est refusée tant qu'elle n'est pas verte. Obligatoire.

Effortless — ArboRithm