SPELL / Documentação
← Site principal

Comandos CLI

Comandos principais

ComandoO que faz
spellcomp compile .Compila o projeto inteiro — descobre o arquivo-índice por convenção de nome
spellcomp compile <arquivo>Compila um arquivo específico (arquivo-índice ou módulo)
spellcomp check .Valida a spec e verifica integridade dos .md gerados — sem gerar nenhum arquivo
spellcomp infoExibe mapa do projeto: fases, módulos, blocos declarados, status
spellcomp add <projeto> <modulo.spell>Cria um módulo e registra no bloco Arquivos { } do arquivo-índice
spellcomp remove <projeto> <modulo.spell>Remove um módulo após verificar dependências
spellcomp --versionExibe a versão instalada do spellcomp
spellcomp --helpExibe ajuda dos comandos disponíveis

Flags do compile

FlagEfeito
--output pasta/Especifica a pasta de saída para os arquivos gerados. Padrão: diretório do projeto.
--readableGera output legível por humanos. Padrão: formato compacto (~40–63% menos tokens).
--forceSobrescreve .md modificados diretamente sem abortar. As edições diretas são perdidas.
Exemplos de uso
# Compilar projeto no diretório atual
spellcomp compile .

# Compilar com output legível para revisão
spellcomp compile . --readable

# Compilar e colocar output em pasta específica
spellcomp compile . --output ./dist

# Sobrescrever .md modificados diretamente (edições serão perdidas)
spellcomp compile . --force

# Compilar um módulo específico
spellcomp compile modulo-usuarios.spell

# Validar sem gerar arquivos (CI/CD)
spellcomp check .

# Ver mapa completo do projeto
spellcomp info

# Adicionar módulo e registrar no índice
spellcomp add agendamedica modulo-exames.spell

# Remover módulo (com verificação de dependências)
spellcomp remove agendamedica modulo-exames.spell

Símbolos de diagnóstico

O spellcomp usa quatro símbolos para classificar as mensagens de diagnóstico. Aparecem nos comandos compile, check e info:

SímboloSignificadoAção necessária
✅ OKTudo em ordemNenhuma
ℹ️ INFOInferência aplicada — o compilador tomou uma decisão por ausência de declaraçãoVerificar se a inferência está correta
⚠️ AVISOSituação ambígua — pode funcionar, mas merece revisãoArquiteto deve revisar
❌ ERROImpede a geração correta do outputDeve ser corrigido antes de compilar

Formato dos arquivos gerados

Para um projeto chamado agendamedica, o compilador gera:

ArquivoConteúdoFormato
CLAUDE.mdArquivo de entrada do agente (nome varia pelo campo agente)Sempre legível
LEIAME.txtInstruções para o arquiteto humanoLegível
agendamedica-padroes.mdPadrões de Engenharia consolidadosCompacto ou --readable
agendamedica-dados.mdTodos os blocos DadosCompacto ou --readable
agendamedica-regras.mdTodos os blocos RegrasCompacto ou --readable
agendamedica-endpoints.mdTodos os blocos EndpointsCompacto ou --readable
agendamedica-telas.mdTodos os blocos TelasCompacto ou --readable
agendamedica-servicos.mdTodos os blocos ServicosOmitido se não declarado
agendamedica-seguranca.mdTodos os blocos SegurancaOmitido se não declarado

Valores do campo agente

O campo agente no sub-bloco Backend { } do bloco Tecnologia controla o nome do arquivo de entrada gerado:

ValorArquivo gerado
claude-code (padrão)CLAUDE.md
cursor.cursor/rules
aiderCONVENTIONS.md
copilot.github/copilot-instructions.md
nenhum(sem arquivo de entrada do agente)

Erros comuns e soluções

ErroCausaSolução
❌ bloco Projeto é singletonBloco Projeto { } declarado em mais de um arquivoManter o bloco apenas no arquivo-índice
❌ campo padroes duplicadoCampo padroes declarado mais de uma vez no mesmo Projeto { }Remover a declaração duplicada
❌ bloco X é de Padrões de EngenhariaBloco de Padrões de Engenharia (ex: Tecnologia) declarado fora do padroes.spellMover o bloco para o arquivo declarado em padroes:
❌ tabela X declarada mais de uma vezMesmo nome de tabela em dois módulos diferentesRenomear uma das tabelas ou consolidar num único módulo
❌ arquivo-índice não encontradoNenhum arquivo com mesmo nome do diretório + extensão .spellRenomear o arquivo-índice ou passar o caminho explicitamente