SpecScore vs OpenSpec
Ambos colocam especificações em Markdown, junto ao seu código, legíveis por agentes de IA. Eles respondem a perguntas diferentes: o OpenSpec organiza especificações e gera comandos para agentes. O SpecScore faz lint do conteúdo das especificações, impõe ciclo de vida e rastreia o código de volta aos requisitos.
O que têm em comum.
O que o OpenSpec faz bem.
Suporte mais amplo a agentes
O OpenSpec suporta 29 agentes de IA via arquivos de skills gerados — Claude, Cursor, Copilot, Gemini, Windsurf, Cline e outros. Se o seu agente está na lista, o OpenSpec se integra sem nenhuma configuração.
Baixa barreira de entrada
npm install -g @fission-ai/openspec && openspec init e você já está escrevendo especificações. Sem schema para aprender, sem frontmatter obrigatório. Projetado para ser simples — especialmente para codebases existentes.
Modelo limpo de change-delta
O formato ADDED / MODIFIED / REMOVED do OpenSpec para evolução de especificações é bem projetado. Cada mudança é uma pasta com uma proposta, especificações delta e tarefas — uma forma estruturada de propor modificações.
Comparação de funcionalidades.
| Funcionalidade | OpenSpec | SpecScore |
|---|---|---|
| Formato da especificação | Markdown (sem frontmatter) | Markdown + YAML frontmatter |
| Linting de especificação | Apenas estrutura de arquivos | Qualidade do conteúdo — verbos vagos, ACs ausentes, referências soltas |
| IDs de requisitos | Nenhum (referenciado por título) | Baseado em slug (REQ: slug-format) |
| IDs de critérios de aceitação | Nenhum | IDs endereçáveis por máquina |
| Status do ciclo de vida | Implícito (localização do arquivo) | Imposto — Draft → Under Review → Approved → Implementing → Stable → Deprecated |
| Rastreabilidade código-para-especificação | Nenhuma | specscore: anotações + Verifies: trailers de commit |
| Sub-features | Não | Sim (diretórios aninhados) |
| Referências cruzadas | Sem mecanismo formal | Dependências, Ideas de origem, referências a planos |
| Integração com CI | Básica (openspec validate) | specscore lint com severidade configurável, hooks de pre-commit |
| Suporte a agentes | 29 agentes | Claude Code como principal + CLI para qualquer agente |
| Customização de schema | Sim (schema.yaml, fork/init) | Schema fixo (consistência por design) |
| Propostas de mudança | Modelo delta (ADDED/MODIFIED/REMOVED) | Ideas de change-request + propostas |
| Dependência de runtime | Node.js 20.19+ | Nenhuma — binário Go único |
| Licença | MIT | MIT |
Onde o SpecScore vai além.
A validação vai além da estrutura de arquivos
O validate do OpenSpec verifica a estrutura de arquivos. O SpecScore verifica mais, em duas camadas: o lint verifica de forma determinística os relacionamentos de conteúdo — todo requisito tem critérios de aceitação, referências cruzadas resolvem, transições de status são válidas — e um revisor de IA (/review, /score) pega critérios ambíguos e verbos vagos que nenhum linter consegue.
$ specscore lint checkout/apply-discount.md ✗ R3 no acceptance criteria ✗ link "Related Feature: discount-tiers" not found
Todo requisito tem um ID legível por máquina
O OpenSpec referencia requisitos pelo título — frágil a renomeações. O SpecScore atribui IDs baseados em slug (REQ: slug-format) e IDs de AC que sobrevivem a renomeações, refatorações e transferências entre agentes.
O ciclo de vida é imposto, não implícito
No OpenSpec, o ciclo de vida de uma especificação é sua localização no sistema de arquivos: specs/ (atual), changes/ (proposta), archive/ (concluída). No SpecScore, o ciclo de vida é um campo de status imposto — Draft → Under Review → Approved → Implementing → Stable → Deprecated — validado pelo lint, transicionado via specscore change-status a partir de git hooks ou CI.
O código rastreia de volta às especificações
O OpenSpec não tem mecanismo de rastreabilidade. O SpecScore tem anotações specscore: em comentários no código e trailers Verifies: nos commits. Execute specscore code refs e obtenha uma resposta determinística para "qual código implementa este requisito?"
Sem dependência de runtime
O OpenSpec requer Node.js 20.19+. O SpecScore é um binário Go único — sem runtime, sem node_modules. Funciona em projetos Go, Rust, Python e Java sem adicionar Node ao toolchain.
Hierarquia de artefatos composável
As especificações do OpenSpec são planas por domínio. O SpecScore tem uma hierarquia tipada: Ideas promovem para Features, Features contêm requisitos e ACs, Plans referenciam ACs, Tasks referenciam Plans. Todos os relacionamentos são navegáveis por máquina via CLI.
Quando usar cada um.
Comece com o OpenSpec quando…
- Você usa Cursor, Copilot ou agentes que não são Claude e precisa de integração pronta para uso.
- Você está adicionando especificações a uma codebase existente pela primeira vez e quer zero fricção.
- Seu time valoriza flexibilidade de schema em vez de imposição.
Use o SpecScore quando…
- Você precisa de controle de qualidade de especificações — o lint detecta ambiguidade antes que agentes desperdicem tokens com ela.
- Você precisa de rastreabilidade código-para-especificação — "qual código implementa este requisito?" retorna uma resposta determinística.
- Você está construindo um sistema grande com muitas features, sub-features e transições de ciclo de vida.
- Você quer zero dependências de runtime — um binário, sem necessidade de Node.js.
- Você precisa de quality gates para especificações no CI —
specscore lintretorna código diferente de zero em falhas, igual ao ESLint ougo vet.
Eles não são mutuamente exclusivos.
O SpecScore pode fazer lint dos arquivos spec.md do OpenSpec. Times que começam com o OpenSpec podem adicionar a camada de qualidade do SpecScore sem migrar — faça lint das especificações que você já tem, adicione rastreabilidade quando precisar, imponha ciclo de vida quando seu time crescer.
O OpenSpec é uma boa rampa de entrada. O SpecScore são as proteções laterais.
Outras comparações.
O mesmo formato, ao lado de outras ferramentas de desenvolvimento guiado por especificação:
Todas juntas, em uma página: melhores ferramentas de desenvolvimento guiado por especificação em 2026.
Feedback
Esta comparação é baseada em documentação e código-fonte publicamente disponíveis. Algo incorreto ou desatualizado? abra uma issue de correção. Quer que comparemos o SpecScore com outra ferramenta? solicite uma.