speckeeper 0.10.1 → 0.11.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.
@@ -2,7 +2,7 @@
2
2
 
3
3
  TypeScript-first specification validation framework — validate design consistency, external SSOT integrity, and traceability with type-safe TypeScript DSL. Supports design lint, external source checks (OpenAPI, DDL, annotations), drift detection, impact analysis, and scaffolding from Mermaid flowcharts.
4
4
 
5
- **Version:** 0.10.0
5
+ **Version:** 0.10.1
6
6
 
7
7
  ## Table of Contents
8
8
 
@@ -15,6 +15,7 @@ TypeScript-first specification validation framework — validate design consiste
15
15
  - [new](#speckeeper-new)
16
16
  - [impact](#speckeeper-impact)
17
17
  - [scaffold](#speckeeper-scaffold)
18
+ - [convert](#speckeeper-convert)
18
19
  - [audit-requirements](#speckeeper-audit-requirements)
19
20
  - [propose-trace-links](#speckeeper-propose-trace-links)
20
21
  - [explain-impact](#speckeeper-explain-impact)
@@ -33,6 +34,15 @@ Requirements and design management framework with TypeScript DSL.
33
34
  | `--version` | -V | No | | Print version and exit. |
34
35
  | `--help` | -h | No | | Show help and exit. |
35
36
 
37
+ ### Environment Variables
38
+
39
+ | Variable | Description |
40
+ |---|---|
41
+ | `CURSOR_API_KEY` | API key for Cursor SDK adapter. |
42
+ | `GEMINI_API_KEY` | API key for Gemini adapter. |
43
+ | `OPENAI_API_KEY` | API key for OpenAI adapter. |
44
+ | `ANTHROPIC_API_KEY` | API key for Anthropic/Claude adapter. |
45
+
36
46
  ### init
37
47
 
38
48
  Initialize a new speckeeper project with starter templates.
@@ -47,12 +57,16 @@ speckeeper init
47
57
  ```
48
58
  speckeeper init --force
49
59
  ```
60
+ ```
61
+ speckeeper init --format yaml
62
+ ```
50
63
 
51
64
  #### Options
52
65
 
53
66
  | Option | Aliases | Required | Default | Description |
54
67
  |---|---|---|---|---|
55
68
  | `--force` | -F | No | `false` | Overwrite existing files. |
69
+ | `--format` | | No | `"ts"` | Spec data format: ts (default) or yaml. |
56
70
 
57
71
  #### Exit Codes
58
72
 
@@ -64,25 +78,13 @@ speckeeper init --force
64
78
 
65
79
  - **stderr:** format=`text`
66
80
 
67
- #### Extensions
68
-
69
- ```yaml
70
- x-agent:
71
- riskLevel: medium
72
- requiresConfirmation: true
73
- idempotent: false
74
- sideEffects:
75
- - file_write
76
- sideEffectNote: Creates config file and design/ directory structure. With --force, overwrites existing files.
77
- ```
78
-
79
81
  ---
80
82
 
81
83
  ### build
82
84
 
83
85
  Generate docs/ and specs/ from TypeScript models.
84
86
 
85
- Loads the design TypeScript models and generates machine-readable specs/ output and optionally human-readable docs/ output. Supports markdown, JSON, or both formats. Can watch for file changes and auto-regenerate.
87
+ Loads the design TypeScript models and generates machine-readable specs/ output and optionally human-readable docs/ output. Supports markdown, JSON, or both formats.
86
88
 
87
89
  **Usage:**
88
90
 
@@ -93,7 +95,7 @@ speckeeper build
93
95
  speckeeper build --format json --output ./out
94
96
  ```
95
97
  ```
96
- speckeeper build --watch --verbose
98
+ speckeeper build --verbose
97
99
  ```
98
100
 
99
101
  #### Options
@@ -116,25 +118,13 @@ speckeeper build --watch --verbose
116
118
 
117
119
  - **stderr:** format=`text`
118
120
 
119
- #### Extensions
120
-
121
- ```yaml
122
- x-agent:
123
- riskLevel: low
124
- requiresConfirmation: false
125
- idempotent: true
126
- sideEffects:
127
- - file_write
128
- sideEffectNote: When --watch is used, the process runs indefinitely and is unsuitable for non-interactive agent invocation. Always writes generated files to docs/ and specs/.
129
- ```
130
-
131
121
  ---
132
122
 
133
123
  ### lint
134
124
 
135
125
  Check design integrity (ID duplicates, references, layer violations, etc.).
136
126
 
137
- Validates design models for structural integrity. Checks include ID uniqueness, ID naming conventions, reference integrity, circular dependency detection, phase gate enforcement, and custom model-specific lint rules. Optionally auto-fixes issues.
127
+ Validates design models for structural integrity. Checks include ID uniqueness, ID naming conventions, reference integrity, circular dependency detection, phase gate enforcement, and custom model-specific lint rules.
138
128
 
139
129
  **Usage:**
140
130
 
@@ -145,7 +135,7 @@ speckeeper lint
145
135
  speckeeper lint --strict --format github
146
136
  ```
147
137
  ```
148
- speckeeper lint --phase HLD --fix
138
+ speckeeper lint --phase HLD
149
139
  ```
150
140
 
151
141
  #### Options
@@ -155,12 +145,12 @@ speckeeper lint --phase HLD --fix
155
145
  | `--config` | -c | No | | Path to config file. |
156
146
  | `--phase` | -p | No | | Phase gate to check against: REQ, HLD, LLD, OPS. |
157
147
  | `--strict` | -s | No | `false` | Treat warnings as errors. |
158
- | `--fix` | | No | `false` | Attempt to fix auto-fixable issues. |
148
+ | `--fix` | | No | `false` | Attempt to fix auto-fixable issues (not yet implemented). |
159
149
  | `--format` | -f | No | `"text"` | Output format: text, json, github. |
160
150
 
161
151
  #### Exit Codes
162
152
 
163
- **Exit 0:** No lint issues found (or all issues auto-fixed).
153
+ **Exit 0:** No lint issues found.
164
154
 
165
155
  - **stdout:** format=`{options.format}`
166
156
 
@@ -172,13 +162,7 @@ speckeeper lint --phase HLD --fix
172
162
 
173
163
  ```yaml
174
164
  x-agent:
175
- riskLevel: low
176
- requiresConfirmation: false
177
165
  idempotent: true
178
- sideEffects:
179
- - file_write
180
- sideEffectNote: file_write applies only when --fix is provided. Without --fix the command is read-only.
181
- safeDryRunOption: Omit --fix to run in read-only mode.
182
166
  ```
183
167
 
184
168
  ---
@@ -187,7 +171,7 @@ x-agent:
187
171
 
188
172
  Check if generated files have been manually edited.
189
173
 
190
- Compares generated files against their expected content to detect manual edits (drift). Useful for CI pipelines to ensure generated docs/ files stay in sync with model definitions. Can auto-update drifted files.
174
+ Compares generated files against their expected content to detect manual edits (drift). Useful for CI pipelines to ensure generated docs/ files stay in sync with model definitions.
191
175
 
192
176
  **Usage:**
193
177
 
@@ -197,26 +181,23 @@ speckeeper drift
197
181
  ```
198
182
  speckeeper drift --fail-on-drift
199
183
  ```
200
- ```
201
- speckeeper drift --update --format diff
202
- ```
203
184
 
204
185
  #### Options
205
186
 
206
187
  | Option | Aliases | Required | Default | Description |
207
188
  |---|---|---|---|---|
208
189
  | `--config` | -c | No | | Path to config file. |
209
- | `--update` | -u | No | `false` | Auto-update if differences are found. |
190
+ | `--update` | -u | No | `false` | Auto-update if differences are found (not yet implemented). |
210
191
  | `--format` | -f | No | `"text"` | Output format: text, json, diff. |
211
192
  | `--fail-on-drift` | | No | `false` | Exit with code 1 if drift is detected (for CI). |
212
193
 
213
194
  #### Exit Codes
214
195
 
215
- **Exit 0:** No drift detected (or drift auto-updated with --update).
196
+ **Exit 0:** No drift detected.
216
197
 
217
198
  - **stdout:** format=`{options.format}`
218
199
 
219
- **Exit 1:** Drift detected (with --fail-on-drift), or update failed.
200
+ **Exit 1:** Drift detected (with --fail-on-drift).
220
201
 
221
202
  - **stdout:** format=`{options.format}`
222
203
 
@@ -224,13 +205,7 @@ speckeeper drift --update --format diff
224
205
 
225
206
  ```yaml
226
207
  x-agent:
227
- riskLevel: medium
228
- requiresConfirmation: true
229
208
  idempotent: true
230
- sideEffects:
231
- - file_write
232
- sideEffectNote: file_write applies only when --update is provided. Without --update the command is read-only.
233
- safeDryRunOption: Omit --update to run in read-only mode.
234
209
  ```
235
210
 
236
211
  ---
@@ -239,7 +214,7 @@ x-agent:
239
214
 
240
215
  Check external SSOT conformance (including custom models).
241
216
 
242
- Validates specifications against actual implementation artifacts using a global source scan. Performs existence checks (is the spec ID found in configured sources?), optional structural checks (via deep validation), and optional type checks. Sources include OpenAPI, DDL, annotations, and custom scanners. Supports filtering by check type and test coverage reporting.
217
+ Validates specifications against actual implementation artifacts using a global source scan. Performs existence checks, optional structural checks (via deep validation), and optional type checks. Sources include OpenAPI, DDL, annotations, and custom scanners.
243
218
 
244
219
  **Usage:**
245
220
 
@@ -252,15 +227,12 @@ speckeeper check external-ssot --verbose
252
227
  ```
253
228
  speckeeper check test --coverage
254
229
  ```
255
- ```
256
- speckeeper check openapi --strict
257
- ```
258
230
 
259
231
  #### Arguments
260
232
 
261
233
  | Name | Required | Description |
262
234
  |---|---|---|
263
- | `type` | No | Type of check to run. Filters sources by type. When omitted, checks all configured sources. |
235
+ | `type` | No | Type of check to run. Filters sources by type. |
264
236
 
265
237
  #### Options
266
238
 
@@ -268,29 +240,24 @@ speckeeper check openapi --strict
268
240
  |---|---|---|---|---|
269
241
  | `--config` | -c | No | | Path to config file. |
270
242
  | `--strict` | | No | `false` | Treat warnings as errors. |
271
- | `--verbose` | -v | No | `false` | Show detailed output (e.g. list unmatched specs). |
243
+ | `--verbose` | -v | No | `false` | Show detailed output. |
272
244
  | `--coverage` | | No | `false` | Check if all testable acceptance criteria are covered by TestRefs. |
273
- | `--format` | -f | No | `"text"` | Output format: text, json, github. |
274
245
 
275
246
  #### Exit Codes
276
247
 
277
- **Exit 0:** All checks passed (all specs found in sources, deep validation passed).
248
+ **Exit 0:** All checks passed.
278
249
 
279
- - **stdout:** format=`{options.format}`
250
+ - **stdout:** format=`text`
280
251
 
281
- **Exit 1:** Check failures found (missing specs, structural mismatches, or coverage gaps).
252
+ **Exit 1:** Check failures found.
282
253
 
283
- - **stdout:** format=`{options.format}`
254
+ - **stdout:** format=`text`
284
255
 
285
256
  #### Extensions
286
257
 
287
258
  ```yaml
288
259
  x-agent:
289
- riskLevel: low
290
- requiresConfirmation: false
291
260
  idempotent: true
292
- sideEffects:
293
-
294
261
  ```
295
262
 
296
263
  ---
@@ -299,7 +266,7 @@ x-agent:
299
266
 
300
267
  Create a new element with auto-generated ID.
301
268
 
302
- Generates a new design element file with a unique auto-generated ID based on the model's ID prefix and existing elements. Supports all built-in model types and uses templates for file generation.
269
+ Generates a new design element file with a unique auto-generated ID based on the model's ID prefix and existing elements.
303
270
 
304
271
  **Usage:**
305
272
 
@@ -307,17 +274,14 @@ Generates a new design element file with a unique auto-generated ID based on the
307
274
  speckeeper new requirement --name "User Authentication"
308
275
  ```
309
276
  ```
310
- speckeeper new entity --kind functional
311
- ```
312
- ```
313
- speckeeper new usecase --template custom-template.ts
277
+ speckeeper new entity
314
278
  ```
315
279
 
316
280
  #### Arguments
317
281
 
318
282
  | Name | Required | Description |
319
283
  |---|---|---|
320
- | `type` | Yes | Element type to create: requirement, usecase, entity, component, screen, flow, error-case, term. |
284
+ | `type` | Yes | Element type to create. |
321
285
 
322
286
  #### Options
323
287
 
@@ -327,38 +291,25 @@ speckeeper new usecase --template custom-template.ts
327
291
  | `--name` | -n | No | | Name of the element. |
328
292
  | `--output` | -o | No | | Output directory path. |
329
293
  | `--template` | -t | No | | Path to template file. |
330
- | `--dry-run` | | No | `false` | Preview generated file content and ID without writing to disk. |
294
+ | `--dry-run` | | No | `false` | Preview generated file content without writing. |
331
295
 
332
296
  #### Exit Codes
333
297
 
334
- **Exit 0:** Element file created (or previewed with --dry-run) with auto-generated ID.
298
+ **Exit 0:** Element file created (or previewed with --dry-run).
335
299
 
336
300
  - **stdout:** format=`text`
337
301
 
338
- **Exit 1:** Creation failed (invalid type, template error, or write error).
302
+ **Exit 1:** Creation failed.
339
303
 
340
304
  - **stderr:** format=`text`
341
305
 
342
- #### Extensions
343
-
344
- ```yaml
345
- x-agent:
346
- riskLevel: low
347
- requiresConfirmation: false
348
- idempotent: false
349
- sideEffects:
350
- - file_write
351
- sideEffectNote: Creates a new TypeScript spec file with auto-generated ID. With --dry-run, only previews the generated content without writing.
352
- safeDryRunOption: --dry-run
353
- ```
354
-
355
306
  ---
356
307
 
357
308
  ### impact
358
309
 
359
310
  Analyze impact of changes to an ID.
360
311
 
361
- Performs change impact analysis by traversing the relation graph starting from the specified spec ID. Shows upstream (dependants) and/or downstream (dependencies) elements up to the configured depth. Supports text, JSON, and Mermaid diagram output.
312
+ Performs change impact analysis by traversing the relation graph starting from the specified spec ID.
362
313
 
363
314
  **Usage:**
364
315
 
@@ -366,7 +317,7 @@ Performs change impact analysis by traversing the relation graph starting from t
366
317
  speckeeper impact FR-001
367
318
  ```
368
319
  ```
369
- speckeeper impact ENT-ORDER --direction upstream --depth 5
320
+ speckeeper impact ENT-ORDER --depth 5
370
321
  ```
371
322
  ```
372
323
  speckeeper impact COMP-AUTH --format mermaid
@@ -376,7 +327,7 @@ speckeeper impact COMP-AUTH --format mermaid
376
327
 
377
328
  | Name | Required | Description |
378
329
  |---|---|---|
379
- | `id` | Yes | Spec ID to analyze (e.g. REQ-001, ENT-ORDER, COMP-AUTH). |
330
+ | `id` | Yes | Spec ID to analyze (e.g. REQ-001, ENT-ORDER). |
380
331
 
381
332
  #### Options
382
333
 
@@ -389,7 +340,7 @@ speckeeper impact COMP-AUTH --format mermaid
389
340
 
390
341
  #### Exit Codes
391
342
 
392
- **Exit 0:** Impact analysis completed and displayed.
343
+ **Exit 0:** Impact analysis completed.
393
344
 
394
345
  - **stdout:** format=`{options.format}`
395
346
 
@@ -401,11 +352,7 @@ speckeeper impact COMP-AUTH --format mermaid
401
352
 
402
353
  ```yaml
403
354
  x-agent:
404
- riskLevel: low
405
- requiresConfirmation: false
406
355
  idempotent: true
407
- sideEffects:
408
-
409
356
  ```
410
357
 
411
358
  ---
@@ -414,7 +361,7 @@ x-agent:
414
361
 
415
362
  Generate _models/ from a Mermaid flowchart definition.
416
363
 
417
- Parses a Mermaid flowchart from a Markdown file and generates TypeScript model classes, spec data files, and an index file in the design directory. Uses class-based artifact resolution to determine model types from Mermaid node classes.
364
+ Parses a Mermaid flowchart from a Markdown file and generates TypeScript model classes, spec data files, and an index file.
418
365
 
419
366
  **Usage:**
420
367
 
@@ -427,6 +374,9 @@ speckeeper scaffold --source flow.md --output design/ --force
427
374
  ```
428
375
  speckeeper scaffold --source arch.md --dry-run
429
376
  ```
377
+ ```
378
+ speckeeper scaffold --source arch.md --format yaml
379
+ ```
430
380
 
431
381
  #### Options
432
382
 
@@ -436,14 +386,15 @@ speckeeper scaffold --source arch.md --dry-run
436
386
  | `--output` | -o | No | `"design/"` | Output directory. |
437
387
  | `--force` | -F | No | `false` | Overwrite existing files. |
438
388
  | `--dry-run` | | No | `false` | Preview generated files without writing. |
389
+ | `--format` | | No | `"ts"` | Spec data format: ts (default) or yaml. |
439
390
 
440
391
  #### Exit Codes
441
392
 
442
- **Exit 0:** Model files generated (or previewed with --dry-run) successfully.
393
+ **Exit 0:** Model files generated (or previewed with --dry-run).
443
394
 
444
395
  - **stdout:** format=`text`
445
396
 
446
- **Exit 1:** Scaffold failed (source file not found, invalid Mermaid syntax, or write error).
397
+ **Exit 1:** Scaffold failed.
447
398
 
448
399
  - **stderr:** format=`text`
449
400
 
@@ -451,14 +402,52 @@ speckeeper scaffold --source arch.md --dry-run
451
402
 
452
403
  ```yaml
453
404
  x-agent:
454
- riskLevel: high
455
- requiresConfirmation: true
456
- idempotent: false
457
- sideEffects:
458
- - file_write
459
- sideEffectNote: --force overwrites existing TypeScript model source files.
460
- safeDryRunOption: --dry-run
405
+ recommendedBeforeUse:
406
+ - Run with --dry-run first to preview generated files
407
+ ```
408
+
409
+ ---
410
+
411
+ ### convert
412
+
413
+ Convert a TS spec data file to YAML format.
414
+
415
+ Reads a TypeScript spec data file that exports a SpecModule via defineSpecs(), extracts model IDs and spec data, and writes the equivalent YAML file. Supports --dry-run for preview.
416
+
417
+ **Usage:**
418
+
419
+ ```
420
+ speckeeper convert design/glossary.ts
421
+ ```
422
+ ```
423
+ speckeeper convert design/requirements.ts --output reqs.yaml
424
+ ```
461
425
  ```
426
+ speckeeper convert design/glossary.ts --dry-run
427
+ ```
428
+
429
+ #### Arguments
430
+
431
+ | Name | Required | Description |
432
+ |---|---|---|
433
+ | `file` | Yes | Path to TS spec data file. |
434
+
435
+ #### Options
436
+
437
+ | Option | Aliases | Required | Default | Description |
438
+ |---|---|---|---|---|
439
+ | `--output` | -o | No | | Output file path (default: same name with .yaml extension). |
440
+ | `--dry-run` | -n | No | `false` | Preview conversion without writing. |
441
+
442
+ #### Exit Codes
443
+
444
+ **Exit 0:** Conversion completed (or previewed with --dry-run).
445
+
446
+ - **stdout:** format=`text`
447
+
448
+ **Exit 1:** Conversion failed (file not found, invalid module, or write error).
449
+
450
+ - **stderr:** format=`text`
462
451
 
463
452
  ---
464
453
 
@@ -466,7 +455,7 @@ x-agent:
466
455
 
467
456
  Run LLM-based requirement quality audit.
468
457
 
469
- Performs semantic analysis of design specs using LLM to identify quality issues that static lint cannot detect. Evaluates verifiability, ambiguity, granularity, terminology consistency, and design-mixing. Requires agent-contracts-runtime as an optional peer dependency.
458
+ Performs semantic analysis of design specs using LLM to identify quality issues that static lint cannot detect.
470
459
 
471
460
  **Usage:**
472
461
 
@@ -523,15 +512,8 @@ speckeeper audit-requirements --report-format json --output audit.json
523
512
 
524
513
  ```yaml
525
514
  x-agent:
526
- riskLevel: medium
527
- requiresConfirmation: false
528
- idempotent: true
529
- sideEffects:
530
- - network
531
- - file_write
532
- sideEffectNote: Network calls to LLM provider when adapter is not mock. Filesystem write when --output is specified. Exit 10 = valid output with blocking findings (stdout contains result). Exit 11 = missing runtime dependency (non-retryable).
533
- safeDryRunOption: --dry-run
534
- expectedDurationMs: 120000
515
+ recommendedBeforeUse:
516
+ - Run with --dry-run first to preview the prompt
535
517
  retryableExitCodes:
536
518
  - 12
537
519
  ```
@@ -542,7 +524,7 @@ x-agent:
542
524
 
543
525
  LLM-based traceability link proposal.
544
526
 
545
- Analyzes spec definitions and external source scan results to propose candidate traceability links between specs and implementation artifacts. Each link includes a confidence score and rationale.
527
+ Analyzes spec definitions and external source scan results to propose candidate traceability links.
546
528
 
547
529
  **Usage:**
548
530
 
@@ -552,9 +534,6 @@ speckeeper propose-trace-links
552
534
  ```
553
535
  speckeeper propose-trace-links --adapter claude --report-format json
554
536
  ```
555
- ```
556
- speckeeper propose-trace-links --dry-run
557
- ```
558
537
 
559
538
  #### Options
560
539
 
@@ -599,15 +578,8 @@ speckeeper propose-trace-links --dry-run
599
578
 
600
579
  ```yaml
601
580
  x-agent:
602
- riskLevel: medium
603
- requiresConfirmation: false
604
- idempotent: true
605
- sideEffects:
606
- - network
607
- - file_write
608
- sideEffectNote: Network calls to LLM provider when adapter is not mock. Filesystem write when --output is specified. Exit 10 = valid output with blocking findings (stdout contains result). Exit 11 = missing runtime dependency (non-retryable).
609
- safeDryRunOption: --dry-run
610
- expectedDurationMs: 120000
581
+ recommendedBeforeUse:
582
+ - Run with --dry-run first to preview the prompt
611
583
  retryableExitCodes:
612
584
  - 12
613
585
  ```
@@ -618,7 +590,7 @@ x-agent:
618
590
 
619
591
  LLM-based explanation of impact analysis output.
620
592
 
621
- Reads JSON output from speckeeper impact on stdin and generates a human-readable explanation suitable for PM/executive audiences. Includes affected artifact categorization, test considerations, and release risk assessment.
593
+ Reads JSON output from speckeeper impact on stdin and generates a human-readable explanation.
622
594
 
623
595
  **Usage:**
624
596
 
@@ -633,7 +605,6 @@ speckeeper impact ENT-ORDER --format json | speckeeper explain-impact --adapter
633
605
 
634
606
  | Option | Aliases | Required | Default | Description |
635
607
  |---|---|---|---|---|
636
- | `--config` | -c | No | | Path to config file. |
637
608
  | `--adapter` | -a | No | | SDK adapter to use for LLM execution. |
638
609
  | `--model` | | No | | LLM model override. |
639
610
  | `--dry-run` | -n | No | `false` | Output the constructed prompt without calling LLM. |
@@ -652,11 +623,7 @@ speckeeper impact ENT-ORDER --format json | speckeeper explain-impact --adapter
652
623
 
653
624
  - **stderr:** format=`text`
654
625
 
655
- **Exit 2:** Configuration or input error.
656
-
657
- - **stderr:** format=`text`
658
-
659
- **Exit 3:** No input on stdin.
626
+ **Exit 2:** No input on stdin.
660
627
 
661
628
  - **stderr:** format=`text`
662
629
 
@@ -676,15 +643,8 @@ speckeeper impact ENT-ORDER --format json | speckeeper explain-impact --adapter
676
643
 
677
644
  ```yaml
678
645
  x-agent:
679
- riskLevel: medium
680
- requiresConfirmation: false
681
- idempotent: true
682
- sideEffects:
683
- - network
684
- - file_write
685
- sideEffectNote: Network calls to LLM provider when adapter is not mock. Filesystem write when --output is specified. Exit 10 = valid output with blocking findings (stdout contains result). Exit 11 = missing runtime dependency (non-retryable).
686
- safeDryRunOption: --dry-run
687
- expectedDurationMs: 120000
646
+ recommendedBeforeUse:
647
+ - Run with --dry-run first to preview the prompt
688
648
  retryableExitCodes:
689
649
  - 12
690
650
  ```
@@ -695,7 +655,7 @@ x-agent:
695
655
 
696
656
  LLM-based acceptance criteria proposal.
697
657
 
698
- Analyzes design specs and proposes testable acceptance criteria for each target spec. Optionally takes spec IDs as arguments to scope the proposal. Criteria are proposed in Given/When/Then or verification format.
658
+ Analyzes design specs and proposes testable acceptance criteria.
699
659
 
700
660
  **Usage:**
701
661
 
@@ -758,15 +718,8 @@ speckeeper propose-acceptance-criteria --adapter gemini --dry-run
758
718
 
759
719
  ```yaml
760
720
  x-agent:
761
- riskLevel: medium
762
- requiresConfirmation: false
763
- idempotent: true
764
- sideEffects:
765
- - network
766
- - file_write
767
- sideEffectNote: Network calls to LLM provider when adapter is not mock. Filesystem write when --output is specified. Exit 10 = valid output with blocking findings (stdout contains result). Exit 11 = missing runtime dependency (non-retryable).
768
- safeDryRunOption: --dry-run
769
- expectedDurationMs: 120000
721
+ recommendedBeforeUse:
722
+ - Run with --dry-run first to preview the prompt
770
723
  retryableExitCodes:
771
724
  - 12
772
725
  ```
@@ -13,6 +13,7 @@
13
13
  | propose-trace-links | Propose candidate traceability links between specs with confidence scores and rationale |
14
14
  | explain-impact | Translate impact analysis JSON (from stdin) into human-readable explanation for PM/executive audiences |
15
15
  | propose-acceptance-criteria | Propose testable acceptance criteria in Given/When/Then format for specified specs |
16
+ | convert | Convert a TS spec data file to YAML format |
16
17
  | impact | Analyze the change impact scope of a specified ID |
17
18
 
18
19
  ---
@@ -474,6 +475,41 @@ speckeeper propose-acceptance-criteria --adapter gemini --dry-run
474
475
 
475
476
  ---
476
477
 
478
+ ## CMD-CONVERT: convert
479
+
480
+ Convert a TS spec data file to YAML format
481
+
482
+ ### Usage
483
+
484
+ ```bash
485
+ speckeeper convert [options]
486
+ ```
487
+
488
+ ### Parameters
489
+
490
+ | Name | Kind | Type | Required | Default | Description |
491
+ |------|------|------|----------|---------|-------------|
492
+ | <file> | argument | path | ✓ | - | Path to TS spec data file |
493
+ | -o, --output | option | path | | - | Output file path (default: same name with .yaml extension) |
494
+ | -n, --dry-run | option | boolean | | false | Preview conversion without writing |
495
+
496
+ ### Examples
497
+
498
+ ```bash
499
+ speckeeper convert design/glossary.ts
500
+ speckeeper convert design/requirements.ts --output reqs.yaml
501
+ speckeeper convert design/glossary.ts --dry-run
502
+ ```
503
+
504
+ ### Exit Codes
505
+
506
+ | Code | Description |
507
+ |------|-------------|
508
+ | 0 | Conversion successful |
509
+ | 1 | Conversion error |
510
+
511
+ ---
512
+
477
513
  ## CMD-IMPACT: impact
478
514
 
479
515
  Analyze the change impact scope of a specified ID