CommunityImagegithub.com

max-model : de l’idée au modèle 3D prêt à imprimer

Assistant de création de modèles 3D de l’idée jusqu’au fichier STL vérifié pour imprimantes FDM. Utilisez-le pour « modéliser / concevoir / fabriquer un <objet> à imprimer », « modéliser ceci en 3D », « CAO ceci », « support/boîtier/adaptateur/couvercle/support personnalisé », « fidget », « imprimé-en-place », « quelque chose qui bouge », « flexi <animal> », « figurine / statue / mascotte de <x> », « texte vers 3D », « gridfinity », « insert pour mon <objet> », « découper pour mon plateau », « est-ce que ça s’imprime », « calibrer mon imprimante », « voir en RA », « mettre mon nom dessus », « ajouter une boucle porte-clés », « ajouter des aimants », « réparer les parois fines », « adapter à ma tête », « fabrique-moi une boîte », « porte-clés », « panneau », « support de téléphone », « lithophane », « max model », « /max-model » ou « forge ». Code-CAD (build123d/OpenSCAD/bpy) + mécanismes vérifiés MechKit + texte-3D local + flexify + prédiction de défauts avant impression ; fournit un STL vérifié à votre slicer.

Qu'est-ce que max-model : de l’idée au modèle 3D prêt à imprimer ?

Ce skill transforme une idée exprimée en langage naturel en un modèle 3D vérifié et prêt à imprimer sur une imprimante FDM. Il couvre l'ensemble du flux de conception : depuis l'analyse du besoin (spécifications numériques, références visuelles) jusqu'à la génération du fichier 3MF ou STL, en passant par la vérification de la géométrie, l'analyse des porte-à-faux, le support automatique des mécanismes mobiles (articulations, engrenages, flexi) et la calibration des jeux d'impression. Il s'appuie sur plusieurs moteurs CAO (build123d, OpenSCAD, Blender) et propose des assistants dédiés pour le text-to-3D, le remix de fichiers STL, la découpe sur plusieurs plateaux, la création de boîtes, lithophanes et supports de téléphone. Il intègre un système de « prévol » (preflight) qui prédit les défauts d'impression et décide automatiquement de l'activation des supports, évitant ainsi les échecs courants comme les ponts soudés. Grâce à son benchmark interne, il atteint une IoU de 0,96 sur les pièces entièrement spécifiées et garantit que les mécanismes mobiles passent les tests de collision dès la première conception.

Compatible avec✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/marklkasdorf-del/max-model/tree/HEAD

Installed? Explore more Image skills: steipete/songsee, affaan-m/frontend-design, mattpocock/improve-codebase-architecture · View all 6 →

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation

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

  1. 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.
  2. Cahier des charges avant modèle pour les pièces personnalisées : d'abord spec.md + spec.json avec des critères de succès numériques.
  3. Un changement par itération, conservez chaque iter_NN/, maximum 6 par phase, puis re-planifiez.
  4. 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.
  5. Chaque impression reçoit forge preflight avant 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 aussi forge 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 ».
  6. 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.
  7. 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.
  8. 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 veutRouteOutils
modifier un TÉLÉCHARGEMENT : nom/texte dessus, boucle porte-clés, aimants, parois plus épaisses, adapter à une taille de tête, fond plat, miroirREMIX (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, lithophaneMAKE (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 basforge 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 Mechforge mech list/build , lib/mechkit/core.py
un animal flexiconcevoir un corps SDF (lib/sculpt.py) ou prendre une sculpture (un site de modèles/text3d) -> FLEXIFYforge flexify , forge sculpt
une figurine / mascotte / créature / statueTEXT3D (local, gratuit, ~3,5 min) ou trouver ; proposez les deuxforge 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 objetGRIDFINITY (+ PHOTOFIT pour une poche exacte)forge gridfinity , forge photofit
trop grand pour le plateauSPLIT avec goupilles + étiquettes de coutureforge split
« est-ce que ça s'imprimera / pourquoi ça a échoué »PREFLIGHT (+ carte de chaleur)forge preflight , forge heat
le montrer / le vendreSHOWCASE + ARforge 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

  1. 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.
  2. 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.
  3. Ne demandez à l'utilisateur que ce qui ne peut pas être trouvé : UN message, <= 4 questions, chacune avec une valeur par défaut.
  4. Écrivez out/<nom>/spec.md + spec.json (modèles/). Les estimations sur les interfaces d'ajustement sont marquées estimate.
  5. 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

VoieUtiliser pour
b123d (par défaut)pièces fonctionnelles/dimensionnées/critiques pour l'ajustement, boîtiers, modules MechKit
scadpiè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)
bpyrendus, 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.py profil 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

  1. 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.
  2. 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_gap dans 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> puis forge 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.
  3. 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_cmd dans knowledge/printer.json pour que preflight --slice / plate --slice rapportent le temps et les grammes.)
  4. 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.
  5. Ne commencez jamais une impression sans l'accord de l'utilisateur : « Plateau libre ? Démarrage de , ~, g. »
  6. 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

  1. Une ligne après l'impression : « Qu'est-ce qui n'allait pas ? (ajustement / aspect / résistance / qualité d'impression / rien) ». Lisez toute photo.
  2. Jeux -> forge fit set ... (+ une ligne dans fit-log.md). Autres chiffres -> fit-log.md / print-tolerances.md [V].
  3. 1-3 lignes dans knowledge/lessons.md (date · projet · leçon · phase). Nouvelle technique -> knowledge/<sujet>.md (<= 40 lignes, extrait exécutable).
  4. Laissez part.py + spec ré-exécutables. Proposez une idée adjacente (cerveau de boutiques) sans la démarrer.
  5. 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.md original. La traduction ci-dessus couvre l'essentiel de la logique et des commandes.


Traduit depuis l'anglais par un assistant IA spécialisé.

Skills associés