Ce que valide
SpecScore.
SpecScore est un format ouvert en Markdown pour les features, exigences et critères d'acceptation — contrôlé par deux validateurs : unlinter déterministe et un réviseur par IA. Voici ce que chacun détecte, et où s'arrête la vérification automatique.
Nouveau sur SpecScore ? Commencez ici ·Le CLI ·Skills IA
$ specscore lint checkout/ ✓ 24 requirements — structure, references, IDs valid ✓ no index drift · no broken links · no slug collisions 0 problems exit 0
Trois couches, pas une seule.
SpecScore valide par couches, en commençant par le plus économique et le plus certain. Le linter est déterministe — rapide, gratuit, exécuté à chaque commit. La revue par IA est probabiliste — plus profonde, consomme des tokens, détecte des éléments hors de portée du linter. Le jugement humain est la troisième couche : les coutures que les deux premières ne referment pas nécessitent toujours une personne — aujourd'hui aucun outil ne sait les traiter de manière fiable. Les deux couches automatisées sont complémentaires, non redondantes : le linter détecte ce que l'IA ne peut garantir avec certitude ; l'IA détecte ce que le linter ne peut appréhender.
Ce que chaque validateur vérifie.
Linter CLI
déterministeLe même résultat à chaque exécution, sans LLM, sans coût. Si cela passe ici, c'est un fait — pas une opinion.
$ specscore spec lint features/apply-discount/README.md:0 [error] oq-section: Open Questions section not found features/apply-discount/README.md:0 [error] index-entries: Child directory not listed in index: refunds features/apply-discount/refunds:0 [error] readme-exists: README.md not found 3 violations found (3 errors) # exit code 1
- Intégrité référentielle — les liens se résolvent, les identifiants sont uniques
- Conventions structurelles — sections obligatoires, forme du frontmatter
- Cohérence des statuts et dérive d'index
- Collisions de slugs
- Validité des préfixes dans les champs de métadonnées (ex.
Related Ideas:)
Revue et score avec IA
non déterministeLit pour en saisir le sens, comme le ferait un réviseur humain — et, comme un humain, n'est pas parfaitement reproductible.
> /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
- Les ACs rédigés sous forme de Given/When/Then vérifiables
- Cohérence interne au sein d'un artefact
- Contenu flou ou remplissage verbeux
- Lisibilité pour un réviseur humain
- Feedback actionnable pour l'auteur, avec niveau de sévérité
- Une note de préparation de A à F
Ce qu'ils ne détectent pas.
Aucun validateur n'est magique. Voici où chacun s'arrête — afin que vous sachiez exactement où votre propre jugement doit continuer à s'exercer.
Linter CLI
- Contradictions implicites à travers des hiérarchies profondes
- Écart entre la spécification et le code (s'améliorera avec l'arrivée de
specstudio:recap) - Exactitude sémantique des critères d'acceptation
- Pertinence réelle d'un nommage
- Si les exigences résolvent véritablement le problème posé
Revue et score avec IA
détecte de façon inconstante- Reproductibilité parfaite entre les exécutions — les verdicts peuvent varier dans une certaine marge
- Contradictions entre artefacts dans un grand arbre sans vérifications croisées explicites
- Si les exigences résolvent réellement le problème — repère les manques évidents, ignore les subtilités propres au domaine
- Biais hérités du LLM sous-jacent
- Exactitude sémantique avec une certitude absolue
- Tout ce que la grille d'évaluation ne pondère pas
- 1
Le linter s'arrête ici
Structure, références, hygiène. Économique et sûr — mais aveugle au sens.
- 2
L'IA s'arrête ici
Sens, clarté, cohérence au sein d'un artefact. Plus profond — mais probabiliste, et limité sur un vaste arbre.
- 3
Cela reste de votre ressort
Le jugement transversal à l'échelle de l'ensemble du système — une tâche qu'aucun outil ne peut accomplir de manière fiable aujourd'hui, exigeant encore un réviseur humain.
Le cas contre lequel aucun outil ne vous prémunira
Imaginez un arbre de spécifications réel et profond. La feature A exigeX. La feature B exige Y. La feature C exige Z. Puis la feature D exige discrètement quelque chose qui contredit B — mais seulement lorsque A est également active. Le linter constate quatre documents valides et correctement reliés, et valide. Le réviseur par IA, lisant les artefacts un par un, n'a aucune raison de charger les quatre et de remarquer l'interaction triangulaire.
Aucune des deux couches ne détecte cela de manière fiable — et nous ne pouvons prétendre le contraire. Ce type précis de contradiction est la raison d'être de la troisième couche. Le rôle de SpecScore est de rendre l'arbre suffisamment navigable pour qu'une personne inspectant les jointures puisse trouver le conflit — les questions ouvertes remontent la hiérarchie, les exigences liées sont accessibles en une requête — non d'affirmer qu'un outil l'a déjà résolu.