speckeeper 0.10.1 → 0.11.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/README.md +1 -0
- package/cli-contract.yaml +206 -208
- package/dist/cli.js +1505 -80
- package/dist/cli.js.map +1 -1
- package/dist/{config-api-CLVjdgIP.d.ts → config-api-coyCX1SB.d.ts} +21 -1
- package/dist/dsl/index.d.ts +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.js +75 -3
- package/dist/index.js.map +1 -1
- package/docs/cli-reference.md +107 -154
- package/docs/design/cli-commands.md +36 -0
- package/docs/design/functional-requirements.md +101 -3
- package/docs/design/nonfunctional-requirements.md +3 -3
- package/docs/design/test-refs.md +26 -0
- package/package.json +3 -3
package/cli-contract.yaml
CHANGED
|
@@ -18,6 +18,20 @@ commandSets:
|
|
|
18
18
|
summary: Requirements and design management framework with TypeScript DSL.
|
|
19
19
|
executable: speckeeper
|
|
20
20
|
|
|
21
|
+
env:
|
|
22
|
+
CURSOR_API_KEY:
|
|
23
|
+
description: API key for Cursor SDK adapter.
|
|
24
|
+
sensitive: true
|
|
25
|
+
GEMINI_API_KEY:
|
|
26
|
+
description: API key for Gemini adapter.
|
|
27
|
+
sensitive: true
|
|
28
|
+
OPENAI_API_KEY:
|
|
29
|
+
description: API key for OpenAI adapter.
|
|
30
|
+
sensitive: true
|
|
31
|
+
ANTHROPIC_API_KEY:
|
|
32
|
+
description: API key for Anthropic/Claude adapter.
|
|
33
|
+
sensitive: true
|
|
34
|
+
|
|
21
35
|
globalOptions:
|
|
22
36
|
- name: version
|
|
23
37
|
aliases: [V]
|
|
@@ -42,6 +56,14 @@ commandSets:
|
|
|
42
56
|
usage:
|
|
43
57
|
- speckeeper init
|
|
44
58
|
- speckeeper init --force
|
|
59
|
+
- speckeeper init --format yaml
|
|
60
|
+
|
|
61
|
+
effects:
|
|
62
|
+
riskLevel: medium
|
|
63
|
+
writes:
|
|
64
|
+
- target: "speckeeper.config.ts, design/ directory"
|
|
65
|
+
description: "generates config and starter template files"
|
|
66
|
+
idempotent: false
|
|
45
67
|
|
|
46
68
|
options:
|
|
47
69
|
- name: force
|
|
@@ -50,6 +72,21 @@ commandSets:
|
|
|
50
72
|
schema:
|
|
51
73
|
type: boolean
|
|
52
74
|
default: false
|
|
75
|
+
effects:
|
|
76
|
+
riskLevel: high
|
|
77
|
+
writes:
|
|
78
|
+
- target: "existing project files"
|
|
79
|
+
description: "overwrites existing config and design files"
|
|
80
|
+
overwrite: true
|
|
81
|
+
destructive: true
|
|
82
|
+
|
|
83
|
+
- name: format
|
|
84
|
+
description: "Spec data format: ts (default) or yaml."
|
|
85
|
+
valueName: format
|
|
86
|
+
schema:
|
|
87
|
+
type: string
|
|
88
|
+
default: ts
|
|
89
|
+
enum: [ts, yaml]
|
|
53
90
|
|
|
54
91
|
exits:
|
|
55
92
|
'0':
|
|
@@ -62,28 +99,25 @@ commandSets:
|
|
|
62
99
|
stderr:
|
|
63
100
|
format: text
|
|
64
101
|
|
|
65
|
-
x-agent:
|
|
66
|
-
riskLevel: medium
|
|
67
|
-
requiresConfirmation: true
|
|
68
|
-
idempotent: false
|
|
69
|
-
sideEffects:
|
|
70
|
-
- file_write
|
|
71
|
-
sideEffectNote: >-
|
|
72
|
-
Creates config file and design/ directory structure.
|
|
73
|
-
With --force, overwrites existing files.
|
|
74
|
-
|
|
75
102
|
# ── build ─────────────────────────────────────────
|
|
76
103
|
build:
|
|
77
104
|
summary: Generate docs/ and specs/ from TypeScript models.
|
|
78
105
|
description: >-
|
|
79
106
|
Loads the design TypeScript models and generates machine-readable
|
|
80
107
|
specs/ output and optionally human-readable docs/ output. Supports
|
|
81
|
-
markdown, JSON, or both formats.
|
|
82
|
-
auto-regenerate.
|
|
108
|
+
markdown, JSON, or both formats.
|
|
83
109
|
usage:
|
|
84
110
|
- speckeeper build
|
|
85
111
|
- speckeeper build --format json --output ./out
|
|
86
|
-
- speckeeper build --
|
|
112
|
+
- speckeeper build --verbose
|
|
113
|
+
|
|
114
|
+
effects:
|
|
115
|
+
riskLevel: low
|
|
116
|
+
writes:
|
|
117
|
+
- target: "docs/ directory"
|
|
118
|
+
description: "generated Markdown documentation files"
|
|
119
|
+
overwrite: true
|
|
120
|
+
idempotent: true
|
|
87
121
|
|
|
88
122
|
options:
|
|
89
123
|
- name: config
|
|
@@ -120,6 +154,8 @@ commandSets:
|
|
|
120
154
|
schema:
|
|
121
155
|
type: boolean
|
|
122
156
|
default: false
|
|
157
|
+
effects:
|
|
158
|
+
executionMode: watch
|
|
123
159
|
|
|
124
160
|
- name: verbose
|
|
125
161
|
aliases: [v]
|
|
@@ -139,17 +175,6 @@ commandSets:
|
|
|
139
175
|
stderr:
|
|
140
176
|
format: text
|
|
141
177
|
|
|
142
|
-
x-agent:
|
|
143
|
-
riskLevel: low
|
|
144
|
-
requiresConfirmation: false
|
|
145
|
-
idempotent: true
|
|
146
|
-
sideEffects:
|
|
147
|
-
- file_write
|
|
148
|
-
sideEffectNote: >-
|
|
149
|
-
When --watch is used, the process runs indefinitely and is
|
|
150
|
-
unsuitable for non-interactive agent invocation.
|
|
151
|
-
Always writes generated files to docs/ and specs/.
|
|
152
|
-
|
|
153
178
|
# ── lint ──────────────────────────────────────────
|
|
154
179
|
lint:
|
|
155
180
|
summary: Check design integrity (ID duplicates, references, layer violations, etc.).
|
|
@@ -157,11 +182,11 @@ commandSets:
|
|
|
157
182
|
Validates design models for structural integrity. Checks include
|
|
158
183
|
ID uniqueness, ID naming conventions, reference integrity, circular
|
|
159
184
|
dependency detection, phase gate enforcement, and custom model-specific
|
|
160
|
-
lint rules.
|
|
185
|
+
lint rules.
|
|
161
186
|
usage:
|
|
162
187
|
- speckeeper lint
|
|
163
188
|
- speckeeper lint --strict --format github
|
|
164
|
-
- speckeeper lint --phase HLD
|
|
189
|
+
- speckeeper lint --phase HLD
|
|
165
190
|
|
|
166
191
|
options:
|
|
167
192
|
- name: config
|
|
@@ -191,7 +216,7 @@ commandSets:
|
|
|
191
216
|
default: false
|
|
192
217
|
|
|
193
218
|
- name: fix
|
|
194
|
-
description: Attempt to fix auto-fixable issues.
|
|
219
|
+
description: Attempt to fix auto-fixable issues (not yet implemented).
|
|
195
220
|
schema:
|
|
196
221
|
type: boolean
|
|
197
222
|
default: false
|
|
@@ -207,7 +232,7 @@ commandSets:
|
|
|
207
232
|
|
|
208
233
|
exits:
|
|
209
234
|
'0':
|
|
210
|
-
description: No lint issues found
|
|
235
|
+
description: No lint issues found.
|
|
211
236
|
stdout:
|
|
212
237
|
format: '{options.format}'
|
|
213
238
|
|
|
@@ -217,15 +242,7 @@ commandSets:
|
|
|
217
242
|
format: '{options.format}'
|
|
218
243
|
|
|
219
244
|
x-agent:
|
|
220
|
-
riskLevel: low
|
|
221
|
-
requiresConfirmation: false
|
|
222
245
|
idempotent: true
|
|
223
|
-
sideEffects:
|
|
224
|
-
- file_write
|
|
225
|
-
sideEffectNote: >-
|
|
226
|
-
file_write applies only when --fix is provided.
|
|
227
|
-
Without --fix the command is read-only.
|
|
228
|
-
safeDryRunOption: Omit --fix to run in read-only mode.
|
|
229
246
|
|
|
230
247
|
# ── drift ─────────────────────────────────────────
|
|
231
248
|
drift:
|
|
@@ -233,12 +250,10 @@ commandSets:
|
|
|
233
250
|
description: >-
|
|
234
251
|
Compares generated files against their expected content to detect
|
|
235
252
|
manual edits (drift). Useful for CI pipelines to ensure generated
|
|
236
|
-
docs/ files stay in sync with model definitions.
|
|
237
|
-
drifted files.
|
|
253
|
+
docs/ files stay in sync with model definitions.
|
|
238
254
|
usage:
|
|
239
255
|
- speckeeper drift
|
|
240
256
|
- speckeeper drift --fail-on-drift
|
|
241
|
-
- speckeeper drift --update --format diff
|
|
242
257
|
|
|
243
258
|
options:
|
|
244
259
|
- name: config
|
|
@@ -254,7 +269,7 @@ commandSets:
|
|
|
254
269
|
|
|
255
270
|
- name: update
|
|
256
271
|
aliases: [u]
|
|
257
|
-
description: Auto-update if differences are found.
|
|
272
|
+
description: Auto-update if differences are found (not yet implemented).
|
|
258
273
|
schema:
|
|
259
274
|
type: boolean
|
|
260
275
|
default: false
|
|
@@ -276,49 +291,37 @@ commandSets:
|
|
|
276
291
|
|
|
277
292
|
exits:
|
|
278
293
|
'0':
|
|
279
|
-
description: No drift detected
|
|
294
|
+
description: No drift detected.
|
|
280
295
|
stdout:
|
|
281
296
|
format: '{options.format}'
|
|
282
297
|
|
|
283
298
|
'1':
|
|
284
|
-
description: Drift detected (with --fail-on-drift)
|
|
299
|
+
description: Drift detected (with --fail-on-drift).
|
|
285
300
|
stdout:
|
|
286
301
|
format: '{options.format}'
|
|
287
302
|
|
|
288
303
|
x-agent:
|
|
289
|
-
riskLevel: medium
|
|
290
|
-
requiresConfirmation: true
|
|
291
304
|
idempotent: true
|
|
292
|
-
sideEffects:
|
|
293
|
-
- file_write
|
|
294
|
-
sideEffectNote: >-
|
|
295
|
-
file_write applies only when --update is provided.
|
|
296
|
-
Without --update the command is read-only.
|
|
297
|
-
safeDryRunOption: Omit --update to run in read-only mode.
|
|
298
305
|
|
|
299
306
|
# ── check ─────────────────────────────────────────
|
|
300
307
|
check:
|
|
301
308
|
summary: Check external SSOT conformance (including custom models).
|
|
302
309
|
description: >-
|
|
303
310
|
Validates specifications against actual implementation artifacts
|
|
304
|
-
using a global source scan. Performs existence checks
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
DDL, annotations, and custom scanners. Supports filtering by check
|
|
308
|
-
type and test coverage reporting.
|
|
311
|
+
using a global source scan. Performs existence checks, optional
|
|
312
|
+
structural checks (via deep validation), and optional type checks.
|
|
313
|
+
Sources include OpenAPI, DDL, annotations, and custom scanners.
|
|
309
314
|
usage:
|
|
310
315
|
- speckeeper check
|
|
311
316
|
- speckeeper check external-ssot --verbose
|
|
312
317
|
- speckeeper check test --coverage
|
|
313
|
-
- speckeeper check openapi --strict
|
|
314
318
|
|
|
315
319
|
arguments:
|
|
316
320
|
- name: type
|
|
317
321
|
index: 0
|
|
318
322
|
required: false
|
|
319
323
|
description: >-
|
|
320
|
-
Type of check to run. Filters sources by type.
|
|
321
|
-
checks all configured sources.
|
|
324
|
+
Type of check to run. Filters sources by type.
|
|
322
325
|
schema:
|
|
323
326
|
type: string
|
|
324
327
|
enum: [external-ssot, openapi, ddl, iac, custom, all, test]
|
|
@@ -343,7 +346,7 @@ commandSets:
|
|
|
343
346
|
|
|
344
347
|
- name: verbose
|
|
345
348
|
aliases: [v]
|
|
346
|
-
description: Show detailed output
|
|
349
|
+
description: Show detailed output.
|
|
347
350
|
schema:
|
|
348
351
|
type: boolean
|
|
349
352
|
default: false
|
|
@@ -354,51 +357,43 @@ commandSets:
|
|
|
354
357
|
type: boolean
|
|
355
358
|
default: false
|
|
356
359
|
|
|
357
|
-
- name: format
|
|
358
|
-
aliases: [f]
|
|
359
|
-
description: "Output format: text, json, github."
|
|
360
|
-
valueName: format
|
|
361
|
-
schema:
|
|
362
|
-
type: string
|
|
363
|
-
default: text
|
|
364
|
-
enum: [text, json, github]
|
|
365
|
-
|
|
366
360
|
exits:
|
|
367
361
|
'0':
|
|
368
|
-
description: All checks passed
|
|
362
|
+
description: All checks passed.
|
|
369
363
|
stdout:
|
|
370
|
-
format:
|
|
364
|
+
format: text
|
|
371
365
|
|
|
372
366
|
'1':
|
|
373
|
-
description: Check failures found
|
|
367
|
+
description: Check failures found.
|
|
374
368
|
stdout:
|
|
375
|
-
format:
|
|
369
|
+
format: text
|
|
376
370
|
|
|
377
371
|
x-agent:
|
|
378
|
-
riskLevel: low
|
|
379
|
-
requiresConfirmation: false
|
|
380
372
|
idempotent: true
|
|
381
|
-
sideEffects: []
|
|
382
373
|
|
|
383
374
|
# ── new ───────────────────────────────────────────
|
|
384
375
|
new:
|
|
385
376
|
summary: Create a new element with auto-generated ID.
|
|
386
377
|
description: >-
|
|
387
378
|
Generates a new design element file with a unique auto-generated ID
|
|
388
|
-
based on the model's ID prefix and existing elements.
|
|
389
|
-
built-in model types and uses templates for file generation.
|
|
379
|
+
based on the model's ID prefix and existing elements.
|
|
390
380
|
usage:
|
|
391
381
|
- speckeeper new requirement --name "User Authentication"
|
|
392
|
-
- speckeeper new entity
|
|
393
|
-
|
|
382
|
+
- speckeeper new entity
|
|
383
|
+
|
|
384
|
+
effects:
|
|
385
|
+
riskLevel: low
|
|
386
|
+
writes:
|
|
387
|
+
- target: "design/ directory"
|
|
388
|
+
description: "new TypeScript spec file with auto-generated ID"
|
|
389
|
+
idempotent: false
|
|
394
390
|
|
|
395
391
|
arguments:
|
|
396
392
|
- name: type
|
|
397
393
|
index: 0
|
|
398
394
|
required: true
|
|
399
395
|
description: >-
|
|
400
|
-
Element type to create
|
|
401
|
-
screen, flow, error-case, term.
|
|
396
|
+
Element type to create.
|
|
402
397
|
schema:
|
|
403
398
|
type: string
|
|
404
399
|
enum: [requirement, usecase, entity, component, screen, flow, error-case, term]
|
|
@@ -437,51 +432,38 @@ commandSets:
|
|
|
437
432
|
encoding: utf-8
|
|
438
433
|
|
|
439
434
|
- name: dry-run
|
|
440
|
-
description: Preview generated file content
|
|
435
|
+
description: Preview generated file content without writing.
|
|
441
436
|
schema:
|
|
442
437
|
type: boolean
|
|
443
438
|
default: false
|
|
444
439
|
|
|
445
440
|
exits:
|
|
446
441
|
'0':
|
|
447
|
-
description: Element file created (or previewed with --dry-run)
|
|
442
|
+
description: Element file created (or previewed with --dry-run).
|
|
448
443
|
stdout:
|
|
449
444
|
format: text
|
|
450
445
|
|
|
451
446
|
'1':
|
|
452
|
-
description: Creation failed
|
|
447
|
+
description: Creation failed.
|
|
453
448
|
stderr:
|
|
454
449
|
format: text
|
|
455
450
|
|
|
456
|
-
x-agent:
|
|
457
|
-
riskLevel: low
|
|
458
|
-
requiresConfirmation: false
|
|
459
|
-
idempotent: false
|
|
460
|
-
sideEffects:
|
|
461
|
-
- file_write
|
|
462
|
-
sideEffectNote: >-
|
|
463
|
-
Creates a new TypeScript spec file with auto-generated ID.
|
|
464
|
-
With --dry-run, only previews the generated content without writing.
|
|
465
|
-
safeDryRunOption: --dry-run
|
|
466
|
-
|
|
467
451
|
# ── impact ────────────────────────────────────────
|
|
468
452
|
impact:
|
|
469
453
|
summary: Analyze impact of changes to an ID.
|
|
470
454
|
description: >-
|
|
471
455
|
Performs change impact analysis by traversing the relation graph
|
|
472
|
-
starting from the specified spec ID.
|
|
473
|
-
and/or downstream (dependencies) elements up to the configured
|
|
474
|
-
depth. Supports text, JSON, and Mermaid diagram output.
|
|
456
|
+
starting from the specified spec ID.
|
|
475
457
|
usage:
|
|
476
458
|
- speckeeper impact FR-001
|
|
477
|
-
- speckeeper impact ENT-ORDER --
|
|
459
|
+
- speckeeper impact ENT-ORDER --depth 5
|
|
478
460
|
- speckeeper impact COMP-AUTH --format mermaid
|
|
479
461
|
|
|
480
462
|
arguments:
|
|
481
463
|
- name: id
|
|
482
464
|
index: 0
|
|
483
465
|
required: true
|
|
484
|
-
description: "Spec ID to analyze (e.g. REQ-001, ENT-ORDER
|
|
466
|
+
description: "Spec ID to analyze (e.g. REQ-001, ENT-ORDER)."
|
|
485
467
|
schema:
|
|
486
468
|
type: string
|
|
487
469
|
|
|
@@ -525,7 +507,7 @@ commandSets:
|
|
|
525
507
|
|
|
526
508
|
exits:
|
|
527
509
|
'0':
|
|
528
|
-
description: Impact analysis completed
|
|
510
|
+
description: Impact analysis completed.
|
|
529
511
|
stdout:
|
|
530
512
|
format: '{options.format}'
|
|
531
513
|
|
|
@@ -535,23 +517,26 @@ commandSets:
|
|
|
535
517
|
format: text
|
|
536
518
|
|
|
537
519
|
x-agent:
|
|
538
|
-
riskLevel: low
|
|
539
|
-
requiresConfirmation: false
|
|
540
520
|
idempotent: true
|
|
541
|
-
sideEffects: []
|
|
542
521
|
|
|
543
522
|
# ── scaffold ──────────────────────────────────────
|
|
544
523
|
scaffold:
|
|
545
524
|
summary: Generate _models/ from a Mermaid flowchart definition.
|
|
546
525
|
description: >-
|
|
547
526
|
Parses a Mermaid flowchart from a Markdown file and generates
|
|
548
|
-
TypeScript model classes, spec data files, and an index file
|
|
549
|
-
the design directory. Uses class-based artifact resolution to
|
|
550
|
-
determine model types from Mermaid node classes.
|
|
527
|
+
TypeScript model classes, spec data files, and an index file.
|
|
551
528
|
usage:
|
|
552
529
|
- speckeeper scaffold --source requirements.md
|
|
553
530
|
- speckeeper scaffold --source flow.md --output design/ --force
|
|
554
531
|
- speckeeper scaffold --source arch.md --dry-run
|
|
532
|
+
- speckeeper scaffold --source arch.md --format yaml
|
|
533
|
+
|
|
534
|
+
effects:
|
|
535
|
+
riskLevel: low
|
|
536
|
+
writes:
|
|
537
|
+
- target: "design/ directory"
|
|
538
|
+
description: "generated _models/ and spec data files"
|
|
539
|
+
idempotent: false
|
|
555
540
|
|
|
556
541
|
options:
|
|
557
542
|
- name: source
|
|
@@ -580,6 +565,12 @@ commandSets:
|
|
|
580
565
|
schema:
|
|
581
566
|
type: boolean
|
|
582
567
|
default: false
|
|
568
|
+
effects:
|
|
569
|
+
riskLevel: medium
|
|
570
|
+
writes:
|
|
571
|
+
- target: "existing model and spec files"
|
|
572
|
+
description: "overwrites existing TypeScript model source files"
|
|
573
|
+
overwrite: true
|
|
583
574
|
|
|
584
575
|
- name: dry-run
|
|
585
576
|
description: Preview generated files without writing.
|
|
@@ -587,38 +578,97 @@ commandSets:
|
|
|
587
578
|
type: boolean
|
|
588
579
|
default: false
|
|
589
580
|
|
|
581
|
+
- name: format
|
|
582
|
+
description: "Spec data format: ts (default) or yaml."
|
|
583
|
+
valueName: format
|
|
584
|
+
schema:
|
|
585
|
+
type: string
|
|
586
|
+
default: ts
|
|
587
|
+
enum: [ts, yaml]
|
|
588
|
+
|
|
590
589
|
exits:
|
|
591
590
|
'0':
|
|
592
|
-
description:
|
|
593
|
-
Model files generated (or previewed with --dry-run) successfully.
|
|
591
|
+
description: Model files generated (or previewed with --dry-run).
|
|
594
592
|
stdout:
|
|
595
593
|
format: text
|
|
596
594
|
|
|
597
595
|
'1':
|
|
598
|
-
description:
|
|
599
|
-
Scaffold failed (source file not found, invalid Mermaid syntax,
|
|
600
|
-
or write error).
|
|
596
|
+
description: Scaffold failed.
|
|
601
597
|
stderr:
|
|
602
598
|
format: text
|
|
603
599
|
|
|
604
600
|
x-agent:
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
601
|
+
recommendedBeforeUse:
|
|
602
|
+
- "Run with --dry-run first to preview generated files"
|
|
603
|
+
|
|
604
|
+
# ── convert ───────────────────────────────────────
|
|
605
|
+
convert:
|
|
606
|
+
summary: Convert a TS spec data file to YAML format.
|
|
607
|
+
description: >-
|
|
608
|
+
Reads a TypeScript spec data file that exports a SpecModule via
|
|
609
|
+
defineSpecs(), extracts model IDs and spec data, and writes the
|
|
610
|
+
equivalent YAML file. Supports --dry-run for preview.
|
|
611
|
+
usage:
|
|
612
|
+
- speckeeper convert design/glossary.ts
|
|
613
|
+
- speckeeper convert design/requirements.ts --output reqs.yaml
|
|
614
|
+
- speckeeper convert design/glossary.ts --dry-run
|
|
615
|
+
|
|
616
|
+
effects:
|
|
617
|
+
riskLevel: low
|
|
618
|
+
writes:
|
|
619
|
+
- target: ".yaml output file"
|
|
620
|
+
description: "YAML conversion of the TS spec data"
|
|
621
|
+
idempotent: true
|
|
622
|
+
|
|
623
|
+
arguments:
|
|
624
|
+
- name: file
|
|
625
|
+
index: 0
|
|
626
|
+
required: true
|
|
627
|
+
description: Path to TS spec data file.
|
|
628
|
+
schema:
|
|
629
|
+
type: string
|
|
630
|
+
|
|
631
|
+
options:
|
|
632
|
+
- name: output
|
|
633
|
+
aliases: [o]
|
|
634
|
+
description: "Output file path (default: same name with .yaml extension)."
|
|
635
|
+
valueName: path
|
|
636
|
+
schema:
|
|
637
|
+
type: string
|
|
638
|
+
file:
|
|
639
|
+
mode: write
|
|
640
|
+
encoding: utf-8
|
|
641
|
+
|
|
642
|
+
- name: dry-run
|
|
643
|
+
aliases: [n]
|
|
644
|
+
description: Preview conversion without writing.
|
|
645
|
+
schema:
|
|
646
|
+
type: boolean
|
|
647
|
+
default: false
|
|
648
|
+
|
|
649
|
+
exits:
|
|
650
|
+
'0':
|
|
651
|
+
description: Conversion completed (or previewed with --dry-run).
|
|
652
|
+
stdout:
|
|
653
|
+
format: text
|
|
654
|
+
|
|
655
|
+
'1':
|
|
656
|
+
description: Conversion failed (file not found, invalid module, or write error).
|
|
657
|
+
stderr:
|
|
658
|
+
format: text
|
|
613
659
|
|
|
614
660
|
# ── audit-requirements ──────────────────────────────
|
|
615
661
|
audit-requirements:
|
|
616
662
|
summary: Run LLM-based requirement quality audit.
|
|
617
663
|
description: >-
|
|
618
664
|
Performs semantic analysis of design specs using LLM to identify
|
|
619
|
-
quality issues that static lint cannot detect.
|
|
620
|
-
|
|
621
|
-
|
|
665
|
+
quality issues that static lint cannot detect.
|
|
666
|
+
|
|
667
|
+
effects:
|
|
668
|
+
network:
|
|
669
|
+
description: LLM API calls to configured provider
|
|
670
|
+
idempotent: true
|
|
671
|
+
|
|
622
672
|
usage:
|
|
623
673
|
- speckeeper audit-requirements
|
|
624
674
|
- speckeeper audit-requirements --adapter gemini --dry-run
|
|
@@ -725,17 +775,8 @@ commandSets:
|
|
|
725
775
|
format: text
|
|
726
776
|
|
|
727
777
|
x-agent:
|
|
728
|
-
|
|
729
|
-
|
|
730
|
-
idempotent: true
|
|
731
|
-
sideEffects: [network, file_write]
|
|
732
|
-
sideEffectNote: >-
|
|
733
|
-
Network calls to LLM provider when adapter is not mock.
|
|
734
|
-
Filesystem write when --output is specified.
|
|
735
|
-
Exit 10 = valid output with blocking findings (stdout contains result).
|
|
736
|
-
Exit 11 = missing runtime dependency (non-retryable).
|
|
737
|
-
safeDryRunOption: --dry-run
|
|
738
|
-
expectedDurationMs: 120000
|
|
778
|
+
recommendedBeforeUse:
|
|
779
|
+
- "Run with --dry-run first to preview the prompt"
|
|
739
780
|
retryableExitCodes: [12]
|
|
740
781
|
|
|
741
782
|
# ── propose-trace-links ─────────────────────────────
|
|
@@ -743,13 +784,16 @@ commandSets:
|
|
|
743
784
|
summary: LLM-based traceability link proposal.
|
|
744
785
|
description: >-
|
|
745
786
|
Analyzes spec definitions and external source scan results to
|
|
746
|
-
propose candidate traceability links
|
|
747
|
-
|
|
748
|
-
|
|
787
|
+
propose candidate traceability links.
|
|
788
|
+
|
|
789
|
+
effects:
|
|
790
|
+
network:
|
|
791
|
+
description: LLM API calls to configured provider
|
|
792
|
+
idempotent: true
|
|
793
|
+
|
|
749
794
|
usage:
|
|
750
795
|
- speckeeper propose-trace-links
|
|
751
796
|
- speckeeper propose-trace-links --adapter claude --report-format json
|
|
752
|
-
- speckeeper propose-trace-links --dry-run
|
|
753
797
|
|
|
754
798
|
options:
|
|
755
799
|
- name: config
|
|
@@ -852,17 +896,8 @@ commandSets:
|
|
|
852
896
|
format: text
|
|
853
897
|
|
|
854
898
|
x-agent:
|
|
855
|
-
|
|
856
|
-
|
|
857
|
-
idempotent: true
|
|
858
|
-
sideEffects: [network, file_write]
|
|
859
|
-
sideEffectNote: >-
|
|
860
|
-
Network calls to LLM provider when adapter is not mock.
|
|
861
|
-
Filesystem write when --output is specified.
|
|
862
|
-
Exit 10 = valid output with blocking findings (stdout contains result).
|
|
863
|
-
Exit 11 = missing runtime dependency (non-retryable).
|
|
864
|
-
safeDryRunOption: --dry-run
|
|
865
|
-
expectedDurationMs: 120000
|
|
899
|
+
recommendedBeforeUse:
|
|
900
|
+
- "Run with --dry-run first to preview the prompt"
|
|
866
901
|
retryableExitCodes: [12]
|
|
867
902
|
|
|
868
903
|
# ── explain-impact ──────────────────────────────────
|
|
@@ -870,34 +905,26 @@ commandSets:
|
|
|
870
905
|
summary: LLM-based explanation of impact analysis output.
|
|
871
906
|
description: >-
|
|
872
907
|
Reads JSON output from speckeeper impact on stdin and generates
|
|
873
|
-
a human-readable explanation
|
|
874
|
-
|
|
875
|
-
|
|
876
|
-
|
|
877
|
-
|
|
878
|
-
|
|
908
|
+
a human-readable explanation.
|
|
909
|
+
|
|
910
|
+
effects:
|
|
911
|
+
network:
|
|
912
|
+
description: LLM API calls to configured provider
|
|
913
|
+
idempotent: true
|
|
879
914
|
|
|
880
915
|
stdin:
|
|
881
916
|
required: true
|
|
882
917
|
format: json
|
|
883
918
|
description: >-
|
|
884
919
|
JSON output from speckeeper impact --format json.
|
|
885
|
-
Must contain target, targetType, and impactedNodes fields.
|
|
886
920
|
schema:
|
|
887
921
|
$ref: '#/components/schemas/ImpactAnalysisOutput'
|
|
888
922
|
|
|
889
|
-
|
|
890
|
-
-
|
|
891
|
-
|
|
892
|
-
description: Path to config file.
|
|
893
|
-
valueName: path
|
|
894
|
-
schema:
|
|
895
|
-
type: string
|
|
896
|
-
file:
|
|
897
|
-
mode: read
|
|
898
|
-
exists: true
|
|
899
|
-
encoding: utf-8
|
|
923
|
+
usage:
|
|
924
|
+
- speckeeper impact FR-001 --format json | speckeeper explain-impact
|
|
925
|
+
- speckeeper impact ENT-ORDER --format json | speckeeper explain-impact --adapter claude
|
|
900
926
|
|
|
927
|
+
options:
|
|
901
928
|
- name: adapter
|
|
902
929
|
aliases: [a]
|
|
903
930
|
description: SDK adapter to use for LLM execution.
|
|
@@ -965,11 +992,6 @@ commandSets:
|
|
|
965
992
|
format: text
|
|
966
993
|
|
|
967
994
|
'2':
|
|
968
|
-
description: Configuration or input error.
|
|
969
|
-
stderr:
|
|
970
|
-
format: text
|
|
971
|
-
|
|
972
|
-
'3':
|
|
973
995
|
description: No input on stdin.
|
|
974
996
|
stderr:
|
|
975
997
|
format: text
|
|
@@ -992,27 +1014,21 @@ commandSets:
|
|
|
992
1014
|
format: text
|
|
993
1015
|
|
|
994
1016
|
x-agent:
|
|
995
|
-
|
|
996
|
-
|
|
997
|
-
idempotent: true
|
|
998
|
-
sideEffects: [network, file_write]
|
|
999
|
-
sideEffectNote: >-
|
|
1000
|
-
Network calls to LLM provider when adapter is not mock.
|
|
1001
|
-
Filesystem write when --output is specified.
|
|
1002
|
-
Exit 10 = valid output with blocking findings (stdout contains result).
|
|
1003
|
-
Exit 11 = missing runtime dependency (non-retryable).
|
|
1004
|
-
safeDryRunOption: --dry-run
|
|
1005
|
-
expectedDurationMs: 120000
|
|
1017
|
+
recommendedBeforeUse:
|
|
1018
|
+
- "Run with --dry-run first to preview the prompt"
|
|
1006
1019
|
retryableExitCodes: [12]
|
|
1007
1020
|
|
|
1008
1021
|
# ── propose-acceptance-criteria ─────────────────────
|
|
1009
1022
|
propose-acceptance-criteria:
|
|
1010
1023
|
summary: LLM-based acceptance criteria proposal.
|
|
1011
1024
|
description: >-
|
|
1012
|
-
Analyzes design specs and proposes testable acceptance criteria
|
|
1013
|
-
|
|
1014
|
-
|
|
1015
|
-
|
|
1025
|
+
Analyzes design specs and proposes testable acceptance criteria.
|
|
1026
|
+
|
|
1027
|
+
effects:
|
|
1028
|
+
network:
|
|
1029
|
+
description: LLM API calls to configured provider
|
|
1030
|
+
idempotent: true
|
|
1031
|
+
|
|
1016
1032
|
usage:
|
|
1017
1033
|
- speckeeper propose-acceptance-criteria
|
|
1018
1034
|
- speckeeper propose-acceptance-criteria FR-001 FR-002
|
|
@@ -1024,8 +1040,7 @@ commandSets:
|
|
|
1024
1040
|
required: false
|
|
1025
1041
|
variadic: true
|
|
1026
1042
|
description: >-
|
|
1027
|
-
Spec IDs to propose criteria for.
|
|
1028
|
-
Defaults to all specs if omitted.
|
|
1043
|
+
Spec IDs to propose criteria for. Defaults to all specs if omitted.
|
|
1029
1044
|
schema:
|
|
1030
1045
|
type: string
|
|
1031
1046
|
|
|
@@ -1130,22 +1145,12 @@ commandSets:
|
|
|
1130
1145
|
format: text
|
|
1131
1146
|
|
|
1132
1147
|
x-agent:
|
|
1133
|
-
|
|
1134
|
-
|
|
1135
|
-
idempotent: true
|
|
1136
|
-
sideEffects: [network, file_write]
|
|
1137
|
-
sideEffectNote: >-
|
|
1138
|
-
Network calls to LLM provider when adapter is not mock.
|
|
1139
|
-
Filesystem write when --output is specified.
|
|
1140
|
-
Exit 10 = valid output with blocking findings (stdout contains result).
|
|
1141
|
-
Exit 11 = missing runtime dependency (non-retryable).
|
|
1142
|
-
safeDryRunOption: --dry-run
|
|
1143
|
-
expectedDurationMs: 120000
|
|
1148
|
+
recommendedBeforeUse:
|
|
1149
|
+
- "Run with --dry-run first to preview the prompt"
|
|
1144
1150
|
retryableExitCodes: [12]
|
|
1145
1151
|
|
|
1146
1152
|
components:
|
|
1147
1153
|
schemas:
|
|
1148
|
-
# ── AI Agent Interoperability Schemas ──────────────────
|
|
1149
1154
|
AgentEvidence:
|
|
1150
1155
|
$ref: 'components.yaml#/schemas/agent-evidence'
|
|
1151
1156
|
AgentFinding:
|
|
@@ -1171,13 +1176,10 @@ components:
|
|
|
1171
1176
|
properties:
|
|
1172
1177
|
from:
|
|
1173
1178
|
type: string
|
|
1174
|
-
description: Source spec ID.
|
|
1175
1179
|
relation:
|
|
1176
1180
|
type: string
|
|
1177
|
-
description: Relation type (implements, verifiedBy, satisfies, etc.).
|
|
1178
1181
|
to:
|
|
1179
1182
|
type: string
|
|
1180
|
-
description: Target ID.
|
|
1181
1183
|
confidence:
|
|
1182
1184
|
type: number
|
|
1183
1185
|
minimum: 0
|
|
@@ -1195,7 +1197,6 @@ components:
|
|
|
1195
1197
|
properties:
|
|
1196
1198
|
explanation:
|
|
1197
1199
|
type: string
|
|
1198
|
-
description: Multi-paragraph human-readable explanation in Markdown format.
|
|
1199
1200
|
affectedArtifacts:
|
|
1200
1201
|
type: array
|
|
1201
1202
|
items:
|
|
@@ -1246,15 +1247,12 @@ components:
|
|
|
1246
1247
|
type: object
|
|
1247
1248
|
description: >-
|
|
1248
1249
|
JSON output from speckeeper impact --format json.
|
|
1249
|
-
Used as stdin input for explain-impact command.
|
|
1250
1250
|
required: [target, targetType, impactedNodes]
|
|
1251
1251
|
properties:
|
|
1252
1252
|
target:
|
|
1253
1253
|
type: string
|
|
1254
|
-
description: The spec ID that was analyzed.
|
|
1255
1254
|
targetType:
|
|
1256
1255
|
type: string
|
|
1257
|
-
description: Type of the target spec (requirement, usecase, entity, etc.).
|
|
1258
1256
|
direction:
|
|
1259
1257
|
type: string
|
|
1260
1258
|
enum: [upstream, downstream, both]
|