Что проверяет
SpecScore.
SpecScore — это открытый формат на основе Markdown для фич, требований и критериев приёмки, который проверяют два валидатора: детерминированный линтер ипроверка ИИ. Вот что ловит каждый из них и где автоматическая проверка заканчивается.
Впервые о SpecScore? Начните здесь ·CLI ·Навыки ИИ
$ specscore lint checkout/ ✓ 24 requirements — structure, references, IDs valid ✓ no index drift · no broken links · no slug collisions 0 problems exit 0
Три слоя, а не один.
SpecScore проверяет послойно — сначала самое дешёвое и самое надёжное.Линтер детерминирован — быстрый, бесплатный, работает на каждом коммите. Проверка ИИ вероятностна — глубже, тратит токены, ловит то, до чего линтер не дотянется.Человеческое суждение — третий слой: стыки, которые не закрывают первые два, по-прежнему требуют человека — ни один инструмент пока не закрывает их надёжно. Два автоматических слоя дополняют друг друга, а не дублируют: линтер ловит то, что ИИ не может обосновать; ИИ ловит то, до чего линтер не дотягивается.
Что проверяет каждый валидатор.
Линтер CLI
детерминированныйОдинаковый результат при каждом запуске, без LLM, без затрат. Если здесь пройдено — это факт, а не мнение.
$ 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
- Ссылочная целостность — ссылки разрешаются, ID уникальны
- Структурные соглашения — обязательные секции, форма frontmatter
- Гигиена статусов и расхождение индексов
- Коллизии slug
- Корректность префиксов в полях метаданных (например,
Related Ideas:)
Проверка и оценка ИИ
недетерминированныйЧитает по смыслу, как живой рецензент, — и, как человек, не идеально воспроизводим.
> /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
- Критерии приёмки в проверяемом виде Given/When/Then
- Внутренняя согласованность внутри артефакта
- Расплывчатый или заглушечный текст
- Читаемость для живого рецензента
- Действенная обратная связь с пометкой важности
- Оценка готовности от A до F
Чего они не ловят.
Ни один валидатор не волшебный. Вот где останавливается каждый — чтобы вы точно знали, где по-прежнему нужно ваше собственное суждение.
Линтер CLI
- Неявные противоречия в глубоких иерархиях
- Расхождение между спецификацией и кодом (улучшится с выходом
specstudio:recap) - Смысловую корректность критериев приёмки
- Имеет ли название смысл на самом деле
- Решают ли требования заявленную проблему
Проверка и оценка ИИ
ловит непостоянно- Полную воспроизводимость между запусками — вердикты могут меняться в пределах допуска
- Межартефактные противоречия в большом дереве без явных перекрёстных проверок
- Действительно ли требования решают проблему — заметит очевидные пробелы, пропустит специфичные для предметной области
- Смещения, унаследованные от базовой LLM
- Смысловую корректность с абсолютной уверенностью
- Всё, что не учитывает рубрика
- 1
Линтер достаёт сюда
Структура, ссылки, гигиена. Дёшево и надёжно — но слепо к смыслу.
- 2
ИИ достаёт сюда
Смысл, ясность, согласованность внутри артефакта. Глубже — но вероятностно и слабо на большом дереве.
- 3
Остаётся на вас
Сквозное суждение обо всей системе. Ни один инструмент пока не может это надёжно — поэтому здесь по-прежнему нужен человек. Это не забытый пробел, а честная граница сегодняшних возможностей.
Случай, от которого не спасёт ни один инструмент
Представьте реальное глубокое дерево спецификаций. Фича A требуетX. Фича B требует Y. Фича C требуетZ. Затем фича D незаметно требует то, что противоречит B — но только когда активна и A. Линтер видит четыре корректных, хорошо связанных документа и проходит. Проверка ИИ, читая артефакты по одному, не имеет причин загрузить все четыре и заметить взаимодействие трёх из них.
Ни один слой надёжно это не ловит — и мы не будем делать вид, что иначе. Именно этот класс противоречий — причина существования третьего слоя. Задача SpecScore — сделать дерево достаточно навигируемым, чтобы человек, просматривающий стыки, могнайти конфликт: открытые вопросы поднимаются вверх по иерархии, связанные требования — в одном запросе, — а не утверждать, что инструмент уже его нашёл.