CommunityImagengithub.com

max-model: idea → pieza verificada y listo para imprimir

Estudio completo de modelo 3D, desde la idea hasta un STL verificado para impresoras FDM. Útil para modelar/diseñar/hacer cualquier objeto, mecanismos que se mueven, flexis, figuras, adaptadores, cajas, llaveros, litofanías, etc.

¿Qué es max-model: idea → pieza verificada y listo para imprimir?

Este skill, llamado max-model, transforma una idea o descripción textual en un modelo 3D listo para imprimir en impresoras FDM, siguiendo un flujo de trabajo robusto y verificado. Está diseñado para agentes de IA como Claude Code/Codex/Cursor y se ejecuta en el directorio FORGE (~/.claude/skills/max-model). Su núcleo es el modelado paramétrico con build123d/OpenSCAD/bpy, combinado con un banco de mecanismos verificados (MechKit) y herramientas locales de texto a 3D (text3d) y flexify. El skill prioriza números sobre imágenes: cada afirmación geométrica se respalda con herramientas de verificación (verify, selftest, preflight, grade). Incluye reglas estrictas como una iteración por cambio, máximo 6 iteraciones por fase, y la obligación de pasar una autoprueba para cualquier pieza móvil. También gestiona la orientación, división de modelos grandes, soportes (basados en el veredicto de preflight) y exportación a 3MF con la decisión de soportes incrustada. El skill se apoya en un archivo de calibración de la impresora (printer.json) y una tarjeta de ajuste (Fit Card) para medir espacios en mecanismos print-in-place. El resultado final es un STL/3MF verificado con un veredicto de preflight y, opcionalmente, un tiempo y peso estimados si se configura un comando de laminado.

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

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

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación

max-model: idea → pieza verificada y lista para imprimir

La petición: lo que sea que el usuario haya escrito después de /max-model (o la cosa que describió). FORGE = el directorio de este skill (ej. ~/.claude/skills/max-model); todas las rutas a continuación son relativas a él. Un solo CLI: $FORGE/bin/forge <cmd> (lista al final). Entornos (ver README): Entorno virtual CAD $FORGE/.venv-cad (build123d, trimesh, manifold3d, usd-core, opencv, sdf; se puede sobrescribir con FORGE_CAD_PY), entorno virtual AI opcional $FORGE/.venv-ai (torch, diffusers, CLIP; se puede sobrescribir con FORGE_AI_PY) para text3d y looks. Impresora: knowledge/printer.json (cama, boquilla, capa; ejemplos en knowledge/printers/). El laminado corre por cuenta del usuario: forge termina en un STL verificado más un veredicto de preflight (soportes activados/desactivados). Un hook opcional slicer_cmd permite que forge reporte el tiempo de impresión y los gramos.

Lo que mostró el benchmark del 2026-10-17 (knowledge/benchmark-2026-10-17.md): las piezas exactas de una especificación completa alcanzan un 0.96 de IoU de vóxeles con el STEP real para piezas totalmente especificadas, pero solo 0.41-0.82 cuando se adivinaron los detalles; los mecanismos print-in-place pasaron las pruebas cinemáticas en la primera construcción sin huecos fusionados (aún no validados en impresiones reales de la impresora del autor); el ASPECTO de cosas icónicas/orgánicas es el punto débil cuando se modelan a mano (un casco modelado a mano resultó ser un huevo). Los pipelines de text3d / looks / remix existen para cubrir ese punto débil con herramientas en lugar de fuerza de voluntad: pase de referencia + Puntuación de Aspecto, texto local a 3D para figuras orgánicas, flexify sobre esculturas, buscar y remezclar para accesorios icónicos.

Reglas que nunca se rompen

  1. Primero los números, después las imágenes. Ninguna afirmación sobre geometría a menos que provenga de la salida de una herramienta (verify/selftest/preflight/grade JSON) o de una representación que hayas leído en esta iteración. Nunca describas un STL de memoria.
  2. Especificación antes que modelo para piezas personalizadas: spec.md + spec.json con criterios de éxito numéricos primero.
  3. Un cambio por iteración, conserva cada iter_NN/, máximo 6 por fase, luego replanifica.
  4. Todo lo que se mueve se entrega con una autoprueba que pasa (barrido libre + control de atascamiento + espacios medidos). Sin excepciones; esa es la razón por la que los mecanismos son el punto fuerte de este skill.
  5. Cada impresión recibe forge preflight antes del laminado, y su veredicto decide los soportes. NO-GO = arreglar geometría/orientación primero. Las piezas print-in-place / de varios cuerpos también reciben forge export <stl> y entregas el 3MF, no el STL: los soportes automáticos del laminador llenarían los huecos y soldarían las piezas (la primera impresión de CYCLO-11 murió así), y un STL no puede llevar la instrucción "soportes desactivados".
  6. Entorno: Blender, OpenSCAD y torch con GPU (text3d, looks) pueden fallar dentro de algunos entornos aislados del agente que ocultan la GPU (Blender sale con 139). Si un paso da un fallo de segmentación, ejecútalo fuera del entorno aislado. Python puro (build123d, manifold3d, trimesh) funciona en cualquier lugar.
  7. Reporta los hitos brevemente (ruta elegida, primera representación, listo para imprimir con tiempo/gramos/veredicto, bloqueo): una línea cada uno, di lo que el usuario debe decidir. Envía imágenes clave (sheet.png, poster.png) y archivos AR cuando el canal lo permita.
  8. Nunca inicies una impresión ni gastes dinero sin la aprobación explícita del usuario. Modelos descargados: respeta la licencia (CC BY-NC = no vender).

