@rsaglobaltech/specgate 0.16.0 → 0.17.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.
Files changed (72) hide show
  1. package/CHANGELOG.md +72 -0
  2. package/dist/packages/core/src/application/ArchiveChangeUseCase.js +6 -1
  3. package/dist/packages/core/src/application/ArchiveChangeUseCase.js.map +1 -1
  4. package/dist/packages/core/src/application/GenerateAgentPromptUseCase.js +10 -1
  5. package/dist/packages/core/src/application/GenerateAgentPromptUseCase.js.map +1 -1
  6. package/dist/packages/core/src/domain/AgentPrompt.js +2 -2
  7. package/dist/packages/core/src/domain/AgentPrompt.js.map +1 -1
  8. package/dist/packages/core/src/domain/DeltaFeature.js +66 -4
  9. package/dist/packages/core/src/domain/DeltaFeature.js.map +1 -1
  10. package/dist/packages/core/src/domain/DraftChecklist.js +87 -5
  11. package/dist/packages/core/src/domain/DraftChecklist.js.map +1 -1
  12. package/dist/packages/core/src/domain/GherkinQuality.js +11 -3
  13. package/dist/packages/core/src/domain/GherkinQuality.js.map +1 -1
  14. package/dist/packages/core/src/domain/HarnessReport.js +2 -0
  15. package/dist/packages/core/src/domain/HarnessReport.js.map +1 -1
  16. package/dist/packages/core/src/domain/HarnessRun.js.map +1 -1
  17. package/dist/packages/core/src/domain/MultiStack.js +2 -2
  18. package/dist/packages/core/src/domain/MultiStack.js.map +1 -1
  19. package/dist/packages/core/src/domain/RetryPolicy.js +50 -0
  20. package/dist/packages/core/src/domain/RetryPolicy.js.map +1 -0
  21. package/dist/packages/core/src/domain/WriteScope.js +1 -0
  22. package/dist/packages/core/src/domain/WriteScope.js.map +1 -1
  23. package/dist/packages/core/test/unit/delta-feature.test.js +25 -0
  24. package/dist/packages/core/test/unit/delta-feature.test.js.map +1 -1
  25. package/dist/packages/core/test/unit/gherkin-quality.test.js +19 -1
  26. package/dist/packages/core/test/unit/gherkin-quality.test.js.map +1 -1
  27. package/dist/packages/core/test/unit/retry-policy.test.js +59 -0
  28. package/dist/packages/core/test/unit/retry-policy.test.js.map +1 -0
  29. package/dist/scripts/agents/commands.js +2 -2
  30. package/dist/scripts/agents/commands.js.map +1 -1
  31. package/dist/scripts/agents/contract-file.js +165 -0
  32. package/dist/scripts/agents/contract-file.js.map +1 -0
  33. package/dist/scripts/agents/detect.js +97 -0
  34. package/dist/scripts/agents/detect.js.map +1 -0
  35. package/dist/scripts/agents/init.js +59 -35
  36. package/dist/scripts/agents/init.js.map +1 -1
  37. package/dist/scripts/change/instructions.js +14 -6
  38. package/dist/scripts/change/instructions.js.map +1 -1
  39. package/dist/scripts/cli/commands/harness/RunCommand.js +37 -3
  40. package/dist/scripts/cli/commands/harness/RunCommand.js.map +1 -1
  41. package/dist/scripts/cli/commands/project/AdoptCommand.js +42 -5
  42. package/dist/scripts/cli/commands/project/AdoptCommand.js.map +1 -1
  43. package/dist/scripts/cli/commands/project/InitProjectCommand.js +39 -6
  44. package/dist/scripts/cli/commands/project/InitProjectCommand.js.map +1 -1
  45. package/dist/scripts/cli/commands/project/UpdateCommand.js +18 -3
  46. package/dist/scripts/cli/commands/project/UpdateCommand.js.map +1 -1
  47. package/dist/scripts/cli/commands/quality/CheckCommand.js +14 -2
  48. package/dist/scripts/cli/commands/quality/CheckCommand.js.map +1 -1
  49. package/dist/scripts/cli/commands/quality/DoctorCommand.js +11 -6
  50. package/dist/scripts/cli/commands/quality/DoctorCommand.js.map +1 -1
  51. package/dist/scripts/cli/commands/quality/ValidateSpecsCommand.js +5 -2
  52. package/dist/scripts/cli/commands/quality/ValidateSpecsCommand.js.map +1 -1
  53. package/dist/scripts/cli/commands/spec/DraftCommand.js +2 -1
  54. package/dist/scripts/cli/commands/spec/DraftCommand.js.map +1 -1
  55. package/dist/scripts/cli/commands/spec/StatusCommand.js +8 -1
  56. package/dist/scripts/cli/commands/spec/StatusCommand.js.map +1 -1
  57. package/dist/scripts/cli/commands/specops/SyncCommand.js +21 -1
  58. package/dist/scripts/cli/commands/specops/SyncCommand.js.map +1 -1
  59. package/dist/scripts/docs/nav.js +98 -88
  60. package/dist/scripts/docs/nav.js.map +1 -1
  61. package/dist/scripts/harness/init.js +72 -50
  62. package/dist/scripts/harness/init.js.map +1 -1
  63. package/package.json +1 -1
  64. package/templates/adopt/stack-rules.md +3 -0
  65. package/templates/backend/stack-rules.md +2 -0
  66. package/templates/base/AGENTS.md.tpl +30 -32
  67. package/templates/frontend/stack-rules.md +2 -0
  68. package/templates/mobile/stack-rules.md +7 -0
  69. package/templates/adopt/AI_RULES.md.tpl +0 -27
  70. package/templates/backend/AI_RULES.md.tpl +0 -35
  71. package/templates/frontend/AI_RULES.md.tpl +0 -34
  72. package/templates/mobile/AI_RULES.md.tpl +0 -56
