@rsaglobaltech/specgate 0.11.0 → 0.12.0

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 CHANGED
@@ -8,6 +8,33 @@ The release process is in [`docs/release-process.md`](docs/release-process.md).
8
8
 
9
9
  ## [Unreleased]
10
10
 
11
+ ## [0.12.0] — 2026-10-07
12
+
13
+ **The agent works the same loop as the team.** The slash commands `agents init`
14
+ writes are now the daily loop — `/specgate:explore`, `new`, `apply`, `verify`,
15
+ `done` — and teach that naming `REQ-NNN` in a test or in the code is the link.
16
+ The Claude plugin's gate hook regenerates the matrix before it judges. The
17
+ documentation enters through `init` and five commands. Run `specgate update`
18
+ once to refresh agent files generated by an earlier version.
19
+
20
+ ### Changed
21
+
22
+ - **The documentation teaches one way in.** `getting-started` starts with
23
+ `init` and a five-command first requirement; `quickstart`, `writing-specs`,
24
+ `tutorial` and `comparisons` stop teaching `onboard`, `adopt`, `req link` and
25
+ `plan` as the main path (all of them still work and are documented).
26
+
27
+ - **The agent's commands are the daily loop.** `agents init` writes
28
+ `/specgate:explore` (status), `/specgate:new`, `/specgate:apply`,
29
+ `/specgate:verify` (now `check`) and `/specgate:done`, plus
30
+ `/specgate:propose` and `/specgate:archive` for requirements that already
31
+ shipped and `/specgate:onboard` (now `init`). The existing names are kept, so
32
+ `specgate update` refreshes them in place. The project rules teach that a
33
+ test or source file naming `REQ-NNN` is the link, instead of `req link`.
34
+ - **The Claude plugin's `Stop` hook regenerates a generated matrix before
35
+ judging**, so a test the agent just wrote is evidence rather than a
36
+ `matrix_stale` block.
37
+
11
38
  ## [0.11.0] — 2026-10-07
12
39
 
13
40
  **A matrix nobody edits.** The traceability matrix is now generated for every
package/README.md CHANGED
@@ -105,7 +105,7 @@ reports what has drifted, with a fix per finding.
105
105
  | Traceability matrix + CI gate | ✅ | ❌ | ⚠️ | ❌ | ❌ |
106
106
  | Agent JSON contract | ✅ | ✅ | ❌ | ❌ | ❌ |
107
107
  | Vendor-neutral | ✅ | ✅ | ✅ | ❌ | ✅ |
108
- | Smaller surface to learn | ❌ | ✅ | ✅ | ✅ | ✅ |
108
+ | Smaller surface to learn | ⚠️ five daily verbs | ✅ | ✅ | ✅ | ✅ |
109
109
 
110
110
  OpenSpec is the closest tool and the honest comparison: if you want the change
111
111
  loop without versioned packs or an enforced matrix, theirs is the better fit.
@@ -1,8 +1,8 @@
1
1
  "use strict";
