lee-spec-kit 0.4.14 β†’ 0.5.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.en.md CHANGED
@@ -46,10 +46,13 @@ npx lee-spec-kit feature user-auth
46
46
  # 3) Show next steps (for agents)
47
47
  npx lee-spec-kit context
48
48
 
49
- # 4) Show overall status
49
+ # 4) Show workflow dashboard
50
+ npx lee-spec-kit view
51
+
52
+ # 5) Show overall status
50
53
  npx lee-spec-kit status
51
54
 
52
- # 5) Validate docs / feature metadata
55
+ # 6) Validate docs / feature metadata
53
56
  npx lee-spec-kit doctor
54
57
  ```
55
58
 
@@ -58,13 +61,13 @@ npx lee-spec-kit doctor
58
61
  ### πŸ“ Project initialization
59
62
 
60
63
  - Interactive init or CLI options
61
- - Supports `single` and `fullstack` (FE/BE split)
64
+ - Supports `single` and `multi` (`fullstack` remains as a backward-compatible alias)
62
65
  - Korean/English templates
63
66
 
64
67
  ### πŸš€ Feature creation
65
68
 
66
69
  - Generates `spec.md`, `plan.md`, `tasks.md`, `decisions.md`
67
- - Fullstack mode supports FE/BE separation
70
+ - Multi mode supports flexible component separation (e.g. FE/BE/worker)
68
71
  - Integrates Issue/PR templates (docs side)
69
72
 
70
73
  ### πŸ“Š Status management
@@ -72,6 +75,16 @@ npx lee-spec-kit doctor
72
75
  - View feature progress at a glance
73
76
  - Print to terminal or write a Markdown report
74
77
 
78
+ ### πŸ‘€ View dashboard
79
+
80
+ - Show context-style workflow dashboard in one command
81
+ - Works for single feature or aggregated feature list
82
+
83
+ ### πŸ” Flow orchestration
84
+
85
+ - Combine `context + status + doctor` in one command
86
+ - Supports approval/execute passthrough for atomic context actions
87
+
75
88
  ### 🩺 Doctor
76
89
 
77
90
  - Checks docs structure and feature metadata (missing status, duplicate IDs, placeholders, etc.)
@@ -87,18 +100,31 @@ npx lee-spec-kit doctor
87
100
 
88
101
  ```bash
89
102
  npx lee-spec-kit init
90
- npx lee-spec-kit init --name my-project --type fullstack
103
+ npx lee-spec-kit init --name my-project --type multi
104
+ npx lee-spec-kit init --name my-project --type fullstack # alias
91
105
  ```
92
106
 
93
107
  **Options:**
94
108
 
95
- | Option | Description | Default |
96
- | ------------------- | ----------------------------------------- | ------------- |
97
- | `-n, --name <name>` | Project name | current folder |
98
- | `-t, --type <type>` | `single` or `fullstack` | interactive |
99
- | `-l, --lang <lang>` | `ko` or `en` | `en` |
100
- | `-d, --dir <dir>` | Install directory | `./docs` |
101
- | `-y, --yes` | Skip interactive prompts | - |
109
+ | Option | Description | Default |
110
+ | ------------------- | ------------------------------------------------------------------------------------------- | ------------------------------- |
111
+ | `-n, --name <name>` | Project name | current folder |
112
+ | `-t, --type <type>` | `single` or `multi` (`fullstack` alias supported) | interactive (`single` with `--yes`/`--non-interactive`) |
113
+ | `--components <list>` | multi component list (comma-separated, e.g. `fe,be,worker`) | `fe,be` |
114
+ | `-l, --lang <lang>` | `ko` or `en` | `en` |
115
+ | `--workflow <mode>` | Workflow mode: `github` (issue/PR/review) or `local` (local-first) | `github` |
116
+ | `-d, --dir <dir>` | Install directory | `./docs` |
117
+ | `--docs-repo <mode>` | docs repo mode (`embedded` or `standalone`) | `embedded` |
118
+ | `--project-root <path>` | standalone(single) project repo path | - |
119
+ | `--fe-project-root <path>` | standalone(multi) frontend repo path | - |
120
+ | `--be-project-root <path>` | standalone(multi) backend repo path | - |
121
+ | `--push-docs` | enable standalone docs push (use with `--docs-remote`) | `false` |
122
+ | `--docs-remote <url>` | standalone docs remote URL (used with `--push-docs`) | - |
123
+ | `-y, --yes` | Skip most interactive inputs (overwrite confirmation still appears if target dir is not empty) | - |
124
+ | `-f, --force` | Overwrite non-empty target directory without confirmation | `false` |
125
+ | `--non-interactive` | Fail immediately instead of prompting for user input | `false` |
126
+
127
+ > After generating docs, `init` automatically attempts Git setup/commit (`git init`, `git add`, `git commit`). Auto-commit may be skipped depending on environment/state.
102
128
 
103
129
  ### Create a feature
104
130
 
@@ -106,13 +132,30 @@ npx lee-spec-kit init --name my-project --type fullstack
106
132
  # Single
107
133
  npx lee-spec-kit feature user-auth
108
134
 
109
- # Fullstack
135
+ # Multi
110
136
  npx lee-spec-kit feature --repo be user-auth
111
137
  npx lee-spec-kit feature --repo fe user-profile
138
+ npx lee-spec-kit feature --component worker queue-jobs
139
+
140
+ # Specify Feature ID/description
141
+ npx lee-spec-kit feature payment --id F123 --desc "Improve payment flow"
112
142
  ```
