max-model: ideia -> peça verificada e pronta para impressão
O pedido: o que o usuário digitou após /max-model (ou a coisa que ele descreveu).
FORGE = diretório deste skill (por exemplo, ~/.claude/skills/max-model); cada caminho abaixo é relativo a ele. Um CLI: $FORGE/bin/forge <cmd> (lista no final).
Ambientes (veja README): venv CAD $FORGE/.venv-cad (build123d, trimesh, manifold3d, usd-core, opencv, sdf; substitua por FORGE_CAD_PY), venv AI opcional $FORGE/.venv-ai (torch, diffusers, CLIP; substitua por FORGE_AI_PY) para text3d e looks.
Impressora: knowledge/printer.json (mesa, bico, camada; exemplos em knowledge/printers/). O fatiamento é de escolha do usuário: o forge termina com um STL verificado mais um veredito de pré-impressão (suportes ligado/desligado). Um slicer_cmd opcional permite que o forge informe o tempo de impressão e os gramas.
O que o benchmark de 2026-10-17 mostrou (knowledge/benchmark-2026-10-17.md): peças exatas de uma especificação completa atingem 0,96 de IoU de voxels versus o STEP real para peças totalmente especificadas, mas apenas 0,41-0,82 onde os detalhes foram adivinhados; mecanismos impressos no lugar passaram nas varreduras de movimento na primeira construção com zero de lacunas fundidas (ainda não validado por impressões reais na impressora do autor); A APARÊNCIA de coisas icônicas/orgânicas é o ponto fraco quando modelado à mão (um capacete modelado à mão saiu como um ovo). Os pipelines text3d / looks / remix existem para cobrir esse ponto fraco com ferramentas em vez de força de vontade: passagem de referência + Pontuação de Aparência, texto local -> 3D para figuras orgânicas, flexify em cima de esculturas, encontrar e remixar para adereços icônicos.
Regras que nunca se dobram
- Números primeiro, imagens depois. Nenhuma afirmação sobre geometria, a menos que venha da saída de uma ferramenta (verificar/autoteste/pré-impressão/classificar JSON) ou de uma renderização que você leu nesta iteração. Nunca descreva um STL de memória.
- Especificação antes do modelo para peças personalizadas:
spec.md+spec.jsoncom critérios de sucesso numéricos primeiro. - Uma alteração por iteração, mantenha cada
iter_NN/, máximo 6 por fase, depois replaneje. - Qualquer coisa que se move é entregue com um auto-teste aprovado (varredura livre + controle de travamento obrigatório + folgas medidas). Sem exceções; é a razão pela qual os mecanismos são o ponto forte deste skill.
- Toda impressão recebe
forge preflightantes do fatiamento, e seu veredito decide os suportes. NO-GO = corrigir geometria/orientação primeiro. Peças impressas no lugar / com múltiplos corpos também recebemforge export <stl>e você entrega o 3MF, não o STL: os suportes automáticos de um fatiador preenchem as lacunas e soldam as peças (a primeira impressão do CYCLO-11 morreu assim), e um STL não pode carregar "suportes desligados". - Ambiente: Blender, OpenSCAD e GPU torch (text3d, looks) podem travar dentro de algumas sandboxes de agente que escondem a GPU (Blender sai com 139). Se uma etapa der segmentation fault, execute-a fora da sandbox. Python puro (build123d, manifold3d, trimesh) roda em qualquer lugar.
- Relate marcos brevemente (rota escolhida, primeira renderização, pronto para impressão com tempo/gramas/veredito, bloqueador): uma linha cada, diga o que o usuário deve decidir. Envie imagens-chave (sheet.png, poster.png) e arquivos de RA quando o canal suportar arquivos.
- Nunca inicie uma impressão ou gaste dinheiro sem a aprovação explícita do usuário. Modelos baixados: respeite a licença (CC BY-NC = sem venda).
Início da sessão (30 segundos)
ls $FORGE/knowledge/; cat $FORGE/knowledge/{fit-log.md,lessons.md,printer.json}; $FORGE/bin/forge fit show
$FORGE/bin/forge doctor # linha vermelha -> corrija ou relate antes de modelar
Se forge fit show disser que pip_gainda é [R] (padrão de pesquisa, não medido nesta impressora): mencione uma vez que o Cartão de Ajuste (forge mech build fitcard, cerca de uma hora, ~16 g) calibra cada parte móvel e se ofereça para imprimi-lo.
FASE 0 — ROTA (escolha o pipeline, não o martelo)
A primeira correspondência vence. Informe a rota ao usuário em uma linha.
| Ele quer | Rota | Ferramentas |
|---|---|---|
| alterar um DOWNLOAD: nome/texto, loop de chaveiro, ímãs, paredes mais grossas, escala para tamanho de cabeça, fundo chato, espelhar | REMIX (baixar, depois atualizar) | `forge remix text |
| uma coisa prática a partir dos números do usuário: caixa (tampa deslizante/pressão), chaveiro com nome, placa, suporte de telefone, suporte para um objeto, litofania | FAZER (geradores; folgas de fit.json; caixas são verificadas por movimento) | `forge make box |
| muitas cópias / um projeto inteiro em uma impressão (venda) | PLATE (empacota a mesa, custo por item) | `forge plate <stl...> --fill |
| uma coisa famosa existente (um capacete de filme, adereço, brinquedo popular, estojo para um dispositivo popular) | ENCONTRAR (pesquise em um site de modelos como Printables/Thingiverse você mesmo), depois REMIX (escala, dividir, ímãs, ajuste) | pesquisa na web, forge split, forge preflight --orient |
| um capacete ORIGINAL para vestir ("um capacete que ninguém mais tem") | TEXT3D --helmet: corte do pescoço, dimensionado para uma cabeça que você especificar (padrão 160x190 + acolchoamento), casca de 3 mm, placa frontal + 4 bosses de ímã, fatias com costura para baixo | forge text3d "<estilo> helmet" --helmet |
| algo que se move (fidget, dobradiça, engrenagens, giroscópio, balisong, pass-through, clicador) | MECHKIT se um módulo servir, caso contrário modele com a API Mech | forge mech list/build, lib/mechkit/core.py |
| um animal flexi | projetar um corpo SDF (lib/sculpt.py) ou pegar uma escultura (um site de modelos/text3d) -> FLEXIFY | forge flexify, forge sculpt |
| uma figura / mascote / criatura / estátua | TEXT3D (local, gratuito, ~3,5 min) ou encontrar; ofereça ambos | forge text3d "<ideia>" [--base NOME] |
| uma peça funcional de ajuste personalizado (suporte, suporte, adaptador, estojo para o objeto do usuário) | MODELAR (fases 1-6 abaixo) | pista build123d, forge run, forge parts-find |
| organizar gavetas / um encaixe para um objeto | GRIDFINITY (+ PHOTOFIT para um bolso exato) | forge gridfinity, forge photofit |
| muito grande para a mesa | DIVIDIR com pinos + rótulos de junta | forge split |
| "isso vai imprimir / por que falhou" | PRÉ-IMPRESSÃO (+ mapa de calor) | forge preflight, forge heat |
| exibir / vender | SHOWCASE + RA | forge showcase, forge ar |
Notas de qualidade honestas para roteamento (medidas pelo autor, 2026-10-17): figuras do text3d são legíveis (axolote, dragão, mascote fantasma, tubarão) mas os detalhes finos são suaves a 60 mm e precisam de suportes; flexi-de-texto via relevo é grosso (pernas finas se fundem) -> prefira um corpo projetado em SDF ou uma escultura humana para flexis; formas orgânicas modeladas à mão ainda parecem borrões -> nunca modele um capacete/personagem à mão, use ENCONTRAR+REMIX ou TEXT3D.
FASE 1 — BRIEFING (peças personalizadas): especificação com números
- Qualquer coisa que o usuário já lhe disse sobre o objeto exato (modelo do dispositivo, medidas, fotos). 1b. PASSAGEM DE REFERÊNCIA para qualquer coisa com um nome: pesquise 6-9 imagens de referência / designs mais bem avaliados da coisa real, VEJA-as; escreva "## Forma" em spec.md (proporções, 2-3 características marcantes, qual variante). Pular isso fez com que o balisong de bancada fosse um bastão chato e o fidget espiral o brinquedo errado.
- Dimensões: pesquise, nunca lembre (bench: recordou polia 0,41 IoU).
forge parts-find "<peça>" [--download]+forge step2stl; folhas de dados via busca na web; pesquisa na web para imagens de referência. Cite fontes em spec.md. Para um objeto que o usuário possui e que não pode ser pesquisado: PHOTOFIT (forge photofit mat-> imprima o Tapete de Calibração a 100% -> foto -> contorno dentro de ~0,3 mm) supera pedir números de paquímetro. - Pergunte ao usuário apenas o que não pode ser encontrado: UMA mensagem, <= 4 perguntas, cada uma com um padrão.
- Escreva
out/<nome>/spec.md+spec.json(templates/). Estimativas em interfaces de ajuste são marcadas comoestimate. - Poste "especificação pronta: -- OK para construir?"; prossiga em silêncio de baixo risco com os padrões declarados.
FASE 2 — PISTA + PLANO
| Pista | Use para |
|---|---|
| b123d (padrão) | peças funcionais/dimensionadas/críticas para ajuste, invólucros, módulos MechKit |
| scad | peças triviais ou um primitivo BOSL2 (roscas) |
sdf (lib/sculpt.py) | corpos orgânicos que você mesmo projeta: uniões suaves, base plana, sempre estanque (receita de gecko) |
mesh (lib/meshkit.py, manifold3d) | editar downloads/malhas de IA, booleanos grandes, flexify, dividir (OCC engasga com esculturas de 100k triângulos) |
| bpy | renderizações, remalhamento de voxel, arte com muito texto |
Planeje em comentários no topo do arquivo da peça: características como funções, bloco de parâmetros em mm, folgas de fit.get("pip_gap"/"slide_gap"/...) (nunca codifique 0,3), origem no centro inferior em Z=0, orientação de impressão projetada (maior face plana para baixo, balanços <= 45, pontes < 18, paredes >= 2,0), ordem de construção, lista de asserções. |
FASE 3 — CONSTRUIR EM PEQUENOS PASSOS
Por iteração: uma alteração -> forge run part.py --lane <pista> --spec spec.json --name <nome> -> leia verify.json/REPORT.md (volume/bbox mudou o que a alteração deveria causar? nenhuma mudança = booleano descartado) -> leia sheet.png uma vez -> critique -> próxima alteração.
- Peças móveis = a API Mech (
lib/mechkit/core.py):Mech(nome, partes, fixas, [Movimento(nome, acionamento, [Movimentos...], controle=[...])])->selftest()varre cada pose, executa o controle de travamento obrigatório ao longo de todo o seu caminho, mede as folgas exatamente. Colisão à prova de construção supera a verificação: arcos/esferas centrados no pivô mantêm a folga constante (giroscópio, juntas flexi); mantenha o volume varrido de cada movimento em seu próprio lado de um plano (pivôs de balisong). Engrenagens:lib/gears.py. Medido, não declarado:forge mech ratio <nome> [--motion M --driven PART --driver PART]posiciona o mecanismo, libera a saída e faz a bissecção para o intervalo livre de contato -> relação medida + folga (ratio.json, saída 3 se discordar da relação declarada). Redutor cicloidal:forge mech build cyclo11(lib/cycloid.pyperfil exato + verificação de rebaixo). Renders de estúdio:forge showcase --style studio --still hero|cutaway|exploded,--ghost,--annotate`. - Pré-impressão no loop para qualquer coisa com balanços:
forge preflight out/<nome>/<nome>.stl. - Objetos nomeados: Pontuação de Aparência após a passagem de mecânica:
forge looks out/<nome>/<nome>.stl --target "<coisa>"(CLIP em renderizações limpas; validado: classificou humano > v2 > v1 balisong). < 30% = itere a FORMA (proporções, características marcantes), não a mecânica. Compare v1 vs v2 com ela em vez de adivinhar. - Regras rígidas: nunca julgue de uma visão; sobreponha cortadores em 0,05 mm (faces coplanares deixam peles de espessura zero que SOLDAM pinos: folga medida 0,0 em vez de 0,3); mesma falha duas vezes -> imprima números de sub-partes e rediagnostique; limite de 6 iterações, depois replaneje ou encaminhe para ENCONTRAR. Termine quando a verificação passar em cada chave de especificação, o autoteste passar (movedores), a pré-impressão for GO/GO+SUPORTES, lista de verificação visual toda sim.
FASE 4 — AJUSTE
- Calibração primeiro: as folgas de impressão no lugar vêm de
fit.json. Até que pip_gap seja [V], todo projeto PIP carrega uma PRECAUÇÃO de pré-impressão. O Cartão de Ajuste mede pip_gap (spinners .15-.40) e pip_vgap (dobradiças .25-.45) em uma impressão: depois dele, pergunte "menor número que gira livremente após uma torção firme?" ->forge fit set pip_gap <n> --from "fitcard <data>"(e pip_vgap). Toda construção MechKit/flexify/gridfinity o lê automaticamente. - Peças de encaixe / peças ao redor do objeto do usuário: verificação de pose montada
bin/verify --assembly a.stl b.stl --clearance <fit> --move-b=x,y,z; dummy do objeto de photofit/parts-find. - Amostra apenas para um tipo de interface que o Cartão de Ajuste não cobre (roscas, encaixes de pressão, encaixes de pressão) ou dimensões estimadas: <= 10 min, 3 variantes, rótulos em relevo.
FASE 5 — PREPARAÇÃO DE IMPRESSÃO + ENTREGA
forge preflight <stl> [--slice]-> veredito + decisão de suportes. Peças orgânicas/inclinadas:forge preflight <stl> --orient(tenta inclinações; um capacete queria ~20 graus).forge heat <stl>faz o mapa de calor de suporte vermelho/amarelo para mostrar a ele.- Suportes = chamada da pré-impressão: GO -> desligado; GO+SUPORTES -> ligado/automático; NO-GO -> corrija primeiro (contato de faca, lacunas fundidas, não encaixa ->
forge split). "SUPORTES: DESLIGADO (obrigatório)" = armadilha de suporte automático (uma parte inferior plana < 30 graus da horizontal fica a < 2 mm sobre um corpo DIFERENTE;support_angle/support_trap_gapno perfil da impressora): os suportes devem permanecer DESLIGADOS ou eles soldam a lacuna. 2b. Sempre, antes de entregar um arquivo impresso no lugar / com vários corpos a um usuário:forge preflight <stl>depoisforge export <stl>(segue automaticamente o veredito; o nome termina em_SUPPORTS-OFF.3mf/_SUPPORTS-ON.3mf). Dê a ele o 3MF e diga: abra este arquivo, verifique se a caixa de Suporte corresponde ao nome do arquivo, não altere mais nada. Se a pré-impressão for NO-GO porque precisa de suportes E os suportes soldariam, corrija a geometria (chanfre partes inferiores planas a 45 graus, reoriente) antes de exportar. - Fatia o 3MF exportado (ou o STL para peças simples de corpo único) no SEU fatiador de escolha com a decisão de suportes da etapa 2 e seu perfil normal; o forge apenas define a caixa de seleção de suportes, através do 3MF. (Opcional: defina
slicer_cmdemknowledge/printer.jsonpara quepreflight --slice/plate --slicerelatam tempo e gramas.) - Mostre ao usuário: folha ou pôster de showcase + tempo/gramas (se o hook estiver definido) + veredito + receita de uma linha. Ofereça
forge ar <stl>(USDZ: abre como uma pré-visualização em tamanho real no iPhone/Vision Pro; GLB para Quest) quando tamanho/ajuste for a questão. - Nunca inicie uma impressão sem a aprovação do usuário: "Mesa livre? Iniciando , ~, g."
- Relate " pronto para impressão: , g, ." Vendendo?
forge showcase <dir>escreve mp4/gif + listing.md (custo, preço sugerido, lembrete de licença).
FASE 6 — FEEDBACK + APRENDIZADO
- Uma linha após imprimir: "O que estava errado? (ajuste / aparência / resistência / qualidade de impressão / nada)". Leia qualquer foto.
- Folgas ->
forge fit set ...(+ uma linha em fit-log.md). Outros números -> fit-log.md / print-tolerances.md [V]. - 1-3 linhas em
knowledge/lessons.md(data · projeto · lição · fase). Nova técnica ->knowledge/<topic>.md(<= 40 linhas, trecho executável). - Deixe
part.py+ spec executáveis novamente. Ofereça uma ideia adjacente (cérebro de loja) sem iniciá-la. - Qualquer alteração de skill/ferramenta ->
tests/run_suite.sh(verificações de resposta conhecida) e, para reivindicações de capacidade, o bench (forge grade,forge looks) -- prove que melhorou.
A caixa de ferramentas (forge <cmd>)
Lide com o...