2
2
  /**
3
- * The six steps of the spec-driven loop, defined once.
3
+ * The steps of the spec-driven loop, defined once.
4
4
  *
5
- * Every agent tool gets the same six; only the file format differs. Writing
5
+ * Every agent tool gets the same steps; only the file format differs. Writing
6
6
  * them per tool would guarantee that Cursor and Claude drift apart the first
7
7
  * time one is edited — which is the same failure this repository has been
8
8
  * fixing everywhere else.
@@ -16,83 +16,103 @@ exports.PROJECT_RULES = exports.STEPS = void 0;
16
16
  exports.STEPS = [
17
17
  {
18
18
  name: "explore",
19
- summary: "Understand the project before proposing anything.",
20
- when: "Starting work on an unfamiliar spec-driven repository.",
21
- run: ["specgate status --json", "specgate plan --json"],
19
+ summary: "See what is left, and the one command to run next.",
20
+ when: "Starting work, or unsure what to do next.",
21
+ run: ["specgate status --json"],
22
22
  guidance: [
23
23
  "Read `spec.md` and `AI_RULES.md` first — `AI_RULES.md` is binding, not advisory.",
24
- "`specgate status` gives totals, orphan features and locked pack versions in one document.",
25
- "Do not propose a change until you can name which capability it belongs to.",
24
+ "`requirements` lists each one with what it still needs; `nextCommand` names the step.",
25
+ "Do not start on a requirement until you can say which `REQ-NNN` it is.",
26
26
  ],
27
27
  },
28
28
  {
29
- name: "propose",
30
- summary: "Open a change and write its proposal and delta.",
31
- when: "A requirement needs adding, rewording or retiring.",
32
- run: [
33
- "specgate change new <change-id>",
34
- "specgate change instructions proposal --json",
35
- "specgate change instructions specs --json",
29
+ name: "new",
30
+ summary: "Add a requirement: its prose, its scenario and its row, in one step.",
31
+ when: "The user asks for a behaviour that no requirement covers yet.",
32
+ run: ['specgate new "<what the system must do>" --json'],
33
+ guidance: [
34
+ "It writes a draft `## REQ-NNN` section in `spec.md` and a scenario of `<placeholder>` steps under `features/`.",
35
+ "Rewrite the obligation and the placeholders with the user before implementing — they are questions, not answers. The gate refuses them on delivery.",
36
+ "Do not edit the matrix: it is generated.",
36
37
  ],
38
+ },
39
+ {
40
+ name: "apply",
41
+ summary: "Implement one requirement: the test first, then the code.",
42
+ when: "A requirement has a real scenario and no implementation yet.",
43
+ run: ["specgate status --json", "specgate change instructions apply --json"],
37
44
  guidance: [
38
- "`change instructions` returns the template, the rules the validator enforces, and the project's declared stack. Follow it rather than guessing the format.",
39
- "A delta states only what changes. It is not a copy of the spec.",
40
- "Every requirement body needs SHALL / MUST / SHOULD / MAY, and every scenario needs plain `- GIVEN` / `- WHEN` / `- THEN` bullets.",
45
+ "One requirement at a time — `status` is the queue.",
46
+ "Write the test first and **name the requirement in it** (`REQ-007` in a comment or the test name). That mention is the link: no `req link`, no matrix edit.",
47
+ "Mention the requirement in the code that implements it too, so its row points at the code.",
48
+ "Never change `spec.md` or a `.feature` to make a test pass.",
41
49
  ],
42
50
  },
43
51
  {
44
52
  name: "verify",
45
- summary: "Check the change before anyone reviews it.",
46
- when: "After writing or editing any artefact of a change.",
47
- run: ["specgate change validate --json", "specgate validate . --json"],
53
+ summary: "Run the gate: specs, links, coverage and the project's tests.",
54
+ when: "After every change, and before saying the work is done.",
55
+ run: ["specgate check --json"],
48
56
  guidance: [
49
57
  "Every diagnostic carries a `fix`. Apply it rather than guessing.",
50
58
  "Branch on `code`, never on `message` — the message is prose and may be reworded.",
51
- "`specgate validate` validates active changes too, so this is also the PR gate.",
59
+ "`tests_not_configured` means nothing executed the suite: say so, do not report success.",
52
60
  ],
53
61
  },
54
62
  {
55
- name: "apply",
56
- summary: "Implement the change: tests first, then code.",
57
- when: "The change is validated and its proposal is agreed.",
58
- run: ["specgate change instructions apply --json", "specgate plan --json"],
63
+ name: "done",
64
+ summary: "Close a requirement through the gate.",
65
+ when: "Its scenario is real, its test names it and `check` is green.",
66
+ run: ["specgate done <REQ-NNN> --strict --json"],
59
67
  guidance: [
60
- "One requirement at a time. `specgate plan` is the queue.",
61
- "Write the test first. Set the row's status to `In Dev` only once it exists, or `validate --strict` fails with `[TDD-1]`.",
62
- "Never edit `docs/specs/traceability.md` by hand — `specgate req link` and `specgate done` write it.",
68
+ "`--strict` runs the whole gate for this requirement before recording anything; a refusal changes nothing.",
69
+ "The status is written into `spec.md`; the matrix is regenerated from it.",
70
+ ],
71
+ },
72
+ {
73
+ name: "propose",
74
+ summary: "Change a requirement that already shipped, as a reviewable delta.",
75
+ when: "Rewording, extending or retiring something delivered — not for new work, use `new`.",
76
+ run: [
77
+ "specgate change new <change-id>",
78
+ "specgate change instructions proposal --json",
79
+ "specgate change instructions specs --json",
80
+ ],
81
+ guidance: [
82
+ "`change instructions` returns the template, the rules the validator enforces, and the project's declared stack. Follow it rather than guessing the format.",
83
+ "A delta states only what changes. It is not a copy of the spec.",
84
+ "Every requirement body needs SHALL / MUST / SHOULD / MAY, and every scenario needs plain `- GIVEN` / `- WHEN` / `- THEN` bullets.",
63
85
  ],
64
86
  },
65
87
  {
66
88
  name: "archive",
67
- summary: "Merge the change into the spec tree.",
68
- when: "The work is done and every task is checked.",
89
+ summary: "Merge an accepted change into the spec tree.",
90
+ when: "The change is implemented and every task is checked.",
69
91
  run: [
70
92
  "specgate change instructions archive --json",
71
93
  "specgate change archive <change-id> --dry-run",
72
94
  "specgate change archive <change-id> --json",
73
95
  ],
74
96
  guidance: [
75
- "Preview with `--dry-run` first: it lists the specs and matrix rows that will move.",
76
- "Archiving inserts the traceability rows and materialises the feature files. It is not a file move.",
77
- "After archiving, `specgate plan` lists the requirement as pending work.",
97
+ "Preview with `--dry-run` first: it lists the specs that will move.",
98
+ "Archiving writes the specs and materialises the feature files; the matrix follows on its own.",
78
99
  ],
79
100
  },
80
101
  {
81
102
  name: "onboard",
82
103
  summary: "Install spec-driven development on a repository that lacks it.",
83
104
  when: "The repository has code but no `spec.md`.",
84
- run: ["specgate adopt", "specgate doctor --json", "specgate validate . --json"],
105
+ run: ["specgate init", "specgate check --json"],
85
106
  guidance: [
86
- "`specgate adopt` never overwrites a file and never touches source code.",
87
- "Retro-fill real requirements one at a time; a baseline REQ-001 anchors the matrix until then.",
88
- "`specgate doctor` reports a concrete fix per finding — work through them before adding the CI gate.",
107
+ "`specgate init` adopts a repository that has code: it never overwrites a file and never touches source.",
108
+ "Then add real requirements one at a time with `specgate new`, starting with what the team is changing now.",
89
109
  ],
90
110
  },
91
111
  ];
92
112
  /** The rules every tool's instruction file repeats, in its own format. */
