Sema e um Protocolo de Governanca de Intencao para IA sobre software vivo em backend e front consumer.
Ela nao tenta substituir TypeScript, Python, Flask, FastAPI, NestJS, Next.js, ASP.NET Core ou qualquer stack real. O papel da Sema e outro: governar a camada de significado acima do runtime, com contrato explicito, vinculo rastreavel, fluxo, erro, efeito, garantia, execucao e contexto operacional para IA.
Em termos praticos, a Sema esta menos para "ferramenta legal de geracao" e mais para camada seria de navegacao operacional para agentes. Ela ajuda a IA a entrar em sistema vivo sem sair inventando regra, estado, erro, default ou comportamento de producao na base do chute.
Ela nao pretende substituir persistencia real, runtime, smoke test, observabilidade ou engenharia operacional. Ela governa como um agente entende, navega, altera e verifica software vivo com menos improviso e mais aderencia ao contrato.
Tecnicamente, a Sema continua sendo uma linguagem de intencao. Publicamente, o framing honesto e este: ela foi desenhada para IA operar sistema vivo com menos adivinhacao e mais verificacao. Leitura humana e subproduto aceitavel, nao objetivo principal.
- Sema nao existe para "fazer backend" ou "fazer frontend"
- Sema existe para governar a operacao semantica da IA sobre backend e front consumer
- na criacao ela ja ajuda bastante
- em edicao grande, continua e governada ela vira diferenca estrutural
- seu valor real aparece quando o trabalho deixa de ser "gerar alguma coisa" e passa a ser "mexer em software vivo sem fazer merda"
Se voce quer colocar a ferramenta para rodar sem perder tempo com setup escondido:
- instale Node.js LTS, porque o
npmvem junto - instale a CLI da Sema
- rode
sema doctor,sema iniciaresema ajuda-ia
Instalar Node.js + npm:
- via instalador oficial: nodejs.org
- Windows com
winget:winget install OpenJS.NodeJS.LTS - macOS com Homebrew:
brew install node - checagem rapida:
node -venpm -v
Instalar a CLI da Sema:
npm install -g @semacode/cli
sema --help
sema doctorPrimeiro teste:
mkdir sema-demo
cd sema-demo
sema iniciar
sema validar contratos/pedidos.sema --json
sema ajuda-iaEste repositorio nao foi montado para ergonomia humana como prioridade. Ele foi montado para IA encontrar contexto semantico canonicamente comprimido antes de sair cavando codigo cru.
Ordem canonica de leitura na raiz:
llms.txtSEMA_BRIEF.mdSEMA_INDEX.jsonAGENTS.mdREADME.mdllms-full.txt
Roteamento por capacidade:
- IA pequena ou gratuita:
llms.txt->SEMA_BRIEF.micro.txt->SEMA_INDEX.json->AGENTS.md - IA media:
llms.txt->SEMA_BRIEF.curto.txt->SEMA_INDEX.json->AGENTS.md->README.md - IA grande ou com tool use:
llms-full.txt->SEMA_BRIEF.md->SEMA_INDEX.json->AGENTS.md->README.md
Regra de ouro: se existir artefato Sema para a tarefa, ele vem antes do codigo bruto.
Para manter os artefatos gerados da raiz sincronizados:
sema sync-ai-entrypoints --json- contrato semantico explicito para operacoes e bordas do sistema
- vinculo com implementacao viva via
implevinculos - contrato operacional via
execucao - auditoria de coerencia contra codigo real via
drift - cartoes semanticos compactos via
resumoeprompt-curto - pacote de contexto para agente via
contexto-ia - camada de navegacao operacional para agente sobre software vivo
- camada semantica acima da stack, nao no lugar dela
- gerador messianico de sistema completo
- substituta de decisao arquitetural
- substituta de runtime, persistencia, smoke test ou observabilidade
- telepatia de regra de negocio
- licenca para a IA sair editando backend no escuro
task,flow,route,state,type,entity,enumetests- superficies modernas de primeira classe:
worker,evento,fila,cron,webhook,cache,storage,policy implpara ligar contrato a simbolo realvinculospara ligar contrato a arquivo, simbolo, recurso e superficieexecucaopara timeout, retry, compensacao, idempotencia e criticidade- contratos de seguranca semantica via
auth,authz,dados,audit,segredoseforbidden effectscom criticidade, privilegio e isolamento quando a operacao pedir mais dureza- tipos compostos como
Lista<T>,Mapa<K, V>,Opcional<T>e uniao controlada driftcom score semantico, confianca, risco e lacunasresumocom modosmicro,curtoemediopara IA de capacidade diferenteprompt-curtopara colar contexto compacto em IA gratuita ou com janela curtacontexto-iacomast.json,ir.json,drift.json,briefing.json,briefing.min.jsone resumos locais- scaffold e geracao para TypeScript, Python, Dart, JavaScript, HTML e CSS
- scaffold backend para NestJS e FastAPI
- importacao incremental de legado
A Sema foi desenhada para entrar em tres cenarios sem forcar teatro conceitual:
- producao inicial ou projeto novo: voce modela contrato, valida, compila e verifica antes de deixar codigo derivado correr solto
- edicao em projeto que ja usa Sema: voce comeca por
inspecionar,resumo,driftecontexto-ia, e so depois mexe no codigo vivo - adocao incremental em projeto que ainda nao tem Sema: voce usa
importarcomo rascunho revisavel, lapida o contrato e deixadriftarbitrar o acoplamento com o runtime real
Se alguem tentar vender a ferramenta como "serve so pra greenfield" ou "serve so pra legado", esta falando merda com conviccao. O valor da Sema e justamente atravessar os tres momentos sem trocar de cerebro no meio do caminho.
Instalacao oficial via npm:
npm install -g @semacode/cli
sema --help
sema doctorInstalacao alternativa via GitHub Release:
npm install -g https://github.com/gerlanss/Sema/releases/latest/download/sema-cli-latest.tgz
sema --help
sema doctorInstalacao local ao projeto:
npm install @semacode/cli
npx sema --helpPrimeiro teste:
mkdir sema-demo
cd sema-demo
sema iniciar
sema validar contratos/pedidos.sema --jsonmodule exemplos.pedidos {
task processar_pedido {
input {
pedido_id: Id required
itens: Lista<Texto> required
token_gateway: Texto required
}
output {
protocolo: Id
status: Texto
}
effects {
db.write pedidos criticidade=alta privilegio=escrita isolamento=tenant
secret.read gateway_api_key criticidade=media privilegio=leitura isolamento=processo
auditoria pedidos criticidade=media
}
auth {
modo: interno
estrategia: jwt
principal: servico
origem: worker
}
authz {
papel: pedidos_admin
escopo: pedidos.processar
tenant: isolado
}
dados {
classificacao_padrao: interno
redacao_log: obrigatoria
retencao: "90d"
input {
pedido_id: interno
itens: interno
token_gateway: credencial
}
output {
protocolo: interno
status: interno
}
}
audit {
evento: pedidos.processado
ator: auth.servico
correlacao: request_id
retencao: "180d"
motivo: obrigatorio
}
segredos {
gateway_api_key {
origem: vault
escopo: runtime
acesso: gateway_pagamento
rotacao: "30d"
nao_logar: verdadeiro
nao_retornar: verdadeiro
mascarar: verdadeiro
}
}
forbidden {
shell.exec
retorno.credencial
log.segredo
}
impl {
ts: app.pedidos.processar
}
vinculos {
arquivo: "src/pedidos/processar.ts"
simbolo: app.pedidos.processar
fila: pedidos_processamento
}
execucao {
idempotencia: verdadeiro
timeout: "30s"
retry: "3x exponencial"
compensacao: "reverter_reserva"
criticidade_operacional: alta
}
guarantees {
protocolo existe
status existe
}
tests {
caso "pedido valido" {
given {
pedido_id: "ped_1"
token_gateway: "tok_1"
}
expect {
sucesso: verdadeiro
}
}
}
}
route processar_pedido_publico {
metodo: POST
caminho: /pedidos/processar
task: processar_pedido
auth {
modo: obrigatorio
principal: usuario
origem: publica
}
authz {
escopo: pedidos.processar.publico
tenant: obrigatorio
}
}
}
Quando a tarefa envolver backend ja existente, o fluxo canonico agora e:
sema inspecionar . --json
sema resumo contratos/modulo.sema --micro --para mudanca
sema drift contratos/modulo.sema --json
sema contexto-ia contratos/modulo.sema --saida ./.tmp/contexto --jsonLeitura pratica:
inspecionardescobre base do projeto, diretorios de codigo e fontes legado.resumogera o menor cartao semantico util para a IA atual.driftmede impls, vinculos, rotas, score, confianca, risco e lacunas.contexto-iagera o pacote completo, incluindobriefing.json,briefing.min.json,resumo.micro.txteresumo.curto.txt.
Se a IA for mexer em sistema real sem olhar isso, ela esta basicamente pedindo para fazer merda.
Use o menor artefato que resolva a tarefa:
- IA pequena ou gratuita:
sema resumo --micro,resumo.micro.txt,briefing.min.json,prompt-curto.txt - IA media:
sema resumo --curto,resumo.curto.txt,briefing.min.json,drift.json - IA grande ou com tool use:
resumo.md,briefing.json,drift.json,ir.json,ast.json
O erro classico e entupir modelo pequeno com JSON gigante e depois reclamar que ele virou um animal confuso. O protocolo agora deixa explicito o que cada faixa aguenta.
Para descobrir isso sem decorar comando no grito:
sema --help
sema ajuda-iaEssas duas saidas agora separam fluxo de projeto novo, edicao guiada e adocao em legado, alem de mostrar o que cabe em IA pequena, media e grande sem ficar naquela bagunca de help que parece manifesto de seita.
NestJS: importacao de rotas edriftde rota publicaFastAPI: importacao de rotas edriftde rota publicaFlask: importacao de rotas edriftcomBlueprint,url_prefixe decoradoresNext.js App Router: importacao edriftporroute.ts, incluindo segmentos dinamicosNext.js consumer: bridge canonico + superficiespage.tsx,layout.tsx,loading.tsxeerror.tsxReact/Vite consumer: bridge canonico +react-routerexplicito emsrc/router.tsx|routes.tsx+src/pages/**Angular consumer: bridge canonico +app.routes.ts,**/*.routes.ts, lazy routes e feature folders vinculadosFlutter consumer: bridge canonico +lib/router.dart,lib/screens/**e superfícies consumer rastreaveisASP.NET Core: importacao de controllers e Minimal API comdriftviacs:Spring Boot: importacao de controllers comdriftviajava:Go net/http + Gin: importacao de handlers comdriftviago:Rust Axum: importacao de handlers comdriftviarust:Node/Firebase worker: importacao focada em bridge, worker route e recurso persistidoC++ bridge/service: importacao generica edriftde simbolo viacpp:TypeScript,Python,Dart: resolucao de simbolo e importacao generica
Observacao importante: essas familias entram como fontes de legado para importar e drift. A criacao oficial agora cobre base, nestjs, fastapi, nextjs-api, nextjs-consumer, react-vite-consumer, angular-consumer e flutter-consumer.
Os showcases oficiais desta fase estao em:
- showcases/ranking-showroom: backend Flask com contrato,
impl,vinculos,drifte contexto de IA - showcases/ranking-showroom-consumer: consumer Next.js App Router com
consumer bridge + App Router surfaces - showcases/ranking-showroom-react-vite-consumer: consumer React/Vite com
consumer bridge + react-router surfaces - showcases/ranking-showroom-angular-consumer: consumer Angular com
consumer bridge + lazy route config surfaces - showcases/ranking-showroom-flutter-consumer: consumer Flutter com
consumer bridge + router/screens - showcases/ranking-showroom-stack-nextjs: backend Flask +
Next.js consumerna mesma raiz operacional - showcases/ranking-showroom-stack-react-vite: backend Flask +
React/Vite consumerna mesma raiz operacional - showcases/ranking-showroom-stack-angular: backend Flask +
Angular consumerna mesma raiz operacional - showcases/ranking-showroom-stack-flutter: backend Flask +
flutter-consumerna mesma raiz operacional
O showcase backend mostra:
- contrato semantico curado
implevinculosapontando para codigo vivodriftsem falso positivo idiotacontexto-iacomdrift.jsonebriefing.json- adocao incremental em backend Flask real
O showcase consumer mostra:
implapontando apenas para o bridge canonicovinculosrastreando bridge, arquivos e superficie/rankingdriftleve de consumer sem fingir visual driftcontexto-iacomconsumerFramework,appRoutes,consumerSurfaceseconsumerBridges- o mesmo contrato operacional funcionando em
Next.js,React/Vite,AngulareFlutter, cada um no seu slice oficial
Fluxo:
cd showcases/ranking-showroom
sema inspecionar . --json
sema drift contratos/ranking_showroom.sema --json
sema contexto-ia contratos/ranking_showroom.sema --saida ./.tmp/contexto-ranking --json
cd ../ranking-showroom-consumer
sema inspecionar . --json
sema drift contratos/showroom_consumer.sema --json
sema contexto-ia contratos/showroom_consumer.sema --saida ./.tmp/contexto-ranking-consumer --json
cd ../ranking-showroom-react-vite-consumer
sema inspecionar . --json
sema drift contratos/showroom_consumer.sema --json
sema contexto-ia contratos/showroom_consumer.sema --saida ./.tmp/contexto-ranking-react-vite --json
cd ../ranking-showroom-angular-consumer
sema inspecionar . --json
sema drift contratos/showroom_consumer.sema --json
sema contexto-ia contratos/showroom_consumer.sema --saida ./.tmp/contexto-ranking-angular --json
cd ../ranking-showroom-flutter-consumer
sema inspecionar . --json
sema drift contratos/showroom_consumer.sema --json
sema contexto-ia contratos/showroom_consumer.sema --saida ./.tmp/contexto-ranking-flutter --jsonAs familias consumer oficiais agora estao abertas. A proxima onda semantica de front esta documentada em docs/front-semantic-roadmap.md, cobrindo screen, action, query, form e navigation como trilha oficial futura, sem fingir que essa sintaxe ja existe hoje.
O repo agora usa contratos internos em contratos/sema para modelar parte da evolucao do proprio produto:
- contratos/sema/governanca_ia.sema
- contratos/sema/ergonomia_e_dominio.sema
- contratos/sema/linguagem_composta.sema
Isso nao e pose de framework emocionado. E dogfooding com governanca semantica de verdade.
A Sema usa sema.config.json para tratar projeto real com menos chute.
{
"origens": ["./contratos"],
"saida": "./generated",
"alvos": ["typescript", "python"],
"alvoPadrao": "typescript",
"estruturaSaida": "backend",
"framework": "nestjs",
"modoEstrito": true,
"diretoriosSaidaPorAlvo": {
"typescript": "./generated/nestjs",
"python": "./generated/fastapi"
},
"convencoesGeracaoPorProjeto": "backend"
}Na pratica:
origenscontrola onde a CLI procura.semadiretoriosCodigoajuda a localizar implementacao vivafontesLegadoorientaimportaredriftframework,estruturaSaidaealvosdeixam scaffold previsivel
Instalar via release:
curl -L -o sema-language-tools.vsix https://github.com/gerlanss/Sema/releases/latest/download/sema-language-tools-latest.vsix
code --install-extension ./sema-language-tools.vsix --forceWindows PowerShell:
Invoke-WebRequest -Uri https://github.com/gerlanss/Sema/releases/latest/download/sema-language-tools-latest.vsix -OutFile sema-language-tools.vsix
code --install-extension .\sema-language-tools.vsix --forcePagina oficial:
- https://github.com/gerlanss/Sema/releases/latest
- https://github.com/gerlanss/Sema/blob/main/pacotes/editor-vscode/README.md
Se voce estiver contribuindo no repositorio, ai sim entra a trilha local:
npm run extensao:empacotar
npm run extensao:instalar-localSe o objetivo for desenvolver a propria Sema:
npm install
npm run build
npm test
npm run ia:sync-entrypoints
node pacotes/cli/dist/index.js verificar exemplos --jsonPara validar tudo no modo mais paranoico:
npm run project:checkSe quiser rodar os smokes reais contra repos externos locais e mutaveis:
npm run test:smoke-real- STATUS.md
- docs/posicionamento.md
- docs/sintaxe.md
- docs/integracao-com-ia.md
- docs/instalacao-e-primeiro-uso.md
- docs/cli.md
- docs/backend-first.md
- docs/scorecard-compatibilidade.md
- docs/arquitetura.md
- docs/distribuicao-da-cli.md
- docs/kit-lancamento-publico.md
Se voce quer uma linguagem para escrever tese sobre pureza sintatica, a Sema nao esta tentando ganhar esse concurso.
Se voce quer contrato, vinculo, drift e contexto operacional para IA mexer em software vivo sem confiar na sorte, ai sim ela comeca a ficar interessante.
