@rsaglobaltech/specgate 0.17.10 → 0.19.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +133 -1
- package/README.md +4 -4
- package/bin/specgate.ts +48 -47
- package/dist/bin/specgate.js +48 -46
- package/dist/bin/specgate.js.map +1 -1
- package/dist/packages/core/src/application/ArchiveChangeUseCase.js +6 -2
- package/dist/packages/core/src/application/ArchiveChangeUseCase.js.map +1 -1
- package/dist/packages/core/src/application/ValidateProjectUseCase.js +1 -1
- package/dist/packages/core/src/application/ValidateProjectUseCase.js.map +1 -1
- package/dist/packages/core/src/domain/ChangeTemplates.js +1 -1
- package/dist/packages/core/src/domain/DeltaFeature.js +3 -3
- package/dist/packages/core/src/domain/DeltaFeature.js.map +1 -1
- package/dist/packages/core/src/domain/DerivedMatrix.js +9 -9
- package/dist/packages/core/src/domain/DerivedMatrix.js.map +1 -1
- package/dist/packages/core/src/domain/DoneVerification.js +1 -1
- package/dist/packages/core/src/domain/DoneVerification.js.map +1 -1
- package/dist/packages/core/src/domain/DraftChecklist.js +38 -6
- package/dist/packages/core/src/domain/DraftChecklist.js.map +1 -1
- package/dist/packages/core/src/domain/GherkinTags.js +12 -12
- package/dist/packages/core/src/domain/GherkinTags.js.map +1 -1
- package/dist/packages/core/src/domain/InboundChange.js +1 -1
- package/dist/packages/core/src/domain/InboundChange.js.map +1 -1
- package/dist/packages/core/src/domain/Language.js +2 -2
- package/dist/packages/core/src/domain/Language.js.map +1 -1
- package/dist/packages/core/src/domain/Lockfile.js +7 -7
- package/dist/packages/core/src/domain/Lockfile.js.map +1 -1
- package/dist/packages/core/src/domain/PackDelta.js +1 -1
- package/dist/packages/core/src/domain/PackDelta.js.map +1 -1
- package/dist/packages/core/src/domain/PackSpec.js +21 -2
- package/dist/packages/core/src/domain/PackSpec.js.map +1 -1
- package/dist/packages/core/src/domain/RequirementGraph.js +2 -2
- package/dist/packages/core/src/domain/SpecParser.js +6 -6
- package/dist/packages/core/src/domain/SpecParser.js.map +1 -1
- package/dist/packages/core/src/domain/TraceMerge.js +4 -4
- package/dist/packages/core/src/domain/TraceMerge.js.map +1 -1
- package/dist/packages/core/src/domain/TraceabilityFormat.js +4 -4
- package/dist/packages/core/src/domain/TraceabilityFormat.js.map +1 -1
- package/dist/packages/core/src/domain/ValueAnnotations.js +8 -8
- package/dist/packages/core/src/domain/ValueAnnotations.js.map +1 -1
- package/dist/packages/core/src/domain/WriteScope.js +3 -3
- package/dist/packages/core/src/domain/WriteScope.js.map +1 -1
- package/dist/packages/core/src/infrastructure/ChangeWorkspace.js +2 -2
- package/dist/packages/core/src/infrastructure/ChangeWorkspace.js.map +1 -1
- package/dist/packages/core/src/infrastructure/ConsoleReporter.js +2 -2
- package/dist/packages/core/src/infrastructure/ConsoleReporter.js.map +1 -1
- package/dist/packages/core/src/infrastructure/DerivedMatrixSources.js +2 -2
- package/dist/packages/core/src/infrastructure/DerivedMatrixSources.js.map +1 -1
- package/dist/packages/core/src/infrastructure/DiskLanguageRepository.js +4 -4
- package/dist/packages/core/src/infrastructure/DiskLanguageRepository.js.map +1 -1
- package/dist/packages/core/src/infrastructure/DiskPackDeltaRepository.js +1 -1
- package/dist/packages/core/src/infrastructure/DiskPackDeltaRepository.js.map +1 -1
- package/dist/packages/core/src/infrastructure/GitContributionStager.js +3 -3
- package/dist/packages/core/src/infrastructure/GitContributionStager.js.map +1 -1
- package/dist/packages/core/src/infrastructure/RemotePackResolver.js +5 -5
- package/dist/packages/core/src/infrastructure/RemotePackResolver.js.map +1 -1
- package/dist/packages/core/test/unit/delta-feature.test.js +3 -3
- package/dist/packages/core/test/unit/delta-feature.test.js.map +1 -1
- package/dist/packages/core/test/unit/derived-matrix.test.js +8 -8
- package/dist/packages/core/test/unit/derived-matrix.test.js.map +1 -1
- package/dist/packages/core/test/unit/gherkin-tags.test.js +8 -8
- package/dist/packages/core/test/unit/gherkin-tags.test.js.map +1 -1
- package/dist/packages/core/test/unit/inbound-change.test.js +1 -1
- package/dist/packages/core/test/unit/inbound-change.test.js.map +1 -1
- package/dist/packages/core/test/unit/matrix-dependencies.test.js +5 -5
- package/dist/packages/core/test/unit/matrix-dependencies.test.js.map +1 -1
- package/dist/packages/core/test/unit/new-requirement.test.js +1 -1
- package/dist/packages/core/test/unit/new-requirement.test.js.map +1 -1
- package/dist/packages/core/test/unit/value-annotations.test.js +5 -5
- package/dist/packages/core/test/unit/value-annotations.test.js.map +1 -1
- package/dist/packages/core/test/unit/write-scope-status.test.js +5 -5
- package/dist/packages/core/test/unit/write-scope-status.test.js.map +1 -1
- package/dist/packages/mcp-spec-driven/src/native-tools.js +3 -3
- package/dist/packages/mcp-spec-driven/src/native-tools.js.map +1 -1
- package/dist/packages/mcp-spec-driven/src/server.js +1 -7
- package/dist/packages/mcp-spec-driven/src/server.js.map +1 -1
- package/dist/packages/mcp-spec-driven/src/tools.js +4 -4
- package/dist/packages/mcp-spec-driven/src/tools.js.map +1 -1
- package/dist/scripts/agents/commands.js +18 -0
- package/dist/scripts/agents/commands.js.map +1 -1
- package/dist/scripts/agents/init.js +35 -48
- package/dist/scripts/agents/init.js.map +1 -1
- package/dist/scripts/alm/cli.js +37 -3
- package/dist/scripts/alm/cli.js.map +1 -1
- package/dist/scripts/alm/providers/index.js +1 -1
- package/dist/scripts/alm/providers/index.js.map +1 -1
- package/dist/scripts/change/instructions.js +2 -2
- package/dist/scripts/change/instructions.js.map +1 -1
- package/dist/scripts/cli/commands/alm/PullCommand.js +1 -1
- package/dist/scripts/cli/commands/alm/PullCommand.js.map +1 -1
- package/dist/scripts/cli/commands/change/ChangeCommand.js +106 -101
- package/dist/scripts/cli/commands/change/ChangeCommand.js.map +1 -1
- package/dist/scripts/cli/commands/config/CiInitCommand.js +6 -4
- package/dist/scripts/cli/commands/config/CiInitCommand.js.map +1 -1
- package/dist/scripts/cli/commands/config/CompletionCommand.js +10 -10
- package/dist/scripts/cli/commands/config/CompletionCommand.js.map +1 -1
- package/dist/scripts/cli/commands/config/ConfigInitCommand.js +11 -19
- package/dist/scripts/cli/commands/config/ConfigInitCommand.js.map +1 -1
- package/dist/scripts/cli/commands/config/ConfigSetCommand.js +5 -1
- package/dist/scripts/cli/commands/config/ConfigSetCommand.js.map +1 -1
- package/dist/scripts/cli/commands/harness/RunCommand.js +73 -38
- package/dist/scripts/cli/commands/harness/RunCommand.js.map +1 -1
- package/dist/scripts/cli/commands/pack/BundlePackCommand.js +36 -2
- package/dist/scripts/cli/commands/pack/BundlePackCommand.js.map +1 -1
- package/dist/scripts/cli/commands/pack/ExpandDomainPackCommand.js +2 -2
- package/dist/scripts/cli/commands/pack/ExpandDomainPackCommand.js.map +1 -1
- package/dist/scripts/cli/commands/pack/InferPackCommand.js +2 -1
- package/dist/scripts/cli/commands/pack/InferPackCommand.js.map +1 -1
- package/dist/scripts/cli/commands/pack/InitPackCommand.js +23 -32
- package/dist/scripts/cli/commands/pack/InitPackCommand.js.map +1 -1
- package/dist/scripts/cli/commands/pack/LintPackCommand.js +4 -3
- package/dist/scripts/cli/commands/pack/LintPackCommand.js.map +1 -1
- package/dist/scripts/cli/commands/project/AdoptCommand.js +17 -4
- package/dist/scripts/cli/commands/project/AdoptCommand.js.map +1 -1
- package/dist/scripts/cli/commands/project/InitProjectCommand.js +8 -5
- package/dist/scripts/cli/commands/project/InitProjectCommand.js.map +1 -1
- package/dist/scripts/cli/commands/project/OnboardCommand.js +17 -24
- package/dist/scripts/cli/commands/project/OnboardCommand.js.map +1 -1
- package/dist/scripts/cli/commands/project/UpdateCommand.js +23 -43
- package/dist/scripts/cli/commands/project/UpdateCommand.js.map +1 -1
- package/dist/scripts/cli/commands/quality/CheckCommand.js +30 -17
- package/dist/scripts/cli/commands/quality/CheckCommand.js.map +1 -1
- package/dist/scripts/cli/commands/quality/DoctorCommand.js +27 -10
- package/dist/scripts/cli/commands/quality/DoctorCommand.js.map +1 -1
- package/dist/scripts/cli/commands/quality/FixCommand.js +24 -29
- package/dist/scripts/cli/commands/quality/FixCommand.js.map +1 -1
- package/dist/scripts/cli/commands/quality/ReportCommand.js +8 -4
- package/dist/scripts/cli/commands/quality/ReportCommand.js.map +1 -1
- package/dist/scripts/cli/commands/quality/ValidateSpecsCommand.js +69 -16
- package/dist/scripts/cli/commands/quality/ValidateSpecsCommand.js.map +1 -1
- package/dist/scripts/cli/commands/spec/DoneCommand.js +37 -23
- package/dist/scripts/cli/commands/spec/DoneCommand.js.map +1 -1
- package/dist/scripts/cli/commands/spec/DraftCommand.js +724 -26
- package/dist/scripts/cli/commands/spec/DraftCommand.js.map +1 -1
- package/dist/scripts/cli/commands/spec/MatrixCommand.js +24 -27
- package/dist/scripts/cli/commands/spec/MatrixCommand.js.map +1 -1
- package/dist/scripts/cli/commands/spec/NewCommand.js +11 -14
- package/dist/scripts/cli/commands/spec/NewCommand.js.map +1 -1
- package/dist/scripts/cli/commands/spec/PetCommand.js +102 -0
- package/dist/scripts/cli/commands/spec/PetCommand.js.map +1 -0
- package/dist/scripts/cli/commands/spec/PlanCommand.js +34 -39
- package/dist/scripts/cli/commands/spec/PlanCommand.js.map +1 -1
- package/dist/scripts/cli/commands/spec/ReqCommand.js +51 -58
- package/dist/scripts/cli/commands/spec/ReqCommand.js.map +1 -1
- package/dist/scripts/cli/commands/spec/StatusCommand.js +99 -45
- package/dist/scripts/cli/commands/spec/StatusCommand.js.map +1 -1
- package/dist/scripts/cli/commands/spec/StudioCommand.js +16 -24
- package/dist/scripts/cli/commands/spec/StudioCommand.js.map +1 -1
- package/dist/scripts/cli/commands/specops/ContributeCommand.js +24 -32
- package/dist/scripts/cli/commands/specops/ContributeCommand.js.map +1 -1
- package/dist/scripts/cli/commands/specops/DiffCommand.js +3 -2
- package/dist/scripts/cli/commands/specops/DiffCommand.js.map +1 -1
- package/dist/scripts/cli/commands/specops/SyncCommand.js +4 -3
- package/dist/scripts/cli/commands/specops/SyncCommand.js.map +1 -1
- package/dist/scripts/docs/blocks.js +4 -4
- package/dist/scripts/docs/blocks.js.map +1 -1
- package/dist/scripts/docs/build-site.js +24 -9
- package/dist/scripts/docs/build-site.js.map +1 -1
- package/dist/scripts/docs/components.js +24 -24
- package/dist/scripts/docs/components.js.map +1 -1
- package/dist/scripts/docs/journey-storyboard.js +358 -0
- package/dist/scripts/docs/journey-storyboard.js.map +1 -0
- package/dist/scripts/docs/nav.js +120 -23
- package/dist/scripts/docs/nav.js.map +1 -1
- package/dist/scripts/docs/record-journey.js +376 -0
- package/dist/scripts/docs/record-journey.js.map +1 -0
- package/dist/scripts/docs/record-terminal.js +260 -43
- package/dist/scripts/docs/record-terminal.js.map +1 -1
- package/dist/scripts/docs/terminal-storyboard.js +151 -2
- package/dist/scripts/docs/terminal-storyboard.js.map +1 -1
- package/dist/scripts/draft/brief-setup.js +367 -0
- package/dist/scripts/draft/brief-setup.js.map +1 -0
- package/dist/scripts/draft/confined-agent.js +194 -0
- package/dist/scripts/draft/confined-agent.js.map +1 -0
- package/dist/scripts/draft/drafting-guide.js +147 -0
- package/dist/scripts/draft/drafting-guide.js.map +1 -0
- package/dist/scripts/gen_mcp_tools.js +4 -4
- package/dist/scripts/gen_mcp_tools.js.map +1 -1
- package/dist/scripts/harness/init.js +25 -16
- package/dist/scripts/harness/init.js.map +1 -1
- package/dist/scripts/harness/report.js +39 -40
- package/dist/scripts/harness/report.js.map +1 -1
- package/dist/scripts/harness/worktree-lock.js +2 -2
- package/dist/scripts/harness/worktree-lock.js.map +1 -1
- package/dist/scripts/lib/command.js +3 -2
- package/dist/scripts/lib/command.js.map +1 -1
- package/dist/scripts/lib/derived-writes.js +1 -1
- package/dist/scripts/lib/diagnostics.js +12 -16
- package/dist/scripts/lib/diagnostics.js.map +1 -1
- package/dist/scripts/lib/placeholders.js +4 -4
- package/dist/scripts/lib/placeholders.js.map +1 -1
- package/dist/scripts/lib/surface.js +33 -15
- package/dist/scripts/lib/surface.js.map +1 -1
- package/dist/scripts/lib/ui.js +356 -0
- package/dist/scripts/lib/ui.js.map +1 -0
- package/dist/scripts/merge-traceability.js +3 -3
- package/dist/scripts/pet/pet.js +331 -0
- package/dist/scripts/pet/pet.js.map +1 -0
- package/dist/scripts/pet.js +10 -0
- package/dist/scripts/pet.js.map +1 -0
- package/dist/scripts/plugin/gate-hook.js +1 -1
- package/dist/scripts/plugin/gate-hook.js.map +1 -1
- package/dist/scripts/schema/registry.js +2 -2
- package/dist/scripts/schema/registry.js.map +1 -1
- package/dist/scripts/specops/add.js +23 -32
- package/dist/scripts/specops/add.js.map +1 -1
- package/dist/scripts/specops/lock.js +4 -4
- package/dist/scripts/specops/lock.js.map +1 -1
- package/dist/scripts/specops/remove.js +15 -24
- package/dist/scripts/specops/remove.js.map +1 -1
- package/package.json +3 -2
- package/templates/base/AGENTS.md.tpl +6 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
<!--
|
|
1
|
+
<!-- specgate:allow-placeholders — release notes quote the {{VAR}} template syntax. -->
|
|
2
2
|
# Changelog
|
|
3
3
|
|
|
4
4
|
Notable changes, newest first. Follows [Keep a Changelog](https://keepachangelog.com/)
|
|
@@ -8,6 +8,138 @@ The release process is in [`docs/release-process.md`](docs/release-process.md).
|
|
|
8
8
|
|
|
9
9
|
## [Unreleased]
|
|
10
10
|
|
|
11
|
+
## [0.19.1] — 2026-10-12
|
|
12
|
+
|
|
13
|
+
### Fixed
|
|
14
|
+
|
|
15
|
+
- **On Windows, output to a log or a pipe printed ASCII symbols** (`v` for `✔`),
|
|
16
|
+
as if it were an old console window. Only a console window gets ASCII now;
|
|
17
|
+
a CI log is Unicode text like everywhere else. 0.19.0 was not published to
|
|
18
|
+
npm because its Windows E2E caught this.
|
|
19
|
+
|
|
20
|
+
## [0.19.0] — 2026-10-12
|
|
21
|
+
|
|
22
|
+
### Changed — breaking
|
|
23
|
+
|
|
24
|
+
- **One name everywhere: `csda` is gone** ([ADR-0032](docs/specs/adr/0032-one-name-everywhere.md)).
|
|
25
|
+
The on-disk format, kept under the tool's first name by ADR-0024, is now
|
|
26
|
+
`specgate` too: `<!-- specgate:trace … -->`, `specgate:value`,
|
|
27
|
+
`specgate:allow-placeholders`, `.specgate/`, `SPECGATE_*` environment
|
|
28
|
+
variables, `specgate_change_version` in `change.yaml`, the `specgate-matrix`
|
|
29
|
+
merge driver, and the Maven/Gradle coordinates `com.rsaglobaltech.specgate`.
|
|
30
|
+
The `csda` binary alias and the `csda_*` MCP tool names are removed. There is
|
|
31
|
+
no compatibility layer: a project on the old format fails `validate` with
|
|
32
|
+
`old_format` and the one-line migration to run.
|
|
33
|
+
|
|
34
|
+
### Fixed
|
|
35
|
+
|
|
36
|
+
- **`specgate draft --agent "claude -p"` could never write** (#94): in print
|
|
37
|
+
mode Claude Code has no permission to edit, so it asked "Want to grant
|
|
38
|
+
permission…?", exited, and `draft` reported `draft_no_front_matter`. `draft`
|
|
39
|
+
now adds `--permission-mode acceptEdits` when the command brings no
|
|
40
|
+
permission flag of its own, and says so. An agent that runs and writes
|
|
41
|
+
nothing is told apart from a draft with findings, with the likely cause.
|
|
42
|
+
- **After `draft <module> --agent`, the next step was lost** (#96) at the end of
|
|
43
|
+
the agent's long output. A rule now marks where Specgate takes over, the
|
|
44
|
+
brief's modules show where each stands, and the next steps are numbered —
|
|
45
|
+
review, questions, archive, then the next module or `status`.
|
|
46
|
+
|
|
47
|
+
- **A second `draft <module> --agent` pass redrafted blind** (#98): the agent
|
|
48
|
+
may only edit, so it cannot run the checker, and its prompt carried the guide
|
|
49
|
+
but not the findings. It now gets the open findings, with their fixes. On a
|
|
50
|
+
real run with `claude -p`: 13 findings after the first pass, 0 after the
|
|
51
|
+
second.
|
|
52
|
+
- **Under `--agent`, the agent asked for permission to run `specgate draft`**
|
|
53
|
+
(#97), which Specgate runs itself when the agent finishes. The prompt says so.
|
|
54
|
+
|
|
55
|
+
### Changed
|
|
56
|
+
|
|
57
|
+
- **A new look for the CLI, one design system for every command.** Each
|
|
58
|
+
command opens with `◆ specgate · <command>` and ends with one `Next` block, its
|
|
59
|
+
command alone on a line so it copies clean. `status` and `draft` show progress
|
|
60
|
+
bars; findings read `✖ message` with `fix:` under them; `check` and `done`
|
|
61
|
+
draw one line per stage and print what `validate` and the tests said only
|
|
62
|
+
when they fail. The harness draws one aligned line per attempt and
|
|
63
|
+
requirement, a report with a progress bar, and the branch to review as its
|
|
64
|
+
next step; `harness report` and `harness init` follow the same shapes. One palette (`scripts/lib/ui.ts`) replaces twenty copies:
|
|
65
|
+
truecolor where the terminal has it, 256 or 16 colours where not, none under
|
|
66
|
+
`NO_COLOR` or off a terminal, `FORCE_COLOR` honoured. Symbols are one column
|
|
67
|
+
wide; `SPECGATE_ASCII=1` swaps them for ASCII. Help icons are emoji that
|
|
68
|
+
always take two columns, so the names line up.
|
|
69
|
+
- **`validate` and the pack commands lost `❌ [ERROR]`, `💡 [FIX]`, `ℹ️ [INFO]`,
|
|
70
|
+
`⚠️ [WARN]`** for `✖`, an indented fix, `ℹ` and `▲`. The VS Code extension and
|
|
71
|
+
the pack registry, which read those lines, read both forms.
|
|
72
|
+
|
|
73
|
+
### Added
|
|
74
|
+
|
|
75
|
+
- **Gato, the cat that keeps the gate** (`specgate pet`). A terminal pet whose
|
|
76
|
+
state is the project's: it grows from an egg to a crowned legend as
|
|
77
|
+
requirements close, falls sick on a red `check`, worries over unanswered
|
|
78
|
+
questions, sleeps when the gate has not run for a week, and keeps a streak of
|
|
79
|
+
green days. Whatever it says ends with the command `status` gives. A small
|
|
80
|
+
version sits at the foot of `status` on a terminal — never in a pipe, a log
|
|
81
|
+
or CI — and `specgate config set pet off` hides it.
|
|
82
|
+
|
|
83
|
+
- **A bare `specgate` inside a project shows where it stands** — `status`, with
|
|
84
|
+
its one next command — instead of the list of every command. Outside a
|
|
85
|
+
project it is still the help.
|
|
86
|
+
|
|
87
|
+
## [0.18.0] — 2026-10-11
|
|
88
|
+
|
|
89
|
+
### Added
|
|
90
|
+
|
|
91
|
+
- **`specgate draft` — from a plan to requirements, one command at a time.**
|
|
92
|
+
Save your plan or a client's brief as `docs/brief.md` and run
|
|
93
|
+
`specgate draft`: with no brief it says what a brief is and what a good one
|
|
94
|
+
says, and `--new-brief` writes one to fill in; with no front matter it
|
|
95
|
+
explains each field (`product`, `surfaces`, `actors`, `modules`) with an
|
|
96
|
+
example and the block to paste; with mistakes it says each one and its fix;
|
|
97
|
+
with a valid one it lists the modules, their state and the next one.
|
|
98
|
+
- **`specgate draft <module>`** opens the module as a change linked to the
|
|
99
|
+
brief, writes `DRAFTING.md` — everything your agent needs — and prints a
|
|
100
|
+
one-line prompt to paste into any agent. Run it again to check the draft
|
|
101
|
+
against the brief; it says what to fix, or that it is ready to archive.
|
|
102
|
+
- **`--agent "claude -p"`** hands the work to your agent on standard input (or
|
|
103
|
+
in a file, with `{prompt_file}`), undoes anything it writes outside the
|
|
104
|
+
draft, and checks the result. Without a module, the agent proposes the
|
|
105
|
+
brief's front matter and leaves the text below it untouched.
|
|
106
|
+
- **`/specgate:draft`**, installed by `agents init`, does the same from Claude
|
|
107
|
+
Code and the other agent tools.
|
|
108
|
+
- **[Write the brief](docs/start/write-the-brief.md)**, a new step-by-step
|
|
109
|
+
guide; the quickstart is now two journeys of five phases, every output
|
|
110
|
+
recorded from the CLI; and [Specgate or OpenSpec](docs/vs-openspec.md).
|
|
111
|
+
- **Seven proven domain packs, derived from the six pilots.** `ledger`,
|
|
112
|
+
`transfers`, `event-registration`, `clinical-record`, `appointment-booking`,
|
|
113
|
+
`shop-orders` and `time-attendance`: 65 requirements and 85 scenarios, each
|
|
114
|
+
implemented and tested by the product it came from (Spring Boot, Quarkus and
|
|
115
|
+
TypeScript stacks). Questions a pilot could not answer ship as *Needs
|
|
116
|
+
Clarification* — drug interaction alerts, shipping costs — instead of an
|
|
117
|
+
invented answer. Separate id ranges, so a project can install all seven.
|
|
118
|
+
Install them with `specops add` into a project made by `specgate init`;
|
|
119
|
+
`init --from-pack` does not handle a requirement with two scenarios yet.
|
|
120
|
+
- **`metadata.tier` and `metadata.provenance` in `pack.yaml` (schema 1.5.0).**
|
|
121
|
+
`proven` or `starter`; `pack lint` refuses a `proven` pack without a
|
|
122
|
+
provenance. The pack registry shows the tier on every card and lists proven
|
|
123
|
+
packs first.
|
|
124
|
+
|
|
125
|
+
### Changed
|
|
126
|
+
|
|
127
|
+
- `init`, `status` and `--help` point to `specgate draft` when there is a
|
|
128
|
+
brief. A draft opened from a brief needs no `tasks.md` ticked before
|
|
129
|
+
archiving: its checklist is its gate.
|
|
130
|
+
- **The eleven existing packs are described as what they are: starter
|
|
131
|
+
examples.** They were called "curated domain packs"; each is four or five
|
|
132
|
+
generic Draft requirements and no product was built from one. The docs, the
|
|
133
|
+
README and the registry now say so (and `supply-chain.md`, which said ten).
|
|
134
|
+
|
|
135
|
+
### Fixed
|
|
136
|
+
|
|
137
|
+
- `change archive` said the gate would fail until the tests existed; archived
|
|
138
|
+
requirements are Draft and the gate passes. It now names the next step (#92).
|
|
139
|
+
- `change author --artifact specs` never told the agent about the brief, the
|
|
140
|
+
assumptions or the open questions (#93); brief to draft took four commands
|
|
141
|
+
and a hand edit (#94); nothing said what a brief's front matter is (#95).
|
|
142
|
+
|
|
11
143
|
## [0.17.10] — 2026-10-11
|
|
12
144
|
|
|
13
145
|
### Added
|
package/README.md
CHANGED
|
@@ -82,9 +82,9 @@ and writes the feature files, so a merged proposal cannot quietly become
|
|
|
82
82
|
undone work.
|
|
83
83
|
→ [Your team's first pull request](docs/first-pr.md) · [Reviewing changes](docs/reviewing-changes.md)
|
|
84
84
|
|
|
85
|
-
**From a brief, or from OpenSpec.**
|
|
86
|
-
|
|
87
|
-
sourced laws, every value in the brief or listed as an assumption, open
|
|
85
|
+
**From a brief, or from OpenSpec.** Save your plan as `docs/brief.md`, run
|
|
86
|
+
`specgate draft`: module by module, it briefs your agent and holds the draft
|
|
87
|
+
to eleven rules — scenarios per actor and surface, sourced laws, every value in the brief or listed as an assumption, open
|
|
88
88
|
questions that block, ids each actor can reach. Teams on OpenSpec keep it: `specgate verify` fails while
|
|
89
89
|
a change claims a scenario no test names.
|
|
90
90
|
→ [A new project, step by step](docs/new-project.md) · [From a client brief](docs/from-a-brief.md) · [Already on OpenSpec](docs/openspec.md)
|
|
@@ -99,7 +99,7 @@ each. The MCP server ships in the package: `specgate mcp install --client claude
|
|
|
99
99
|
**Domain knowledge as a dependency.** A pack is a versioned, schema-validated
|
|
100
100
|
domain model. Install it, pin it, upgrade it deliberately — and review the
|
|
101
101
|
upgrade as intent with `specops diff --as-change`, not as a file diff.
|
|
102
|
-
→ [Domain packs](docs/domain-packs.md) · [Supply chain](docs/supply-chain.md)
|
|
102
|
+
→ [Domain packs: 7 proven in the pilots, 11 starter examples](docs/domain-packs.md) · [Supply chain](docs/supply-chain.md)
|
|
103
103
|
|
|
104
104
|
**Unattended delivery.** `specgate harness run` drives plan → agent → verify →
|
|
105
105
|
done for every pending requirement, each in its own git worktree; it never
|
package/bin/specgate.ts
CHANGED
|
@@ -10,6 +10,7 @@ const packageJson = require(path.join(rootDir, "package.json"));
|
|
|
10
10
|
const VERSION: string = packageJson.version || "0.0.0";
|
|
11
11
|
import { ICommand } from "../scripts/lib/command";
|
|
12
12
|
import { SURFACE, helpRows, coreHelpRows, hiddenCommandCount } from "../scripts/lib/surface";
|
|
13
|
+
import { findProjectRoot } from "../scripts/lib/project-root";
|
|
13
14
|
|
|
14
15
|
/** Resolve a registry row's `script` segments to a path under dist/scripts. */
|
|
15
16
|
function resolveScript(segments: string[]): string {
|
|
@@ -18,57 +19,50 @@ function resolveScript(segments: string[]): string {
|
|
|
18
19
|
|
|
19
20
|
// ── Pretty output helpers ─────────────────────────────────────────────────────────
|
|
20
21
|
|
|
21
|
-
|
|
22
|
-
process.stdout.isTTY && process.env.NO_COLOR === undefined && process.env.TERM !== "dumb";
|
|
23
|
-
|
|
24
|
-
const c = {
|
|
25
|
-
reset: COLOR_ENABLED ? "\x1b[0m" : "",
|
|
26
|
-
bold: COLOR_ENABLED ? "\x1b[1m" : "",
|
|
27
|
-
dim: COLOR_ENABLED ? "\x1b[2m" : "",
|
|
28
|
-
red: COLOR_ENABLED ? "\x1b[31m" : "",
|
|
29
|
-
green: COLOR_ENABLED ? "\x1b[32m" : "",
|
|
30
|
-
yellow: COLOR_ENABLED ? "\x1b[33m" : "",
|
|
31
|
-
blue: COLOR_ENABLED ? "\x1b[34m" : "",
|
|
32
|
-
magenta: COLOR_ENABLED ? "\x1b[35m" : "",
|
|
33
|
-
cyan: COLOR_ENABLED ? "\x1b[36m" : "",
|
|
34
|
-
};
|
|
22
|
+
import { c, sym } from "../scripts/lib/ui";
|
|
35
23
|
|
|
36
24
|
function info(msg: string): void {
|
|
37
|
-
process.stdout.write(
|
|
25
|
+
process.stdout.write(` ${c.note}${sym.info}${c.reset} ${msg}\n`);
|
|
38
26
|
}
|
|
39
27
|
|
|
40
28
|
function error(msg: string): void {
|
|
41
|
-
process.stderr.write(
|
|
29
|
+
process.stderr.write(` ${c.bad}${sym.fail}${c.reset} ${msg}\n`);
|
|
42
30
|
}
|
|
43
31
|
|
|
44
32
|
function banner(): string {
|
|
45
33
|
return (
|
|
46
34
|
`\n` +
|
|
47
|
-
` ${c.
|
|
48
|
-
`
|
|
35
|
+
` ${c.brand}${sym.brand}${c.reset} ${c.bold}specgate${c.reset} ${c.muted}v${VERSION}${c.reset}\n` +
|
|
36
|
+
` ${c.muted}Specs as executable contracts — requirements, scenarios and traceability that CI enforces.${c.reset}\n`
|
|
49
37
|
);
|
|
50
38
|
}
|
|
51
39
|
|
|
40
|
+
/** `Every day ────────` — the help's sections, in the same shape as every command's. */
|
|
52
41
|
function section(title: string): string {
|
|
53
|
-
|
|
42
|
+
const rule = sym.line.repeat(Math.max(4, 44 - Array.from(title).length));
|
|
43
|
+
return `\n ${c.bold}${title}${c.reset} ${c.muted}${rule}${c.reset}\n`;
|
|
54
44
|
}
|
|
55
45
|
|
|
46
|
+
/**
|
|
47
|
+
* One command of the help: its icon, its name, what it does. Icons are emoji
|
|
48
|
+
* with default emoji presentation, so every one takes two columns and the
|
|
49
|
+
* names line up (`surface.ts` keeps to that set).
|
|
50
|
+
*/
|
|
56
51
|
function cmd(emoji: string, name: string, summary: string, pad = 16): string {
|
|
57
|
-
// Use Array.from to count code points (emojis with surrogate pairs count as 1)
|
|
58
52
|
const visible = Array.from(name).length;
|
|
59
53
|
const padding = " ".repeat(Math.max(1, pad - visible));
|
|
60
|
-
return ` ${
|
|
54
|
+
return ` ${emoji} ${c.accent}${name}${c.reset}${padding}${c.muted}${summary}${c.reset}\n`;
|
|
61
55
|
}
|
|
62
56
|
|
|
63
57
|
function flag(name: string, summary: string, pad = 18): string {
|
|
64
58
|
const visible = Array.from(name).length;
|
|
65
59
|
const padding = " ".repeat(Math.max(1, pad - visible));
|
|
66
|
-
return ` ${c.
|
|
60
|
+
return ` ${c.accent}${name}${c.reset}${padding}${c.muted}${summary}${c.reset}\n`;
|
|
67
61
|
}
|
|
68
62
|
|
|
69
63
|
function example(line: string, comment?: string): string {
|
|
70
|
-
const prefix = comment ? ` ${c.
|
|
71
|
-
return `${prefix} ${c.
|
|
64
|
+
const prefix = comment ? ` ${c.muted}# ${comment}${c.reset}\n` : "";
|
|
65
|
+
return `${prefix} ${c.muted}$${c.reset} ${line}\n`;
|
|
72
66
|
}
|
|
73
67
|
|
|
74
68
|
/**
|
|
@@ -143,16 +137,16 @@ function renderGroups(groups: any[]): string {
|
|
|
143
137
|
function usageCore() {
|
|
144
138
|
process.stdout.write(
|
|
145
139
|
banner() +
|
|
146
|
-
section("
|
|
147
|
-
` ${c.
|
|
148
|
-
` ${c.dim}Run ‘<command> --help’ for per-command details.${c.reset}\n` +
|
|
140
|
+
section("Usage") +
|
|
141
|
+
` ${c.accent}specgate${c.reset} ${c.bold}<command>${c.reset} [options] ${c.muted}specgate <command> --help for its options${c.reset}\n` +
|
|
149
142
|
renderGroups(coreHelpRows()) +
|
|
150
|
-
section("
|
|
151
|
-
` ${c.
|
|
152
|
-
` ${c.
|
|
153
|
-
` ${c.
|
|
154
|
-
section("
|
|
143
|
+
section("More") +
|
|
144
|
+
` ${c.muted}${hiddenCommandCount()} more commands cover packs, automation, agents and reporting.${c.reset}\n` +
|
|
145
|
+
` ${c.accent}specgate --help --all${c.reset}${c.muted} show every command${c.reset}\n` +
|
|
146
|
+
` ${c.accent}specgate config set profile full${c.reset}${c.muted} make that the default${c.reset}\n` +
|
|
147
|
+
section("Examples") +
|
|
155
148
|
example(`npx @rsaglobaltech/specgate@latest init`, "Existing repo or empty directory") +
|
|
149
|
+
example(`specgate draft`, "Your plan is in docs/brief.md") +
|
|
156
150
|
example(`specgate status`, "Start of day") +
|
|
157
151
|
example(`specgate check`, "Before a pull request") +
|
|
158
152
|
"\n"
|
|
@@ -160,13 +154,13 @@ function usageCore() {
|
|
|
160
154
|
}
|
|
161
155
|
|
|
162
156
|
/**
|
|
163
|
-
* `core` unless the project says otherwise. Read from .
|
|
157
|
+
* `core` unless the project says otherwise. Read from .specgate/config.json so a
|
|
164
158
|
* team that lives in the full surface is not re-narrowed on every invocation.
|
|
165
159
|
*/
|
|
166
160
|
function helpProfile(): string {
|
|
167
|
-
if (process.env.
|
|
161
|
+
if (process.env.SPECGATE_PROFILE) return process.env.SPECGATE_PROFILE;
|
|
168
162
|
try {
|
|
169
|
-
const raw = fs.readFileSync(path.join(process.cwd(), ".
|
|
163
|
+
const raw = fs.readFileSync(path.join(process.cwd(), ".specgate", "config.json"), "utf8");
|
|
170
164
|
const parsed = JSON.parse(raw);
|
|
171
165
|
if (parsed && typeof parsed.profile === "string") return parsed.profile;
|
|
172
166
|
} catch {
|
|
@@ -176,13 +170,13 @@ function helpProfile(): string {
|
|
|
176
170
|
}
|
|
177
171
|
|
|
178
172
|
function groupUsage(row: any) {
|
|
179
|
-
let out = `\n ${c.bold}specgate ${row.name}${c.reset} <sub-command> [options]\n`;
|
|
180
|
-
out += section("
|
|
173
|
+
let out = `\n ${c.brand}${sym.brand}${c.reset} ${c.bold}specgate ${row.name}${c.reset} <sub-command> [options]\n`;
|
|
174
|
+
out += section("Sub-commands");
|
|
181
175
|
for (const s of row.subcommands) {
|
|
182
176
|
const summary = (s.help && s.help.summary) || (row.help && row.help.summary) || "";
|
|
183
177
|
out += cmd((s.help && s.help.icon) || "·", `${row.name} ${s.name}`, summary, 20);
|
|
184
178
|
}
|
|
185
|
-
out += `\n ${c.
|
|
179
|
+
out += `\n ${c.muted}specgate ${row.name} <sub-command> --help for its own options${c.reset}\n\n`;
|
|
186
180
|
process.stdout.write(out);
|
|
187
181
|
}
|
|
188
182
|
|
|
@@ -195,19 +189,18 @@ function usage(opts?: { all?: boolean }) {
|
|
|
195
189
|
function usageFull() {
|
|
196
190
|
process.stdout.write(
|
|
197
191
|
banner() +
|
|
198
|
-
section("
|
|
199
|
-
` ${c.
|
|
200
|
-
` ${c.dim}Run ‘<command> --help’ for per-command details.${c.reset}\n` +
|
|
192
|
+
section("Usage") +
|
|
193
|
+
` ${c.accent}specgate${c.reset} ${c.bold}<command>${c.reset} [options] ${c.muted}specgate <command> --help for its options${c.reset}\n` +
|
|
201
194
|
renderGroups(helpRows()) +
|
|
202
|
-
section("
|
|
195
|
+
section("Global flags") +
|
|
203
196
|
flag("-h, --help", "Show this help.") +
|
|
204
197
|
flag("-v, --version", "Show CLI version.") +
|
|
205
|
-
section("
|
|
198
|
+
section("Examples") +
|
|
206
199
|
EXAMPLES +
|
|
207
|
-
section("
|
|
208
|
-
` ${c.
|
|
209
|
-
` ${c.
|
|
210
|
-
` ${c.
|
|
200
|
+
section("Learn more") +
|
|
201
|
+
` 📖 ${c.muted}How-to guide ${c.reset}${c.underline}https://github.com/rsaglobaltech/specgate/blob/main/docs/how-to.md${c.reset}\n` +
|
|
202
|
+
` 🌐 ${c.muted}Documentation ${c.reset}${c.underline}https://rsaglobaltech.github.io/specgate/${c.reset}\n` +
|
|
203
|
+
` 🐞 ${c.muted}Report a bug ${c.reset}${c.underline}https://github.com/rsaglobaltech/specgate/issues${c.reset}\n` +
|
|
211
204
|
`\n`
|
|
212
205
|
);
|
|
213
206
|
}
|
|
@@ -247,6 +240,14 @@ export class CreateSpecDrivenAppCommand implements ICommand {
|
|
|
247
240
|
public execute(args: string[] = []): void {
|
|
248
241
|
args = args.length ? args : process.argv.slice(2);
|
|
249
242
|
|
|
243
|
+
// Inside a project, a bare `specgate` answers "where am I, and what next?"
|
|
244
|
+
// — the question people have when they type it — rather than the list of
|
|
245
|
+
// every command (#96). Outside one, the help is the useful answer.
|
|
246
|
+
if (args.length === 0 && findProjectRoot(process.cwd())) {
|
|
247
|
+
process.env.SPECGATE_BARE = "1";
|
|
248
|
+
args = ["status"];
|
|
249
|
+
}
|
|
250
|
+
|
|
250
251
|
if (args.length === 0 || args[0] === "--help" || args[0] === "-h") {
|
|
251
252
|
usage({ all: args.includes("--all") });
|
|
252
253
|
process.exit(0);
|
package/dist/bin/specgate.js
CHANGED
|
@@ -43,51 +43,47 @@ const distScripts = path.join(__dirname, "..", "scripts");
|
|
|
43
43
|
const packageJson = require(path.join(rootDir, "package.json"));
|
|
44
44
|
const VERSION = packageJson.version || "0.0.0";
|
|
45
45
|
const surface_1 = require("../scripts/lib/surface");
|
|
46
|
+
const project_root_1 = require("../scripts/lib/project-root");
|
|
46
47
|
/** Resolve a registry row's `script` segments to a path under dist/scripts. */
|
|
47
48
|
function resolveScript(segments) {
|
|
48
49
|
return path.join(distScripts, ...segments);
|
|
49
50
|
}
|
|
50
51
|
// ── Pretty output helpers ─────────────────────────────────────────────────────────
|
|
51
|
-
const
|
|
52
|
-
const c = {
|
|
53
|
-
reset: COLOR_ENABLED ? "\x1b[0m" : "",
|
|
54
|
-
bold: COLOR_ENABLED ? "\x1b[1m" : "",
|
|
55
|
-
dim: COLOR_ENABLED ? "\x1b[2m" : "",
|
|
56
|
-
red: COLOR_ENABLED ? "\x1b[31m" : "",
|
|
57
|
-
green: COLOR_ENABLED ? "\x1b[32m" : "",
|
|
58
|
-
yellow: COLOR_ENABLED ? "\x1b[33m" : "",
|
|
59
|
-
blue: COLOR_ENABLED ? "\x1b[34m" : "",
|
|
60
|
-
magenta: COLOR_ENABLED ? "\x1b[35m" : "",
|
|
61
|
-
cyan: COLOR_ENABLED ? "\x1b[36m" : "",
|
|
62
|
-
};
|
|
52
|
+
const ui_1 = require("../scripts/lib/ui");
|
|
63
53
|
function info(msg) {
|
|
64
|
-
process.stdout.write(
|
|
54
|
+
process.stdout.write(` ${ui_1.c.note}${ui_1.sym.info}${ui_1.c.reset} ${msg}\n`);
|
|
65
55
|
}
|
|
66
56
|
function error(msg) {
|
|
67
|
-
process.stderr.write(
|
|
57
|
+
process.stderr.write(` ${ui_1.c.bad}${ui_1.sym.fail}${ui_1.c.reset} ${msg}\n`);
|
|
68
58
|
}
|
|
69
59
|
function banner() {
|
|
70
60
|
return (`\n` +
|
|
71
|
-
` ${c.
|
|
72
|
-
`
|
|
61
|
+
` ${ui_1.c.brand}${ui_1.sym.brand}${ui_1.c.reset} ${ui_1.c.bold}specgate${ui_1.c.reset} ${ui_1.c.muted}v${VERSION}${ui_1.c.reset}\n` +
|
|
62
|
+
` ${ui_1.c.muted}Specs as executable contracts — requirements, scenarios and traceability that CI enforces.${ui_1.c.reset}\n`);
|
|
73
63
|
}
|
|
64
|
+
/** `Every day ────────` — the help's sections, in the same shape as every command's. */
|
|
74
65
|
function section(title) {
|
|
75
|
-
|
|
66
|
+
const rule = ui_1.sym.line.repeat(Math.max(4, 44 - Array.from(title).length));
|
|
67
|
+
return `\n ${ui_1.c.bold}${title}${ui_1.c.reset} ${ui_1.c.muted}${rule}${ui_1.c.reset}\n`;
|
|
76
68
|
}
|
|
69
|
+
/**
|
|
70
|
+
* One command of the help: its icon, its name, what it does. Icons are emoji
|
|
71
|
+
* with default emoji presentation, so every one takes two columns and the
|
|
72
|
+
* names line up (`surface.ts` keeps to that set).
|
|
73
|
+
*/
|
|
77
74
|
function cmd(emoji, name, summary, pad = 16) {
|
|
78
|
-
// Use Array.from to count code points (emojis with surrogate pairs count as 1)
|
|
79
75
|
const visible = Array.from(name).length;
|
|
80
76
|
const padding = " ".repeat(Math.max(1, pad - visible));
|
|
81
|
-
return ` ${
|
|
77
|
+
return ` ${emoji} ${ui_1.c.accent}${name}${ui_1.c.reset}${padding}${ui_1.c.muted}${summary}${ui_1.c.reset}\n`;
|
|
82
78
|
}
|
|
83
79
|
function flag(name, summary, pad = 18) {
|
|
84
80
|
const visible = Array.from(name).length;
|
|
85
81
|
const padding = " ".repeat(Math.max(1, pad - visible));
|
|
86
|
-
return ` ${c.
|
|
82
|
+
return ` ${ui_1.c.accent}${name}${ui_1.c.reset}${padding}${ui_1.c.muted}${summary}${ui_1.c.reset}\n`;
|
|
87
83
|
}
|
|
88
84
|
function example(line, comment) {
|
|
89
|
-
const prefix = comment ? ` ${c.
|
|
90
|
-
return `${prefix} ${c.
|
|
85
|
+
const prefix = comment ? ` ${ui_1.c.muted}# ${comment}${ui_1.c.reset}\n` : "";
|
|
86
|
+
return `${prefix} ${ui_1.c.muted}$${ui_1.c.reset} ${line}\n`;
|
|
91
87
|
}
|
|
92
88
|
/**
|
|
93
89
|
* The worked examples of `--help --all`. Prose, not surface: they are chosen
|
|
@@ -124,29 +120,29 @@ function renderGroups(groups) {
|
|
|
124
120
|
}
|
|
125
121
|
function usageCore() {
|
|
126
122
|
process.stdout.write(banner() +
|
|
127
|
-
section("
|
|
128
|
-
` ${c.
|
|
129
|
-
` ${c.dim}Run ‘<command> --help’ for per-command details.${c.reset}\n` +
|
|
123
|
+
section("Usage") +
|
|
124
|
+
` ${ui_1.c.accent}specgate${ui_1.c.reset} ${ui_1.c.bold}<command>${ui_1.c.reset} [options] ${ui_1.c.muted}specgate <command> --help for its options${ui_1.c.reset}\n` +
|
|
130
125
|
renderGroups((0, surface_1.coreHelpRows)()) +
|
|
131
|
-
section("
|
|
132
|
-
` ${c.
|
|
133
|
-
` ${c.
|
|
134
|
-
` ${c.
|
|
135
|
-
section("
|
|
126
|
+
section("More") +
|
|
127
|
+
` ${ui_1.c.muted}${(0, surface_1.hiddenCommandCount)()} more commands cover packs, automation, agents and reporting.${ui_1.c.reset}\n` +
|
|
128
|
+
` ${ui_1.c.accent}specgate --help --all${ui_1.c.reset}${ui_1.c.muted} show every command${ui_1.c.reset}\n` +
|
|
129
|
+
` ${ui_1.c.accent}specgate config set profile full${ui_1.c.reset}${ui_1.c.muted} make that the default${ui_1.c.reset}\n` +
|
|
130
|
+
section("Examples") +
|
|
136
131
|
example(`npx @rsaglobaltech/specgate@latest init`, "Existing repo or empty directory") +
|
|
132
|
+
example(`specgate draft`, "Your plan is in docs/brief.md") +
|
|
137
133
|
example(`specgate status`, "Start of day") +
|
|
138
134
|
example(`specgate check`, "Before a pull request") +
|
|
139
135
|
"\n");
|
|
140
136
|
}
|
|
141
137
|
/**
|
|
142
|
-
* `core` unless the project says otherwise. Read from .
|
|
138
|
+
* `core` unless the project says otherwise. Read from .specgate/config.json so a
|
|
143
139
|
* team that lives in the full surface is not re-narrowed on every invocation.
|
|
144
140
|
*/
|
|
145
141
|
function helpProfile() {
|
|
146
|
-
if (process.env.
|
|
147
|
-
return process.env.
|
|
142
|
+
if (process.env.SPECGATE_PROFILE)
|
|
143
|
+
return process.env.SPECGATE_PROFILE;
|
|
148
144
|
try {
|
|
149
|
-
const raw = fs.readFileSync(path.join(process.cwd(), ".
|
|
145
|
+
const raw = fs.readFileSync(path.join(process.cwd(), ".specgate", "config.json"), "utf8");
|
|
150
146
|
const parsed = JSON.parse(raw);
|
|
151
147
|
if (parsed && typeof parsed.profile === "string")
|
|
152
148
|
return parsed.profile;
|
|
@@ -157,13 +153,13 @@ function helpProfile() {
|
|
|
157
153
|
return "core";
|
|
158
154
|
}
|
|
159
155
|
function groupUsage(row) {
|
|
160
|
-
let out = `\n ${c.bold}specgate ${row.name}${c.reset} <sub-command> [options]\n`;
|
|
161
|
-
out += section("
|
|
156
|
+
let out = `\n ${ui_1.c.brand}${ui_1.sym.brand}${ui_1.c.reset} ${ui_1.c.bold}specgate ${row.name}${ui_1.c.reset} <sub-command> [options]\n`;
|
|
157
|
+
out += section("Sub-commands");
|
|
162
158
|
for (const s of row.subcommands) {
|
|
163
159
|
const summary = (s.help && s.help.summary) || (row.help && row.help.summary) || "";
|
|
164
160
|
out += cmd((s.help && s.help.icon) || "·", `${row.name} ${s.name}`, summary, 20);
|
|
165
161
|
}
|
|
166
|
-
out += `\n ${c.
|
|
162
|
+
out += `\n ${ui_1.c.muted}specgate ${row.name} <sub-command> --help for its own options${ui_1.c.reset}\n\n`;
|
|
167
163
|
process.stdout.write(out);
|
|
168
164
|
}
|
|
169
165
|
function usage(opts) {
|
|
@@ -175,19 +171,18 @@ function usage(opts) {
|
|
|
175
171
|
}
|
|
176
172
|
function usageFull() {
|
|
177
173
|
process.stdout.write(banner() +
|
|
178
|
-
section("
|
|
179
|
-
` ${c.
|
|
180
|
-
` ${c.dim}Run ‘<command> --help’ for per-command details.${c.reset}\n` +
|
|
174
|
+
section("Usage") +
|
|
175
|
+
` ${ui_1.c.accent}specgate${ui_1.c.reset} ${ui_1.c.bold}<command>${ui_1.c.reset} [options] ${ui_1.c.muted}specgate <command> --help for its options${ui_1.c.reset}\n` +
|
|
181
176
|
renderGroups((0, surface_1.helpRows)()) +
|
|
182
|
-
section("
|
|
177
|
+
section("Global flags") +
|
|
183
178
|
flag("-h, --help", "Show this help.") +
|
|
184
179
|
flag("-v, --version", "Show CLI version.") +
|
|
185
|
-
section("
|
|
180
|
+
section("Examples") +
|
|
186
181
|
EXAMPLES +
|
|
187
|
-
section("
|
|
188
|
-
` ${c.
|
|
189
|
-
` ${c.
|
|
190
|
-
` ${c.
|
|
182
|
+
section("Learn more") +
|
|
183
|
+
` 📖 ${ui_1.c.muted}How-to guide ${ui_1.c.reset}${ui_1.c.underline}https://github.com/rsaglobaltech/specgate/blob/main/docs/how-to.md${ui_1.c.reset}\n` +
|
|
184
|
+
` 🌐 ${ui_1.c.muted}Documentation ${ui_1.c.reset}${ui_1.c.underline}https://rsaglobaltech.github.io/specgate/${ui_1.c.reset}\n` +
|
|
185
|
+
` 🐞 ${ui_1.c.muted}Report a bug ${ui_1.c.reset}${ui_1.c.underline}https://github.com/rsaglobaltech/specgate/issues${ui_1.c.reset}\n` +
|
|
191
186
|
`\n`);
|
|
192
187
|
}
|
|
193
188
|
function ensureExecutable(scriptPath) {
|
|
@@ -218,6 +213,13 @@ function runNodeScript(scriptPath, args) {
|
|
|
218
213
|
class CreateSpecDrivenAppCommand {
|
|
219
214
|
execute(args = []) {
|
|
220
215
|
args = args.length ? args : process.argv.slice(2);
|
|
216
|
+
// Inside a project, a bare `specgate` answers "where am I, and what next?"
|
|
217
|
+
// — the question people have when they type it — rather than the list of
|
|
218
|
+
// every command (#96). Outside one, the help is the useful answer.
|
|
219
|
+
if (args.length === 0 && (0, project_root_1.findProjectRoot)(process.cwd())) {
|
|
220
|
+
process.env.SPECGATE_BARE = "1";
|
|
221
|
+
args = ["status"];
|
|
222
|
+
}
|
|
221
223
|
if (args.length === 0 || args[0] === "--help" || args[0] === "-h") {
|
|
222
224
|
usage({ all: args.includes("--all") });
|
|
223
225
|
process.exit(0);
|
package/dist/bin/specgate.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"specgate.js","sourceRoot":"","sources":["../../bin/specgate.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"specgate.js","sourceRoot":"","sources":["../../bin/specgate.ts"],"names":[],"mappings":"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"}
|
|
@@ -66,7 +66,11 @@ class ArchiveChangeUseCase {
|
|
|
66
66
|
}
|
|
67
67
|
const config = this.repo.readConfig(changeId);
|
|
68
68
|
const progress = this.repo.getTaskProgress(changeId);
|
|
69
|
-
|
|
69
|
+
// A draft written from a brief has no implementation tasks: its checklist
|
|
70
|
+
// (`specgate draft`) is what says it is ready, and `change archive`
|
|
71
|
+
// already refuses one that is not (#57). Asking the person to also tick
|
|
72
|
+
// boxes nobody wrote was a second gate with nothing behind it (#94).
|
|
73
|
+
if (progress.remaining > 0 && !o.force && !o.draft) {
|
|
70
74
|
plan.diagnostics.push((0, Diagnostic_1.error)("archive_tasks_incomplete", `Change "${changeId}" still has ${progress.remaining} unchecked task(s).`, {
|
|
71
75
|
target: changeId,
|
|
72
76
|
fix: "Finish the tasks, or pass --force to archive anyway.",
|
|
@@ -177,7 +181,7 @@ class ArchiveChangeUseCase {
|
|
|
177
181
|
// belongs to the delta; otherwise the scenarios still missing are named.
|
|
178
182
|
if (!modified || bringsFeatures)
|
|
179
183
|
continue;
|
|
180
|
-
const inFile = (0, GherkinTags_1.
|
|
184
|
+
const inFile = (0, GherkinTags_1.specgateTagsIn)(existing).filter((t) => /^@SCN-/.test(t));
|
|
181
185
|
const inDelta = (req.scenarios || [])
|
|
182
186
|
.map((sc) => (sc.id ? `@${sc.id}` : null))
|
|
183
187
|
.filter(Boolean);
|