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.
@@ -51,6 +51,11 @@
51
51
  | FR-1017 | Source Path Fallback | must | check |
52
52
  | FR-1018 | Minimal New Dependencies | must | check |
53
53
  | FR-1019 | Checker Documentation Accuracy | must | check |
54
+ | FR-1100 | LLM-Powered Requirement Audit | should | llm |
55
+ | FR-1101 | LLM-Powered Trace Link Proposal | should | llm |
56
+ | FR-1102 | LLM-Powered Impact Explanation | should | llm |
57
+ | FR-1103 | LLM-Powered Acceptance Criteria Proposal | should | llm |
58
+ | FR-1104 | TypeScript to YAML Conversion | should | conversion |
54
59
 
55
60
  ---
56
61
 
@@ -395,8 +400,8 @@ Since consistency checks are implemented per model, filter by model name
395
400
  ### Acceptance Criteria
396
401
 
397
402
  - **FR-602-01**: speckeeper check runs external SSOT consistency check for all models [test]
398
- - **FR-602-02**: speckeeper check --model <model-name> checks only specific model [test]
399
- - **FR-602-03**: Model name is the model ID defined in design/_models/ [review]
403
+ - **FR-602-02**: speckeeper check [type] filters checks by type (openapi, ddl, iac, external-ssot, test, contract) [test]
404
+ - **FR-602-03**: Type argument corresponds to check categories, not model IDs [review]
400
405
  - **FR-602-04**: Only models with externalChecker are targeted [test]
401
406
 
402
407
  ---
@@ -807,4 +812,97 @@ README and scaffold-mermaid-spec.md accurately describe all three built-in check
807
812
  ### Acceptance Criteria
808
813
 
809
814
  - **FR-1019-01**: README checker table describes validation levels [review]
810
- - **FR-1019-02**: scaffold-mermaid-spec.md Section 7 describes validation levels [review]
815
+ - **FR-1019-02**: scaffold-mermaid-spec.md Section 7 describes validation levels [review]
816
+
817
+ ---
818
+
819
+ ## FR-1100: LLM-Powered Requirement Audit
820
+
821
+ **Type**: functional | **Priority**: should | **Category**: llm
822
+
823
+ Provide LLM-based semantic quality audit for requirement definitions, detecting verifiability issues, ambiguity, granularity problems, terminology inconsistency, and design-mixing
824
+
825
+ ### Rationale
826
+
827
+ Static lint rules cannot detect semantic issues such as ambiguous wording or design details mixed into requirements; LLM review complements structural checks
828
+
829
+ ### Acceptance Criteria
830
+
831
+ - **FR-1100-01**: audit-requirements command constructs a prompt from all registered specs and sends it to configured LLM adapter [test]
832
+ - **FR-1100-02**: Audit report includes findings with severity (error/warning/info) and affected spec IDs [test]
833
+ - **FR-1100-03**: --dry-run outputs the constructed prompt without calling LLM [test]
834
+ - **FR-1100-04**: --fail-on controls minimum severity that causes non-zero exit [test]
835
+ - **FR-1100-05**: Report format is selectable via --report-format (json, text, yaml) [test]
836
+
837
+ ---
838
+
839
+ ## FR-1101: LLM-Powered Trace Link Proposal
840
+
841
+ **Type**: functional | **Priority**: should | **Category**: llm
842
+
843
+ Propose candidate traceability links between specs with confidence scores and rationale using LLM analysis
844
+
845
+ ### Rationale
846
+
847
+ Manual traceability maintenance is error-prone; LLM can identify semantically related specs that humans may overlook
848
+
849
+ ### Acceptance Criteria
850
+
851
+ - **FR-1101-01**: propose-trace-links command analyzes all specs and proposes missing trace links [test]
852
+ - **FR-1101-02**: Each proposed link includes source ID, target ID, relation type, confidence score, and rationale [test]
853
+ - **FR-1101-03**: --dry-run outputs the constructed prompt without calling LLM [test]
854
+
855
+ ---
856
+
857
+ ## FR-1102: LLM-Powered Impact Explanation
858
+
859
+ **Type**: functional | **Priority**: should | **Category**: llm
860
+
861
+ Translate impact analysis JSON output into human-readable explanation for PM/executive audiences using LLM
862
+
863
+ ### Rationale
864
+
865
+ Raw impact analysis JSON is not consumable by non-technical stakeholders; LLM can generate natural language summaries
866
+
867
+ ### Acceptance Criteria
868
+
869
+ - **FR-1102-01**: explain-impact command reads impact analysis JSON from stdin [test]
870
+ - **FR-1102-02**: Output is a human-readable explanation suitable for PM/executive audiences [review]
871
+ - **FR-1102-03**: --dry-run outputs the constructed prompt without calling LLM [test]
872
+
873
+ ---
874
+
875
+ ## FR-1103: LLM-Powered Acceptance Criteria Proposal
876
+
877
+ **Type**: functional | **Priority**: should | **Category**: llm
878
+
879
+ Propose testable acceptance criteria in Given/When/Then format for specified specs using LLM
880
+
881
+ ### Rationale
882
+
883
+ Writing testable acceptance criteria is time-consuming; LLM can propose initial criteria that humans refine
884
+
885
+ ### Acceptance Criteria
886
+
887
+ - **FR-1103-01**: propose-acceptance-criteria command generates criteria for specified spec IDs (or all) [test]
888
+ - **FR-1103-02**: Proposed criteria follow Given/When/Then format [review]
889
+ - **FR-1103-03**: --dry-run outputs the constructed prompt without calling LLM [test]
890
+
891
+ ---
892
+
893
+ ## FR-1104: TypeScript to YAML Conversion
894
+
895
+ **Type**: functional | **Priority**: should | **Category**: conversion
896
+
897
+ Convert TypeScript spec data files to equivalent YAML format, enabling non-TypeScript workflows and interoperability
898
+
899
+ ### Rationale
900
+
901
+ YAML input lowers participation barriers for non-developers (NFR-005) and enables interoperability with external tools
902
+
903
+ ### Acceptance Criteria
904
+
905
+ - **FR-1104-01**: convert command reads a TS file exporting a SpecModule via defineSpecs() and writes equivalent YAML [test]
906
+ - **FR-1104-02**: Output defaults to same filename with .yaml extension [test]
907
+ - **FR-1104-03**: --output allows specifying a custom output path [test]
908
+ - **FR-1104-04**: --dry-run previews conversion without writing files [test]
@@ -214,15 +214,15 @@ To ensure all acceptance criteria are covered by test cases and maintain spec-te
214
214
 
