rebar
Um checker que roda contra qualquer repositório, um portão que barra o commit quando a regra é ignorada, e um gerador que fabrica o próximo projeto já do lado certo da régua.
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 novo 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 tem .editorconfig ✗ dependabot sem dependabot nem renovate ✓ ci tem CI – typecheck não tem TypeScript 11 de 13 · 1 não se aplicasaí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.
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.