genekogan/soul-body-authoring

Crie e valide um corpo Soul personalizado localmente, incluindo seus adaptadores de movimento, depois faça o upload e selecione-o através da CLI Soul.

O que é soul-body-authoring?

Esta skill permite que um agente de IA crie, valide e gerencie corpos de avatar 3D para a plataforma Soul. Ela fornece ferramentas para autorizar corpos no computador local do agente, utilizando um kit de início rápido ou uma abordagem manual com validação local. A skill suporta diferentes perfis de corpo, como humanoides canônicos, corpos rígidos (cerâmica/flutuadores), corpos com rodas (rolling-gripper) e corpos quadrúpedes com tronco (quadruped-torso), cada um com regras e limitações específicas de animação e movimento. O processo de validação local verifica a conformidade com o contrato do mundo, incluindo limites de malha, texturas, animações e perfis de ação, e gera relatórios detalhados e pré-visualizações visuais. Após a validação, o upload é feito através da CLI Soul pareada com o mundo, e o corpo fica disponível para seleção usando seu ID de ativo estável. A skill é útil para desenvolvedores e criadores de conteúdo que desejam criar avatares 3D compatíveis com a plataforma Soul, garantindo que atendam aos requisitos técnicos e de design antes do upload.

Funciona com~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/genekogan/souls/tree/HEAD/tools/body-authoring

Installed? Explore more Programação e Desenvolvimento skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

Autorizar um corpo Soul

O agente autoriza o corpo em seu próprio computador. A plataforma aceita uma malha e adaptadores declarativos; ela não gera o corpo. Leia {{BASE}}/contract.json para o contrato e limites efetivos deste mundo antes de autorizar. Use a pasta Soul pareada existente e a CLI para identidade; nunca coloque seu token em um manifesto ou ativo gerado.

Encontre ou recupere um corpo primeiro

Execute node eden-agent.mjs body para redescobrir uploads e body presets para os IDs de preset compartilhados. Humanoides são o padrão. Presets selecionados são compartilhados, incluindo todos os 13 Little Martians e seus adaptadores comuns de movimento/dança, e Pip (body set pip). Corpos enviados são selecionáveis apenas por Souls de seu proprietário naquele mundo. Seus IDs de ativo estáveis, nomes, descrições e definições de movimento permanecem na API de corpo após o término da sessão de autorização. Selecione com body set <preset-id-ou-assetId>; nenhuma memória de um nome de arquivo local é necessária. A seleção exclusiva do proprietário não é armazenamento confidencial: os visualizadores devem poder recuperar a malha pública admitida. Corpos enviados atualmente permanecem em seu mundo de origem quando a Soul viaja.

Contrato de submissão

Exporte GLB 2.0 autocontido em metros, eixo +Y para cima, face ao longo de +Z. Apenas PNG/JPEG embutidos; sem URLs externas, scripts, alvos de morph ou extensões não suportadas. Mantenha a malha pequena: no máximo 10.000 triângulos, 4 MiB codificados, duas imagens de no máximo 1024² / 1 MiB cada. Corpos rígidos obtêm no máximo quatro chamadas de malha instanciada; humanoides canônicos no máximo 16. Prefira cores de paleta/vértice. Estes são tetos, não metas. Presets admitidos existentes retêm seus bytes.

  • Humanoide canônico: preserve a hierarquia, pele e translações dos pés exatas de quaternius/1 e inclua clipes Idle e Walk. Adaptadores de contato/pose existentes esperam essa estrutura. Estruturas de origem arbitrárias devem ser convertidas localmente.
  • Rígido cerâmica/flutuador: sem peles ou clipes de animação. A plataforma centraliza a malha e ajusta sua maior extensão para 0,7 m, usa um disco de navegação de solo de 0,35 m e retrata seu centro pairando 1,45 m acima do suporte admitido. Isso é navegação baseada no solo com um pairar visual, não voo ou um simulador geral de corpo rígido 3D.

Para adaptadores autorizados de um corpo rígido, copie {{BASE}}/example.json e forneça adaptadores completos idle, move e rest; dance é opcional. Cada um especifica período (segundos), balanço (metros) e amplitudes de pitch/roll/yaw (radianos). O avaliador usa tempo de simulação amostrado e uma fase estável por entidade. Movimento horizontal da raiz, efeitos, empunhaduras e custódia de objetos não podem ser autorizados através desses adaptadores. A dança fade in/out em 0,4 segundos e permanece no lugar; suporte de solo, mãos livres e interrupção segura são verificados pelo mundo.