93
113
  exports.PROJECT_RULES = [
94
114
  "`spec.md`, `AI_RULES.md` and `features/**/*.feature` are the source of truth. Do not edit them to make a test pass.",
95
- "`docs/specs/traceability.md` is written by `specgate req`, `specgate done` and `specgate change archive` — never by hand.",
115
+ "`docs/specs/traceability.md` is generated — never edit it. A test or source file that names `REQ-NNN` is linked to that requirement; that is how work is traced.",
96
116
  "Every command takes `--json`. Use it: one document on stdout, diagnostics in `status`, each with a `fix`.",
97
117
  "Exit codes are a contract: 0 success, 1 failure or gate finding, 2 usage error.",
98
118
  "When you do not know the format of an artefact, run `specgate change instructions <artifact> --json` instead of guessing.",
@@ -1 +1 @@
1
- {"version":3,"file":"commands.js","sourceRoot":"","sources":["../../../scripts/agents/commands.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;GAWG;;;AAEU,QAAA,KAAK,GAAG;IACnB;QACE,IAAI,EAAE,SAAS;QACf,OAAO,EAAE,mDAAmD;QAC5D,IAAI,EAAE,wDAAwD;QAC9D,GAAG,EAAE,CAAC,wBAAwB,EAAE,sBAAsB,CAAC;QACvD,QAAQ,EAAE;YACR,kFAAkF;YAClF,2FAA2F;YAC3F,4EAA4E;SAC7E;KACF;IACD;QACE,IAAI,EAAE,SAAS;QACf,OAAO,EAAE,iDAAiD;QAC1D,IAAI,EAAE,oDAAoD;QAC1D,GAAG,EAAE;YACH,iCAAiC;YACjC,8CAA8C;YAC9C,2CAA2C;SAC5C;QACD,QAAQ,EAAE;YACR,4JAA4J;YAC5J,iEAAiE;YACjE,mIAAmI;SACpI;KACF;IACD;QACE,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,4CAA4C;QACrD,IAAI,EAAE,oDAAoD;QAC1D,GAAG,EAAE,CAAC,iCAAiC,EAAE,4BAA4B,CAAC;QACtE,QAAQ,EAAE;YACR,kEAAkE;YAClE,kFAAkF;YAClF,gFAAgF;SACjF;KACF;IACD;QACE,IAAI,EAAE,OAAO;QACb,OAAO,EAAE,+CAA+C;QACxD,IAAI,EAAE,qDAAqD;QAC3D,GAAG,EAAE,CAAC,2CAA2C,EAAE,sBAAsB,CAAC;QAC1E,QAAQ,EAAE;YACR,0DAA0D;YAC1D,0HAA0H;YAC1H,qGAAqG;SACtG;KACF;IACD;QACE,IAAI,EAAE,SAAS;QACf,OAAO,EAAE,sCAAsC;QAC/C,IAAI,EAAE,6CAA6C;QACnD,GAAG,EAAE;YACH,6CAA6C;YAC7C,+CAA+C;YAC/C,4CAA4C;SAC7C;QACD,QAAQ,EAAE;YACR,oFAAoF;YACpF,oGAAoG;YACpG,yEAAyE;SAC1E;KACF;IACD;QACE,IAAI,EAAE,SAAS;QACf,OAAO,EAAE,gEAAgE;QACzE,IAAI,EAAE,2CAA2C;QACjD,GAAG,EAAE,CAAC,gBAAgB,EAAE,wBAAwB,EAAE,4BAA4B,CAAC;QAC/E,QAAQ,EAAE;YACR,yEAAyE;YACzE,+FAA+F;YAC/F,qGAAqG;SACtG;KACF;CACF,CAAC;AAEF,0EAA0E;AAC7D,QAAA,aAAa,GAAG;IAC3B,qHAAqH;IACrH,2HAA2H;IAC3H,2GAA2G;IAC3G,iFAAiF;IACjF,2HAA2H;CAC5H,CAAC"}
1
+ {"version":3,"file":"commands.js","sourceRoot":"","sources":["../../../scripts/agents/commands.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;GAWG;;;AAEU,QAAA,KAAK,GAAG;IACnB;QACE,IAAI,EAAE,SAAS;QACf,OAAO,EAAE,oDAAoD;QAC7D,IAAI,EAAE,2CAA2C;QACjD,GAAG,EAAE,CAAC,wBAAwB,CAAC;QAC/B,QAAQ,EAAE;YACR,kFAAkF;YAClF,uFAAuF;YACvF,wEAAwE;SACzE;KACF;IACD;QACE,IAAI,EAAE,KAAK;QACX,OAAO,EAAE,sEAAsE;QAC/E,IAAI,EAAE,+DAA+D;QACrE,GAAG,EAAE,CAAC,iDAAiD,CAAC;QACxD,QAAQ,EAAE;YACR,gHAAgH;YAChH,qJAAqJ;YACrJ,0CAA0C;SAC3C;KACF;IACD;QACE,IAAI,EAAE,OAAO;QACb,OAAO,EAAE,2DAA2D;QACpE,IAAI,EAAE,8DAA8D;QACpE,GAAG,EAAE,CAAC,wBAAwB,EAAE,2CAA2C,CAAC;QAC5E,QAAQ,EAAE;YACR,oDAAoD;YACpD,6JAA6J;YAC7J,4FAA4F;YAC5F,6DAA6D;SAC9D;KACF;IACD;QACE,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,+DAA+D;QACxE,IAAI,EAAE,yDAAyD;QAC/D,GAAG,EAAE,CAAC,uBAAuB,CAAC;QAC9B,QAAQ,EAAE;YACR,kEAAkE;YAClE,kFAAkF;YAClF,yFAAyF;SAC1F;KACF;IACD;QACE,IAAI,EAAE,MAAM;QACZ,OAAO,EAAE,uCAAuC;QAChD,IAAI,EAAE,+DAA+D;QACrE,GAAG,EAAE,CAAC,yCAAyC,CAAC;QAChD,QAAQ,EAAE;YACR,2GAA2G;YAC3G,0EAA0E;SAC3E;KACF;IACD;QACE,IAAI,EAAE,SAAS;QACf,OAAO,EAAE,mEAAmE;QAC5E,IAAI,EAAE,qFAAqF;QAC3F,GAAG,EAAE;YACH,iCAAiC;YACjC,8CAA8C;YAC9C,2CAA2C;SAC5C;QACD,QAAQ,EAAE;YACR,4JAA4J;YAC5J,iEAAiE;YACjE,mIAAmI;SACpI;KACF;IACD;QACE,IAAI,EAAE,SAAS;QACf,OAAO,EAAE,8CAA8C;QACvD,IAAI,EAAE,sDAAsD;QAC5D,GAAG,EAAE;YACH,6CAA6C;YAC7C,+CAA+C;YAC/C,4CAA4C;SAC7C;QACD,QAAQ,EAAE;YACR,oEAAoE;YACpE,+FAA+F;SAChG;KACF;IACD;QACE,IAAI,EAAE,SAAS;QACf,OAAO,EAAE,gEAAgE;QACzE,IAAI,EAAE,2CAA2C;QACjD,GAAG,EAAE,CAAC,eAAe,EAAE,uBAAuB,CAAC;QAC/C,QAAQ,EAAE;YACR,yGAAyG;YACzG,4GAA4G;SAC7G;KACF;CACF,CAAC;AAEF,0EAA0E;AAC7D,QAAA,aAAa,GAAG;IAC3B,qHAAqH;IACrH,kKAAkK;IAClK,2GAA2G;IAC3G,iFAAiF;IACjF,2HAA2H;CAC5H,CAAC"}
@@ -4,7 +4,7 @@
4
4
  * `specgate agents init --tool <names>` — wire the spec-driven loop into the agent
5
5
  * tools a team already uses.
6
6
  *
7
- * One definition of the six steps (`./commands`), rendered into each tool's
7
+ * One definition of the steps (`./commands`), rendered into each tool's
8
8
  * own convention. The generated files are thin on purpose: they tell the agent
9
9
  * to run `specgate change instructions`, they do not restate the rules. A markdown
10
10
  * file that copies the delta grammar is out of date the moment the grammar
@@ -158,7 +158,7 @@ function cliVersion() {
158
158
  }
159
159
  }
160
160
  /**
161
- * The Claude Code plugin: the six steps as slash commands, the MCP server, and
161
+ * The Claude Code plugin: the steps as slash commands, the MCP server, and
162
162
  * the gate as a `Stop` hook.
163
163
  *
164
164
  * The hook is the part no other target can offer. Every other tool here gets
@@ -130,6 +130,13 @@ function decide(input, runValidate, blockedAlready) {
130
130
  function runValidate(cwd) {
131
131
  if (!fs.existsSync(path.join(cwd, "spec.md")))
132
132
  throw new Error("not a spec-driven project");
133
+ // The agent's tests are new evidence for a generated matrix: regenerate it
134
+ // first, or the hook would block the session over a stale cache instead of
135
+ // judging the work. A no-op on a hand-kept matrix.
136
+ (0, node_child_process_1.spawnSync)("npx", ["--no-install", "specgate", "matrix", "--project-dir", cwd], {
137
+ encoding: "utf8",
138
+ timeout: 60_000,
139
+ });
133
140
  const r = (0, node_child_process_1.spawnSync)("npx", ["--no-install", "specgate", "validate", cwd, "--strict", "--json"], {
134
141
  encoding: "utf8",
135
142
  timeout: 120_000,
@@ -1 +1 @@
1
- {"version":3,"file":"gate-hook.js","sourceRoot":"","sources":["../../../scripts/plugin/gate-hook.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"gate-hook.js","sourceRoot":"","sources":["../../../scripts/plugin/gate-hook.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rsaglobaltech/specgate",
3
- "version": "0.11.0",
3
+ "version": "0.12.0",
4
4
  "description": "Specs as executable contracts \u2014 requirements, scenarios and traceability that CI enforces.",
5
5
  "license": "MIT",
6
6
  "type": "commonjs",