215
215
  **Type**: non-functional | **Priority**: must | **Category**: testability
216
216
 
217
- CLI command definitions in design/cli-commands.ts match actual implementation in src/cli/index.ts
217
+ CLI command definitions in design/cli-commands.ts match cli-contract.yaml and generated code in src/generated/
218
218
 
219
219
  ### Rationale
220
220
 
221
- To ensure specification and implementation stay synchronized (e.g., no missing --config parameters)
221
+ To ensure specification, DSL contract, and generated implementation stay synchronized
222
222
 
223
223
  ### Acceptance Criteria
224
224
 
225
- - **NFR-014-01**: All command definitions in design/cli-commands.ts match implementation (parameters, subcommands, exit codes) [test]
225
+ - **NFR-014-01**: All command definitions in design/cli-commands.ts match cli-contract.yaml and generated code (parameters, subcommands, exit codes) [test]
226
226
 
227
227
  ---
228
228
 
@@ -12,6 +12,7 @@
12
12
  | TEST-023 | Impact command verification test | vitest | 1 |
13
13
  | TEST-024 | Drift command verification test | vitest | 1 |
14
14
  | TEST-025 | New command verification test | vitest | 1 |
15
+ | TEST-026 | Scaffold integration verification test (mermaid parsing, class-based generation) | vitest | 1 |
15
16
 
16
17
  ---
17
18
 
@@ -256,3 +257,28 @@
256
257
  | FR-104-01 | `FR-104-01.*available model types header` | Outputs model types header when type omitted |
257
258
 
258
259
  ---
260
+
261
+ ## TEST-026: Scaffold integration verification test (mermaid parsing, class-based generation)
262
+
263
+ ### Test Source
264
+
265
+ - **Path**: `test/scaffold/integration.test.ts`
266
+ - **Framework**: vitest
267
+
268
+ ### Verified Requirements
269
+
270
+ - FR-106
271
+
272
+ ### Implemented Command
273
+
274
+ - CMD-SCAFFOLD
275
+
276
+ ### Test Case Patterns
277
+
278
+ | Acceptance Criteria ID | Pattern | Description |
279
+ |------------------------|---------|-------------|
280
+ | FR-106-01 | `base template.*core factory|generated models.*base template` | Artifact class generates from base template |
281
+ | FR-106-03 | `SR.*FR.*NFR.*map to requirement.*de-duplicated` | Same-class node aggregation into single model file |
282
+ | FR-106-05 | `de-duplicated model files.*spec data` | Model file generation with naming conventions |
283
+
284
+ ---
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "speckeeper",
3
- "version": "0.10.1",
3
+ "version": "0.11.1",
4
4
  "description": "TypeScript-first specification validation framework with external SSOT integration",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -63,6 +63,7 @@
63
63
  "license": "MIT",
64
64
  "dependencies": {
65
65
  "chalk": "^5.3.0",
66
+ "cli-contracts": "^0.7.2",
66
67
  "commander": "^12.1.0",
67
68
  "embedoc": "^0.10.1",
68
69
  "glob": "^10.3.10",
@@ -86,9 +87,8 @@
86
87
  "@typescript-eslint/eslint-plugin": "^8.54.0",
87
88
  "@typescript-eslint/parser": "^8.54.0",
88
89
  "@vitest/coverage-v8": "^1.6.1",
89
- "agent-contracts": "^0.21.0",
90
+ "agent-contracts": "^0.22.3",
90
91
  "agent-contracts-runtime": "^0.13.0",
91
- "cli-contracts": "^0.6.1",
92
92
  "eslint": "^9.39.2",
93
93
  "tsup": "^8.0.1",
94
94
  "typescript": "^5.3.3",