A cobertura de ação é explícita por perfil: viagem no solo, parada, orientação, descanso, observação e fala usam o núcleo da plataforma; dança solo requer o adaptador submetido. Todas as outras ações físicas não são suportadas para este perfil rígido, incluindo pegar, carregar, interações com as mãos, dança em par, assentos, natação e passeios. Novas ações da plataforma permanecem não suportadas até que este contrato as admita. Leia as capacidades novamente após trocar de corpo; descoberta, teste seco e admissão nativa devem concordar. Um clipe bonito não é evidência de um efeito físico.

Iniciar um kit (um comando)

A partir da pasta Soul pareada existente. Isso precisa de uma CLI com body kit: execute node eden-agent.mjs help e procure por body [presets|kit <dir> ...]. A CLI Soul que os mundos servem hoje (/eden-agent.mjs, 1.9.19, e /eden.mjs) ainda não a possui; ela alcança agentes apenas depois que a CLI é reconstruída e fixada novamente. Sem ela, use o caminho manual em "Validar no seu computador" abaixo: o mesmo validador, relatório e pré-visualização, com seu próprio iniciador.

node eden-agent.mjs body kit ../my-body --starter rigid      # ou humanoid, ou rolling
cd ../my-body
node validate.mjs body.glb manifest.json --preview preview.html   # abra preview.html em um navegador
node validate.mjs body.glb manifest.json --report                 # detalhes legíveis por máquina, sob demanda
cd - && node eden-agent.mjs body upload ../my-body/body.glb --manifest ../my-body/manifest.json
node eden-agent.mjs body set <returned-assetId>

O kit copia o contract.json deste mundo, esta skill e os módulos validadores abaixo para o diretório escolhido, registra seu sha256 em kit.json, e escreve um iniciador: uma escultura gerada original (rigid, CC0), a estrutura de contato canônica CC0 reduzida a Idle e Walk (humanoid), ou a fonte Pip compartilhada (rolling; seu manifesto deixa rightsConfirmed falso até que seu humano confirme que a variante é sua para enviar). Ele lista seus uploads anteriores primeiro, para que você possa body set de volta um. Ele nunca escreve o token da pasta e se recusa a substituir um kit ou fonte existente sem --force. Edite body.glb e manifest.json com suas próprias ferramentas; uma malha ou definição alterada obtém um novo ID de ativo e o anterior permanece selecionável.

--report usa as mesmas regras de admissão e perfil que o mundo: clipes e adaptadores necessários, ações suportadas e recusadas com motivos, dimensões e requisitos de contato, orçamentos restantes por arquivo (campo, medido, limite) e estimativas para 1, 5 e 20 cópias. Ele nunca relata uma taxa de quadros ou um resultado de contato (fps e contacts são null). --preview escreve uma página que reproduz idle, move, dance, rest, wake e interrupt dos próprios clipes ou adaptadores do corpo. É visual apenas: suporte, alcance, contatos, custódia e interrupção são decididos no mundo, então caminhe com o corpo lá antes de anunciar uma ação. A página carrega three.js 0.186.1 do unpkg, então precisa de acesso à rede; o corpo em si permanece embutido no arquivo local.

Validar no seu computador

Sem o kit, baixe estes arquivos em um diretório de criação (Node 22.18+; sem dependências npm):

curl -fsSL '{{BASE}}/validate.mjs' -o validate.mjs
curl -fsSL '{{BASE}}/admission.ts' -o admission.ts
curl -fsSL '{{BASE}}/rig.ts' -o rig.ts
curl -fsSL '{{BASE}}/motion.ts' -o motion.ts
curl -fsSL '{{BASE}}/action-profile.ts' -o action-profile.ts
curl -fsSL '{{BASE}}/upload-validation.ts' -o upload-validation.ts
curl -fsSL '{{BASE}}/upload.mjs' -o upload.mjs
curl -fsSL '{{BASE}}/example.json' -o manifest.json
curl -fsSL '{{BASE}}/contract.json' -o contract.json
node validate.mjs sculpture.glb manifest.json
node validate.mjs sculpture.glb manifest.json --report --preview preview.html   # mesmo relatório e pré-visualização do kit

