speckeeper 0.9.2 → 0.9.3

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.
@@ -0,0 +1,242 @@
1
+ # Glossary
2
+
3
+ - **API**: Application programming interface
4
+ - **C4**: Software architecture visualization model
5
+ - **CLI**: Command line interface
6
+ - **Concretization Slot**: Items to be filled in subsequent phases (allows TBD while having a deadline phase)
7
+ - **DDL**: Data definition language. A language for defining database schemas
8
+ - **Design Artifact**: Design artifacts to satisfy requirements such as monitoring, Runbook, Dashboard, data schema, etc.
9
+ - **Drift**: A state where docs//specs/ that should have been generated from TS have differences due to manual edits, etc.
10
+ - **DSL**: Domain-specific language. A programming language specialized for a particular domain
11
+ - **DTO**: Data transfer object. A structure for passing data between systems
12
+ - **ER**: Entity relationship. A data modeling technique
13
+ - **External SSOT**: Artifacts managed by existing tools/formats (OpenAPI, DDL, IaC, etc.). This framework does not generate them but checks consistency against them
14
+ - **External SSOT Reference**: Minimal interface for referencing external SSOT from TS models (ID, path, correspondence, etc.)
15
+ - **IaC**: Infrastructure definition through code
16
+ - **ID Linkage**: A mechanism that ensures componentId/entityId/requirementId from TS models appear in external SSOT, generated artifacts, implementation, and IaC to connect design and implementation
17
+ - **Model**: A unit of design information defined in TypeScript. Inherits from Model base class and has schema, lint rules, renderers, etc.
18
+ - **Reconciliation**: Checks to bridge gaps between design and external SSOT/implementation (design consistency, external SSOT consistency, implementation existence verification)
19
+ - **SSOT**: The single authoritative source of information. The canonical location for data and design
20
+ - **TS**: Statically typed JavaScript developed by Microsoft
21
+ - **TS-SSOT**: A policy where TypeScript is the source of truth and generated artifacts are regeneratable derivatives
22
+ - **User-defined Model**: Project-specific models defined by users inheriting from the Model base class. The standard way to use speckeeper
23
+
24
+ ---
25
+
26
+ ## TERM-A005: API
27
+
28
+ **Category**: acronym
29
+ **Abbreviation**: API
30
+ **Expanded Form**: Application Programming Interface
31
+
32
+ ### Definition
33
+
34
+ Application programming interface
35
+
36
+ ---
37
+
38
+ ## TERM-A010: C4
39
+
40
+ **Category**: acronym
41
+ **Abbreviation**: C4
42
+ **Expanded Form**: Context, Container, Component, Code
43
+
44
+ ### Definition
45
+
46
+ Software architecture visualization model
47
+
48
+ ---
49
+
50
+ ## TERM-A004: CLI
51
+
52
+ **Category**: acronym
53
+ **Abbreviation**: CLI
54
+ **Expanded Form**: Command Line Interface
55
+
56
+ ### Definition
57
+
58
+ Command line interface
59
+
60
+ ---
61
+
62
+ ## TERM-011: Concretization Slot
63
+
64
+ **Category**: core
65
+
66
+ ### Definition
67
+
68
+ Items to be filled in subsequent phases (allows TBD while having a deadline phase)
69
+
70
+ ---
71
+
72
+ ## TERM-A006: DDL
73
+
74
+ **Category**: acronym
75
+ **Abbreviation**: DDL
76
+ **Expanded Form**: Data Definition Language
77
+
78
+ ### Definition
79
+
80
+ Data definition language. A language for defining database schemas
81
+
82
+ ---
83
+
84
+ ## TERM-010: Design Artifact
85
+
86
+ **Category**: core
87
+
88
+ ### Definition
89
+
90
+ Design artifacts to satisfy requirements such as monitoring, Runbook, Dashboard, data schema, etc.
91
+
92
+ ---
93
+
94
+ ## TERM-013: Drift
95
+
96
+ **Category**: process
97
+
98
+ ### Definition
99
+
100
+ A state where docs//specs/ that should have been generated from TS have differences due to manual edits, etc.
101
+
102
+ ---
103
+
104
+ ## TERM-A003: DSL
105
+
106
+ **Category**: acronym
107
+ **Abbreviation**: DSL
108
+ **Expanded Form**: Domain Specific Language
109
+
110
+ ### Definition
111
+
112
+ Domain-specific language. A programming language specialized for a particular domain
113
+
114
+ ---
115
+
116
+ ## TERM-A008: DTO
117
+
118
+ **Category**: acronym
119
+ **Abbreviation**: DTO
120
+ **Expanded Form**: Data Transfer Object
121
+
122
+ ### Definition
123
+
124
+ Data transfer object. A structure for passing data between systems
125
+
126
+ ---
127
+
128
+ ## TERM-A009: ER
129
+
130
+ **Category**: acronym
131
+ **Abbreviation**: ER
132
+ **Expanded Form**: Entity Relationship
133
+
134
+ ### Definition
135
+
136
+ Entity relationship. A data modeling technique
137
+
138
+ ---
139
+
140
+ ## TERM-002: External SSOT
141
+
142
+ **Category**: core
143
+
144
+ ### Definition
145
+
146
+ Artifacts managed by existing tools/formats (OpenAPI, DDL, IaC, etc.). This framework does not generate them but checks consistency against them
147
+
148
+ ---
149
+
150
+ ## TERM-003: External SSOT Reference
151
+
152
+ **Category**: core
153
+
154
+ ### Definition
155
+
156
+ Minimal interface for referencing external SSOT from TS models (ID, path, correspondence, etc.)
157
+
158
+ ---
159
+
160
+ ## TERM-A007: IaC
161
+
162
+ **Category**: acronym
163
+ **Abbreviation**: IaC
164
+ **Expanded Form**: Infrastructure as Code
165
+
166
+ ### Definition
167
+
168
+ Infrastructure definition through code
169
+
170
+ ---
171
+
172
+ ## TERM-012: ID Linkage
173
+
174
+ **Category**: core
175
+
176
+ ### Definition
177
+
178
+ A mechanism that ensures componentId/entityId/requirementId from TS models appear in external SSOT, generated artifacts, implementation, and IaC to connect design and implementation
179
+
180
+ ---
181
+
182
+ ## TERM-004: Model
183
+
184
+ **Category**: core
185
+
186
+ ### Definition
187
+
188
+ A unit of design information defined in TypeScript. Inherits from Model base class and has schema, lint rules, renderers, etc.
189
+
190
+ ---
191
+
192
+ ## TERM-014: Reconciliation
193
+
194
+ **Category**: process
195
+
196
+ ### Definition
197
+
198
+ Checks to bridge gaps between design and external SSOT/implementation (design consistency, external SSOT consistency, implementation existence verification)
199
+
200
+ ---
201
+
202
+ ## TERM-A001: SSOT
203
+
204
+ **Category**: acronym
205
+ **Abbreviation**: SSOT
206
+ **Expanded Form**: Single Source of Truth
207
+
208
+ ### Definition
209
+
210
+ The single authoritative source of information. The canonical location for data and design
211
+
212
+ ---
213
+
214
+ ## TERM-A002: TS
215
+
216
+ **Category**: acronym
217
+ **Abbreviation**: TS
218
+ **Expanded Form**: TypeScript
219
+
220
+ ### Definition
221
+
222
+ Statically typed JavaScript developed by Microsoft
223
+
224
+ ---
225
+
226
+ ## TERM-001: TS-SSOT
227
+
228
+ **Category**: core
229
+
230
+ ### Definition
231
+
232
+ A policy where TypeScript is the source of truth and generated artifacts are regeneratable derivatives
233
+
234
+ ---
235
+
236
+ ## TERM-015: User-defined Model
237
+
238
+ **Category**: core
239
+
240
+ ### Definition
241
+
242
+ Project-specific models defined by users inheriting from the Model base class. The standard way to use speckeeper
@@ -0,0 +1,242 @@
1
+ # Requirements
2
+
3
+ ## Non-Functional Requirements
4
+
5
+ | ID | Name | Priority | Category |
6
+ |----|------|----------|----------|
7
+ | NFR-001 | Command Execution Time | should | performance |
8
+ | NFR-002 | Node.js Compatibility | must | portability |
9
+ | NFR-003 | Multi-OS Support | must | portability |
10
+ | NFR-004 | User-defined Models | must | extensibility |
11
+ | NFR-005 | Input Format Diversity | should | extensibility |
12
+ | NFR-006 | Rule Extensibility | should | extensibility |
13
+ | NFR-007 | Error Message Clarity | must | transparency |
14
+ | NFR-008 | TypeScript Compatibility | must | compatibility |
15
+ | NFR-009 | ESM Support | must | compatibility |
16
+ | NFR-010 | npm Distribution | must | deployability |
17
+ | NFR-011 | CLI Test Infrastructure | must | testability |
18
+ | NFR-012 | CLI Command Test Coverage | must | testability |
19
+ | NFR-013 | Test-Specification Traceability | must | testability |
20
+ | NFR-014 | CLI Definition-Implementation Consistency | must | testability |
21
+ | NFR-015 | CLI Backward Compatibility | must | testability |
22
+
23
+ ---
24
+
25
+ ## NFR-001: Command Execution Time
26
+
27
+ **Type**: non-functional | **Priority**: should | **Category**: performance
28
+
29
+ lint/build/drift within 1 minute for typical requirement scale (~500 items), check within 2 minutes (depends on file count)
30
+
31
+ ### Acceptance Criteria
32
+
33
+ - **NFR-001-01**: lint/build/drift within 60 seconds for 500 requirements scale [test]
34
+ - **NFR-001-02**: check within 120 seconds for 1000 files scale [test]
35
+ - **NFR-001-03**: build within 5 seconds for 1000 requirements, 100 entities, 50 screens [test]
36
+
37
+ ---
38
+
39
+ ## NFR-002: Node.js Compatibility
40
+
41
+ **Type**: non-functional | **Priority**: must | **Category**: portability
42
+
43
+ Works on Node.js (LTS)
44
+
45
+ ### Acceptance Criteria
46
+
47
+ - **NFR-002-01**: Verified on Node.js 18 LTS [test]
48
+ - **NFR-002-02**: Verified on Node.js 20 LTS [test]
49
+ - **NFR-002-03**: Verified on Node.js 22 LTS [test]
50
+
51
+ ---
52
+
53
+ ## NFR-003: Multi-OS Support
54
+
55
+ **Type**: non-functional | **Priority**: must | **Category**: portability
56
+
57
+ Avoid OS dependencies and work on Linux/macOS/Windows
58
+
59
+ ### Acceptance Criteria
60
+
61
+ - **NFR-003-01**: Verified on Linux (Ubuntu) [test]
62
+ - **NFR-003-02**: Verified on macOS [test]
63
+ - **NFR-003-03**: Verified on Windows (PowerShell) [test]
64
+ - **NFR-003-04**: Eliminate OS-dependent code such as path separators [review]
65
+
66
+ ---
67
+
68
+ ## NFR-004: User-defined Models
69
+
70
+ **Type**: non-functional | **Priority**: must | **Category**: extensibility
71
+
72
+ Users can define custom models by inheriting from Model base class
73
+
74
+ ### Acceptance Criteria
75
+
76
+ - **NFR-004-01**: Can define new models by inheriting from Model base class [test]
77
+ - **NFR-004-02**: Can define model-specific schema, lint rules, and renderers [test]
78
+ - **NFR-004-03**: Models registered in speckeeper.config.ts become targets of lint/build/check [test]
79
+
80
+ ---
81
+
82
+ ## NFR-005: Input Format Diversity
83
+
84
+ **Type**: non-functional | **Priority**: should | **Category**: extensibility
85
+
86
+ Allow YAML/JSON input to lower participation barriers for non-developers
87
+
88
+ ### Acceptance Criteria
89
+
90
+ - **NFR-005-01**: Support TypeScript DSL input [test]
91
+ - **NFR-005-02**: Support YAML format input [demo]
92
+ - **NFR-005-03**: Support JSON format input [demo]
93
+
94
+ ---
95
+
96
+ ## NFR-006: Rule Extensibility
97
+
98
+ **Type**: non-functional | **Priority**: should | **Category**: extensibility
99
+
100
+ Allow adding lint and check rules via plugin mechanism
101
+
102
+ ### Acceptance Criteria
103
+
104
+ - **NFR-006-01**: Custom lint rules can be added [demo]
105
+ - **NFR-006-02**: Custom check rules (external SSOT verification) can be added [demo]
106
+ - **NFR-006-03**: Rules are defined under Model._models/ [review]
107
+
108
+ ---
109
+
110
+ ## NFR-007: Error Message Clarity
111
+
112
+ **Type**: non-functional | **Priority**: must | **Category**: transparency
113
+
114
+ Output errors showing requirement ID, file, and field name, providing messages that clearly show "why it failed"
115
+
116
+ ### Acceptance Criteria
117
+
118
+ - **NFR-007-01**: Errors include requirement ID/specification ID [test]
119
+ - **NFR-007-02**: Errors include file path and line number (when possible) [test]
120
+ - **NFR-007-03**: Errors include problematic field name [test]
121
+ - **NFR-007-04**: Provide hints for fixes [review]
122
+
123
+ ---
124
+
125
+ ## NFR-008: TypeScript Compatibility
126
+
127
+ **Type**: non-functional | **Priority**: must | **Category**: compatibility
128
+
129
+ Type checking passes on TypeScript 5.0+
130
+
131
+ ### Acceptance Criteria
132
+
133
+ - **NFR-008-01**: Compiles successfully on TypeScript 5.0 [test]
134
+ - **NFR-008-02**: No type errors in strict mode [test]
135
+
136
+ ---
137
+
138
+ ## NFR-009: ESM Support
139
+
140
+ **Type**: non-functional | **Priority**: must | **Category**: compatibility
141
+
142
+ Provided in ES Modules format
143
+
144
+ ### Acceptance Criteria
145
+
146
+ - **NFR-009-01**: Can be imported via import statement [test]
147
+ - **NFR-009-02**: Tree-shaking works [inspection]
148
+
149
+ ---
150
+
151
+ ## NFR-010: npm Distribution
152
+
153
+ **Type**: non-functional | **Priority**: must | **Category**: deployability
154
+
155
+ Can be distributed as npm package
156
+
157
+ ### Acceptance Criteria
158
+
159
+ - **NFR-010-01**: Can publish package via npm publish [demo]
160
+ - **NFR-010-02**: Can install via npm install speckeeper [demo]
161
+
162
+ ---
163
+
164
+ ## NFR-011: CLI Test Infrastructure
165
+
166
+ **Type**: non-functional | **Priority**: must | **Category**: testability
167
+
168
+ All CLI commands have comprehensive test coverage with traceability to specifications
169
+
170
+ ### Acceptance Criteria
171
+
172
+ - **NFR-011-01**: All child requirements (NFR-012~NFR-015) are satisfied [review]
173
+
174
+ ---
175
+
176
+ ## NFR-012: CLI Command Test Coverage
177
+
178
+ **Type**: non-functional | **Priority**: must | **Category**: testability
179
+
180
+ Each CLI command (lint, check, build, impact, drift, new) has a corresponding test file in test/cli/ with requirement ID references
181
+
182
+ ### Rationale
183
+
184
+ To prevent regression bugs in CLI commands that directly affect all users and CI pipelines
185
+
186
+ ### Acceptance Criteria
187
+
188
+ - **NFR-012-01**: Test files exist in test/cli/ for each CLI command (lint, check, build, impact, drift, new) [test]
189
+ - **NFR-012-02**: describe/it block names contain corresponding requirement IDs (FR-xxx) [test]
190
+ - **NFR-012-03**: CLI module statement coverage reaches 60% or above (from 0%) [test]
191
+
192
+ ---
193
+
194
+ ## NFR-013: Test-Specification Traceability
195
+
196
+ **Type**: non-functional | **Priority**: must | **Category**: testability
197
+
198
+ TestRef definitions in design/test-refs.ts provide bidirectional traceability between tests and specifications
199
+
200
+ ### Rationale
201
+
202
+ To ensure all acceptance criteria are covered by test cases and maintain spec-test traceability
203
+
204
+ ### Acceptance Criteria
205
+
206
+ - **NFR-013-01**: TestRef definitions (TEST-020~025) exist in design/test-refs.ts for each CLI test file [test]
207
+ - **NFR-013-02**: TestRefs are linked to corresponding command IDs via implementsCommand [test]
208
+ - **NFR-013-03**: speckeeper check test succeeds for all TestRefs [test]
209
+ - **NFR-013-04**: speckeeper check test --coverage achieves 100% for target acceptance criteria [test]
210
+
211
+ ---
212
+
213
+ ## NFR-014: CLI Definition-Implementation Consistency
214
+
215
+ **Type**: non-functional | **Priority**: must | **Category**: testability
216
+
217
+ CLI command definitions in design/cli-commands.ts match actual implementation in src/cli/index.ts
218
+
219
+ ### Rationale
220
+
221
+ To ensure specification and implementation stay synchronized (e.g., no missing --config parameters)
222
+
223
+ ### Acceptance Criteria
224
+
225
+ - **NFR-014-01**: All command definitions in design/cli-commands.ts match implementation (parameters, subcommands, exit codes) [test]
226
+
227
+ ---
228
+
229
+ ## NFR-015: CLI Backward Compatibility
230
+
231
+ **Type**: non-functional | **Priority**: must | **Category**: testability
232
+
233
+ Existing public APIs and CLI behavior are not changed by test additions
234
+
235
+ ### Rationale
236
+
237
+ To ensure test strengthening does not introduce regressions
238
+
239
+ ### Acceptance Criteria
240
+
241
+ - **NFR-015-01**: All existing tests continue to pass (no regression) [test]
242
+ - **NFR-015-02**: No changes to existing public API or CLI behavior [review]