Fork a spec-tdd workflow schema #40
Notifications
Due Date
No due date set.
Blocks
Depends on
#41 Lint the spec-to-test linkage
claude-skills/marketplace
#45 Adopt OpenSpec as the change workflow
claude-skills/marketplace
#39 Commit the OpenSpec scaffold
claude-skills/marketplace
Reference: claude-skills/marketplace#40
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
Форкнуть стоковую схему
spec-drivenв проектнуюspec-tddи добавить в неёартефакт
testsмеждуspecsиtasks.Spec
none
Depends on
Motivation
Стоковая цепочка —
proposal → specs → design → tasks. В ней негде описатьтест-кейсы, и задачи пишутся раньше, чем известно, что именно проверяем.
Получается SDD без TDD.
Недостающее звено —
tests.md: по записи на каждый сценарий спеки, прозой длячеловека. Что кейс доказывает, как выглядит Red, что делает Green, куда ляжет
сам тест. Тогда
tasks.mdгенерится парамиRED: <TC>/GREEN: <TC>иссылается на конкретные кейсы, а не на абстрактные «реализовать».
Схема — единственный слой openspec, который гнётся под проект.
openspec schema fork spec-driven spec-tddкладёт копию вopenspec/schemas/spec-tdd/, дальше правится свободно. Границы проверены поzod-описанию пакета
(
dist/core/artifact-graph/types.d.ts):artifactsпринимает{id, generates, description, template, instruction, requires},apply—{requires, tracks, instruction}, и больше ничего. Ни хуков, ни shell в схеменет и не будет — всё исполняемое живёт в отдельном слое.
Идентификатор кейса —
TC-<CAP>-NNN, где<CAP>это capability. Ссылка изспеки в кейс идёт буллетом внутри сценария:
Носитель выбран после пробы: буллет переживает полный круг архивации, а
заголовок сценария трогать нельзя — по нему openspec матчит
MODIFIED-дельты,и переименование потеряет дельту. Подробности пробы —
в
lint-the-spec-to-test-linkage.Acceptance criteria
openspec/schemas/spec-tdd/schema.yamlсуществует,openspec schemasпечатает его в списке
proposal → specs → tests → tasks, при этомtests.requires: [specs]иtasks.requires: [specs, design, tests]apply.requiresсодержит иtests, иtasks— apply не стартует, покатест-кейсы не описаны
tests.mdдаёт на кейс: idTC-<CAP>-NNN, покрываемый сценарий,прозу «что проверяем», Red, Green и путь к тесту
tasks.mdтребует парыRED: <TC>/GREEN: <TC>и сохраняетформат чекбоксов
- [ ] X.Y, который парсит фаза applyspecsтребует буллет**TEST** TC-…в каждомсценарии
openspec schema validate spec-tddпроходитspec-tddназначена схемой по умолчанию вopenspec/config.yamlopenspec new changeдоapply-ready,
openspec statusпоказывает все артефактыdoneConstraints
.claude/commands/opsx/*.md. Они генерируются изпакета (
dist/core/templates/workflows/propose.js) и будут перезаписаныпервым же
openspec update.lint-the-spec-to-test-linkage.design. Он остаётся необязательным,как в стоковой схеме.