113
143
 
144
+ **Options:**
145
+
146
+ | Option | Description | Default |
147
+ | ------------------- | ------------------------------------------- | ------------ |
148
+ | `-r, --repo <repo>` | Multi target component (backward-compatible alias) | interactive |
149
+ | `--component <id>` | Multi target component | interactive |
150
+ | `--id <id>` | Feature ID (`F001` format) | auto-generate |
151
+ | `-d, --desc <desc>` | Default purpose/description text for `spec.md` | empty string |
152
+ | `--non-interactive` | Fail immediately instead of prompting for user input | `false` |
153
+ | `--json` | JSON output (`featureId`, `featurePath`, `component`) | `false` |
154
+
114
155
  ### Context (agent guide)
115
156
 
157
+ For a single matched feature, next steps are always shown as `A/B/C` options.
158
+
116
159
  ```bash
117
160
  # Auto-detect (based on git branch)
118
161
  npx lee-spec-kit context
@@ -124,25 +167,158 @@ npx lee-spec-kit context user-auth
124
167
  npx lee-spec-kit context F001
125
168
  npx lee-spec-kit context F001-user-auth
126
169
 
170
+ # multi component selector
171
+ npx lee-spec-kit context --repo fe
172
+ npx lee-spec-kit context --repo worker
173
+
174
+ # include all / done features
175
+ npx lee-spec-kit context --all
176
+ npx lee-spec-kit context --done
177
+
127
178
  # JSON output (for agents)
128
179
  npx lee-spec-kit context --json
180
+
181
+ # approve a labeled option (validation only)
182
+ npx lee-spec-kit context F001 --approve A
183
+
184
+ # approve + execute exactly one command option
185
+ npx lee-spec-kit context F001 --approve "A OK" --execute
186
+
187
+ # fail when the approved label is instruction-only
188
+ npx lee-spec-kit context F001 --approve A --execute --execute-strict
129
189
  ```
130
190
 
