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 +279 -17
- package/README.md +281 -26
- package/dist/index.js +4196 -1012
- package/package.json +2 -1
- package/templates/en/common/agents/pr-template.md +1 -1
- package/templates/en/common/agents/skills/create-feature.md +3 -2
- package/templates/en/common/agents/skills/execute-task.md +1 -1
- package/templates/en/fullstack/README.md +1 -1
- package/templates/en/fullstack/agents/agents.md +1 -1
- package/templates/en/single/README.md +1 -1
- package/templates/en/single/agents/agents.md +1 -1
- package/templates/ko/common/agents/pr-template.md +1 -1
- package/templates/ko/common/agents/skills/create-feature.md +3 -2
- package/templates/ko/common/agents/skills/execute-task.md +1 -1
- package/templates/ko/fullstack/README.md +1 -1
- package/templates/ko/fullstack/agents/agents.md +1 -1
- package/templates/ko/single/README.md +1 -1
- package/templates/ko/single/agents/agents.md +1 -1
package/README.md
CHANGED
|
@@ -40,6 +40,7 @@
|
|
|
40
40
|
- [주요 기능](#주요-기능)
|
|
41
41
|
- [사용법](#사용법)
|
|
42
42
|
- [설정 파일](#설정-파일)
|
|
43
|
+
- [오류 코드](#오류-코드)
|
|
43
44
|
- [생성되는 구조](#생성되는-구조)
|
|
44
45
|
- [Feature 워크플로우](#feature-워크플로우)
|
|
45
46
|
- [문제 해결](#문제-해결)
|
|
@@ -58,10 +59,13 @@ npx lee-spec-kit feature user-auth
|
|
|
58
59
|
# 3. 진행 상황 및 다음 단계 확인 (AI 에이전트용)
|
|
59
60
|
npx lee-spec-kit context
|
|
60
61
|
|
|
61
|
-
# 4.
|
|
62
|
+
# 4. 워크플로우 대시보드 확인
|
|
63
|
+
npx lee-spec-kit view
|
|
64
|
+
|
|
65
|
+
# 5. 전체 상태 확인
|
|
62
66
|
npx lee-spec-kit status
|
|
63
67
|
|
|
64
|
-
#
|
|
68
|
+
# 6. 문서/Feature 진단
|
|
65
69
|
npx lee-spec-kit doctor
|
|
66
70
|
```
|
|
67
71
|
|
|
@@ -70,7 +74,7 @@ npx lee-spec-kit doctor
|
|
|
70
74
|
### 📁 프로젝트 초기화
|
|
71
75
|
|
|
72
76
|
- 대화형 모드 또는 CLI 옵션으로 프로젝트 설정
|
|
73
|
-
- Single(단일 레포) /
|
|
77
|
+
- Single(단일 레포) / Multi(멀티 컴포넌트) 프로젝트 타입 지원 (`fullstack`는 하위호환 alias)
|
|
74
78
|
- 한국어/영어 템플릿 선택
|
|
75
79
|
|
|
76
80
|
### 🚀 Feature 생성
|
|
@@ -84,6 +88,16 @@ npx lee-spec-kit doctor
|
|
|
84
88
|
- 전체 Feature 진행 상태 한눈에 확인
|
|
85
89
|
- 터미널 출력 또는 마크다운 파일로 저장
|
|
86
90
|
|
|
91
|
+
### 👀 View 대시보드
|
|
92
|
+
|
|
93
|
+
- Context 기반 워크플로우 현황을 한 번에 확인
|
|
94
|
+
- 단일 Feature/전체 Feature 모두 조회 가능
|
|
95
|
+
|
|
96
|
+
### 🔁 Flow 오케스트레이션
|
|
97
|
+
|
|
98
|
+
- `context + status + doctor`를 한 번에 실행/요약
|
|
99
|
+
- 승인/실행 옵션을 그대로 전달해 원자 액션 자동화 가능
|
|
100
|
+
|
|
87
101
|
### 🩺 문서 진단 (Doctor)
|
|
88
102
|
|
|
89
103
|
- docs 구조/설정/Feature 메타데이터를 점검하여 잠재 문제를 빠르게 탐지
|
|
@@ -102,18 +116,31 @@ npx lee-spec-kit doctor
|
|
|
102
116
|
npx lee-spec-kit init
|
|
103
117
|
|
|
104
118
|
# 옵션 지정
|
|
105
|
-
npx lee-spec-kit init --name my-project --type
|
|
119
|
+
npx lee-spec-kit init --name my-project --type multi
|
|
120
|
+
npx lee-spec-kit init --name my-project --type fullstack # alias
|
|
106
121
|
```
|
|
107
122
|
|
|
108
123
|
**옵션:**
|
|
109
124
|
|
|
110
|
-
| 옵션 | 설명
|
|
111
|
-
| ------------------- |
|
|
112
|
-
| `-n, --name <name>` | 프로젝트 이름
|
|
113
|
-
| `-t, --type <type>` | `single` 또는 `fullstack`
|
|
114
|
-
|
|
|
115
|
-
| `-
|
|
116
|
-
|
|
|
125
|
+
| 옵션 | 설명 | 기본값 |
|
|
126
|
+
| ------------------- | -------------------------------------------------------------------- | ------------------------- |
|
|
127
|
+
| `-n, --name <name>` | 프로젝트 이름 | 현재 폴더명 |
|
|
128
|
+
| `-t, --type <type>` | `single` 또는 `multi` (`fullstack` alias 지원) | 대화형 선택 (`--yes`/`--non-interactive`면 `single`) |
|
|
129
|
+
| `--components <list>` | multi 컴포넌트 목록 (쉼표 구분, 예: `fe,be,worker`) | `fe,be` |
|
|
130
|
+
| `-l, --lang <lang>` | `ko` (한국어) 또는 `en` (영어) | `en` |
|
|
131
|
+
| `--workflow <mode>` | 워크플로우 모드: `github`(issue/PR/review 포함) 또는 `local`(로컬 중심) | `github` |
|
|
132
|
+
| `-d, --dir <dir>` | 설치 디렉토리 | `./docs` |
|
|
133
|
+
| `--docs-repo <mode>` | docs 레포 모드 (`embedded` 또는 `standalone`) | `embedded` |
|
|
134
|
+
| `--project-root <path>` | standalone(single) 프로젝트 레포 경로 | - |
|
|
135
|
+
| `--fe-project-root <path>` | standalone(multi) FE 레포 경로 | - |
|
|
136
|
+
| `--be-project-root <path>` | standalone(multi) BE 레포 경로 | - |
|
|
137
|
+
| `--push-docs` | standalone docs 원격 push 사용 (`--docs-remote`와 함께 사용) | `false` |
|
|
138
|
+
| `--docs-remote <url>` | standalone docs 원격 URL (`--push-docs`와 함께 사용) | - |
|
|
139
|
+
| `-y, --yes` | 대화형 입력을 대부분 스킵 (단, 대상 디렉토리가 비어있지 않으면 덮어쓰기 확인은 표시) | - |
|
|
140
|
+
| `-f, --force` | 대상 디렉토리가 비어있지 않아도 확인 없이 덮어쓰기 | `false` |
|
|
141
|
+
| `--non-interactive` | 사용자 입력이 필요하면 프롬프트 대신 즉시 실패 | `false` |
|
|
142
|
+
|
|
143
|
+
> `init`은 docs 생성 후 Git 초기화/커밋(`git init`, `git add`, `git commit`)을 자동 시도합니다. 환경에 따라 자동 커밋이 생략될 수 있습니다.
|
|
117
144
|
|
|
118
145
|
### 새 기능 생성
|
|
119
146
|
|
|
@@ -121,14 +148,30 @@ npx lee-spec-kit init --name my-project --type fullstack
|
|
|
121
148
|
# Single 프로젝트
|
|
122
149
|
npx lee-spec-kit feature user-auth
|
|
123
150
|
|
|
124
|
-
#
|
|
151
|
+
# Multi 프로젝트
|
|
125
152
|
npx lee-spec-kit feature --repo be user-auth
|
|
126
153
|
npx lee-spec-kit feature --repo fe user-profile
|
|
154
|
+
npx lee-spec-kit feature --component worker queue-jobs
|
|
155
|
+
|
|
156
|
+
# Feature ID/설명 지정
|
|
157
|
+
npx lee-spec-kit feature payment --id F123 --desc "결제 플로우 개선"
|
|
127
158
|
```
|
|
128
159
|
|
|
160
|
+
**옵션:**
|
|
161
|
+
|
|
162
|
+
| 옵션 | 설명 | 기본값 |
|
|
163
|
+
| ------------------- | -------------------------------------------- | ----------- |
|
|
164
|
+
| `-r, --repo <repo>` | multi 대상 컴포넌트 (하위호환 alias) | 대화형 선택 |
|
|
165
|
+
| `--component <id>` | multi 대상 컴포넌트 | 대화형 선택 |
|
|
166
|
+
| `--id <id>` | Feature ID (`F001` 형식) | 자동 생성 |
|
|
167
|
+
| `-d, --desc <desc>` | `spec.md`의 목적(설명) 기본 문구 | 빈 문자열 |
|
|
168
|
+
| `--non-interactive` | 사용자 입력이 필요하면 프롬프트 대신 즉시 실패 | `false` |
|
|
169
|
+
| `--json` | JSON 출력 (`featureId`, `featurePath`, `component`) | `false` |
|
|
170
|
+
|
|
129
171
|
### Context 확인 (AI 에이전트 가이드)
|
|
130
172
|
|
|
131
173
|
현재 작업 중인 Feature의 상태와 다음 할 일을 확인합니다. 특히 AI 에이전트가 프로세스를 준수하는 데 유용합니다.
|
|
174
|
+
단일 Feature 상세에서는 다음 작업을 항상 `A/B/C` 옵션으로 표시합니다.
|
|
132
175
|
|
|
133
176
|
```bash
|
|
134
177
|
# 자동 감지 (Git 브랜치 기준)
|
|
@@ -141,18 +184,115 @@ npx lee-spec-kit context user-auth
|
|
|
141
184
|
npx lee-spec-kit context F001
|
|
142
185
|
npx lee-spec-kit context F001-user-auth
|
|
143
186
|
|
|
187
|
+
# multi에서 컴포넌트 지정
|
|
188
|
+
npx lee-spec-kit context --repo fe
|
|
189
|
+
npx lee-spec-kit context --repo worker
|
|
190
|
+
|
|
191
|
+
# 전체/완료 Feature 포함
|
|
192
|
+
npx lee-spec-kit context --all
|
|
193
|
+
npx lee-spec-kit context --done
|
|
194
|
+
|
|
144
195
|
# 에이전트용 JSON 출력
|
|
145
196
|
npx lee-spec-kit context --json
|
|
197
|
+
|
|
198
|
+
# 라벨 승인 선택 (검증만)
|
|
199
|
+
npx lee-spec-kit context F001 --approve A
|
|
200
|
+
|
|
201
|
+
# 라벨 승인 + 단일 명령 실행
|
|
202
|
+
npx lee-spec-kit context F001 --approve "A OK" --execute
|
|
203
|
+
|
|
204
|
+
# 승인 라벨이 instruction-only면 실패 처리
|
|
205
|
+
npx lee-spec-kit context F001 --approve A --execute --execute-strict
|
|
146
206
|
```
|
|
147
207
|
|
|
208
|
+
**옵션:**
|
|
209
|
+
|
|
210
|
+
| 옵션 | 설명 |
|
|
211
|
+
| --------------- | ----------------------------------------------- |
|
|
212
|
+
| `--json` | 에이전트용 JSON 출력 |
|
|
213
|
+
| `--repo <repo>` | multi에서 대상 컴포넌트 지정 (예: `fe`, `be`, `worker`) |
|
|
214
|
+
| `--all` | 자동 감지 실패 시 완료된 Feature까지 포함해서 표시 |
|
|
215
|
+
| `--done` | 완료(workflow-done) Feature만 표시 |
|
|
216
|
+
| `--approve <reply>` | 라벨 승인 응답 (`A` 또는 `A OK`)으로 단일 옵션 선택 |
|
|
217
|
+
| `--execute` | `--approve`로 선택한 옵션이 command일 때 1개만 실행 |
|
|
218
|
+
| `--execute-strict` | `--execute`와 함께 사용 시 instruction-only 옵션이면 실패 |
|
|
219
|
+
|
|
148
220
|
`--json` 출력에는 다음 액션이 `actions` 배열로 포함됩니다.
|
|
149
221
|
|
|
222
|
+
- `reasonCode`: 상태 이유 코드 (`SINGLE_MATCHED`, `MULTIPLE_ACTIVE_FEATURES` 등)
|
|
150
223
|
- `type: "command"`: `scope`(project|docs), `cwd`, `cmd` 제공 (복사하여 붙여넣기 가능한 형태로 `cd ... && git ...` 형태로 출력)
|
|
151
224
|
- `type: "instruction"`: 사람이 수행해야 하는 안내 메시지
|
|
225
|
+
- `actionOptions`: `label`(`A`, `B`, `C`...)과 해당 `action` 매핑 + `summary`/`approvalPrompt`(라벨 설명 템플릿)
|
|
152
226
|
- `category`: 액션 분류 (자동화/반자동용 `approval.mode: "category"`에서 사용)
|
|
153
|
-
- `requiresUserCheck`: 사용자 확인 필요 여부 (에이전트는 **사용자 응답을
|
|
227
|
+
- `requiresUserCheck`: 사용자 확인 필요 여부 (에이전트는 **사용자 응답을 `<라벨>` 또는 `<라벨> OK` 형식(예: `A`, `A OK`)으로 제한**하는 것을 권장 / 설정의 `approval`로 오버라이드 가능)
|
|
228
|
+
- `workflowPolicy`: 현재 완료 조건 정책 (`mode`, `requireIssue`, `requireBranch`, `requirePr`, `requireReview`)
|
|
229
|
+
|
|
230
|
+
또한 `checkPolicy`가 포함되어, 에이전트가 사용자 확인 정책을 적용할 때 참고할 수 있습니다. (`docPath`, `hint`, `token: "<LABEL>"`, `acceptedTokens`, `tokenPattern`, `validLabels`, `requireExplanationBeforeApproval`, `requiredExplanationFields`, `contextVersion`, `config`)
|
|
231
|
+
|
|
232
|
+
오류 응답(`status: "error"`)에는 `reasonCode`와 `suggestions`(라벨형 다음 동작: `A/B/C`)가 포함됩니다. (예: `INVALID_APPROVAL`, `CONTEXT_STALE`, `EXECUTION_FAILED`, `EXECUTION_NOT_COMMAND`)
|
|
233
|
+
|
|
234
|
+
### View 대시보드
|
|
235
|
+
|
|
236
|
+
```bash
|
|
237
|
+
npx lee-spec-kit view
|
|
238
|
+
npx lee-spec-kit view F001
|
|
239
|
+
npx lee-spec-kit view --all
|
|
240
|
+
npx lee-spec-kit view --json
|
|
241
|
+
```
|
|
242
|
+
|
|
243
|
+
**옵션:**
|
|
244
|
+
|
|
245
|
+
| 옵션 | 설명 |
|
|
246
|
+
| --------------- | ----------------------------------------------- |
|
|
247
|
+
| `--json` | 에이전트용 JSON 출력 |
|
|
248
|
+
| `--repo <repo>` | multi에서 대상 컴포넌트 지정 (예: `fe`, `be`, `worker`) |
|
|
249
|
+
| `--all` | 자동 감지 실패 시 완료된 Feature까지 포함해서 표시 |
|
|
250
|
+
| `--done` | 완료(workflow-done) Feature만 표시 |
|
|
251
|
+
|
|
252
|
+
### Flow 오케스트레이션
|
|
253
|
+
|
|
254
|
+
```bash
|
|
255
|
+
npx lee-spec-kit flow
|
|
256
|
+
npx lee-spec-kit flow F001 --approve A
|
|
257
|
+
npx lee-spec-kit flow F001 --approve "A OK" --execute
|
|
258
|
+
npx lee-spec-kit flow --strict
|
|
259
|
+
npx lee-spec-kit flow --json
|
|
260
|
+
```
|
|
261
|
+
|
|
262
|
+
**옵션:**
|
|
263
|
+
|
|
264
|
+
| 옵션 | 설명 |
|
|
265
|
+
| ------------------ | ---- |
|
|
266
|
+
| `--json` | 에이전트용 JSON 출력 |
|
|
267
|
+
| `--repo <repo>` | multi에서 대상 컴포넌트 지정 (예: `fe`, `be`, `worker`) |
|
|
268
|
+
| `--all` | 자동 감지 실패 시 완료된 Feature까지 포함해서 표시 |
|
|
269
|
+
| `--done` | 완료(workflow-done) Feature만 표시 |
|
|
270
|
+
| `--approve <reply>`| context 라벨 승인 응답 전달 (`A` 또는 `A OK`) |
|
|
271
|
+
| `--execute` | 승인한 옵션이 command일 때 실행 |
|
|
272
|
+
| `--execute-strict` | `--execute`와 함께 사용 시 instruction-only 옵션이면 실패 |
|
|
273
|
+
| `--strict` | `status --strict`, `doctor --strict`까지 함께 검사 |
|
|
274
|
+
|
|
275
|
+
### GitHub helper
|
|
276
|
+
|
|
277
|
+
```bash
|
|
278
|
+
# 선택된 Feature 기준 Issue 본문 생성
|
|
279
|
+
npx lee-spec-kit github issue F001
|
|
280
|
+
|
|
281
|
+
# Issue 본문 생성 + 실제 Issue 생성
|
|
282
|
+
npx lee-spec-kit github issue F001 --create --labels enhancement,frontend
|
|
154
283
|
|
|
155
|
-
|
|
284
|
+
# PR 본문 생성
|
|
285
|
+
npx lee-spec-kit github pr F001
|
|
286
|
+
|
|
287
|
+
# PR 본문 생성 + PR 생성 + tasks.md 메타데이터 동기화 + merge 재시도
|
|
288
|
+
npx lee-spec-kit github pr F001 --create --merge --labels enhancement,frontend
|
|
289
|
+
```
|
|
290
|
+
|
|
291
|
+
핵심 동작:
|
|
292
|
+
- Issue/PR helper는 필수 섹션과 관련 문서 경로를 검증합니다.
|
|
293
|
+
- 라벨은 최소 1개 이상 필수입니다.
|
|
294
|
+
- PR helper는 기본적으로 `tasks.md`의 `PR`/`PR Status`를 동기화합니다. (`--no-sync-tasks`로 비활성화)
|
|
295
|
+
- merge 시 head 브랜치가 뒤쳐진 경우 fetch/rebase/force-push 후 재시도합니다.
|
|
156
296
|
|
|
157
297
|
### 상태 확인
|
|
158
298
|
|
|
@@ -160,10 +300,37 @@ npx lee-spec-kit context --json
|
|
|
160
300
|
# 터미널에 출력
|
|
161
301
|
npx lee-spec-kit status
|
|
162
302
|
|
|
303
|
+
# 에이전트용 JSON 출력
|
|
304
|
+
npx lee-spec-kit status --json
|
|
305
|
+
|
|
163
306
|
# 파일로 저장
|
|
164
307
|
npx lee-spec-kit status --write
|
|
308
|
+
|
|
309
|
+
# 중복/누락 ID가 있으면 실패 코드로 종료
|
|
310
|
+
npx lee-spec-kit status --strict
|
|
165
311
|
```
|
|
166
312
|
|
|
313
|
+
**옵션:**
|
|
314
|
+
|
|
315
|
+
| 옵션 | 설명 |
|
|
316
|
+
| -------------- | --------------------------------------------- |
|
|
317
|
+
| `--json` | 에이전트용 JSON 출력 |
|
|
318
|
+
| `-w, --write` | `features/status.md` 파일 생성 |
|
|
319
|
+
| `-s, --strict` | 중복/누락 Feature ID 발견 시 종료 코드 1 반환 |
|
|
320
|
+
|
|
321
|
+
상태값은 구현 완료와 워크플로우 완료를 구분합니다.
|
|
322
|
+
- `DONE`: 태스크는 모두 완료됐지만 워크플로우 요구사항이 완전히 충족되진 않음
|
|
323
|
+
- `WORKFLOW_DONE`: 구현 + 워크플로우 요구사항까지 모두 충족
|
|
324
|
+
|
|
325
|
+
### 공통 옵션
|
|
326
|
+
|
|
327
|
+
```bash
|
|
328
|
+
# 도움말 배너 숨김
|
|
329
|
+
npx lee-spec-kit --no-banner --help
|
|
330
|
+
```
|
|
331
|
+
|
|
332
|
+
또는 환경변수 `LEE_SPEC_KIT_NO_BANNER=1`로 배너 출력을 비활성화할 수 있습니다.
|
|
333
|
+
|
|
167
334
|
### 문서 진단 (Doctor)
|
|
168
335
|
|
|
169
336
|
docs 구조 및 Feature 메타데이터(중복 ID, 누락된 파일/상태, 플레이스홀더 잔존 등)를 점검합니다.
|
|
@@ -177,8 +344,24 @@ npx lee-spec-kit doctor --strict
|
|
|
177
344
|
|
|
178
345
|
# 에이전트용 JSON 출력
|
|
179
346
|
npx lee-spec-kit doctor --json
|
|
347
|
+
|
|
348
|
+
# 안전한 자동 수정 적용
|
|
349
|
+
npx lee-spec-kit doctor --fix
|
|
350
|
+
|
|
351
|
+
# 수정 예정 항목만 미리 확인 (파일 미변경)
|
|
352
|
+
npx lee-spec-kit doctor --fix --dry-run
|
|
353
|
+
|
|
354
|
+
# decisions.md 플레이스홀더 진단 레벨 조정
|
|
355
|
+
npx lee-spec-kit doctor --decisions-placeholders off
|
|
356
|
+
npx lee-spec-kit doctor --decisions-placeholders info
|
|
357
|
+
npx lee-spec-kit doctor --decisions-placeholders warn
|
|
180
358
|
```
|
|
181
359
|
|
|
360
|
+
- `--decisions-placeholders <mode>`
|
|
361
|
+
- `off`: `decisions.md` 플레이스홀더를 진단에서 제외
|
|
362
|
+
- `info` (기본): 정보 레벨로만 보고 (strict 실패 대상 아님)
|
|
363
|
+
- `warn`: 경고로 보고
|
|
364
|
+
|
|
182
365
|
### 템플릿 업데이트
|
|
183
366
|
|
|
184
367
|
기본 동작은 `docs/` 작업트리에 변경사항이 없을 때만 업데이트를 진행하며, 이 경우 변경된 파일은 확인 없이 덮어씁니다.
|
|
@@ -214,6 +397,7 @@ npx lee-spec-kit update --force
|
|
|
214
397
|
"lang": "ko",
|
|
215
398
|
"createdAt": "YYYY-MM-DD",
|
|
216
399
|
"docsRepo": "embedded",
|
|
400
|
+
"workflow": { "mode": "github", "codeDirtyScope": "auto" },
|
|
217
401
|
"pr": { "screenshots": { "upload": false } },
|
|
218
402
|
"approval": { "mode": "builtin" }
|
|
219
403
|
}
|
|
@@ -222,13 +406,15 @@ npx lee-spec-kit update --force
|
|
|
222
406
|
| 필드 | 설명 |
|
|
223
407
|
| ------------- | --------------------------------------- |
|
|
224
408
|
| `projectName` | 프로젝트 이름 |
|
|
225
|
-
| `projectType` | `single` 또는 `fullstack`
|
|
409
|
+
| `projectType` | `single` 또는 `multi` (`fullstack` alias 지원) |
|
|
410
|
+
| `components` | (multi만) 컴포넌트 목록 (예: `["fe","be","worker"]`) |
|
|
226
411
|
| `lang` | `ko` 또는 `en` |
|
|
227
412
|
| `createdAt` | 생성 날짜 |
|
|
228
413
|
| `docsRepo` | `embedded` 또는 `standalone` |
|
|
229
414
|
| `pushDocs` | (standalone만) docs 레포를 별도 Git으로 관리/푸시할지 여부 |
|
|
230
415
|
| `docsRemote` | (standalone+pushDocs) docs 레포 remote URL |
|
|
231
|
-
| `projectRoot` | (standalone만) 프로젝트 레포지토리 경로 (single: string,
|
|
416
|
+
| `projectRoot` | (standalone만) 프로젝트 레포지토리 경로 (single: string, multi: `{ [component]: path }`) |
|
|
417
|
+
| `workflow` | (선택) 워크플로우 요구사항 정책 (`github`/`local`, `codeDirtyScope`) |
|
|
232
418
|
| `pr` | (선택) PR 결과물 정책 (예: 스크린샷 업로드 여부) |
|
|
233
419
|
| `approval` | (선택) `context` 출력의 `[확인 필요]`/`requiresUserCheck` 정책 오버라이드 (자동화/반자동용) |
|
|
234
420
|
|
|
@@ -243,11 +429,37 @@ npx lee-spec-kit update --force
|
|
|
243
429
|
|
|
244
430
|
- 텍스트 출력의 `[확인 필요]` 표시
|
|
245
431
|
- `context --json`의 `actions[].requiresUserCheck`
|
|
246
|
-
- `checkPolicy.token` (`context --json`): 승인 토큰 (
|
|
432
|
+
- `checkPolicy.token` (`context --json`): 승인 토큰 형식 (`<LABEL>`)
|
|
433
|
+
- `checkPolicy.acceptedTokens`: 허용되는 승인 응답 템플릿 (예: `["<LABEL>", "<LABEL> OK"]`)
|
|
434
|
+
- `checkPolicy.tokenPattern`: 승인 응답 검증용 정규식
|
|
435
|
+
- `checkPolicy.validLabels`: 현재 선택 가능한 라벨 목록 (`A`, `B`, `C`...)
|
|
436
|
+
- `checkPolicy.requireExplanationBeforeApproval`: 승인 요청 전에 라벨별 설명을 포함해야 함
|
|
437
|
+
- `checkPolicy.requiredExplanationFields`: 라벨 설명에 사용할 필드 목록 (예: `actionOptions[].summary`)
|
|
438
|
+
- `checkPolicy.contextVersion`: stale context 검증용 스냅샷 해시
|
|
247
439
|
|
|
248
440
|
> 실제 명령 실행을 강제/차단하는 기능은 아닙니다. (에이전트가 참고하도록 신호를 제공)
|
|
249
441
|
> 기존 설정에 `approval`이 없으면 `builtin`으로 동작합니다. (마이그레이션 불필요)
|
|
250
|
-
> `requiresUserCheck: true`인 액션은 에이전트가 사용자로부터 **정확히 `OK`
|
|
442
|
+
> `requiresUserCheck: true`인 액션은 에이전트가 사용자로부터 **정확히 `<라벨>` 또는 `<라벨> OK` 응답(예: `A`, `A OK`)**을 받은 뒤 진행하는 것을 권장합니다.
|
|
443
|
+
|
|
444
|
+
### workflow (완료 조건 정책)
|
|
445
|
+
|
|
446
|
+
- `workflow.mode: "github"` (기본): Issue/브랜치/PR/리뷰 단계를 포함한 전체 워크플로우를 완료 조건으로 사용
|
|
447
|
+
- `workflow.mode: "local"`: 로컬 중심 워크플로우로 동작하며 Issue/브랜치/PR/리뷰 단계를 필수로 요구하지 않음
|
|
448
|
+
- local 모드로 생성한 Feature 템플릿은 기본적으로 Issue/PR 중심 섹션을 축소합니다.
|
|
449
|
+
- `workflow.codeDirtyScope`:
|
|
450
|
+
- `repo`: 프로젝트 레포 전체 변경으로 코드 미커밋 여부를 판정
|
|
451
|
+
- `component`: 현재 Feature 컴포넌트 경로 변경만 판정 (multi 권장)
|
|
452
|
+
- `auto`: `single => repo`, `multi => component`
|
|
453
|
+
- `workflow.componentPaths`(선택): component 판정 경로를 컴포넌트별로 명시 (예: `"web": ["apps/web", "packages/web-ui"]`)
|
|
454
|
+
- 하위 호환: 값이 없으면 기존 동작인 `repo`로 처리
|
|
455
|
+
|
|
456
|
+
예시:
|
|
457
|
+
|
|
458
|
+
```json
|
|
459
|
+
{
|
|
460
|
+
"workflow": { "mode": "local", "codeDirtyScope": "auto" }
|
|
461
|
+
}
|
|
462
|
+
```
|
|
251
463
|
|
|
252
464
|
#### 모드
|
|
253
465
|
|
|
@@ -302,12 +514,12 @@ npx lee-spec-kit update --force
|
|
|
302
514
|
}
|
|
303
515
|
```
|
|
304
516
|
|
|
305
|
-
**
|
|
517
|
+
**Multi 프로젝트:**
|
|
306
518
|
|
|
307
519
|
```json
|
|
308
520
|
{
|
|
309
521
|
"projectName": "my-project",
|
|
310
|
-
"projectType": "
|
|
522
|
+
"projectType": "multi",
|
|
311
523
|
"lang": "ko",
|
|
312
524
|
"createdAt": "YYYY-MM-DD",
|
|
313
525
|
"docsRepo": "standalone",
|
|
@@ -325,14 +537,49 @@ npx lee-spec-kit update --force
|
|
|
325
537
|
# 현재 설정 확인
|
|
326
538
|
npx lee-spec-kit config
|
|
327
539
|
|
|
540
|
+
# 여러 docs 경로가 있을 때 대상 지정
|
|
541
|
+
npx lee-spec-kit config --dir ./docs2
|
|
542
|
+
|
|
328
543
|
# projectRoot 수정 (Single)
|
|
329
544
|
npx lee-spec-kit config --project-root /new/path
|
|
545
|
+
npx lee-spec-kit config --dir ./docs2 --project-root /new/path
|
|
330
546
|
|
|
331
|
-
# projectRoot 수정 (
|
|
547
|
+
# projectRoot 수정 (Multi)
|
|
332
548
|
npx lee-spec-kit config --project-root /new/fe/path --repo fe
|
|
333
549
|
npx lee-spec-kit config --project-root /new/be/path --repo be
|
|
550
|
+
npx lee-spec-kit config --project-root /new/worker/path --component worker
|
|
551
|
+
|
|
552
|
+
# 비대화형 모드 (필수 옵션 누락 시 즉시 실패)
|
|
553
|
+
npx lee-spec-kit config --project-root /new/fe/path --repo fe --non-interactive
|
|
334
554
|
```
|
|
335
555
|
|
|
556
|
+
**옵션:**
|
|
557
|
+
|
|
558
|
+
| 옵션 | 설명 |
|
|
559
|
+
| -------------------- | ---- |
|
|
560
|
+
| `--dir <dir>` | 대상 docs 디렉터리 또는 프로젝트 경로 지정 |
|
|
561
|
+
| `--project-root <path>` | projectRoot 경로 설정 |
|
|
562
|
+
| `--repo <repo>` | multi 대상 컴포넌트(하위호환 alias) |
|
|
563
|
+
| `--component <id>` | multi 대상 컴포넌트 |
|
|
564
|
+
| `--non-interactive` | 사용자 입력이 필요하면 프롬프트 대신 즉시 실패 |
|
|
565
|
+
|
|
566
|
+
> `--non-interactive`는 `init`, `feature`, `config`에서 지원됩니다.
|
|
567
|
+
> 오류 시 출력되는 `[REASON_CODE]` 형식(`PROMPT_BLOCKED`, `CONFIG_NOT_FOUND` 등)은 자동화 분기용으로 사용할 수 있습니다.
|
|
568
|
+
> 또한 텍스트 모드 오류에는 `👉 Next Options (Error)`로 `A/B/C` 제안이 함께 출력됩니다.
|
|
569
|
+
|
|
570
|
+
## 오류 코드
|
|
571
|
+
|
|
572
|
+
- 이 CLI는 자동화 분기를 위해 에러에 `reasonCode`(JSON) 또는 `[REASON_CODE]`(텍스트)를 제공합니다.
|
|
573
|
+
- 오류 시 다음 동작 제안이 `A/B/C` 라벨로 함께 제공됩니다. (JSON: `suggestions`, 텍스트: `👉 Next Options (Error)`)
|
|
574
|
+
- 대표 코드:
|
|
575
|
+
- `PROMPT_BLOCKED`: 비대화형 모드에서 사용자 입력이 필요함
|
|
576
|
+
- `CONFIG_NOT_FOUND`: `.lee-spec-kit.json`을 찾지 못함
|
|
577
|
+
- `DOCS_NOT_FOUND`: docs 구조를 찾지 못함
|
|
578
|
+
- `LOCK_WAIT_TIMEOUT` / `LOCK_ACQUIRE_TIMEOUT`: 락 대기/획득 타임아웃
|
|
579
|
+
- `INVALID_APPROVAL`, `CONTEXT_STALE`, `EXECUTION_FAILED`, `EXECUTION_NOT_COMMAND`: `context --approve/--execute` 흐름 오류
|
|
580
|
+
|
|
581
|
+
상세 코드 목록과 의미는 `errors.md`(한국어), `errors.en.md`(English)를 참고하세요.
|
|
582
|
+
|
|
336
583
|
## 생성되는 구조
|
|
337
584
|
|
|
338
585
|
### Fullstack (FE/BE 분리)
|
|
@@ -343,13 +590,17 @@ docs/
|
|
|
343
590
|
├── agents/
|
|
344
591
|
│ ├── agents.md # 에이전트 운영 규칙
|
|
345
592
|
│ ├── constitution.md # 프로젝트 원칙
|
|
593
|
+
│ ├── custom.md # 프로젝트별 추가 규칙
|
|
346
594
|
│ ├── git-workflow.md # Git 자동화 규칙
|
|
347
595
|
│ ├── issue-template.md
|
|
348
|
-
│
|
|
596
|
+
│ ├── pr-template.md
|
|
597
|
+
│ └── skills/ # 에이전트 실행 가이드
|
|
349
598
|
├── designs/ # 디자인 참고 자료
|
|
350
599
|
├── ideas/ # 아이디어/To-do (Feature 승격 전)
|
|
351
600
|
├── prd/
|
|
352
601
|
│ └── README.md
|
|
602
|
+
├── scripts/
|
|
603
|
+
│ └── README.md
|
|
353
604
|
└── features/
|
|
354
605
|
├── README.md
|
|
355
606
|
├── feature-base/ # 공용 템플릿
|
|
@@ -363,9 +614,12 @@ docs/
|
|
|
363
614
|
docs/
|
|
364
615
|
├── README.md
|
|
365
616
|
├── agents/
|
|
617
|
+
│ ├── custom.md
|
|
618
|
+
│ └── skills/
|
|
366
619
|
├── designs/
|
|
367
620
|
├── ideas/
|
|
368
621
|
├── prd/
|
|
622
|
+
├── scripts/
|
|
369
623
|
└── features/
|
|
370
624
|
├── feature-base/
|
|
371
625
|
└── F001-feature/ # 개별 기능
|
|
@@ -391,7 +645,8 @@ flowchart LR
|
|
|
391
645
|
| 프로젝트 타입 | 설명 |
|
|
392
646
|
| ------------- | -------------------------------------------- |
|
|
393
647
|
| `single` | 단일 레포 프로젝트 (모노레포 또는 단일 스택) |
|
|
394
|
-
| `
|
|
648
|
+
| `multi` | 멀티 컴포넌트 프로젝트 (예: FE/BE/worker) |
|
|
649
|
+
| `fullstack` | `multi`의 하위호환 alias |
|
|
395
650
|
|
|
396
651
|
## 문제 해결
|
|
397
652
|
|
|
@@ -414,10 +669,10 @@ flowchart LR
|
|
|
414
669
|
</details>
|
|
415
670
|
|
|
416
671
|
<details>
|
|
417
|
-
<summary><strong>
|
|
672
|
+
<summary><strong>Multi 프로젝트에서 --repo/--component 옵션이 동작하지 않습니다</strong></summary>
|
|
418
673
|
|
|
419
|
-
- `.lee-spec-kit.json`의 `projectType`이 `fullstack
|
|
420
|
-
-
|
|
674
|
+
- `.lee-spec-kit.json`의 `projectType`이 `multi`(또는 구버전 `fullstack`)인지 확인하세요
|
|
675
|
+
- `.lee-spec-kit.json`의 `components` 목록에 해당 값이 포함되어 있는지 확인하세요
|
|
421
676
|
|
|
422
677
|
</details>
|
|
423
678
|
|