rebar
Um checker que roda contra qualquer repositório, um scanner de assinaturas conhecidas de prompt injection, um portão que barra o commit quando a regra é ignorada, e um gerador que já começa certo.
npx github:Navesz/rebar .O problema, medido em 161 commits
Forense de seis repositórios, 25/08/2026: 3 sem CI, e os mesmos 3 com o lint quebrado. O que tinha mais documento de governança — AGENTS.md, SECURITY.md, GOVERNANCE.md — tinha 35 erros de lint.
Regra em markdown tem cumprimento perto de zero
Aquele repositório tinha um script check encadeando formato, lint, tipos, teste e build. Nada nunca o executava. Se a regra pode descer de prosa para enforcement, ela desce — e o enforcement tem de ser o mais confiável dos dois.
O checker: um placar de qualquer repositório
npx github:Navesz/rebar . — sem instalar nada, e sem escrever uma linha no repositório auditado. Regra que não se aplica sai do denominador, porque placar que conta o que não existe é placar que mente.
O portão: hook, CI nos dois sistemas, e o servidor
O que o CI roda é a mesma sequência que você roda antes dele, num comando só. Acima dela, um ruleset do GitHub com a lista de quem pode passar por cima vazia — nem o dono passa. Abaixo, o hook, na sua máquina.
O gerador: esta página saiu dele
npx github:Navesz/rebar new meu-site cria um Next estático já com o portão dentro e um servidor MCP que serve as regras à IA que abrir o projeto. Depois roda a régua no que acabou de criar e imprime o placar.
O que ainda não está provado
O rebar impõe em um repositório: ele mesmo. A meta escrita era dois até D+30, e está em 1 de 2. Uma regra continua só avisando porque perto de 12% do que ela acusa é ruído. Se não virar, o critério de abandono manda parar.
Modo de uso
Três estados em vez de dois, e o terceiro é o que impede o placar de mentir: o que não se aplica sai do denominador. Uma pasta vazia não tira nota boa.
O placar de um repositório
npx github:Navesz/rebar .rebar-check · prumo ✓ editorconfig has an .editorconfig ✓ dependabot automated dependency updates ✓ ci has CI ✗ ci-gates the CI reaches the verification the repository has the CI does not reach: lint – orphan-schema no orphan JSON Schema no .schema.json in the repository 14 of 17 · 1 not applicable · 2 warning(s)saída O traço é o terceiro estado. Antes de existir, uma pasta vazia com um .git/ vazio tirava 8 de 14 e empatava com o próprio rebar. É um recorte: cinco regras e a linha final, de uma execução real de 17/09/2026 contra outro repositório meu. A régua imprime em inglês.
Vários repositórios de uma vez
npx github:Navesz/rebar ../a ../b ../cSai um resumo comparável no fim. É como a forense de 161 commits em seis repositórios foi levantada.
Uma regra só, para consertar sem ruído
npx github:Navesz/rebar --rule=ci-gates .O recorte serve para consertar, não para liberar: rode sem o filtro antes de commitar.
Saída estruturada, para o CI
npx github:Navesz/rebar --json .Cada regra sai com id, classe, nível e estado. É o que o passo de CI consome.
Heurística também derrubando
npx github:Navesz/rebar --heuristics .Por padrão heurística só informa. Regra automática errada custa mais que regra ausente — uma delas foi medida com sete ocorrências e zero verdadeiros positivos.