191
+ **Options:**
192
+
193
+ | Option | Description |
194
+ | -------------- | ----------------------------------------------- |
195
+ | `--json` | JSON output for agents |
196
+ | `--repo <repo>`| Select target component in multi mode (e.g. `fe`, `be`, `worker`) |
197
+ | `--all` | Include completed features when auto-detecting |
198
+ | `--done` | Show completed (workflow-done) features only |
199
+ | `--approve <reply>` | Approve one labeled option (`A` or `A OK`) |
200
+ | `--execute` | Execute only the approved option when it is a command |
201
+ | `--execute-strict` | With `--execute`, fail if the approved option is instruction-only |
202
+
203
+ `--json` output includes:
204
+
205
+ - `reasonCode`: status reason code (`SINGLE_MATCHED`, `MULTIPLE_ACTIVE_FEATURES`, etc.)
206
+ - `actionOptions`: maps labels to atomic actions plus `summary`/`approvalPrompt` for user-facing label explanation
207
+ - `workflowPolicy`: current completion policy (`mode`, `requireIssue`, `requireBranch`, `requirePr`, `requireReview`)
208
+ - `checkPolicy`: approval validation policy (`token: "<LABEL>"`, `acceptedTokens`, `tokenPattern`, `validLabels`, `requireExplanationBeforeApproval`, `requiredExplanationFields`, `contextVersion`, ...)
209
+
210
+ Error payloads (`status: "error"`) include `reasonCode` and labeled `suggestions` (`A/B/C`) (e.g. `INVALID_APPROVAL`, `CONTEXT_STALE`, `EXECUTION_FAILED`, `EXECUTION_NOT_COMMAND`).
211
+
212
+ ### View
213
+
214
+ ```bash
215
+ npx lee-spec-kit view
216
+ npx lee-spec-kit view F001
217
+ npx lee-spec-kit view --all
218
+ npx lee-spec-kit view --json
219
+ ```
220
+
221
+ **Options:**
222
+
223
+ | Option | Description |
224
+ | -------------- | ----------------------------------------------- |
225
+ | `--json` | JSON output for agents |
226
+ | `--repo <repo>`| Select target component in multi mode (e.g. `fe`, `be`, `worker`) |
227
+ | `--all` | Include completed features when auto-detecting |
228
+ | `--done` | Show completed (workflow-done) features only |
229
+
230
+ ### Flow
231
+
232
+ ```bash
233
+ npx lee-spec-kit flow
234
+ npx lee-spec-kit flow F001 --approve A
235
+ npx lee-spec-kit flow F001 --approve "A OK" --execute
236
+ npx lee-spec-kit flow --strict
237
+ npx lee-spec-kit flow --json
238
+ ```
239
+
240
+ **Options:**
241
+
242
+ | Option | Description |
243
+ | ----------------- | ----------- |
244
+ | `--json` | JSON output for agents |
245
+ | `--repo <repo>` | Select target component in multi mode (e.g. `fe`, `be`, `worker`) |
246
+ | `--all` | Include completed features when auto-detecting |
247
+ | `--done` | Show completed (workflow-done) features only |
248
+ | `--approve <reply>` | Pass through context label approval (`A` or `A OK`) |
249
+ | `--execute` | Execute approved option when it is a command |
250
+ | `--execute-strict`| With `--execute`, fail if approved option is instruction-only |
251
+ | `--strict` | Also run `status --strict` and `doctor --strict` |
252
+
253
+ ### GitHub helpers
254
+
255
+ ```bash
256
+ # Generate issue body from selected feature
257
+ npx lee-spec-kit github issue F001
258
+
259
+ # Generate + create issue
260
+ npx lee-spec-kit github issue F001 --create --labels enhancement,frontend
261
+
262
+ # Generate PR body
263
+ npx lee-spec-kit github pr F001
264
+
265
+ # Generate + create PR + sync tasks.md metadata + merge with retry
266
+ npx lee-spec-kit github pr F001 --create --merge --labels enhancement,frontend
267
+ ```
268
+
269
+ Key points:
270
+ - Issue/PR helpers validate required body sections and related docs paths.
271
+ - Labels are validated (at least one required).
272
+ - PR helper can sync `tasks.md` PR URL/PR Status automatically (`--no-sync-tasks` to skip).
273
+ - Merge includes retry and automatic head-branch refresh (fetch/rebase/force-push) on out-of-date failures.
274
+
131
275
  ### Status
132
276
 
133
277
  ```bash
134
278
  npx lee-spec-kit status
279
+ npx lee-spec-kit status --json
135
280
  npx lee-spec-kit status --write
281
+ npx lee-spec-kit status --strict
282
+ ```
283
+
284
+ **Options:**
285
+
286
+ | Option | Description |
287
+ | -------------- | ---------------------------------------------------- |
288
+ | `--json` | JSON output for agents |
289
+ | `-w, --write` | Write `features/status.md` |
290
+ | `-s, --strict` | Exit with code 1 when duplicate/missing Feature IDs exist |
291
+
292
+ Status values distinguish implementation vs workflow completion:
293
+ - `DONE`: all tasks are marked done, but workflow requirements are not fully satisfied
294
+ - `WORKFLOW_DONE`: implementation + workflow requirements are both satisfied
295
+
296
+ ### Global Option
297
+
298
+ ```bash
299
+ npx lee-spec-kit --no-banner --help
136
300
  ```
137
301
 
302
+ You can also disable banner output via `LEE_SPEC_KIT_NO_BANNER=1`.
303
+
138
304
  ### Doctor
139
305
 
