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).
« Passe le module desktop en débogage complet pour son propre code. »
| Nom | Type | Requis | Description |
|---|---|---|---|
stack_id | string | non | Module visé. Absent en lecture : tous ; obligatoire pour régler. |
project | string | non | Niveau du code du module : none, lines ou full. Absent : inchangé. |
dependencies | string | non | Niveau 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.
« Que ferait une remise à zéro des builds de desktop ? Ne lance rien. »
| Nom | Type | Requis | Description |
|---|---|---|---|
stack_id | string | oui | Module à remettre à zéro. Obligatoire. |
confirm | boolean | non | ⛔ 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.
« Combien pèsent les dossiers de build du module desktop ? Mesure-les. »
| Nom | Type | Requis | Description |
|---|---|---|---|
stack_id | string | non | Module visé. Absent : tous les modules déclarés. |
measure | boolean | non | 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 — Stabilité : beta · sans projet
Applique un template de scaffold dans un répertoire cible (idempotent, garde anti-traversée).
« Applique le template de scaffold « api-rest » dans le dossier services/billing avec le nom de service « billing ». »
effortless_scaffold_applytemplate_id=api-resttarget_dir=services/billingvariables={"service_name":"billing"}
| Nom | Type | Requis | Description |
|---|---|---|---|
template_id | string | oui | Id du template de scaffold (voir effortless_scaffold_list). Obligatoire. |
target_dir | string | oui | Répertoire dans lequel les fichiers du template sont écrits ; les fichiers existants sont laissés intacts et rapportés comme ignorés. Obligatoire. |
variables | object | non | Surcharges 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.
« Applique le template de scaffold « api-rest » à la racine du projet. »
| Nom | Type | Requis | Description |
|---|---|---|---|
template_id | string | oui | Id du template de scaffold (voir effortless_scaffold_list). Obligatoire. |
variables | object | non | Surcharges 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).
« Quel est le format du manifeste d'un template de scaffold importable ? »
effortless_scaffold_formatAucun paramètre.
scaffold_import
effortless_scaffold_import — Stabilité : beta · sans projet
Importe un manifeste de scaffold externe dans le store projet.
« Importe le manifeste de scaffold ~/templates/api-rest.json dans le projet. »
| Nom | Type | Requis | Description |
|---|---|---|---|
path | string | oui | Chemin 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).
« Quels templates de scaffold sont disponibles dans le projet ? »
effortless_scaffold_listAucun 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.
« Déclare une stack « site » dans codebase/site, branche main, avec le modèle node. »
effortless_stack_addid=sitepath=codebase/sitebranch=mainscaffold_template=node
| Nom | Type | Requis | Description |
|---|---|---|---|
id | string | oui | Id de la nouvelle stack (sous-répertoire de codebase/) ; un id vide ou déjà utilisé est refusé. Obligatoire. |
path | string | non | Chemin de la stack (défaut codebase/<id>/) ; un chemin hors du projet rend la stack externe. |
branch | string | non | Branche git associée à la stack (optionnelle). |
shared | boolean | non | Indique si la stack est partagée (défaut false). |
scaffold_template | string | non | Id du modèle de stack ou du template de scaffold à appliquer à la stack (optionnel) ; il pré-remplit aussi les langages déclarés. |
drift | boolean | non | Indique si la surveillance de dérive est active pour la stack (défaut true). |
vars | object | non | Valeurs 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. |
git | boolean | non | Indique 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. |
languages | array | non | Langages 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).
« Lance le build de la stack app. »
| Nom | Type | Requis | Description |
|---|---|---|---|
stack_id | string | oui | Id 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.
« Quelle commande lance les tests de la stack site ? »
| Nom | Type | Requis | Description |
|---|---|---|---|
stack_id | string | oui | Id de la stack. Obligatoire. |
kind | string | oui | Cycle à 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.
« Déclare que la stack app utilise Rust 1.80 et TypeScript 5. »
effortless_stack_declare_languagesstack_id=applanguages=[{"id":"rust","version":"1.80"},{"id":"typescript","version":"5"}]
| Nom | Type | Requis | Description |
|---|---|---|---|
stack_id | string | oui | Id de la stack à corriger ; une stack inconnue est refusée. Obligatoire. |
languages | array | oui | La 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.
« Qu'est-ce qui serait purgé dans la stack app pour libérer de la place ? Ne supprime rien. »
| Nom | Type | Requis | Description |
|---|---|---|---|
stack_id | string | non | Id de la stack visée (défaut : toutes les stacks déclarées). |
apply | boolean | non | Si 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.
« Quelles stacks de code le projet déclare-t-il ? »
effortless_stack_listAucun 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.
« Quels modèles de stack puis-je utiliser pour démarrer un projet ? »
effortless_stack_model_listAucun 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).
« Détaille le modèle de stack tauri-react : variables, build et commandes de test. »
| Nom | Type | Requis | Description |
|---|---|---|---|
model_id | string | oui | Id 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.
« Réintègre le worktree ../wt-export dans le dépôt, la barre étant `pnpm test` et `pnpm lint`. »
effortless_worktree_reintegrateworktree_path=../wt-exportbar={"test":"pnpm test","lint":"pnpm lint"}
| Nom | Type | Requis | Description |
|---|---|---|---|
worktree_path | string | non | Chemin 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_paths | array<string> | non | Plusieurs 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_worktree | boolean | non | Si 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). |
bar | object | oui | Barre 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. |