fix: remove unused scope input from bundled speckit workflow (#4401) · github/spec-kit@da2b0ae · GitHub
Skip to content

Commit da2b0ae

Browse files
gyanu2507Gyanu
andauthored
fix: remove unused scope input from bundled speckit workflow (#4401)
* fix: drop unused scope input from the bundled speckit workflow The Full SDD Cycle workflow prompted for full / backend-only / frontend-only, but none of the steps read inputs.scope. Every command only received inputs.spec, so the three choices behaved the same. Remove the dead input from the shipped workflow and align the docs that showed `specify workflow run speckit ... -i scope=...`. Keep scope as an example in the generic input-typing docs for authors who do wire it up. * Bump bundled speckit workflow to 1.0.1 after dropping scope. Catalog installs only see the dead input removed when the published version advances past what they already have. --------- Co-authored-by: Gyanu <gyanum.ug20.cse@gmail.com>
1 parent 4dd8afa commit da2b0ae

5 files changed

Lines changed: 44 additions & 13 deletions

File tree

docs/reference/workflows.md

Lines changed: 1 addition & 5 deletions
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
"""Guards for the bundled Full SDD Cycle workflow."""
2+
3+
from __future__ import annotations
4+
5+
from pathlib import Path
6+
7+
import yaml
8+
9+
from specify_cli.workflows.engine import WorkflowDefinition, validate_workflow
10+
11+
BUNDLED = (
12+
Path(__file__).resolve().parents[2] / "workflows" / "speckit" / "workflow.yml"
13+
)
14+
15+
16+
def test_bundled_speckit_workflow_has_no_unused_scope_input() -> None:
17+
"""Every declared input must be referenced; scope was a dead prompt (#4384)."""
18+
text = BUNDLED.read_text(encoding="utf-8")
19+
definition = WorkflowDefinition.from_string(text)
20+
assert validate_workflow(definition) == []
21+
assert "scope" not in definition.inputs
22+
assert "spec" in definition.inputs
23+
24+
raw = yaml.safe_load(text)
25+
assert "scope" not in raw.get("inputs", {})
26+
assert "inputs.scope" not in text
27+
28+
for step in raw["steps"]:
29+
args = (step.get("input") or {}).get("args")
30+
if args is None:
31+
continue
32+
assert "inputs.scope" not in str(args)

workflows/README.md

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,12 +70,19 @@ specify workflow run ./my-workflow.yml --input spec="Build a user authentication
7070

7171
### Multiple Inputs
7272

73+
When a workflow declares more than one input, pass each with a separate
74+
`--input` flag. For example, a custom workflow that gates steps on a
75+
`scope` selector:
76+
7377
```bash
74-
specify workflow run speckit \
78+
specify workflow run ./my-workflow.yml \
7579
--input spec="Build a user authentication system with OAuth support" \
7680
--input scope="backend-only"
7781
```
7882

83+
The bundled `speckit` workflow only declares `spec` (and optional
84+
`integration`); it does not take a `scope` input.
85+
7986
## Step Types
8087

8188
Workflows support 12 built-in step types:

workflows/catalog.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
{
22
"schema_version": "1.0",
3-
"updated_at": "2026-04-13T00:00:00Z",
3+
"updated_at": "2026-09-03T00:00:00Z",
44
"catalog_url": "https://raw.githubusercontent.com/github/spec-kit/main/workflows/catalog.json",
55
"workflows": {
66
"speckit": {
77
"id": "speckit",
88
"name": "Full SDD Cycle",
99
"description": "Runs specify \u2192 plan \u2192 tasks \u2192 implement with review gates",
1010
"author": "GitHub",
11-
"version": "1.0.0",
11+
"version": "1.0.1",
1212
"url": "https://raw.githubusercontent.com/github/spec-kit/main/workflows/speckit/workflow.yml",
1313
"tags": ["sdd", "full-cycle"]
1414
}

workflows/speckit/workflow.yml

Lines changed: 1 addition & 5 deletions

0 commit comments

Comments
 (0)