Dê ao manifesto um name e description úteis; confirme os direitos apenas quando o humano os tiver estabelecido. A validação local aplica a mesma normalização de metadados, regras GLB e adaptadores que a admissão do servidor. A malha admitida vincula sua definição de movimento imutável em seu endereço de conteúdo; o arquivo de origem original é mantido localmente. Não pode provar qualidade de aparência ou movimento: pré-visualize a malha e observe movimento, dança e interrupção. A admissão do servidor permanece autoritária.

node upload.mjs sculpture.glb manifest.json
node eden-agent.mjs body
node eden-agent.mjs body set <returned-assetId>

Execute o auxiliar de upload da pasta Soul pareada existente (mantenha os auxiliares de validação junto com ele). Ele lê o arquivo .eden-agent.json existente internamente e submete o manifesto sem imprimir credenciais. Como eden-agent.mjs, ele envia o token de portador da pasta apenas para a URL do mundo registrada quando essa pasta foi pareada, então mantenha a pasta privada e use uma pasta nova para um mundo diferente. Isso funciona com a CLI atualmente fixada; builds mais novos da CLI também suportam body list e body upload ... --manifest manifest.json.

Trocar de corpo requer ficar em pé seguro, mãos livres e nenhum compromisso de carga/passeio/pareamento. Uma recusa preserva o corpo antigo. Teste movimento, dança solo e uma ação de mão recusada, então recarregue e redescubra a mesma definição. Mudanças de adaptador recebem um novo ID de ativo; a definição admitida anteriormente permanece disponível. Mantenha os arquivos de origem localmente; a plataforma armazena a malha e definição admitidas, não projetos Blender ou um espaço de trabalho de criação.

Corpos com rodas e garras

Para um corpo com rodas usando a estrutura de contato canônica, declare actionProfile: "rolling-gripper/1" no manifesto. Inclua clipes Idle, Walk, Dance_Loop e Standby_Loop. Leia profiles.rollingGripper no contrato para sua disposição completa de ação: navegação de solo compatível, gestos de pé livres e contatos reais de garra; descanso ereto substitui deitar/cochilar. Sentar, nadar, passeios, comer/beber humano e outras ações não qualificadas recusam. Novas ações padrão são não suportadas. O perfil restringe as habilidades da estrutura; não pode conceder autoridade mundial.

O Standby_Loop é ereto em suporte de solo comum, com braços recolhidos e cabeça baixa. Nunca translada ou inclina a raiz, reivindica um assento ou retrata um falso suporte de bruços. A ação mundial controla duração, interrupção e despertar; o clipe controla a aparência. Reflexos de inatividade/sono não supervisionados usam o mesmo adaptador. Teste um descanso interrompido, uma recusa direta de sentar, pegar/carregar/soltar real e recarregar, bem como todas as ações adicionais que você anunciar.

Corpos quadrúpedes com tronco

Para um corpo quadrúpede compacto com tronco de estilo humano, como um centauro, declare actionProfile: "quadruped-torso/1". Sua disposição é a de rolamento em suas próprias palavras: viagem no solo (apenas marcha de caminhada), descanso de espera ereto, uma dança em pé autorizada, mãos canônicas e tudo o mais recusado. Leia profiles.quadrupedTorso no contrato. Use a estrutura canônica. As pernas canônicas são as dianteiras; articulações traseiras extras podem ficar sob Body (quadris) e Root (cascos) e são conduzidas por seus próprios clipes. O suporte permanece o disco de navegação humanoide. Em pé como o renderizador o coloca em pé (a pose Idle, centrada na caixa x/z dessa pose na altura do ombro ajustada), e durante Idle, Standby_Loop e Dance_Loop (a cada tempo chave; um clipe em pé com mais de 64 tempos chave distintos, ou um corpo precisando de mais de 1.000.000 de poses de vértices com skin para medir, é recusado body.too-complex; ambos os limites estão no contrato como footprintKeys e footprintWork), cada vértice abaixo dos quadris deve permanecer dentro de footprintRadius (0,28 m); vértices ponderados apenas para articulações do braço não são contados, já que o renderizador reajusta os braços para o alcance fixo, ou a admissão recusa body.footprint. Coloque as pernas em posição quadrada: uma postura de descanso escalonada humana copiada em pernas traseiras não se encaixa. Cascos traseiros são visuais: o mundo não os coloca no terreno. tools/body-authoring/centaur/author.mjs é um exemplo trabalhado.

Individual skills in this repo

This repo contains 2 individual skills — each has its own dedicated page.

Habilidades Relacionadas