140
306
  ```bash
141
307
  npx lee-spec-kit doctor
142
308
  npx lee-spec-kit doctor --strict
143
309
  npx lee-spec-kit doctor --json
310
+ npx lee-spec-kit doctor --fix
311
+ npx lee-spec-kit doctor --fix --dry-run
312
+ npx lee-spec-kit doctor --decisions-placeholders off
313
+ npx lee-spec-kit doctor --decisions-placeholders info
314
+ npx lee-spec-kit doctor --decisions-placeholders warn
144
315
  ```
145
316
 
317
+ - `--decisions-placeholders <mode>`:
318
+ - `off`: ignore `decisions.md` placeholders
319
+ - `info` (default): include as informational findings (non-blocking)
320
+ - `warn`: treat as warnings
321
+
146
322
  ### Update templates
147
323
 
148
324
  By default, `update` runs only when the `docs/` working tree is clean; in that case it overwrites changed files without prompting.
@@ -169,6 +345,7 @@ Running `init` creates `.lee-spec-kit.json` in your docs root (default: `docs/`)
169
345
  "lang": "en",
170
346
  "createdAt": "YYYY-MM-DD",
171
347
  "docsRepo": "embedded",
348
+ "workflow": { "mode": "github", "codeDirtyScope": "auto" },
172
349
  "pr": { "screenshots": { "upload": false } },
173
350
  "approval": { "mode": "builtin" }
174
351
  }
@@ -177,13 +354,15 @@ Running `init` creates `.lee-spec-kit.json` in your docs root (default: `docs/`)
177
354
  | Field | Description |
178
355
  | ------------- | ------------------------------------------------ |
179
356
  | `projectName` | Project name |
180
- | `projectType` | `single` or `fullstack` |
357
+ | `projectType` | `single` or `multi` (`fullstack` alias supported) |
358
+ | `components` | (multi only) component list (e.g. `["fe","be","worker"]`) |
181
359
  | `lang` | `ko` or `en` |
182
360
  | `createdAt` | Creation date |
183
361
  | `docsRepo` | `embedded` or `standalone` |
184
362
  | `pushDocs` | (standalone only) whether to manage/push docs repo as a separate git repo |
185
363
  | `docsRemote` | (standalone + pushDocs) docs repo remote URL |
186
- | `projectRoot` | (standalone only) project repo path (single: string, fullstack: {fe, be}) |
364
+ | `projectRoot` | (standalone only) project repo path (single: string, multi: `{ [component]: path }`) |
365
+ | `workflow` | (optional) workflow completion policy (`github`/`local`, `codeDirtyScope`) |
187
366
  | `pr` | (optional) PR artifacts policy (e.g. screenshot upload) |
188
367
  | `approval` | (optional) Override CHECK-required policy in `context` output (for automation/semi-auto) |
189
368
 
@@ -196,11 +375,39 @@ Running `init` creates `.lee-spec-kit.json` in your docs root (default: `docs/`)
196
375
 
197
376
  - the `[CHECK required]` tag in text output
198
377
  - `actions[].requiresUserCheck` in `context --json`
199
- - `checkPolicy.token` (`context --json`): recommended approval token (`OK`)
378
+ - `checkPolicy.token` (`context --json`): approval token format (`<LABEL>`)
379
+ - `checkPolicy.acceptedTokens`: accepted reply templates (e.g. `["<LABEL>", "<LABEL> OK"]`)
380
+ - `checkPolicy.tokenPattern`: input validation regex for approval replies
381
+ - `checkPolicy.validLabels`: currently selectable labels (`A`, `B`, `C`...)
382
+ - `checkPolicy.requireExplanationBeforeApproval`: require label-by-label explanation before asking approval
383
+ - `checkPolicy.requiredExplanationFields`: fields to use for explanation (e.g. `actionOptions[].summary`)
384
+ - `checkPolicy.contextVersion`: snapshot hash for stale-context validation
385
+ - `actionOptions`: maps `label` (`A`, `B`, `C`...) to each atomic `action`
386
+ - `workflowPolicy`: current completion policy (`mode`, `requireIssue`, `requireBranch`, `requirePr`, `requireReview`)
200
387
 
201
388
  > This does not enforce/deny execution by itself; it’s a signal for agents.
202
389
  > If `approval` is omitted, it behaves as `builtin`. (No migration required)
