Qué valida
SpecScore.
SpecScore es un formato abierto en Markdown para features, requisitos y criterios de aceptación — revisado por dos validadores: unlinter determinista y un revisor de IA. Esto es lo que detecta cada uno, y dónde se detiene la revisión automática.
¿Nuevo en SpecScore? Empieza aquí ·El CLI ·Skills de IA
$ specscore lint checkout/ ✓ 24 requirements — structure, references, IDs valid ✓ no index drift · no broken links · no slug collisions 0 problems exit 0
Tres capas, no una.
SpecScore valida por capas, empezando por lo más barato y lo más seguro. El linter es determinista — rápido, gratuito, se ejecuta en cada commit. La revisión de IA es probabilística — más profunda, consume tokens, detecta cosas que el linter no alcanza. El criterio humano es la tercera capa: las costuras que las dos primeras no cierran siguen necesitando a una persona — hoy ninguna herramienta las cierra de forma fiable. Las dos capas automáticas son complementarias, no redundantes: el linter detecta lo que la IA no puede sostener; la IA detecta lo que el linter no alcanza.
Qué revisa cada validador.
Linter CLI
deterministaEl mismo resultado en cada ejecución, sin LLM, sin coste. Si pasa aquí, es un hecho — no una opinión.
$ specscore lint apply-discount.md ✓ R1 has acceptance criteria ✓ R2 has acceptance criteria ✗ R3 no acceptance criteria ✗ link "Related Feature: discount-tiers" not found ✗ section "Open Questions" missing 3 problems exit 1
- Integridad referencial — los enlaces se resuelven, los IDs son únicos
- Convenciones estructurales — secciones obligatorias, forma del frontmatter
- Higiene de estados y desfase de índice
- Colisiones de slug
- Validez de los prefijos en campos de metadatos (p. ej.
Related Ideas:)
Revisión y score con IA
no deterministaLee buscando el sentido, como lo haría un revisor humano — y, como un humano, no es perfectamente repetible.
> /score apply-discount.md Grade: B — ready with edits AC-2 vague trigger — name the actor and event AC-3 no error path for an expired code prose reads clean; criteria need tightening
- Los ACs redactados como Given/When/Then verificables
- Coherencia interna dentro de un artefacto
- Contenido vago o de relleno
- Legibilidad para un revisor humano
- Feedback accionable para el autor, con nivel de severidad
- Una nota de preparación de A a F
Qué no detectan.
Ningún validador es magia. Aquí es donde se detiene cada uno — para que sepas exactamente dónde tu propio criterio todavía tiene que trabajar.
Linter CLI
- Contradicciones implícitas a lo largo de jerarquías profundas
- Desfase entre la especificación y el código (mejorará con la llegada de
specstudio:recap) - La corrección semántica de los criterios de aceptación
- Si un nombre realmente tiene sentido
- Si los requisitos resuelven el problema planteado
Revisión y score con IA
detecta de forma inconsistente- Reproducibilidad total entre ejecuciones — los veredictos pueden variar dentro de cierto margen
- Contradicciones entre artefactos en un árbol grande sin comprobaciones cruzadas explícitas
- Si los requisitos realmente resuelven el problema — señala los huecos obvios, omite los específicos del dominio
- Sesgos heredados del LLM subyacente
- La corrección semántica con certeza absoluta
- Cualquier cosa que la rúbrica no pondere
- 1
El linter llega hasta aquí
Estructura, referencias, higiene. Barato y seguro — pero ciego al sentido.
- 2
La IA llega hasta aquí
Sentido, claridad, coherencia dentro de un artefacto. Más profundo — pero probabilístico, y débil en un árbol grande.
- 3
Sigue siendo cosa tuya
El criterio transversal sobre todo el sistema — un trabajo que hoy ninguna herramienta puede hacer de forma fiable, así que todavía requiere a un revisor humano.
El caso del que ninguna herramienta te va a salvar
Imagina un árbol de especificaciones real y profundo. La feature A requiereX. La feature B requiere Y. La feature C requiere Z. Entonces la feature D requiere silenciosamente algo que contradice a B — pero solo cuando A también está activa. El linter ve cuatro documentos válidos y bien enlazados, y pasa. El revisor de IA, leyendo los artefactos de uno en uno, no tiene motivo para cargar los cuatro y notar la interacción a tres bandas.
Ninguna de las dos capas detecta esto de forma fiable — y no vamos a fingir lo contrario. Esta clase exacta de contradicción es la razón por la que existe la tercera capa. El trabajo de SpecScore es hacer el árbol lo bastante navegable para que una persona que revise las costuras pueda encontrar el conflicto — las preguntas abiertas suben por la jerarquía, los requisitos relacionados están a una consulta de distancia — no afirmar que una herramienta ya lo encontró.