max-model : idée → pièce vérifiée et imprimable
La demande : tout ce que l'utilisateur a saisi après /max-model (ou la chose qu'il a décrite).
FORGE = le répertoire de ce skill (p. ex. ~/.claude/skills/max-model) ; tous les chemins ci-dessous lui sont relatifs. Une CLI : $FORGE/bin/forge <cmd> (liste en fin de document).
Environnements (voir README) : venv CAO $FORGE/.venv-cad (build123d, trimesh, manifold3d, usd-core, opencv, sdf ; remplacer par FORGE_CAD_PY), venv IA optionnel $FORGE/.venv-ai (torch, diffusers, CLIP ; remplacer par FORGE_AI_PY) pour text3d et looks.
Imprimante : knowledge/printer.json (plateau, buse, couche ; exemples dans knowledge/printers/). Le tranchage est laissé au slicer de l'utilisateur : forge s'arrête à un STL vérifié plus un verdict de prévol (supports activés/désactivés). Un hook optionnel slicer_cmd permet à forge de rapporter le temps d'impression et les grammes.
Ce qu'a montré le benchmark du 2026-10-17 (knowledge/benchmark-2026-10-17.md) : les pièces exactes issues d'un cahier des charges complet atteignent 0,96 IoU voxel vs le STEP réel pour les pièces entièrement spécifiées, mais seulement 0,41-0,82 là où les détails étaient devinés ; les mécanismes imprimés-en-place ont passé les balayages de mouvement dès la première construction sans aucun espace fusionné (pas encore validé par des impressions réelles sur l'imprimante de l'auteur) ; l'APPRÉCIATION visuelle des objets emblématiques/organiques est le point faible quand elle est modélisée à la main (un casque modélisé à la main a donné un œuf). Les pipelines text3d / looks / remix existent pour couvrir ce point faible avec des outils plutôt que de la volonté : passage de référence + Score d'Appréciation, texte->3D local pour les figures organiques, flexify sur les sculptures, find-et-remix pour les accessoires emblématiques.
Règles qui ne plient jamais
- Les chiffres d'abord, les images ensuite. Aucune affirmation sur la géométrie si elle ne provient pas de la sortie d'un outil (vérifier/autotest/prévol/note JSON) ou d'un rendu que vous avez lu dans cette itération. Ne décrivez jamais un STL de mémoire.
- Cahier des charges avant modèle pour les pièces personnalisées : d'abord
spec.md+spec.jsonavec des critères de succès numériques. - Un changement par itération, conservez chaque
iter_NN/, maximum 6 par phase, puis re-planifiez. - Tout ce qui bouge est livré avec un autotest réussi (balayage dégagé + contrôle de coincement obligatoire + jeux mesurés). Pas d'exception ; c'est la raison pour laquelle les mécanismes sont le point fort de ce skill.
- Chaque impression reçoit
forge preflightavant le tranchage, et son verdict décide des supports. NO-GO = corrigez d'abord la géométrie/l'orientation. Les pièces imprimées-en-place / multi-corps reçoivent aussiforge export <stl>et vous remettez le 3MF, pas le STL : les supports automatiques du slicer rempliraient les espaces et souderaient les pièces (la première impression du CYCLO-11 est morte ainsi), et un STL ne peut pas porter l'information « supports désactivés ». - Environnement : Blender, OpenSCAD et le torch GPU (text3d, looks) peuvent planter dans certains bacs à sable d'agent qui cachent le GPU (Blender sort avec 139). Si une étape segfaulte, exécutez-la en dehors du bac à sable. Le pur python (build123d, manifold3d, trimesh) fonctionne partout.
- Rapportez les jalons brièvement (route choisie, premier rendu, prêt à imprimer avec temps/grammes/verdict, blocage) : une ligne chacun, dites ce que l'utilisateur doit décider. Envoyez les images clés (sheet.png, poster.png) et les fichiers RA quand le canal le permet.
- Ne commencez jamais une impression et ne dépensez jamais d'argent sans l'accord explicite de l'utilisateur. Modèles téléchargés : respectez la licence (CC BY-NC = pas de vente).
Début de session (30 secondes)
ls $FORGE/knowledge/ ; cat $FORGE/knowledge/{fit-log.md,lessons.md,printer.json} ; $FORGE/bin/forge fit show
$FORGE/bin/forge doctor # ligne rouge -> corrigez-la ou signalez-la avant de modéliser
Si forge fit show indique que pip_gap est toujours [R] (valeur par défaut de recherche, non mesurée sur cette imprimante) : mentionnez une fois que la Fit Card (forge mech build fitcard, environ une heure, ~16 g) calibre chaque pièce mobile, et proposez de l'imprimer.
PHASE 0 — ROUTE (choisir le pipeline, pas le marteau)
La première correspondance gagne. Dites à l'utilisateur la route en une ligne.
| Il veut | Route | Outils |
|---|---|---|
| modifier un TÉLÉCHARGEMENT : nom/texte dessus, boucle porte-clés, aimants, parois plus épaisses, adapter à une taille de tête, fond plat, miroir | REMIX (télécharger, puis améliorer) | `forge remix text |
| un objet pratique à partir des chiffres de l'utilisateur : boîte (coulissant/press-fit), porte-clés nominatif, panneau, support de téléphone, support pour un objet, lithophane | MAKE (générateurs ; jeux depuis fit.json ; les boîtes sont vérifiées pour le mouvement) | `forge make box |
| plusieurs exemplaires / un projet entier en une seule impression (vente) | PLATE (remplit le plateau, coût par pièce) | `forge plate <stl...> --fill |
| un objet célèbre existant (un casque de film, accessoire, jouet populaire, boîtier pour un appareil courant) | FIND (chercher vous-même sur un site de modèles comme Printables/Thingiverse), puis REMIX (mise à l'échelle, découpe, aimants, ajustement) | recherche web, forge split, forge preflight --orient |
| un casque ORIGINAL (« un casque que personne d'autre n'a ») | TEXT3D --helmet : découpe du cou, dimensionné pour une tête que vous spécifiez (par défaut 160x190 + rembourrage), coque de 3 mm, plaque faciale + 4 bossages d'aimants, découpes en couture vers le bas | forge text3d "<style> helmet" --helmet |
| quelque chose qui bouge (fidget, charnière, engrenages, gyroscope, balisong, passe-fil, cliquet) | MECHKIT si un module convient, sinon modélisez-le avec l'API Mech | forge mech list/build , lib/mechkit/core.py |
| un animal flexi | concevoir un corps SDF (lib/sculpt.py) ou prendre une sculpture (un site de modèles/text3d) -> FLEXIFY | forge flexify , forge sculpt |
| une figurine / mascotte / créature / statue | TEXT3D (local, gratuit, ~3,5 min) ou trouver ; proposez les deux | forge text3d "<idée>" [--base NOM] |
| une pièce fonctionnelle sur mesure (support, boîtier, adaptateur, étui pour l'objet de l'utilisateur) | MODEL (phases 1-6 ci-dessous) | voie build123d, forge run, forge parts-find |
| organiser les tiroirs / un insert pour un objet | GRIDFINITY (+ PHOTOFIT pour une poche exacte) | forge gridfinity , forge photofit |
| trop grand pour le plateau | SPLIT avec goupilles + étiquettes de couture | forge split |
| « est-ce que ça s'imprimera / pourquoi ça a échoué » | PREFLIGHT (+ carte de chaleur) | forge preflight , forge heat |
| le montrer / le vendre | SHOWCASE + AR | forge showcase , forge ar |
Notes de qualité honnêtes pour le routage (mesurées par l'auteur, 2026-10-17) : les figures text3d sont lisibles (axolotl, dragon, mascotte fantôme, requin) mais les détails fins sont flous à 60 mm et elles nécessitent des supports ; le flexi-à-partir-de-texte via relief est grossier (les pattes fines fusionnent) -> préférez un corps conçu en SDF ou une sculpture humaine pour les flexis ; les formes organiques modélisées à la main ressemblent encore à des blobs -> ne modélisez jamais un casque/personnage à la main, utilisez FIND+REMIX ou TEXT3D.
PHASE 1 — BRIEF (pièces personnalisées) : cahier des charges avec chiffres
- Tout ce que l'utilisateur vous a déjà dit sur l'objet exact (modèle de l'appareil, mesures, photos). 1b. PASSAGE DE RÉFÉRENCE pour tout ce qui a un nom : cherchez 6 à 9 images de référence / designs les mieux notés de la vraie chose, REGARDEZ-les ; écrivez « ## Forme » dans spec.md (proportions, 2-3 caractéristiques distinctives, quelle variante). Ignorer cela a transformé le balisong de référence en une tige plate et le fidget spiral en le mauvais jouet.
- Dimensions : cherchez-les, ne les rappelez jamais (référence : poulie rappelée 0,41 IoU).
forge parts-find "<pièce>" [--download]+forge step2stl; fiches techniques via recherche web ; recherche web pour les images de référence. Citez les sources dans spec.md. Pour un objet que l'utilisateur possède et qui ne peut pas être recherché : PHOTOFIT (forge photofit mat-> imprimez le tapis de calibration à 100 % -> photo -> contour à ~0,3 mm près) est meilleur que de demander des mesures au pied à coulisse. - Ne demandez à l'utilisateur que ce qui ne peut pas être trouvé : UN message, <= 4 questions, chacune avec une valeur par défaut.
- Écrivez
out/<nom>/spec.md+spec.json(modèles/). Les estimations sur les interfaces d'ajustement sont marquéesestimate. - Postez « spec prête : -- OK pour construire ? » ; continuez en cas de silence à faible risque avec les valeurs par défaut indiquées.
PHASE 2 — VOIE + PLAN
| Voie | Utiliser pour |
|---|---|
| b123d (par défaut) | pièces fonctionnelles/dimensionnées/critiques pour l'ajustement, boîtiers, modules MechKit |
| scad | pièces triviales ou une primitive BOSL2 (filetages) |
sdf (lib/sculpt.py) | corps organiques que vous concevez vous-même : unions lisses, base plate, toujours étanche (recette gecko) |
mesh (lib/meshkit.py, manifold3d) | édition de téléchargements/maillages IA, gros booléens, flexify, découpe (OCC s'étouffe avec les sculptures de 100k triangles) |
| bpy | rendus, remaillage voxel, art texturé lourd |
Planifiez dans les commentaires en haut du fichier de pièce : fonctions par caractéristique, bloc de paramètres en mm, jeux issus de fit.get("pip_gap"/"slide_gap"/...) (ne codez jamais en dur 0,3), origine au centre-bas en Z=0, orientation d'impression conçue (plus grande face plate vers le bas, porte-à-faux <= 45, ponts < 18, parois >= 2,0), ordre de construction, liste d'assertions. |
PHASE 3 — CONSTRUIRE PAR PETITES ÉTAPES
Par itération : un changement -> forge run part.py --lane <ligne> --spec spec.json --name <nom> -> lisez verify.json/REPORT.md (le volume/la bbox a-t-elle changé comme le changement devrait le produire ? pas de changement = booléen ignoré) -> lisez sheet.png une fois -> critique -> changement suivant.
- Pièces mobiles = l'API Mech (
lib/mechkit/core.py) :Mech(nom, pièces, fixe, [Motion(nom, entrainement, [Move...], control=[...])])->selftest()balaye chaque pose, exécute le contrôle de coincement obligatoire sur tout son chemin, mesure les jeux exactement. L'absence de collision par construction est meilleure que la vérification : les arcs/sphères centrés sur le pivot maintiennent le jeu constant (gyroscope, articulations flexi) ; gardez le volume balayé de chaque mobile de son propre côté d'un plan (pivots de balisong). Engrenages :lib/gears.py. Mesuré, pas déclaré :forge mech ratio <nom> [--motion M --driven PIECE --driver PIECE]pose le mécanisme, libère la sortie et bisecte pour l'intervalle sans contact -> rapport mesuré + jeu (ratio.json, sortie 3 s'il est en désaccord avec le rapport déclaré). Réducteur cycloïdal :forge mech build cyclo11(lib/cycloid.pyprofil exact + vérification de contre-dépouille). Rendu studio :forge showcase <dir> --style studio --still hero|cutaway|exploded,--ghost,--annotate. - Prévol dans la boucle pour tout ce qui a des porte-à-faux :
forge preflight out/<nom>/<nom>.stl. - Objets nommés : Score d'Appréciation après le passage mécanique :
forge looks out/<nom>/<nom>.stl --target "<objet>"(CLIP sur des rendus propres ; validé : il a classé humain > v2 > v1 pour le balisong). < 30 % = itérez la FORME (proportions, caractéristiques distinctives), pas la mécanique. Comparez v1 vs v2 avec cela au lieu de deviner. - Règles dures : ne jugez jamais depuis une seule vue ; chevauchement des outils de coupe de 0,05 mm (les faces coplanaires laissent des peaux d'épaisseur nulle qui SOLDENT les goupilles : jeu mesuré 0,0 au lieu de 0,3) ; même échec deux fois -> imprimez les numéros de sous-pièces et re-diagnostiquez ; limitez à 6 itérations puis re-planifiez ou routez vers FIND. Terminez lorsque verify passe toutes les clés du cahier des charges, selftest réussit (mobiles), preflight est GO/GO+SUPPORTS, liste de contrôle visuelle tout oui.
PHASE 4 — AJUSTEMENT
- Calibration d'abord : les jeux imprimés-en-place proviennent de
fit.json. Tant que pip_gap est [R], chaque conception PIP porte une ATTENTION de prévol. La Fit Card mesure pip_gap (spinners .15-.40) et pip_vgap (charnières .25-.45) en une seule impression : après cela, demandez « le plus petit nombre qui tourne librement après une torsion ferme ? » ->forge fit set pip_gap <n> --from "fitcard <date>"(et pip_vgap). Chaque construction MechKit/flexify/gridfinity le lit automatiquement. - Pièces d'accouplement / pièces autour de l'objet de l'utilisateur : vérification de pose assemblée
bin/verify --assembly a.stl b.stl --clearance <jeu> --move-b=x,y,z; mannequin de l'objet à partir de photofit/parts-find. - Coupon seulement pour un type d'interface que la Fit Card ne couvre pas (filetages, clips, press-fit) ou dimensions estimées : <= 10 min, 3 variantes, étiquettes en relief.
PHASE 5 — PRÉPARATION DE L'IMPRESSION + REMISE
forge preflight <stl> [--slice]-> verdict + décision de supports. Pièces organiques/inclinées :forge preflight <stl> --orient(essaie plusieurs inclinaisons ; un casque voulait ~20 deg).forge heat <stl>génère la carte de chaleur rouge/jaune des supports pour lui montrer.- Supports = décision du prévol : GO -> désactivés ; GO+SUPPORTS -> activés/auto ; NO-GO -> corrigez d'abord (contact tranchant, espaces fusionnés, ne correspond pas ->
forge split). « SUPPORTS : OFF (requis) » = piège du support automatique (un dessous plat < 30 deg par rapport à l'horizontale se trouve < 2 mm au-dessus d'un CORPS DIFFÉRENT ;support_angle/support_trap_gapdans le profil de l'imprimante) : les supports doivent rester OFF ou ils soudent l'espace. 2b. Toujours, avant de remettre un fichier imprimé-en-place / multi-corps à un utilisateur :forge preflight <stl>puisforge export <stl>(suit automatiquement le verdict ; le nom se termine par_SUPPORTS-OFF.3mf/_SUPPORTS-ON.3mf). Donnez-lui le 3MF et dites : ouvrez ce fichier, vérifiez que la case Support correspond au nom du fichier, ne modifiez rien d'autre. Si preflight est NO-GO parce qu'il a besoin de supports ET que les supports souderaient, corrigez la géométrie (chanfreinez les dessous plats à 45 deg, ré-orientez) avant d'exporter. - Tranchez le 3MF exporté (ou le STL pour les pièces simple-corps simples) dans VOTRE slicer de prédilection avec la décision de supports de l'étape 2 et votre profil normal ; forge ne fait que cocher la case des supports, via le 3MF. (Optionnel : réglez
slicer_cmddansknowledge/printer.jsonpour quepreflight --slice/plate --slicerapportent le temps et les grammes.) - Montrez à l'utilisateur : sheet ou poster de showcase + temps/grammes (si le hook est paramétré) + verdict + recette d'une ligne. Proposez
forge ar <stl>(USDZ : s'ouvre en aperçu taille réelle sur iPhone/Vision Pro ; GLB pour Quest) quand la taille/l'ajustement est la question. - Ne commencez jamais une impression sans l'accord de l'utilisateur : « Plateau libre ? Démarrage de , ~, g. »
- Rapportez « prêt à imprimer : , g, . » Vente ?
forge showcase <dir>écrit mp4/gif + listing.md (coût, prix suggéré, rappel de licence).
PHASE 6 — RETOUR + APPRENTISSAGE
- Une ligne après l'impression : « Qu'est-ce qui n'allait pas ? (ajustement / aspect / résistance / qualité d'impression / rien) ». Lisez toute photo.
- Jeux ->
forge fit set ...(+ une ligne dans fit-log.md). Autres chiffres -> fit-log.md / print-tolerances.md [V]. - 1-3 lignes dans
knowledge/lessons.md(date · projet · leçon · phase). Nouvelle technique ->knowledge/<sujet>.md(<= 40 lignes, extrait exécutable). - Laissez
part.py+ spec ré-exécutables. Proposez une idée adjacente (cerveau de boutiques) sans la démarrer. - Tout changement de skill/outil ->
tests/run_suite.sh(vérifications à réponses connues) et, pour les affirmations de capacité, le banc d'essai (forge grade,forge looks) -- prouvez que le système s'est amélioré.
La boîte à outils (forge <cmd>)
(Tronqué pour la traduction)
Remarque : Ce skill est en version complète. Pour une traduction complète du fichier, veuillez consulter le fichier
SKILL.mdoriginal. La traduction ci-dessus couvre l'essentiel de la logique et des commandes.
Traduit depuis l'anglais par un assistant IA spécialisé.