@@ -18,15 +18,21 @@ exports.NAV = void 0;
18
18
  exports.navSlugs = navSlugs;
19
19
  exports.navEntry = navEntry;
20
20
  exports.neighbours = neighbours;
21
+ /**
22
+ * Simplification plan, phase 6: six places a reader goes, in the order they
23
+ * need them — start, every day, the gate, existing code, reference,
24
+ * extensions — and everything else under "Advanced". Every shipped document
25
+ * is still in exactly one section.
26
+ */
21
27
  exports.NAV = [
22
28
  {
23
- title: "Start here",
29
+ title: "Start",
24
30
  icon: "rocket",
25
- summary: "Fifteen minutes from nothing to a project whose specs are checked by CI.",
31
+ summary: "Ten minutes from nothing to your first requirement through the gate.",
26
32
  entries: [
27
33
  {
28
34
  slug: "getting-started",
29
- label: "Getting started",
35
+ label: "Quickstart — 10 minutes",
30
36
  blurb: "Install, scaffold a project, and run the gate for the first time.",
31
37
  },
32
38
  {
@@ -34,59 +40,95 @@ exports.NAV = [
34
40
  label: "You cloned a repo",
35
41
  blurb: "Someone handed you a spec-driven repository. Start here instead.",
36
42
  },
43
+ ],
44
+ },
45
+ {
46
+ title: "Every day",
47
+ icon: "file",
48
+ summary: "The loop a team runs on every pull request.",
49
+ entries: [
37
50
  {
38
51
  slug: "first-pr",
39
52
  label: "Your team's first PR",
40
53
  blurb: "What the author writes, what the reviewer reads, and what to do when check fails.",
41
54
  },
42
55
  {
43
- slug: "walkthrough",
44
- label: "Walkthrough",
45
- blurb: "The whole loop end to end, in one sitting.",
56
+ slug: "writing-specs",
57
+ label: "Writing specs",
58
+ blurb: "Requirements, scenarios and the traceability matrix.",
46
59
  },
47
60
  {
48
- slug: "tutorial",
49
- label: "Tutorial: Smart Parking",
50
- blurb: "A complete worked example, from a blank folder to a delivered requirement.",
61
+ slug: "reviewing-changes",
62
+ label: "Reviewing changes",
63
+ blurb: "Propose, review and archive a change to specs that already shipped.",
51
64
  },
52
65
  ],
53
66
  },
54
67
  {
55
- title: "Working with specs",
56
- icon: "file",
57
- summary: "What a specification is here, and what the tool does with it.",
68
+ title: "The gate in CI",
69
+ icon: "server",
70
+ summary: "What fails a pull request, and how to wire it in.",
58
71
  entries: [
59
72
  {
60
- slug: "concepts",
61
- label: "How Specgate thinks",
62
- blurb: "Six ideas — requirement, scenario, mention, generated matrix, status, one gate — that explain every command.",
73
+ slug: "validating",
74
+ label: "Validating",
75
+ blurb: "Every check the gate runs, what each status owes, and the flags behind check.",
63
76
  },
64
77
  {
65
- slug: "writing-specs",
66
- label: "Writing specs",
67
- blurb: "Requirements, scenarios and the traceability matrix.",
78
+ slug: "automation",
79
+ label: "Automation",
80
+ blurb: "Generate the gate for GitHub, GitLab, Azure or Jenkins.",
68
81
  },
82
+ ],
83
+ },
84
+ {
85
+ title: "Existing code",
86
+ icon: "compass",
87
+ summary: "Adopting Specgate on a repository that already ships.",
88
+ entries: [
69
89
  {
70
- slug: "validating",
71
- label: "Validating",
72
- blurb: "Every check the gate runs, what each status owes, and the flags behind check.",
90
+ slug: "case-studies/case-1",
91
+ label: "Worked example: brownfield adoption",
92
+ blurb: "An illustration — invented company, constructed numbers — of the workflow end to end.",
73
93
  },
74
94
  {
75
- slug: "reviewing-changes",
76
- label: "Reviewing changes",
77
- blurb: "Propose, review and archive a change to specs that already shipped.",
95
+ slug: "comparisons",
96
+ label: "Comparisons",
97
+ blurb: "How this differs from OpenSpec, Spec Kit and writing it yourself.",
78
98
  },
99
+ ],
100
+ },
101
+ {
102
+ title: "Reference",
103
+ icon: "book",
104
+ summary: "Every command, the ideas behind them, and what to do when something fails.",
105
+ entries: [
79
106
  {
80
- slug: "domain-packs",
81
- label: "Domain packs",
82
- blurb: "Install a curated domain model instead of writing one from scratch.",
107
+ slug: "commands",
108
+ label: "Command reference",
109
+ blurb: "Every command, its flags and its JSON shape.",
110
+ },
111
+ {
112
+ slug: "concepts",
113
+ label: "How Specgate thinks",
114
+ blurb: "Six ideas — requirement, scenario, mention, generated matrix, status, one gate — that explain every command.",
115
+ },
116
+ {
117
+ slug: "faq",
118
+ label: "FAQ",
119
+ blurb: "The questions a team asks in its first week, answered in two lines each.",
120
+ },
121
+ {
122
+ slug: "troubleshooting",
123
+ label: "Troubleshooting",
124
+ blurb: "When the gate says no and you disagree.",
83
125
  },
84
126
  ],
85
127
  },
86
128
  {
87
- title: "Agents and the harness",
129
+ title: "Extensions",
88
130
  icon: "robot",
89
- summary: "The part that spends money. Read the harness page before pointing an agent at anything.",
131
+ summary: "Agents, MCP, the harness, domain packs and your issue tracker.",
90
132
  entries: [
91
133
  {
92
134
  slug: "agents",
@@ -98,64 +140,47 @@ exports.NAV = [
98
140
  label: "The MCP server",
99
141
  blurb: "The daily loop as tools for Claude Desktop, Cursor and other MCP clients, and the guard on the spec.",
100
142
  },
101
- {
102
- slug: "agent-setup",
103
- label: "Choosing your agent",
104
- blurb: "Claude, Aider, Cursor or a three-line wrapper — and the two things that bite.",
105
- },
106
143
  {
107
144
  slug: "harness",
108
145
  label: "The harness",
109
146
  blurb: "Unattended delivery: plan → agent → gate → done, one worktree per requirement.",
110
147
  },
111
148
  {
112
- slug: "bootstrap-prompt",
113
- label: "Bootstrap prompt",
114
- blurb: "The prompt that turns an idea into a first specification.",
115
- },
116
- ],
117
- },
118
- {
119
- title: "Running it for real",
120
- icon: "server",
121
- summary: "CI, boards, and the things an enterprise asks before it says yes.",
122
- entries: [
123
- {
124
- slug: "automation",
125
- label: "Automation",
126
- blurb: "Generate the gate for GitHub, GitLab, Azure or Jenkins.",
149
+ slug: "domain-packs",
150
+ label: "Domain packs",
151
+ blurb: "Install a curated domain model instead of writing one from scratch.",
127
152
  },
128
153
  {
129
154
  slug: "alm",
130
155
  label: "Jira, Azure Boards, GitHub",
131
156
  blurb: "Mirror requirements onto a board without letting the board define them.",
132
157
  },
133
- {
134
- slug: "deployment",
135
- label: "Deployment",
136
- blurb: "How specgate's own docs site, npm package and container image are published.",
137
- },
138
- {
139
- slug: "supply-chain",
140
- label: "Supply chain",
141
- blurb: "SBOM, licences, provenance and what ships in the tarball.",
142
- },
143
158
  ],
144
159
  },
145
160
  {
146
- title: "Reference",
161
+ title: "Advanced",
147
162
  icon: "book",
148
- summary: "Look things up.",
163
+ summary: "Longer reads, setups and the reasons behind the design.",
149
164
  entries: [
150
165
  {
151
- slug: "commands",
152
- label: "Command reference",
153
- blurb: "Every command, its flags and its JSON shape.",
166
+ slug: "walkthrough",
167
+ label: "Walkthrough",
168
+ blurb: "The whole loop end to end, in one sitting.",
154
169
  },
155
170
  {
156
- slug: "faq",
157
- label: "FAQ",
158
- blurb: "The questions a team asks in its first week, answered in two lines each.",
171
+ slug: "tutorial",
172
+ label: "Tutorial: Smart Parking",
173
+ blurb: "A complete worked example, from a blank folder to a delivered requirement.",
174
+ },
175
+ {
176
+ slug: "agent-setup",
177
+ label: "Choosing your agent",
178
+ blurb: "Claude, Aider, Cursor or a three-line wrapper — and the two things that bite.",
179
+ },
180
+ {
181
+ slug: "bootstrap-prompt",
182
+ label: "Bootstrap prompt",
183
+ blurb: "The prompt that turns an idea into a first specification.",
159
184
  },
160
185
  {
161
186
  slug: "how-to",
@@ -163,40 +188,25 @@ exports.NAV = [
163
188
  blurb: "Short answers to specific questions.",
164
189
  },
165
190
  {
166
- slug: "troubleshooting",
167
- label: "Troubleshooting",
168
- blurb: "When the gate says no and you disagree.",
191
+ slug: "deployment",
192
+ label: "Deployment",
193
+ blurb: "How specgate's own docs site, npm package and container image are published.",
169
194
  },
170
195
  {
171
- slug: "comparisons",
172
- label: "Comparisons",
173
- blurb: "How this differs from OpenSpec, Spec Kit and writing it yourself.",
196
+ slug: "supply-chain",
197
+ label: "Supply chain",
198
+ blurb: "SBOM, licences, provenance and what ships in the tarball.",
174
199
  },
175
200
  {
176
201
  slug: "release-process",
177
202
  label: "Release process",
178
203
  blurb: "How a version is cut, and what support it gets.",
179
204
  },
180
- ],
181
- },
182
- {
183
- // These two were published and linked from nowhere. They are the two
184
- // documents that explain *why* the tool is shaped this way, which makes
185
- // them the wrong ones to leave unreachable.
186
- title: "Background",
187
- icon: "compass",
188
- summary: "Why it works this way.",
189
- entries: [
190
205
  {
191
206
  slug: "articles/specs-that-cannot-lie",
192
207
  label: "Specs that cannot lie",
193
208
  blurb: "The argument the tool is built on, and the defects that shaped it.",
194
209
  },
195
- {
196
- slug: "case-studies/case-1",
197
- label: "Worked example: brownfield adoption",
198
- blurb: "An illustration — invented company, constructed numbers — of the workflow end to end.",
199
- },
200
210
  ],
201
211
  },
202
212
  ];
@@ -1 +1 @@
1
- {"version":3,"file":"nav.js","sourceRoot":"","sources":["../../../scripts/docs/nav.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"nav.js","sourceRoot":"","sources":["../../../scripts/docs/nav.ts"],"names":[],"mappings":"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"}
@@ -50,6 +50,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
50
50
  exports.GITATTRIBUTES_LINE = exports.MERGE_DRIVER_NAME = exports.InitCommand = void 0;
51
51
  exports.setupCommand = setupCommand;
52
52
  exports.detectTestCommand = detectTestCommand;
53
+ exports.harnessFiles = harnessFiles;
53
54
  exports.projectName = projectName;
54
55
  exports.installMergeDriver = installMergeDriver;
55
56
  const fs = __importStar(require("node:fs"));
@@ -112,6 +113,65 @@ function detectTestCommand(projectDir) {
112
113
  },
113
114
  }, { preferVerify: true });
114
115
  }
116
+ /**
117
+ * The files `harness init` writes, as `{ dest, body }`. Shared with
118
+ * `init`/`adopt`, which write them when they detect a test command: `init`
119
+ * printed "Test command: npm test" and the very next `check` said "No test
120
+ * command configured" (reservas_app, #44). One renderer, so a later
121
+ * `harness init` finds the same bytes and reports no conflict.
122
+ */
123
+ function harnessFiles(projectDir, testCmd) {
124
+ // Rendered into the config as a live key when known, and as a commented-out
125
+ // one when not — see detectTestCommand for why a placeholder would be worse
126
+ // than an absent key.
127
+ // Shared with `doctor`, which used to call a Gherkin quality check
128
+ // "every scenario runnable" in projects where nothing runs one.
129
+ const hasGherkinRunner = (0, TestCommand_1.hasGherkinRunner)({
130
+ exists: (rel) => fs.existsSync(path.join(projectDir, rel)),
131
+ read: (rel) => {
132
+ try {
133
+ return fs.readFileSync(path.join(projectDir, rel), "utf8");
134
+ }
135
+ catch {
136
+ return null;
137
+ }
138
+ },
139
+ });
140
+ const vars = {
141
+ PROJECT_NAME: projectName(projectDir),
142
+ STEP_DEFS_LINE: hasGherkinRunner
143
+ ? "- `features/step_definitions/**` and `features/support/**` — step definitions\n" +
144
+ " are code, not specification. This is the one place inside `features/` you\n" +
145
+ " own."
146
+ : "\nThis project has no Gherkin runner, so nothing executes a `.feature` here.\n" +
147
+ "The scenarios are the specification and your tests are the proof: write a\n" +
148
+ "test per scenario that asserts what it says, in the project's own test\n" +
149
+ "framework, and mention the requirement and scenario ids in it\n" +
150
+ "(`REQ-NNN SCN-NNN`) — that mention is the link. Do not add a BDD runner.",
151
+ SCENARIO_STEP: hasGherkinRunner
152
+ ? "2. Write or extend the step definitions so the scenario fails **for the right\n" +
153
+ " reason** — a missing implementation, not a typo in a step."
154
+ : "2. Write a test per scenario, mentioning its ids, so it fails **for the right\n" +
155
+ " reason** — a missing implementation, not a typo in the test.",
156
+ SETUP_CMD_LINE: setupCommand(projectDir),
157
+ TEST_CMD_LINE: testCmd
158
+ ? `test_cmd: "${testCmd}"`
159
+ : '# test_cmd: "npm test" # ← set this once the project has a test command',
160
+ GATE_COMMAND: testCmd
161
+ ? `${testCmd}\n specgate validate . --strict`
162
+ : "specgate validate . --strict",
163
+ };
164
+ return [
165
+ {
166
+ dest: CONFIG_FILE,
167
+ body: (0, PackSpec_1.renderTemplate)(fs.readFileSync(path.join(TEMPLATES, "harness.config.yaml.tpl"), "utf8"), vars),
168
+ },
169
+ {
170
+ dest: PREFIX_FILE,
171
+ body: (0, PackSpec_1.renderTemplate)(fs.readFileSync(path.join(TEMPLATES, "prompt-prefix.md.tpl"), "utf8"), vars),
172
+ },
173
+ ];
174
+ }
115
175
  function projectName(projectDir) {
116
176
  const specPath = path.join(projectDir, "spec.md");
117
177
  if (fs.existsSync(specPath)) {
@@ -193,56 +253,7 @@ class InitCommand extends command_1.BaseCommand {
193
253
  return;
194
254
  }
195
255
  const testCmd = opts.testCmd || detectTestCommand(projectDir);
196
- // Rendered into the config as a live key when known, and as a commented-out
197
- // one when not — see detectTestCommand for why a placeholder would be worse
198
- // than an absent key.
199
- // Shared with `doctor`, which used to call a Gherkin quality check
200
- // "every scenario runnable" in projects where nothing runs one.
201
- const hasGherkinRunner = (0, TestCommand_1.hasGherkinRunner)({
202
- exists: (rel) => fs.existsSync(path.join(projectDir, rel)),
203
- read: (rel) => {
204
- try {
205
- return fs.readFileSync(path.join(projectDir, rel), "utf8");
206
- }
207
- catch {
208
- return null;
209
- }
210
- },
211
- });
212
- const vars = {
213
- PROJECT_NAME: projectName(projectDir),
214
- STEP_DEFS_LINE: hasGherkinRunner
215
- ? "- `features/step_definitions/**` and `features/support/**` — step definitions\n" +
216
- " are code, not specification. This is the one place inside `features/` you\n" +
217
- " own."
218
- : "\nThis project has no Gherkin runner, so nothing executes a `.feature` here.\n" +
219
- "The scenarios are the specification and your tests are the proof: write a\n" +
220
- "test per scenario that asserts what it says, in the project's own test\n" +
221
- "framework, and mention the requirement and scenario ids in it\n" +
222
- "(`REQ-NNN SCN-NNN`) — that mention is the link. Do not add a BDD runner.",
223
- SCENARIO_STEP: hasGherkinRunner
224
- ? "2. Write or extend the step definitions so the scenario fails **for the right\n" +
225
- " reason** — a missing implementation, not a typo in a step."
226
- : "2. Write a test per scenario, mentioning its ids, so it fails **for the right\n" +
227
- " reason** — a missing implementation, not a typo in the test.",
228
- SETUP_CMD_LINE: setupCommand(projectDir),
229
- TEST_CMD_LINE: testCmd
230
- ? `test_cmd: "${testCmd}"`
231
- : '# test_cmd: "npm test" # ← set this once the project has a test command',
232
- GATE_COMMAND: testCmd
233
- ? `${testCmd}\n specgate validate . --strict`
234
- : "specgate validate . --strict",
235
- };
236
- const outputs = [
237
- {
238
- dest: CONFIG_FILE,
239
- body: (0, PackSpec_1.renderTemplate)(fs.readFileSync(path.join(TEMPLATES, "harness.config.yaml.tpl"), "utf8"), vars),
240
- },
241
- {
242
- dest: PREFIX_FILE,
243
- body: (0, PackSpec_1.renderTemplate)(fs.readFileSync(path.join(TEMPLATES, "prompt-prefix.md.tpl"), "utf8"), vars),
244
- },
245
- ];
256
+ const outputs = harnessFiles(projectDir, testCmd);
246
257
  if (opts.stdout) {
247
258
  io.emit({ projectDir, testCmd, files: outputs.map((o) => o.dest) }, () => {
248
259
  for (const out of outputs) {
@@ -253,7 +264,18 @@ class InitCommand extends command_1.BaseCommand {
253
264
  });
254
265
  return;
255
266
  }
267
+ // A file that already holds exactly what this would write is not a
268
+ // conflict: `init` writes the config when it detects a test command.
269
+ const same = (o) => {
270
+ try {
271
+ return fs.readFileSync(path.join(projectDir, o.dest), "utf8") === o.body;
272
+ }
273
+ catch {
274
+ return false;
275
+ }
276
+ };
256
277
  const existing = outputs
278
+ .filter((o) => !same(o))
257
279
  .map((o) => o.dest)
258
280
  .filter((dest) => fs.existsSync(path.join(projectDir, dest)));
259
281
  if (existing.length > 0 && !opts.force) {
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../../../scripts/harness/init.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../../scripts/harness/init.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.16.0",
3
+ "version": "0.17.1",
4
4
  "description": "Specs as executable contracts — requirements, scenarios and traceability that CI enforces.",
5
5
  "license": "MIT",
6
6
  "type": "commonjs",
@@ -0,0 +1,3 @@
1
+ - Never delete or weaken an existing test to get to green.
2
+ - One requirement at a time: extend or write the test first, then the code.
3
+ - Do not modify generated or vendored code unless the requirement says so.
@@ -0,0 +1,2 @@
1
+ - Keep domain logic out of framework code; respect the layers and the domain's boundaries.
2
+ - Tests assert the acceptance criteria with the scenario's own values.
@@ -1,32 +1,30 @@
1
- # Agent Manifest — {{PROJECT_NAME}}
2
-
3
- > This file helps AI coding agents (Claude, Copilot, Cursor, Aider, etc.)
4
- > understand the structure and constraints of this project.
5
-
6
- ## Project overview
7
- - **Name**: {{PROJECT_NAME}}
8
- - **Domain**: {{DOMAIN}}
9
- - **Stack**: {{STACK}}
10
- - **API style**: {{API_STYLE}}
11
- - **Testing**: {{TESTING}}
12
-
13
- ## Specification entry points
14
- | Artefact | Path | Purpose |
15
- |---|---|---|
16
- | Root spec | `spec.md` | Vision, requirements, bounded contexts, risks |
17
- | Domain model | `docs/specs/domain-model.md` | Aggregates, bounded contexts, value objects |
18
- | Traceability | `docs/specs/traceability.md` | REQ → Scenario → UC → Aggregate → test |
19
- | AI guardrails | `AI_RULES.md` | Stack constraints and conventions for this project |
20
- | ADRs | `docs/specs/adr/` | Architecture decision records |
21
-
22
- ## Constraints
23
- - **Always read `AI_RULES.md` before writing any code.** It specifies the exact stack, conventions and forbidden patterns.
24
- - **Always check `docs/specs/traceability.md`** before claiming a requirement is implemented.
25
- - **Do not implement features not linked to a requirement** in `spec.md`.
26
- - **Run `npx @rsaglobaltech/specgate validate .`** after any change to `docs/specs/` or `features/`.
27
-
28
- ## Quality gates
29
- A change is considered complete only when:
30
- 1. `npx @rsaglobaltech/specgate validate .` exits 0.
31
- 2. All Gherkin scenarios linked to the changed requirement are passing.
32
- 3. The traceability matrix is updated to reflect the new status.
1
+ # AGENTS.md — {{PROJECT_NAME}}
2
+
3
+ {{PROJECT_TYPE}} project · architecture: {{ARCHITECTURE}} · domain: {{DOMAIN}}
4
+ Stack: {{STACK}} · API: {{API_STYLE}} · Testing: {{TESTING}}
5
+
6
+ This project uses spec-driven development with `specgate`. `spec.md`,
7
+ `features/` and `docs/specs/` are the contract your work is judged against.
8
+
9
+ ## Work
10
+
11
+ 1. `specgate status` — what is left, and the next requirement.
12
+ 2. Write the test first and name the requirement in it (`REQ-007`, and its
13
+ scenario `SCN-007a` when there is one). That mention is the link.
14
+ 3. Implement until `specgate check` passes: specs, links, coverage, tests.
15
+ 4. `specgate done REQ-007` — refused unless the gate passes.
16
+
17
+ Each step in detail: the `/specgate:*` commands, or
18
+ `specgate change instructions <artifact> --json`.
19
+
20
+ ## Never
21
+
22
+ - Edit `spec.md`, `features/`, `docs/specs/` or this file to make a test pass.
23
+ - Choose or replace the stack; if a field above is TBD, stop and ask.
24
+ - Say work is done that `specgate check` has not passed.
25
+
26
+ ## Project rules
27
+
28
+ {{STACK_RULES}}
29
+ {{ARCHITECTURE_MODELING_RULES}}
30
+ {{ARCHITECTURE_CHECKS}}
@@ -0,0 +1,2 @@
1
+ - Componentized and reusable by default.
2
+ - Responsive behaviour is an acceptance criterion, not polish.
@@ -0,0 +1,7 @@
1
+ - Offline is a state, not an error: every screen that reads data says what it shows offline.
2
+ - The process can die at any moment: what the user typed survives backgrounding, unless the scenario says otherwise.
3
+ - Platform differences are stated in the scenario; silent iOS/Android divergence is a defect.
4
+ - A permission is a flow with a denial branch, including a permanent denial.
5
+ - A screen reachable by deep link works cold, with no back stack.
6
+ - Store review is part of done: privacy declarations and permission rationales belong in the spec first.
7
+ - Domain and use-case code import neither the UI framework nor device APIs; both arrive through a port.
@@ -1,27 +0,0 @@
1
- # AI Rules — {{PROJECT_NAME}}
2
-
3
- Rules for any AI coding agent (and any human) working on this repository.
4
-
5
- ## Project facts
6
-
7
- - Domain: {{DOMAIN}}
8
- - Stack: {{STACK}}
9
- - Testing: {{TESTING}}
10
- - Test command: `{{TEST_CMD}}`
11
-
12
- ## Boundaries
13
-
14
- - `spec.md`, `features/**/*.feature` and `docs/specs/traceability.md` are the
15
- source of truth. Do not edit them to make a failing gate pass.
16
- - Never delete or weaken an existing test to get to green.
17
- - Implement one requirement (REQ-NNN) at a time; write or extend the test
18
- first, then the production code.
19
- - Keep changes inside this repository; do not modify generated or vendored
20
- code unless the requirement says so.
21
-
22
- ## Definition of done
23
-
24
- 1. The scenario(s) for the requirement pass.
25
- 2. `{{TEST_CMD}}` passes.
26
- 3. `specgate validate . --strict` passes.
27
- 4. The traceability row is updated via `specgate done REQ-NNN`.