speckeeper 0.9.2 → 0.9.4

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,332 @@
1
+ # CLI Commands
2
+
3
+ | Command | Description |
4
+ |---------|-------------|
5
+ | build | Generate human-readable (docs/) and machine-readable (specs/) artifacts from TS models |
6
+ | lint | Validate TS model consistency and integrity |
7
+ | drift | Detect differences between generated docs/specs/ and committed files |
8
+ | check | Check consistency with external SSOT (OpenAPI/DDL/IaC) |
9
+ | init | Initialize a new speckeeper project with starter templates |
10
+ | new | Create a new element with auto-generated ID |
11
+ | scaffold | Generate _models/ from a mermaid flowchart definition |
12
+ | impact | Analyze the change impact scope of a specified ID |
13
+
14
+ ---
15
+
16
+ ## CMD-BUILD: build
17
+
18
+ Generate human-readable (docs/) and machine-readable (specs/) artifacts from TS models
19
+
20
+ ### Usage
21
+
22
+ ```bash
23
+ speckeeper build [options]
24
+ ```
25
+
26
+ ### Parameters
27
+
28
+ | Name | Kind | Type | Required | Default | Description |
29
+ |------|------|------|----------|---------|-------------|
30
+ | -c, --config | option | path | | - | Path to config file |
31
+ | -o, --output | option | path | | . | Output directory base path |
32
+ | -f, --format | option | enum | | both | Output format |
33
+ | -w, --watch | option | boolean | | false | Watch file changes and auto-regenerate |
34
+ | -v, --verbose | option | boolean | | false | Show detailed output |
35
+
36
+ ### Examples
37
+
38
+ ```bash
39
+ speckeeper build
40
+ speckeeper build --output ./dist
41
+ speckeeper build --format markdown
42
+ speckeeper build --watch
43
+ ```
44
+
45
+ ### Exit Codes
46
+
47
+ | Code | Description |
48
+ |------|-------------|
49
+ | 0 | Success |
50
+ | 1 | Generation error |
51
+
52
+ ---
53
+
54
+ ## CMD-LINT: lint
55
+
56
+ Validate TS model consistency and integrity
57
+
58
+ ### Usage
59
+
60
+ ```bash
61
+ speckeeper lint [options]
62
+ ```
63
+
64
+ ### Parameters
65
+
66
+ | Name | Kind | Type | Required | Default | Description |
67
+ |------|------|------|----------|---------|-------------|
68
+ | -c, --config | option | path | | - | Path to config file |
69
+ | -p, --phase | option | enum | | - | Phase gate (prohibit TBD at specified phase) |
70
+ | -s, --strict | option | boolean | | false | Strict mode (treat warnings as errors) |
71
+ | --fix | option | boolean | | false | Fix auto-fixable issues |
72
+ | -f, --format | option | enum | | text | Output format |
73
+
74
+ ### Examples
75
+
76
+ ```bash
77
+ speckeeper lint
78
+ speckeeper lint --phase LLD
79
+ speckeeper lint --strict
80
+ speckeeper lint --format json
81
+ ```
82
+
83
+ ### Exit Codes
84
+
85
+ | Code | Description |
86
+ |------|-------------|
87
+ | 0 | No issues |
88
+ | 1 | Errors found |
89
+ | 2 | Warnings found (in strict mode) |
90
+
91
+ ---
92
+
93
+ ## CMD-DRIFT: drift
94
+
95
+ Detect differences between generated docs/specs/ and committed files
96
+
97
+ ### Usage
98
+
99
+ ```bash
100
+ speckeeper drift [options]
101
+ ```
102
+
103
+ ### Parameters
104
+
105
+ | Name | Kind | Type | Required | Default | Description |
106
+ |------|------|------|----------|---------|-------------|
107
+ | -c, --config | option | path | | - | Path to config file |
108
+ | -u, --update | option | boolean | | false | Auto-update if differences exist |
109
+ | -f, --format | option | enum | | text | Output format |
110
+
111
+ ### Examples
112
+
113
+ ```bash
114
+ speckeeper drift
115
+ speckeeper drift --update
116
+ speckeeper drift --format diff
117
+ ```
118
+
119
+ ### Exit Codes
120
+
121
+ | Code | Description |
122
+ |------|-------------|
123
+ | 0 | No differences |
124
+ | 1 | Differences found (manual edits detected) |
125
+
126
+ ---
127
+
128
+ ## CMD-CHECK: check
129
+
130
+ Check consistency with external SSOT (OpenAPI/DDL/IaC)
131
+
132
+ ### Usage
133
+
134
+ ```bash
135
+ speckeeper check <subcommand> [options]
136
+ ```
137
+
138
+ ### Parameters
139
+
140
+ | Name | Kind | Type | Required | Default | Description |
141
+ |------|------|------|----------|---------|-------------|
142
+ | <type> | argument | string | | - | Type of check: external-ssot, openapi, ddl, iac, custom, all, test |
143
+ | -c, --config | option | path | | - | Path to config file |
144
+ | --strict | option | boolean | | false | Treat warnings as errors |
145
+ | -v, --verbose | option | boolean | | false | Show detailed output |
146
+ | --coverage | option | boolean | | false | Check if all testable acceptance criteria are covered by TestRefs |
147
+
148
+ ### Subcommands
149
+
150
+ #### openapi
151
+
152
+ Check consistency with OpenAPI specification
153
+
154
+ #### ddl
155
+
156
+ Check consistency with DDL/Schema
157
+
158
+ #### iac
159
+
160
+ Check consistency with IaC (CloudFormation/Terraform)
161
+
162
+ #### external-ssot
163
+
164
+ Check consistency with all external SSOTs
165
+
166
+ #### test
167
+
168
+ Check consistency between test files and requirements
169
+
170
+ #### contract
171
+
172
+ Check consistency between implementation and contract (type definitions/schema)
173
+
174
+ ### Examples
175
+
176
+ ```bash
177
+ speckeeper check openapi
178
+ speckeeper check ddl
179
+ speckeeper check iac
180
+ speckeeper check external-ssot
181
+ speckeeper check contract
182
+ ```
183
+
184
+ ### Exit Codes
185
+
186
+ | Code | Description |
187
+ |------|-------------|
188
+ | 0 | Consistency OK |
189
+ | 1 | Consistency error |
190
+ | 2 | External SSOT file not found |
191
+
192
+ ---
193
+
194
+ ## CMD-INIT: init
195
+
196
+ Initialize a new speckeeper project with starter templates
197
+
198
+ ### Usage
199
+
200
+ ```bash
201
+ speckeeper init [options]
202
+ ```
203
+
204
+ ### Parameters
205
+
206
+ | Name | Kind | Type | Required | Default | Description |
207
+ |------|------|------|----------|---------|-------------|
208
+ | -f, --force | option | boolean | | false | Overwrite existing files |
209
+
210
+ ### Examples
211
+
212
+ ```bash
213
+ speckeeper init
214
+ speckeeper init --force
215
+ ```
216
+
217
+ ### Exit Codes
218
+
219
+ | Code | Description |
220
+ |------|-------------|
221
+ | 0 | Initialization successful |
222
+ | 1 | Initialization error |
223
+
224
+ ---
225
+
226
+ ## CMD-NEW: new
227
+
228
+ Create a new element with auto-generated ID
229
+
230
+ ### Usage
231
+
232
+ ```bash
233
+ speckeeper new [options]
234
+ ```
235
+
236
+ ### Parameters
237
+
238
+ | Name | Kind | Type | Required | Default | Description |
239
+ |------|------|------|----------|---------|-------------|
240
+ | <type> | argument | string | ✓ | - | Type: requirement, usecase, entity, component, screen, flow, error-case, term |
241
+ | -k, --kind | option | string | | - | Sub-kind (e.g., functional, non-functional for requirements) |
242
+ | -n, --name | option | string | | - | Name of the element |
243
+ | -o, --output | option | path | | - | Output directory path |
244
+ | -t, --template | option | path | | - | Path to template file |
245
+
246
+ ### Examples
247
+
248
+ ```bash
249
+ speckeeper new requirement --kind functional --name "User Login"
250
+ ```
251
+
252
+ ### Exit Codes
253
+
254
+ | Code | Description |
255
+ |------|-------------|
256
+ | 0 | Element created |
257
+ | 1 | Creation error |
258
+
259
+ ---
260
+
261
+ ## CMD-SCAFFOLD: scaffold
262
+
263
+ Generate _models/ from a mermaid flowchart definition
264
+
265
+ ### Usage
266
+
267
+ ```bash
268
+ speckeeper scaffold [options]
269
+ ```
270
+
271
+ ### Parameters
272
+
273
+ | Name | Kind | Type | Required | Default | Description |
274
+ |------|------|------|----------|---------|-------------|
275
+ | -s, --source | option | path | ✓ | - | Path to Markdown file containing mermaid flowchart |
276
+ | -o, --output | option | path | | design/ | Output directory |
277
+ | -f, --force | option | boolean | | false | Overwrite existing files |
278
+ | --dry-run | option | boolean | | false | Preview generated files without writing |
279
+
280
+ ### Examples
281
+
282
+ ```bash
283
+ speckeeper scaffold --source requirements.md
284
+ speckeeper scaffold -s spec.md --dry-run
285
+ ```
286
+
287
+ ### Exit Codes
288
+
289
+ | Code | Description |
290
+ |------|-------------|
291
+ | 0 | Scaffold successful |
292
+ | 1 | Scaffold error |
293
+
294
+ ---
295
+
296
+ ## CMD-IMPACT: impact
297
+
298
+ Analyze the change impact scope of a specified ID
299
+
300
+ ### Usage
301
+
302
+ ```bash
303
+ speckeeper impact [options]
304
+ ```
305
+
306
+ ### Parameters
307
+
308
+ | Name | Kind | Type | Required | Default | Description |
309
+ |------|------|------|----------|---------|-------------|
310
+ | <id> | argument | string | ✓ | - | ID to analyze |
311
+ | -c, --config | option | path | | - | Path to config file |
312
+ | -d, --depth | option | number | | 3 | Analysis depth (reference tracking level) |
313
+ | --direction | option | enum | | both | Analysis direction |
314
+ | -f, --format | option | enum | | text | Output format |
315
+
316
+ ### Examples
317
+
318
+ ```bash
319
+ speckeeper impact REQ-001
320
+ speckeeper impact ENT-ORDER --depth 5
321
+ speckeeper impact COMP-API --direction downstream
322
+ speckeeper impact UC-001 --format mermaid
323
+ ```
324
+
325
+ ### Exit Codes
326
+
327
+ | Code | Description |
328
+ |------|-------------|
329
+ | 0 | Analysis successful |
330
+ | 1 | Target ID not found |
331
+
332
+ ---
@@ -0,0 +1,66 @@
1
+ # Requirements
2
+
3
+ ## Constraints
4
+
5
+ | ID | Name | Priority | Category |
6
+ |----|------|----------|----------|
7
+ | CR-001 | Minimize External Dependencies | should | technical |
8
+ | CR-002 | Zero-config Startup | should | usability |
9
+ | CR-003 | No Implementation Code Generation | must | scope |
10
+ | CR-004 | Respect External SSOT | must | scope |
11
+
12
+ ---
13
+
14
+ ## CR-001: Minimize External Dependencies
15
+
16
+ **Type**: constraint | **Priority**: should | **Category**: technical
17
+
18
+ Limit external dependencies to stable libraries like Zod, Commander, Chalk
19
+
20
+ ### Acceptance Criteria
21
+
22
+ - **CR-001-01**: Keep dependency package count under 20 [inspection]
23
+ - **CR-001-02**: Use only packages with stable major versions [review]
24
+
25
+ ---
26
+
27
+ ## CR-002: Zero-config Startup
28
+
29
+ **Type**: constraint | **Priority**: should | **Category**: usability
30
+
31
+ Basic functionality works without config file
32
+
33
+ ### Acceptance Criteria
34
+
35
+ - **CR-002-01**: build/lint/drift works without speckeeper.config.ts [test]
36
+ - **CR-002-02**: Default settings cover typical use cases [review]
37
+
38
+ ---
39
+
40
+ ## CR-003: No Implementation Code Generation
41
+
42
+ **Type**: constraint | **Priority**: must | **Category**: scope
43
+
44
+ speckeeper does not generate implementation code. API contracts and DB connection code are handled by external tools
45
+
46
+ ### Acceptance Criteria
47
+
48
+ - **CR-003-01**: speckeeper does not generate or modify code under src/ [review]
49
+ - **CR-003-02**: API contracts (TypeScript types, routes, clients) generated by external tools from OpenAPI [review]
50
+ - **CR-003-03**: DB connections (Entity types, repositories) generated by ORM/DDL tools from DDL/schema [review]
51
+ - **CR-003-04**: speckeeper only handles requirement definition and external SSOT consistency checks [review]
52
+
53
+ ---
54
+
55
+ ## CR-004: Respect External SSOT
56
+
57
+ **Type**: constraint | **Priority**: must | **Category**: scope
58
+
59
+ Treat API specs, DB definitions, IaC definitions as external SSOT, speckeeper only references and verifies
60
+
61
+ ### Acceptance Criteria
62
+
63
+ - **CR-004-01**: Do not directly generate or modify OpenAPI files [review]
64
+ - **CR-004-02**: Do not directly generate or modify DDL/Prisma schemas [review]
65
+ - **CR-004-03**: Do not directly generate or modify CloudFormation/Terraform [review]
66
+ - **CR-004-04**: Principle is to fix speckeeper side when consistency check fails [review]
@@ -0,0 +1,86 @@
1
+ # Components
2
+
3
+ | ID | Name | Type | Description |
4
+ |----|------|------|-------------|
5
+ | CONT-001 | CLI | container | Command line interface |
6
+ | CONT-002 | Types | container | Type definitions with Zod schemas |
7
+ | CONT-003 | DSL | container | Builder functions and checker factories |
8
+ | CONT-004 | Generators | container | Markdown, Mermaid, JSON Schema generation engine |
9
+ | CONT-005 | Validators | container | Validation and lint rule execution engine |
10
+ | CONT-006 | Checkers | container | External SSOT consistency checker |
11
+ | CONT-007 | Utils | container | Utilities for file I/O, config loading, ID generation, etc. |
12
+ | CONT-008 | Scaffold | container | Mermaid flowchart-based project scaffold generator |
13
+
14
+ ---
15
+
16
+ ## CONT-001: CLI
17
+
18
+ **Type**: container
19
+ **Technology**: TypeScript + Commander
20
+
21
+ Command line interface
22
+
23
+ ---
24
+
25
+ ## CONT-002: Types
26
+
27
+ **Type**: container
28
+ **Technology**: TypeScript + Zod
29
+
30
+ Type definitions with Zod schemas
31
+
32
+ ---
33
+
34
+ ## CONT-003: DSL
35
+
36
+ **Type**: container
37
+ **Technology**: TypeScript
38
+
39
+ Builder functions and checker factories
40
+
41
+ ---
42
+
43
+ ## CONT-004: Generators
44
+
45
+ **Type**: container
46
+ **Technology**: TypeScript
47
+
48
+ Markdown, Mermaid, JSON Schema generation engine
49
+
50
+ ---
51
+
52
+ ## CONT-005: Validators
53
+
54
+ **Type**: container
55
+ **Technology**: TypeScript
56
+
57
+ Validation and lint rule execution engine
58
+
59
+ ---
60
+
61
+ ## CONT-006: Checkers
62
+
63
+ **Type**: container
64
+ **Technology**: TypeScript
65
+
66
+ External SSOT consistency checker
67
+
68
+ ---
69
+
70
+ ## CONT-007: Utils
71
+
72
+ **Type**: container
73
+ **Technology**: TypeScript
74
+
75
+ Utilities for file I/O, config loading, ID generation, etc.
76
+
77
+ ---
78
+
79
+ ## CONT-008: Scaffold
80
+
81
+ **Type**: container
82
+ **Technology**: TypeScript
83
+
84
+ Mermaid flowchart-based project scaffold generator
85
+
86
+ ---
@@ -0,0 +1,161 @@
1
+ # Entities
2
+
3
+ | ID | Name | Description |
4
+ |----|------|-------------|
5
+ | E-001 | Requirement | Entity representing requirements. Base for functional requirements, non-functional requirements, and constraints |
6
+ | E-010 | Component | Architecture component (system, container, component, person) |
7
+ | E-011 | Boundary | Architecture boundary (system boundary, subsystem boundary, etc.) |
8
+ | E-012 | Layer | Architecture layer (presentation, business, data, etc.) |
9
+ | E-020 | Entity | Concept model entity |
10
+ | E-030 | Screen | Screen definition |
11
+ | E-040 | APIRef | Reference to external API (OpenAPI) |
12
+ | E-041 | TableRef | Reference to external table definition (DDL/Prisma) |
13
+ | E-050 | Artifact | Artifact classification. Manages human-readable/machine-readable artifacts generated from SSOT |
14
+
15
+ ---
16
+
17
+ ## E-001: Requirement
18
+
19
+ Entity representing requirements. Base for functional requirements, non-functional requirements, and constraints
20
+
21
+ ### Attributes
22
+
23
+ | Name | Type | Required | Description |
24
+ |------|------|----------|-------------|
25
+ | id | string | Yes | Unique ID (FR-001, etc.) |
26
+ | name | string | Yes | Requirement name |
27
+ | description | string | Yes | Detailed description of requirement |
28
+ | rationale | string | No | Reason/background for requirement |
29
+ | priority | enum | Yes | Priority |
30
+ | status | enum | No | Status |
31
+
32
+ ---
33
+
34
+ ## E-010: Component
35
+
36
+ Architecture component (system, container, component, person)
37
+
38
+ ### Attributes
39
+
40
+ | Name | Type | Required | Description |
41
+ |------|------|----------|-------------|
42
+ | id | string | Yes | Unique ID (COMP-001, etc.) |
43
+ | name | string | Yes | Component name |
44
+ | description | string | Yes | Description |
45
+ | type | enum | Yes | Component type |
46
+ | external | boolean | No | Whether external component |
47
+ | layerId | string | No | Belonging layer ID |
48
+ | boundaryId | string | No | Belonging boundary ID |
49
+
50
+ ---
51
+
52
+ ## E-011: Boundary
53
+
54
+ Architecture boundary (system boundary, subsystem boundary, etc.)
55
+
56
+ ### Attributes
57
+
58
+ | Name | Type | Required | Description |
59
+ |------|------|----------|-------------|
60
+ | id | string | Yes | Unique ID |
61
+ | name | string | Yes | Boundary name |
62
+ | description | string | No | Description |
63
+ | type | enum | No | Boundary type |
64
+
65
+ ---
66
+
67
+ ## E-012: Layer
68
+
69
+ Architecture layer (presentation, business, data, etc.)
70
+
71
+ ### Attributes
72
+
73
+ | Name | Type | Required | Description |
74
+ |------|------|----------|-------------|
75
+ | id | string | Yes | Unique ID |
76
+ | name | string | Yes | Layer name |
77
+ | order | integer | Yes | Layer order (higher is more upper) |
78
+
79
+ ---
80
+
81
+ ## E-020: Entity
82
+
83
+ Concept model entity
84
+
85
+ ### Attributes
86
+
87
+ | Name | Type | Required | Description |
88
+ |------|------|----------|-------------|
89
+ | id | string | Yes | Unique ID (ENT-001, etc.) |
90
+ | name | string | Yes | Entity name |
91
+ | description | string | Yes | Description |
92
+ | isAggregate | boolean | No | Whether aggregate root |
93
+ | boundaryId | string | No | Belonging boundary ID |
94
+
95
+ ---
96
+
97
+ ## E-030: Screen
98
+
99
+ Screen definition
100
+
101
+ ### Attributes
102
+
103
+ | Name | Type | Required | Description |
104
+ |------|------|----------|-------------|
105
+ | id | string | Yes | Unique ID (SCR-001, etc.) |
106
+ | name | string | Yes | Screen name |
107
+ | description | string | Yes | Description |
108
+ | type | enum | No | Screen type |
109
+ | url | string | No | URL path |
110
+ | authRequired | boolean | No | Whether authentication required |
111
+
112
+ ---
113
+
114
+ ## E-040: APIRef
115
+
116
+ Reference to external API (OpenAPI)
117
+
118
+ ### Attributes
119
+
120
+ | Name | Type | Required | Description |
121
+ |------|------|----------|-------------|
122
+ | id | string | Yes | Unique ID |
123
+ | specPath | string | Yes | OpenAPI file path |
124
+ | operationId | string | Yes | Operation ID |
125
+ | componentId | string | No | Related component ID |
126
+
127
+ ---
128
+
129
+ ## E-041: TableRef
130
+
131
+ Reference to external table definition (DDL/Prisma)
132
+
133
+ ### Attributes
134
+
135
+ | Name | Type | Required | Description |
136
+ |------|------|----------|-------------|
137
+ | id | string | Yes | Unique ID |
138
+ | tableName | string | Yes | Table name |
139
+ | sourceType | enum | No | Source type |
140
+ | sourcePath | string | Yes | Source file path |
141
+ | entityId | string | No | Corresponding concept entity ID |
142
+
143
+ ---
144
+
145
+ ## E-050: Artifact
146
+
147
+ Artifact classification. Manages human-readable/machine-readable artifacts generated from SSOT
148
+
149
+ ### Attributes
150
+
151
+ | Name | Type | Required | Description |
152
+ |------|------|----------|-------------|
153
+ | id | string | Yes | Unique ID |
154
+ | name | string | Yes | Artifact name |
155
+ | category | enum | Yes | Classification (SSOT/human-readable/machine-readable/implementation code) |
156
+ | location | string | Yes | Directory path (design/, docs/, specs/, src/) |
157
+ | purpose | string | Yes | Purpose |
158
+ | driftTarget | boolean | No | Whether drift detection target |
159
+ | generatedFrom | string | No | Source (SSOT ID) |
160
+
161
+ ---
@@ -0,0 +1,42 @@
1
+ # Components
2
+
3
+ | ID | Name | Type | Description |
4
+ |----|------|------|-------------|
5
+ | EXT-001 | OpenAPI Specification | system | External SSOT managing API specifications. speckeeper references via APIRef |
6
+ | EXT-002 | Database Schema | system | External SSOT managing DB definitions via DDL/Prisma. speckeeper references via TableRef |
7
+ | EXT-003 | Infrastructure as Code | system | IaC definitions like Terraform/CloudFormation. speckeeper references via IaCRef |
8
+ | EXT-004 | GitHub/GitLab | system | Repository managing source code and documentation |
9
+
10
+ ---
11
+
12
+ ## EXT-001: OpenAPI Specification
13
+
14
+ **Type**: system
15
+
16
+ External SSOT managing API specifications. speckeeper references via APIRef
17
+
18
+ ---
19
+
20
+ ## EXT-002: Database Schema
21
+
22
+ **Type**: system
23
+
24
+ External SSOT managing DB definitions via DDL/Prisma. speckeeper references via TableRef
25
+
26
+ ---
27
+
28
+ ## EXT-003: Infrastructure as Code
29
+
30
+ **Type**: system
31
+
32
+ IaC definitions like Terraform/CloudFormation. speckeeper references via IaCRef
33
+
34
+ ---
35
+
36
+ ## EXT-004: GitHub/GitLab
37
+
38
+ **Type**: system
39
+
40
+ Repository managing source code and documentation
41
+
42
+ ---