Inicio de sesión (30 segundos)

ls $FORGE/knowledge/; cat $FORGE/knowledge/{fit-log.md,lessons.md,printer.json}; $FORGE/bin/forge fit show
$FORGE/bin/forge doctor                # línea roja -> arréglala o repórtala antes de modelar

Si forge fit show dice que pip_gap sigue siendo [R] (valor de investigación por defecto, no medido en esta impresora): menciona una vez que la Tarjeta de Ajuste (forge mech build fitcard, aproximadamente una hora, ~16 g) calibra cada pieza móvil, y ofrece imprimirla.


FASE 0 — RUTA (elige el pipeline, no el martillo)

Gana la primera coincidencia. Dile al usuario la ruta en una línea.

QuiereRutaHerramientas
cambiar una DESCARGA: texto/nombre, anilla para llavero, imanes, paredes más gruesas, escala para un tamaño de cabeza, fondo plano, espejoREMIX (descargar, luego mejorar)`forge remix text
una cosa práctica con las medidas del usuario: caja (tapa deslizante/presión), llavero con nombre, letrero, soporte para teléfono, soporte para un objeto, litofaníaMAKE (generadores; holguras de fit.json; las cajas se verifican cinemáticamente)`forge make box
muchas copias / un proyecto completo en una impresión (vender)PLATE (llena la cama, costo por pieza)`forge plate <stl...> --fill
una cosa famosa existente (un casco de película, accesorio, juguete popular, funda para un dispositivo popular)FIND (busca en un sitio de modelos como Printables/Thingiverse tú mismo), luego REMIX (escalar, dividir, imanes, ajustar)búsqueda web, forge split, forge preflight --orient
un casco ORIGINAL ("un casco que nadie más tiene")TEXT3D --helmet: recorte de cuello, tamaño para una cabeza que especifiques (por defecto 160x190 + acolchado), carcasa de 3 mm, placa frontal + 4 soportes para imanes, cortes en costura hacia abajoforge text3d "<estilo> helmet" --helmet
algo que se mueva (fidget, bisagra, engranajes, giroscopio, balisong, pasante, clicker)MECHKIT si hay un módulo que encaje, si no, modélalo con la API de Mecánicaforge mech list/build, lib/mechkit/core.py
un animal flexidiseña un cuerpo SDF (lib/sculpt.py) o toma una escultura (un sitio de modelos/text3d) -> FLEXIFYforge flexify, forge sculpt
una figura / mascota / criatura / estatuaTEXT3D (local, gratis, ~3.5 min) o buscar; ofrece ambasforge text3d "<idea>" [--base NOMBRE]
una pieza funcional personalizada (soporte, soporte, adaptador, funda para el objeto del usuario)MODEL (fases 1-6 a continuación)carril build123d, forge run, forge parts-find
organizar cajones / un inserto para un objetoGRIDFINITY (+ PHOTOFIT para un bolsillo exacto)forge gridfinity, forge photofit
demasiado grande para la camaSPLIT con pasadores + etiquetas de costuraforge split
"¿esto imprimirá? / ¿por qué falló?"PREFLIGHT (+ mapa de calor)forge preflight, forge heat
mostrarlo / venderloSHOWCASE + ARforge showcase, forge ar

Notas honestas de calidad para el enrutamiento (medidas por el autor, 2026-10-17): las figuras de text3d se leen claramente (ajolote, dragón, fantasma mascota, tiburón) pero los detalles finos son suaves a 60 mm y necesitan soportes; el flexi-from-text mediante relieve es tosco (las patas finas se fusionan) -> prefiere un cuerpo diseñado con SDF o una escultura humana para flexis; las formas orgánicas modeladas a mano siguen pareciendo borrones -> nunca modeles a mano un casco/personaje, usa FIND+REMIX o TEXT3D.

FASE 1 — BRIEF (piezas personalizadas): especificación con números

  1. Cualquier cosa que el usuario ya te haya dicho sobre el objeto exacto (modelo del dispositivo, medidas, fotos). 1b. PASE DE REFERENCIA para cualquier cosa con nombre: busca de 6 a 9 imágenes de referencia / diseños mejor valorados de la cosa real, MÍRALOS; escribe "## Forma" en spec.md (proporciones, 2-3 características distintivas, qué variante). Saltarse esto hizo que el balisong del banco fuera un palo plano y que el fidget en espiral fuera el juguete equivocado.
  2. Dimensiones: búscalas, nunca las recuerdes (banco: polea recordada 0.41 IoU). forge parts-find "<pieza>" [--download] + forge step2stl; hojas de datos mediante fetch web; búsqueda web de imágenes de referencia. Cita las fuentes en spec.md. Para un objeto que el usuario posee y no se puede buscar: PHOTOFIT (forge photofit mat -> imprime la Alfombrilla de Calibración al 100% -> foto -> contorno con ~0.3 mm de precisión) supera a pedir números con calibre.
  3. Pregunta al usuario solo lo que no se puede encontrar: UN mensaje, <= 4 preguntas, cada una con un valor por defecto.
  4. Escribe out/<nombre>/spec.md + spec.json (plantillas/). Las estimaciones en interfaces de ajuste se marcan estimate.
  5. Publica "especificación lista: <una línea> -- ¿OK para construir?"; procede en caso de silencio de bajo riesgo con los valores por defecto indicados.

FASE 2 — CARRIL + PLAN

CarrilUso para
b123d (por defecto)piezas funcionales/acotadas/críticas para el ajuste, carcasas, módulos MechKit
scadpiezas triviales o un primitivo BOSL2 (roscas)
sdf (lib/sculpt.py)cuerpos orgánicos que diseñes tú mismo: uniones suaves, base plana, siempre estancos (receta del gecko)
mesh (lib/meshkit.py, manifold3d)editar descargas/mallas de IA, booleanos grandes, flexify, dividir (OCC se ahoga con esculturas de 100k triángulos)
bpyrepresentaciones, remallado de vóxeles, arte con mucho texto
Planifica en comentarios al principio del archivo de la pieza: características como funciones, bloque de parámetros en mm, holguras de fit.get("pip_gap"/"slide_gap"/...) (nunca codificar 0.3), origen en el centro inferior en Z=0, orientación de impresión diseñada (la cara plana más grande hacia abajo, voladizos <= 45, puentes < 18, paredes >= 2.0), orden de construcción, lista de afirmaciones.

FASE 3 — CONSTRUIR EN PEQUEÑOS PASOS

Por iteración: un cambio -> forge run part.py --lane <carril> --spec spec.json --name <nombre> -> leer verify.json/REPORT.md (¿cambiaron volumen/bbox en lo que debería causar el cambio? ningún cambio = booleano omitido) -> leer sheet.png una vez -> criticar -> siguiente cambio.

  • Piezas móviles = la API de Mecánica (lib/mechkit/core.py): Mech(nombre, piezas, fijas, [Motion(nombre, accionamiento, [Move...], control=[...])]) -> selftest() barre cada pose, ejecuta el control de atascamiento a lo largo de todo su recorrido, mide los espacios exactamente. A prueba de colisiones por construcción es mejor que comprobar: arcos/esferas centrados en el pivote mantienen el espacio constante (giroscopio, juntas flexi); mantén el volumen barrido de cada móvil en su propio lado de un plano (pivotes de balisong). Engranajes: lib/gears.py. Medido, no declarado: forge mech ratio <nombre> [--motion M --driven PIEZA --driver PIEZA] posiciona el mecanismo, libera la salida y biseca para el intervalo libre de contacto -> relación medida + juego muerto (ratio.json, salida 3 si discrepa de la relación declarada). Reductor cicloidal: forge mech build cyclo11 (lib/cycloid.py perfil exacto + verificación de socavado). Representaciones de estudio: forge showcase <dir> --style studio --still hero|cutaway|exploded, --ghost, --annotate.
  • Preflight en el bucle para cualquier cosa con voladizos: forge preflight out/<nombre>/<nombre>.stl.
  • Objetos con nombre: Puntuación de Aspecto después del pase de mecánica: forge looks out/<nombre>/<nombre>.stl --target "<cosa>" (CLIP sobre representaciones limpias; validado: clasificó humano > v2 > v1 balisong). < 30% = iterar FORMA (proporciones, características distintivas), no mecánica. Compara v1 con v2 con ella en lugar de adivinar.
  • Reglas estrictas: nunca juzgues desde una vista; superpone cortadores 0.05 mm (las caras coplanares dejan pieles de espesor cero que SUELDAN pasadores: espacio medido 0.0 en lugar de 0.3); mismo fallo dos veces -> imprime números de subpiezas y rediagnostica; límite de 6 iteraciones luego replanifica o enruta a FIND. Termina cuando verify pase cada clave de especificación, selftest pase (móviles), preflight sea GO/GO+SUPPORTS, lista de verificación visual todo sí.

FASE 4 — AJUSTE

  • Calibración primero: los espacios de print-in-place provienen de fit.json. Hasta que pip_gap sea [V], cada diseño PIP lleva una PRECAUCIÓN de preflight. La Tarjeta de Ajuste mide pip_gap (giratorios .15-.40) y pip_vgap (bisagras .25-.45) en una sola impresión: después de ella, pregunta "¿el número más pequeño que gira libremente después de un giro firme?" -> forge fit set pip_gap <n> --from "fitcard <fecha>" (y pip_vgap). Cada construcción de MechKit/flexify/gridfinity lo lee automáticamente.
  • Piezas de acoplamiento / piezas alrededor del objeto del usuario: verificación de pose ensamblada bin/verify --assembly a.stl b.stl --clearance <ajuste> --move-b=x,y,z; dummy del objeto a partir de photofit/parts-find.
  • Cupón solo para un tipo de interfaz que la Tarjeta de Ajuste no cubra (roscas, encajes a presión, ajustes a presión) o dimensiones estimadas: <= 10 min, 3 variantes, etiquetas en relieve.

FASE 5 — PREPARACIÓN DE IMPRESIÓN + ENTREGA

  1. forge preflight <stl> [--slice] -> veredicto + decisión de soportes. Piezas orgánicas/inclinadas: forge preflight <stl> --orient (prueba inclinaciones; un casco quería ~20 grados). forge heat <stl> genera el mapa de calor de soportes rojo/amarillo para mostrárselo.
  2. Soportes = decisión de preflight: GO -> desactivados; GO+SUPPORTS -> activados/auto; NO-GO -> arreglar primero (contacto de filo de cuchillo, huecos fusionados, no encaja -> forge split). "SUPPORTS: OFF (obligatorio)" = trampa de soporte automático (una parte inferior plana a < 30 grados de la horizontal está a < 2 mm sobre un cuerpo DIFERENTE; support_angle / support_trap_gap en el perfil de la impresora): los soportes deben permanecer DESACTIVADOS o soldarán el hueco. 2b. Siempre, antes de entregar un archivo print-in-place / de varios cuerpos a un usuario: forge preflight <stl> luego forge export <stl> (sigue automáticamente el veredicto; el nombre termina en _SUPPORTS-OFF.3mf / _SUPPORTS-ON.3mf). Entrégales el 3MF y di: abre este archivo, comprueba que la casilla de Soporte coincide con el nombre del archivo, no cambies nada más. Si preflight es NO-GO porque necesita soportes Y los soportes soldarían, arregla la geometría (chaflana las superficies inferiores planas a 45 grados, reorienta) antes de exportar.
  3. Lamina el 3MF exportado (o el STL para piezas simples de un solo cuerpo) en TU laminador de elección con la decisión de soportes del paso 2 y tu perfil normal; forge solo establece la casilla de soportes, a través del 3MF. (Opcional: configura slicer_cmd en knowledge/printer.json para que preflight --slice / plate --slice reporten tiempo y gramos).
  4. Muestra al usuario: lámina o póster de showcase + tiempo/gramos (si el hook está configurado) + veredicto + receta de una línea. Ofrece forge ar <stl> (USDZ: se abre como vista previa a tamaño real en iPhone/Vision Pro; GLB para Quest) cuando el tamaño/ajuste sea la cuestión.
  5. Nunca inicies una impresión sin la aprobación del usuario: "¿Cama despejada? Comenzando , ~, g."
  6. Reporta " listo para imprimir: , g, ." ¿Vender? forge showcase <dir> escribe mp4/gif + listing.md (coste, precio sugerido, recordatorio de licencia).

FASE 6 — RETROALIMENTACIÓN + APRENDIZAJE

  1. Una línea después de que se imprima: "¿Qué falló? (ajuste / aspecto / resistencia / calidad de impresión / nada)". Lee cualquier foto.
  2. Espacios -> forge fit set ... (+ una fila en fit-log.md). Otros números -> fit-log.md / print-tolerances.md [V].
  3. 1-3 líneas en knowledge/lessons.md (fecha · proyecto · lección · fase). Nueva técnica -> knowledge/<tema>.md (<= 40 líneas, fragmento ejecutable).
  4. Deja part.py + especificación re-ejecutable. Ofrece una idea adyacente (mente de taller) sin iniciarla.
  5. Cualquier cambio en el skill/herramienta -> tests/run_suite.sh (comprobaciones de respuesta conocida) y, para afirmaciones de capacidad, el banco (forge grade, forge looks) -- demuestra que mejoró.

La caja de herramientas (forge <cmd>)

Lidera con...

Skills relacionados