203
- > When `requiresUserCheck: true`, it’s recommended that agents wait for an explicit `OK` response before proceeding.
390
+ > When `requiresUserCheck: true`, it’s recommended that agents wait for an explicit `<label>` or `<label> OK` response (e.g. `A`, `A OK`) before proceeding.
391
+
392
+ ### workflow (completion policy)
393
+
394
+ - `workflow.mode: "github"` (default): issue/branch/PR/review are required in workflow completion
395
+ - `workflow.mode: "local"`: local-first workflow; issue/branch/PR/review are not required
396
+ - Feature templates generated in local mode minimize Issue/PR-focused sections by default.
397
+ - `workflow.codeDirtyScope`:
398
+ - `repo`: evaluate uncommitted code changes across the whole project repo
399
+ - `component`: evaluate only paths mapped to the current feature component (recommended for multi)
400
+ - `auto`: `single => repo`, `multi => component`
401
+ - `workflow.componentPaths` (optional): explicit per-component paths for component-scoped checks (e.g. `"web": ["apps/web", "packages/web-ui"]`)
402
+ - backward compatibility: if omitted, runtime defaults to `repo`
403
+
404
+ Example:
405
+
406
+ ```json
407
+ {
408
+ "workflow": { "mode": "local", "codeDirtyScope": "auto" }
409
+ }
410
+ ```
204
411
 
205
412
  #### Modes
206
413
 
@@ -239,6 +446,61 @@ Running `init` creates `.lee-spec-kit.json` in your docs root (default: `docs/`)
239
446
 
240
447
  - `pr.screenshots.upload` (default: `false`): When `true`, agents may upload screenshots (e.g. GitHub Release assets) and include URLs in PR body. When `false`, agents should not upload/include URLs and should omit screenshot sections from the PR body.
241
448
 
449
+ ### View/Update Config
450
+
451
+ ```bash
452
+ # show current config
453
+ npx lee-spec-kit config
454
+
455
+ # target a specific docs path when multiple docs directories exist
456
+ npx lee-spec-kit config --dir ./docs2
457
+
458
+ # update projectRoot (single)
459
+ npx lee-spec-kit config --project-root /new/path
460
+ npx lee-spec-kit config --dir ./docs2 --project-root /new/path
461
+
462
+ # update projectRoot (multi)
463
+ npx lee-spec-kit config --project-root /new/fe/path --repo fe
464
+ npx lee-spec-kit config --project-root /new/be/path --repo be
465
+ npx lee-spec-kit config --project-root /new/worker/path --component worker
466
+
467
+ # non-interactive mode (fails immediately if required input is missing)
468
+ npx lee-spec-kit config --project-root /new/fe/path --repo fe --non-interactive
469
+ ```
470
+
471
+ **Options:**
472
+
473
+ | Option | Description |
474
+ | --- | --- |
475
+ | `--dir <dir>` | Target docs directory or project path |
476
+ | `--project-root <path>` | Set projectRoot path |
477
+ | `--repo <repo>` | Target component in multi mode (backward-compatible alias) |
478
+ | `--component <id>` | Target component in multi mode |
479
+ | `--non-interactive` | Fail immediately instead of prompting for user input |
480
+
481
+ > `--non-interactive` is supported by `init`, `feature`, and `config`.
482
+ > For automation, command errors print `[REASON_CODE]` (e.g. `PROMPT_BLOCKED`, `CONFIG_NOT_FOUND`).
483
+ > Text-mode errors also print labeled next options under `πŸ‘‰ Next Options (Error)`.
484
+
485
+ ### Error Codes
486
+
487
+ - This CLI exposes error reason codes for automation:
488
+ - `reasonCode` in JSON responses
489
+ - `[REASON_CODE]` in text error output
490
+ - Error responses also provide labeled next-step suggestions (`A/B/C`):
491
+ - `suggestions` in JSON mode
492
+ - `πŸ‘‰ Next Options (Error)` in text mode
493
+ - Common examples:
494
+ - `PROMPT_BLOCKED`
495
+ - `CONFIG_NOT_FOUND`
496
+ - `DOCS_NOT_FOUND`
497
+ - `LOCK_WAIT_TIMEOUT` / `LOCK_ACQUIRE_TIMEOUT`
498
+ - `INVALID_APPROVAL`, `CONTEXT_STALE`, `EXECUTION_FAILED`, `EXECUTION_NOT_COMMAND`
499
+
500
+ For the full code list and meanings, see `errors.en.md` (English) or `errors.md` (Korean).
501
+
242
502
  ## Generated Structure
243
503
 
244
504
  See the Korean README for the full tree examples and workflow details: `README.md`.
505
+
506
+ Note: generated docs include `agents/custom.md`, `agents/skills/`, and `scripts/` by default.