Skip to content

O modelo de maturidade

Este capítulo define o modelo de maturidade — o mesmo framework de avaliação implementado por npx harness-score, para que um nível que você lê aqui seja um nível que você pode medir, reproduzir e exigir no CI.

A forma segue padrões familiares de maturidade (capacidades DORA, funções de negócio OWASP SAMM, níveis CMMI): dimensões medem áreas de prática, checks são indicadores determinísticos pass/fail, e níveis exigem a forma da cobertura — não só uma porcentagem bruta.

Objetivos de design:

  • Determinístico. Cada check é um fato do filesystem: um arquivo existe, parseia, combina com um padrão. Sem modelo, sem julgamento, sem rede.
  • Duas pontuações. Maturity (somente repo) é o nível oficial para CI e badges. Effective (repo ∪ escopos globais opcionais) mostra o que a máquina do desenvolvedor provavelmente expõe ao agente — veja Métricas e códigos.
  • Agnóstico de ferramenta, Cursor como exemplo principal. Rules, skills, hooks e commands de qualquer ferramenta de IA suportada (Cursor, Windsurf, Claude Code, Codex/Antigravity .agents/, OpenCode, Cline, Continue, instruções Copilot, Zed) pontuam via semântica OR — uma ferramenta configurada basta. Infraestrutura universal (testes, linters, tipos, CI) forma o mesmo sistema de controle independente do IDE.
  • Uma escada, não uma nota. Níveis exigem a forma do harness (quais dimensões estão cobertas), não só pontos — 80 pontos de guias com zero sensores não é maturidade.

As seis dimensões

108 pontos em seis dimensões:

DimensãoPontosO que mede
Context & Guides20AGENTS.md, qualidade e escopo de rules
Skills & Commands17Conhecimento procedural, workflows explícitos, subagents
Hooks & Guardrails14Gates e feedback enforced em runtime
Sensors & Feedback20Testes, linter, tipos, formatter
CI Feedback14Checks de pipeline, pre-commit
Hygiene & Safety23Segredos, env files, lockfile, licença, config MCP

Cada dimensão é a soma de checks individuais (catálogo completo com remediações no capítulo 8; tabela de IDs no capítulo 9 — Métricas e códigos).

Os cinco níveis

L0 · Sem harness

O repositório não dá nada ao agente: sem arquivo de contexto, sem rules, sem checks enforced. Agentes trabalham aqui — sempre trabalham — mas toda sessão redescobre o projeto do zero e todo erro segue em frente a menos que um humano pegue. A maioria dos repositórios começa aqui.

L1 · Documentado

Exige: Context & Guides ≥ 40%.

Há um AGENTS.md (ou equivalente) substantivo: o que é o projeto, como construir e testar, quais convenções valem. O passo de maior alavancagem a partir do zero — feedforward para toda sessão futura em um arquivo.

L2 · Orientado

Exige: Context ≥ 60% · (Skills ≥ 30% ou Hooks ≥ 30%) · Hygiene ≥ 50%.

A orientação tem estrutura: rules com escopo e frontmatter válido (.cursor/rules/, .windsurf/rules/, .clinerules/ ou equivalente da sua ferramenta), e pelo menos o início de conhecimento procedural (skill, command/workflow ou subagent) ou maquinaria de hooks. Higiene básica segura — env ignorados, sem assinaturas de credencial em arquivos de harness. O harness agora viaja com o código e é revisado como código.

L3 · Com sensores

Exige L2, mais: Sensors ≥ 60% · CI ≥ 50%.

O loop de feedback existe. Testes que o agente pode rodar, linter, type checking e pipeline CI que reverifica a cada push. É o nível em que a autocorreção começa: o agente pode verificar o próprio trabalho com ferramentas determinísticas, e o pipeline pega o que ele perde. Para a maioria das equipes, L3 é onde desenvolvimento assistido por IA deixa de parecer arriscado.

L4 · Autocorretivo

Exige L3, mais: Hooks ≥ 70% · pontuação total ≥ 80%.

O loop fecha em runtime. Gate hooks tornam ações destrutivas impossíveis em vez de desencorajadas; feedback hooks lintam e formatam a cada edição, dentro da sessão. Guias, sensores e guardrails cobrem as seis dimensões. Um erro agora precisa passar pelas rules, hooks on-edit, testes, type checker, CI e gates — em grande parte sem humano no loop.

Quando um nível fica "capped" (limitado)

Os requisitos de um nível assumem que todas as dimensões estão em jogo. Uma equipe pode excluir checks específicos — ou uma dimensão inteira — via extends/rules do .harness-score.json (veja Métricas e códigos), por um motivo estrutural exigido por política, não por preferência.

Se essa exclusão esvazia uma dimensão da qual um nível depende, o scanner reporta o nível como capped em vez de fingir que é só mais uma lacuna a fechar. L4 é o exemplo mais claro: ele é definido pela dimensão Hooks & Guardrails, então um repositório sob o preset no-hooks pode subir todas as outras dimensões livremente, mas L4 continua capped — não "0%, continue tentando", e sim "inalcançável na configuração atual, e aqui está exatamente o porquê". A pontuação de todas as outras dimensões continua completamente intacta.

Isso é o modelo se mantendo honesto, não uma penalidade: "necessário, não suficiente" (abaixo) já significa que uma pontuação alta não é garantia — um nível capped é a mesma ideia aplicada à escolha deliberada e divulgada de uma equipe sobre o que se aplica a ela.

Lendo uma pontuação

Dois repositórios podem ter 65% com formas muito diferentes — por isso os níveis exigem dimensões:

  • 65%, tudo guias, zero sensores → L1. Lindamente documentado, não verificado. Prioridade: testes + CI, não mais prosa.
  • 65%, sensores fortes, sem contexto → L0/L1. O trabalho do agente é verificado, mas ele adivinha suas convenções a cada sessão. Prioridade: uma tarde em AGENTS.md e três rules com escopo.

O scanner imprime exatamente qual requisito bloqueia o próximo nível (To reach L3: sensors ≥ 60%; ci ≥ 50%), então o caminho de melhoria nunca é ambíguo.

O que o modelo deliberadamente não mede

Honestidade sobre os limites do determinismo (o caveat de Fowler de que "behavior harness is immature" vale também para medição):

  • Se seus testes são bons — só que existem, rodam e gateiam.
  • Se suas rules são verdadeiras — uma rule obsoleta pontua como uma fresca.
  • Corretude funcional — nenhum scan estático verifica comportamento.
  • Prática de equipe — branch protection, cultura de review e workflows de agente ficam fora da árvore do repositório.

Pontuação alta significa que a infraestrutura para trabalho confiável com agente existe. É necessária, não suficiente — o teto do que um scanner determinístico pode afirmar com honestidade.

Usando a escada

  1. Rode npx harness-score — obtenha seu nível e os gaps exatos.
  2. Suba um nível por vez; os requisitos de cada nível são um esforço focado (L1: escrever AGENTS.md → L2: rules + higiene → L3: sensores + CI → L4: hooks).
  3. Exija o nível no CI (--min-level) para a maturidade só subir.
  4. Mostre — badge no README (harness · L4) e share card opcional. Mesma pílula do CI (--badge) ou arquivo estático fixo.

O capítulo 8 percorre cada passo, check a check.