sdd-tool 0.3.0 → 0.5.0
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.md +320 -74
- package/dist/cli/index.js +4521 -1701
- package/dist/cli/index.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/package.json +10 -9
package/README.md
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
**Spec-Driven Development CLI** - 명세 기반 개발을 위한 통합 CLI 도구
|
|
4
4
|
|
|
5
|
+
[](https://www.npmjs.com/package/sdd-tool)
|
|
5
6
|
[](https://nodejs.org/)
|
|
6
7
|
[](https://www.typescriptlang.org/)
|
|
7
8
|
[](LICENSE)
|
|
@@ -28,7 +29,7 @@ npm install -g sdd-tool
|
|
|
28
29
|
pnpm add -g sdd-tool
|
|
29
30
|
|
|
30
31
|
# 또는 로컬에서 실행
|
|
31
|
-
git clone
|
|
32
|
+
git clone https://github.com/JakeB-5/sdd-tool.git
|
|
32
33
|
cd sdd-tool
|
|
33
34
|
pnpm install
|
|
34
35
|
pnpm run build
|
|
@@ -40,13 +41,16 @@ pnpm run build
|
|
|
40
41
|
# 1. 프로젝트 초기화
|
|
41
42
|
sdd init
|
|
42
43
|
|
|
43
|
-
# 2.
|
|
44
|
+
# 2. 워크플로우 시작 (통합 진입점)
|
|
45
|
+
sdd start
|
|
46
|
+
|
|
47
|
+
# 3. 새 기능 생성
|
|
44
48
|
sdd new user-auth --title "사용자 인증" --all
|
|
45
49
|
|
|
46
|
-
#
|
|
50
|
+
# 4. 스펙 검증
|
|
47
51
|
sdd validate
|
|
48
52
|
|
|
49
|
-
#
|
|
53
|
+
# 5. 프로젝트 상태 확인
|
|
50
54
|
sdd status
|
|
51
55
|
```
|
|
52
56
|
|
|
@@ -72,13 +76,17 @@ sdd init --force # 기존 파일 덮어쓰기
|
|
|
72
76
|
└── templates/ # 템플릿 파일
|
|
73
77
|
.claude/
|
|
74
78
|
└── commands/ # Claude 슬래시 커맨드
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
### `sdd start`
|
|
82
|
+
|
|
83
|
+
통합 워크플로우 진입점입니다.
|
|
84
|
+
|
|
85
|
+
```bash
|
|
86
|
+
sdd start # 상태 확인 및 워크플로우 메뉴
|
|
87
|
+
sdd start --status # 상태만 표시
|
|
88
|
+
sdd start --workflow new-feature # 특정 워크플로우 시작
|
|
89
|
+
sdd start --workflow change-spec # 변경 워크플로우
|
|
82
90
|
```
|
|
83
91
|
|
|
84
92
|
### `sdd new`
|
|
@@ -92,12 +100,17 @@ sdd new <feature-name>
|
|
|
92
100
|
# 옵션
|
|
93
101
|
sdd new auth --title "인증 기능" --description "사용자 인증"
|
|
94
102
|
sdd new auth --all # spec, plan, tasks, checklist 모두 생성
|
|
103
|
+
sdd new auth --numbered # 자동 번호 부여 (feature/001-auth)
|
|
95
104
|
sdd new auth --no-branch # Git 브랜치 생성 안 함
|
|
96
105
|
|
|
97
106
|
# 서브커맨드
|
|
98
107
|
sdd new plan <feature> # 구현 계획 생성
|
|
99
108
|
sdd new tasks <feature> # 작업 분해 생성
|
|
100
109
|
sdd new checklist # 워크플로우 체크리스트 생성
|
|
110
|
+
sdd new counter # 기능 번호 카운터 관리
|
|
111
|
+
sdd new counter --peek # 다음 번호 확인
|
|
112
|
+
sdd new counter --history # 생성 이력
|
|
113
|
+
sdd new counter --set <n> # 번호 설정
|
|
101
114
|
```
|
|
102
115
|
|
|
103
116
|
### `sdd validate`
|
|
@@ -108,6 +121,9 @@ sdd new checklist # 워크플로우 체크리스트 생성
|
|
|
108
121
|
sdd validate # 전체 검증
|
|
109
122
|
sdd validate path/to/spec.md # 특정 파일 검증
|
|
110
123
|
sdd validate --strict # 엄격 모드 (경고도 에러)
|
|
124
|
+
sdd validate --check-links # 참조 링크 유효성 검사
|
|
125
|
+
sdd validate --constitution # Constitution 위반 검사 (기본값)
|
|
126
|
+
sdd validate --no-constitution # Constitution 검사 스킵
|
|
111
127
|
sdd validate --quiet # 조용한 모드
|
|
112
128
|
```
|
|
113
129
|
|
|
@@ -115,6 +131,24 @@ sdd validate --quiet # 조용한 모드
|
|
|
115
131
|
- YAML frontmatter 존재 및 형식
|
|
116
132
|
- RFC 2119 키워드 사용
|
|
117
133
|
- GIVEN-WHEN-THEN 시나리오 포함
|
|
134
|
+
- 참조 링크 유효성 (--check-links)
|
|
135
|
+
- Constitution 원칙 위반 (--constitution)
|
|
136
|
+
|
|
137
|
+
### `sdd constitution`
|
|
138
|
+
|
|
139
|
+
프로젝트 Constitution(헌법)을 관리합니다.
|
|
140
|
+
|
|
141
|
+
```bash
|
|
142
|
+
sdd constitution # Constitution 표시
|
|
143
|
+
sdd constitution show # Constitution 내용 표시
|
|
144
|
+
sdd constitution version # 버전만 표시
|
|
145
|
+
sdd constitution validate # 형식 검증
|
|
146
|
+
sdd constitution history # 변경 이력 조회
|
|
147
|
+
sdd constitution bump # 버전 업데이트
|
|
148
|
+
sdd constitution bump --major # 주요 변경 (원칙 삭제 등)
|
|
149
|
+
sdd constitution bump --minor # 기능 추가
|
|
150
|
+
sdd constitution bump --patch # 문구 수정
|
|
151
|
+
```
|
|
118
152
|
|
|
119
153
|
### `sdd change`
|
|
120
154
|
|
|
@@ -122,10 +156,13 @@ sdd validate --quiet # 조용한 모드
|
|
|
122
156
|
|
|
123
157
|
```bash
|
|
124
158
|
sdd change # 새 변경 제안 생성
|
|
125
|
-
sdd change
|
|
126
|
-
sdd change
|
|
127
|
-
sdd change
|
|
128
|
-
sdd change
|
|
159
|
+
sdd change -t "제목" # 제목과 함께 생성
|
|
160
|
+
sdd change -l # 진행 중인 변경 목록
|
|
161
|
+
sdd change <id> # 특정 변경 조회
|
|
162
|
+
sdd change diff <id> # 변경 내용 diff
|
|
163
|
+
sdd change validate <id> # 변경 제안 검증
|
|
164
|
+
sdd change apply <id> # 변경 적용
|
|
165
|
+
sdd change archive <id> # 변경 아카이브
|
|
129
166
|
```
|
|
130
167
|
|
|
131
168
|
### `sdd impact`
|
|
@@ -133,9 +170,124 @@ sdd change archive CHG-001 # 변경 아카이브
|
|
|
133
170
|
스펙 변경의 영향도를 분석합니다.
|
|
134
171
|
|
|
135
172
|
```bash
|
|
173
|
+
# 기본 영향도 분석
|
|
136
174
|
sdd impact <feature> # 특정 기능 영향도 분석
|
|
137
|
-
sdd impact --graph
|
|
175
|
+
sdd impact <feature> --graph # 의존성 그래프 출력 (Mermaid)
|
|
138
176
|
sdd impact <feature> --json # JSON 형식 출력
|
|
177
|
+
|
|
178
|
+
# 코드 영향도 분석
|
|
179
|
+
sdd impact <feature> --code # 스펙 변경이 코드에 미치는 영향 분석
|
|
180
|
+
sdd impact <feature> --code --json # JSON 형식
|
|
181
|
+
|
|
182
|
+
# 리포트 및 변경 분석
|
|
183
|
+
sdd impact report # 전체 프로젝트 리포트
|
|
184
|
+
sdd impact report --json # JSON 형식 리포트
|
|
185
|
+
sdd impact change <id> # 변경 제안 영향도 분석
|
|
186
|
+
|
|
187
|
+
# What-if 시뮬레이션
|
|
188
|
+
sdd impact simulate <feature> <proposal> # 변경 전 영향도 예측
|
|
189
|
+
sdd impact simulate auth change-001 # 예시
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
코드 영향도 분석은 다음 방법으로 스펙-코드 연결을 탐지합니다:
|
|
193
|
+
- 주석 참조: `// spec: feature-id`, `/* spec: feature-id */`, `@spec feature-id`
|
|
194
|
+
- 파일명/디렉토리명 매칭: `auth.ts` ↔ `auth` 스펙
|
|
195
|
+
- 매핑 설정: `.sdd/code-mapping.json` 파일 사용
|
|
196
|
+
|
|
197
|
+
### `sdd transition`
|
|
198
|
+
|
|
199
|
+
워크플로우 간 전환을 수행합니다.
|
|
200
|
+
|
|
201
|
+
```bash
|
|
202
|
+
sdd transition new-to-change <spec-id> # new → change 전환
|
|
203
|
+
sdd transition change-to-new <change-id> # change → new 전환
|
|
204
|
+
sdd transition guide # 전환 가이드
|
|
205
|
+
```
|
|
206
|
+
|
|
207
|
+
### `sdd watch`
|
|
208
|
+
|
|
209
|
+
스펙 파일 변경을 실시간으로 감시합니다.
|
|
210
|
+
|
|
211
|
+
```bash
|
|
212
|
+
sdd watch # 기본 실행 (자동 검증 포함)
|
|
213
|
+
sdd watch --no-validate # 자동 검증 비활성화
|
|
214
|
+
sdd watch --impact # 영향도 분석 포함
|
|
215
|
+
sdd watch --quiet # 성공 시 출력 생략
|
|
216
|
+
sdd watch --debounce 1000 # 디바운스 시간 설정 (ms)
|
|
217
|
+
```
|
|
218
|
+
|
|
219
|
+
Ctrl+C로 종료 시 세션 통계가 표시됩니다.
|
|
220
|
+
|
|
221
|
+
### `sdd quality`
|
|
222
|
+
|
|
223
|
+
스펙 품질을 분석하고 점수를 산출합니다.
|
|
224
|
+
|
|
225
|
+
```bash
|
|
226
|
+
sdd quality # 전체 프로젝트 분석
|
|
227
|
+
sdd quality <feature> # 개별 스펙 분석
|
|
228
|
+
sdd quality --all # 전체 분석 (명시적)
|
|
229
|
+
sdd quality --json # JSON 형식 출력
|
|
230
|
+
sdd quality --min-score 70 # 최소 점수 기준 (미달 시 에러)
|
|
231
|
+
```
|
|
232
|
+
|
|
233
|
+
품질 평가 기준:
|
|
234
|
+
- RFC 2119 키워드 사용 (SHALL, MUST, SHOULD, MAY)
|
|
235
|
+
- GIVEN-WHEN-THEN 시나리오 존재
|
|
236
|
+
- 요구사항 섹션 존재
|
|
237
|
+
- 의존성 명시
|
|
238
|
+
- 구조 완성도 (제목/설명/목표/범위 등)
|
|
239
|
+
- Constitution 버전 참조
|
|
240
|
+
- 내부 링크 무결성
|
|
241
|
+
- 메타데이터 완성도
|
|
242
|
+
|
|
243
|
+
등급: A (90%+), B (80%+), C (70%+), D (60%+), F (<60%)
|
|
244
|
+
|
|
245
|
+
### `sdd report`
|
|
246
|
+
|
|
247
|
+
스펙 리포트를 생성합니다.
|
|
248
|
+
|
|
249
|
+
```bash
|
|
250
|
+
sdd report # HTML 리포트 (기본)
|
|
251
|
+
sdd report --format markdown # Markdown 형식
|
|
252
|
+
sdd report --format json # JSON 형식
|
|
253
|
+
sdd report -o report.html # 출력 경로 지정
|
|
254
|
+
sdd report --title "My Report" # 리포트 제목 설정
|
|
255
|
+
sdd report --no-quality # 품질 분석 제외
|
|
256
|
+
sdd report --no-validation # 검증 결과 제외
|
|
257
|
+
```
|
|
258
|
+
|
|
259
|
+
### `sdd migrate`
|
|
260
|
+
|
|
261
|
+
기존 문서나 외부 SDD 도구에서 마이그레이션합니다.
|
|
262
|
+
|
|
263
|
+
```bash
|
|
264
|
+
# 문서 마이그레이션
|
|
265
|
+
sdd migrate docs <source> # 문서 마이그레이션
|
|
266
|
+
sdd migrate analyze <file> # 문서 분석
|
|
267
|
+
sdd migrate scan [dir] # 디렉토리 스캔
|
|
268
|
+
|
|
269
|
+
# 외부 도구 감지 및 마이그레이션
|
|
270
|
+
sdd migrate detect # 외부 SDD 도구 감지
|
|
271
|
+
sdd migrate openspec [source] # OpenSpec에서 마이그레이션
|
|
272
|
+
sdd migrate speckit [source] # Spec Kit에서 마이그레이션
|
|
273
|
+
sdd migrate openspec --dry-run # 미리보기 모드
|
|
274
|
+
sdd migrate speckit --overwrite # 기존 스펙 덮어쓰기
|
|
275
|
+
```
|
|
276
|
+
|
|
277
|
+
지원 외부 도구:
|
|
278
|
+
- **OpenSpec**: `openspec/` 디렉토리, AGENTS.md, specs/changes 구조
|
|
279
|
+
- **Spec Kit**: `.specify/` 디렉토리, memory/constitution.md
|
|
280
|
+
|
|
281
|
+
### `sdd cicd`
|
|
282
|
+
|
|
283
|
+
CI/CD 파이프라인을 설정합니다.
|
|
284
|
+
|
|
285
|
+
```bash
|
|
286
|
+
sdd cicd setup # GitHub Actions 설정
|
|
287
|
+
sdd cicd setup gitlab # GitLab CI 설정
|
|
288
|
+
sdd cicd setup all # 모든 플랫폼 설정
|
|
289
|
+
sdd cicd hooks # Git hooks 설정
|
|
290
|
+
sdd cicd check # CI 검증 실행
|
|
139
291
|
```
|
|
140
292
|
|
|
141
293
|
### `sdd status`
|
|
@@ -167,14 +319,8 @@ AI 도구용 슬래시 커맨드 프롬프트를 출력합니다.
|
|
|
167
319
|
```bash
|
|
168
320
|
sdd prompt # 사용 가능한 명령어 목록
|
|
169
321
|
sdd prompt --list # 명령어 목록
|
|
170
|
-
sdd prompt change # /sdd.change 프롬프트
|
|
171
322
|
sdd prompt new # /sdd.new 프롬프트
|
|
172
|
-
sdd prompt
|
|
173
|
-
sdd prompt tasks # /sdd.tasks 프롬프트
|
|
174
|
-
sdd prompt apply # /sdd.apply 프롬프트
|
|
175
|
-
sdd prompt archive # /sdd.archive 프롬프트
|
|
176
|
-
sdd prompt impact # /sdd.impact 프롬프트
|
|
177
|
-
sdd prompt validate # /sdd.validate 프롬프트
|
|
323
|
+
sdd prompt change # /sdd.change 프롬프트
|
|
178
324
|
```
|
|
179
325
|
|
|
180
326
|
## 워크플로우
|
|
@@ -182,33 +328,47 @@ sdd prompt validate # /sdd.validate 프롬프트
|
|
|
182
328
|
### 신규 기능 개발
|
|
183
329
|
|
|
184
330
|
```
|
|
185
|
-
1. sdd
|
|
186
|
-
2.
|
|
187
|
-
3.
|
|
188
|
-
4.
|
|
189
|
-
5.
|
|
190
|
-
6.
|
|
331
|
+
1. sdd start # 워크플로우 시작
|
|
332
|
+
2. sdd new <feature> --all # 기능 생성 (spec, plan, tasks)
|
|
333
|
+
3. spec.md 작성 # 요구사항 정의
|
|
334
|
+
4. sdd validate # 명세 검증
|
|
335
|
+
5. plan.md 작성 # 구현 계획
|
|
336
|
+
6. tasks.md 기반 구현 # 작업별 구현
|
|
337
|
+
7. sdd change archive # 완료 후 아카이브
|
|
191
338
|
```
|
|
192
339
|
|
|
193
340
|
### 기존 기능 변경
|
|
194
341
|
|
|
195
342
|
```
|
|
196
|
-
1. sdd change
|
|
343
|
+
1. sdd change -t "변경 제목" # 변경 제안 생성
|
|
197
344
|
2. proposal.md 작성 # 변경 내용 정의
|
|
198
345
|
3. sdd impact <feature> # 영향도 분석
|
|
199
|
-
4.
|
|
200
|
-
5. sdd change apply
|
|
201
|
-
6. sdd change archive
|
|
346
|
+
4. sdd change validate <id> # 검증
|
|
347
|
+
5. sdd change apply <id> # 변경 적용
|
|
348
|
+
6. sdd change archive <id> # 아카이브
|
|
349
|
+
```
|
|
350
|
+
|
|
351
|
+
### 워크플로우 전환
|
|
352
|
+
|
|
353
|
+
작업 중 워크플로우를 변경해야 할 때:
|
|
354
|
+
|
|
355
|
+
```
|
|
356
|
+
# 새 기능 → 변경 제안 (기존 스펙과 중복 발견 시)
|
|
357
|
+
sdd transition new-to-change <spec-id>
|
|
358
|
+
|
|
359
|
+
# 변경 → 새 기능 (범위가 커서 분리 필요 시)
|
|
360
|
+
sdd transition change-to-new <change-id>
|
|
202
361
|
```
|
|
203
362
|
|
|
204
363
|
## Claude 슬래시 커맨드
|
|
205
364
|
|
|
206
365
|
`sdd init` 실행 시 `.claude/commands/` 디렉토리에 Claude Code용 슬래시 커맨드가 자동 생성됩니다.
|
|
207
366
|
|
|
208
|
-
###
|
|
367
|
+
### 기본 워크플로우 커맨드
|
|
209
368
|
|
|
210
369
|
| 커맨드 | 설명 |
|
|
211
370
|
|--------|------|
|
|
371
|
+
| `/sdd.start` | 통합 진입점 - 워크플로우 시작 |
|
|
212
372
|
| `/sdd.new` | 새 기능 명세 작성 |
|
|
213
373
|
| `/sdd.plan` | 구현 계획 작성 |
|
|
214
374
|
| `/sdd.tasks` | 작업 분해 |
|
|
@@ -216,64 +376,53 @@ sdd prompt validate # /sdd.validate 프롬프트
|
|
|
216
376
|
| `/sdd.validate` | 스펙 형식 검증 |
|
|
217
377
|
| `/sdd.status` | 프로젝트 상태 확인 |
|
|
218
378
|
| `/sdd.change` | 변경 제안 작성 |
|
|
379
|
+
| `/sdd.constitution` | Constitution 관리 |
|
|
380
|
+
|
|
381
|
+
### 고급 커맨드
|
|
382
|
+
|
|
383
|
+
| 커맨드 | 설명 |
|
|
384
|
+
|--------|------|
|
|
385
|
+
| `/sdd.chat` | 대화형 SDD 어시스턴트 |
|
|
386
|
+
| `/sdd.guide` | 전체 워크플로우 가이드 |
|
|
387
|
+
| `/sdd.transition` | 워크플로우 전환 |
|
|
388
|
+
| `/sdd.analyze` | 요청 분석 및 규모 판단 |
|
|
389
|
+
| `/sdd.research` | 기술 리서치 문서 작성 |
|
|
390
|
+
| `/sdd.data-model` | 데이터 모델 문서 작성 |
|
|
391
|
+
| `/sdd.prepare` | 환경 준비 가이드 |
|
|
219
392
|
|
|
220
393
|
### 사용법
|
|
221
394
|
|
|
222
395
|
Claude Code에서 슬래시 커맨드를 입력하면 해당 워크플로우가 자동으로 실행됩니다:
|
|
223
396
|
|
|
224
397
|
```
|
|
398
|
+
/sdd.start # 워크플로우 시작
|
|
225
399
|
/sdd.new # 새 기능 명세 작성 시작
|
|
226
|
-
/sdd.
|
|
227
|
-
/sdd.tasks # 계획을 작업으로 분해
|
|
228
|
-
/sdd.implement # 작업 순차 구현
|
|
400
|
+
/sdd.chat # 대화형 모드로 SDD 작업
|
|
229
401
|
```
|
|
230
402
|
|
|
231
403
|
### 워크플로우 예시
|
|
232
404
|
|
|
233
|
-
1.
|
|
234
|
-
```
|
|
235
|
-
/sdd.new
|
|
236
|
-
→ 기능명과 설명 입력
|
|
237
|
-
→ spec.md 자동 생성 및 작성 안내
|
|
238
|
-
```
|
|
239
|
-
|
|
240
|
-
2. **구현 계획 수립**
|
|
405
|
+
1. **대화형 모드로 시작**
|
|
241
406
|
```
|
|
242
|
-
/sdd.
|
|
243
|
-
→
|
|
244
|
-
→
|
|
407
|
+
/sdd.chat
|
|
408
|
+
→ 자연어로 SDD 작업 수행
|
|
409
|
+
→ 질문/작성/검토/실행 모드 지원
|
|
245
410
|
```
|
|
246
411
|
|
|
247
|
-
|
|
412
|
+
2. **새 기능 개발**
|
|
248
413
|
```
|
|
249
|
-
/sdd.
|
|
250
|
-
→
|
|
251
|
-
→
|
|
414
|
+
/sdd.new
|
|
415
|
+
→ 기능명과 설명 입력
|
|
416
|
+
→ spec.md 자동 생성 및 작성 안내
|
|
252
417
|
```
|
|
253
418
|
|
|
254
|
-
|
|
419
|
+
3. **워크플로우 전환**
|
|
255
420
|
```
|
|
256
|
-
/sdd.
|
|
257
|
-
→
|
|
258
|
-
→
|
|
259
|
-
→ 작업 완료 처리
|
|
421
|
+
/sdd.transition
|
|
422
|
+
→ new ↔ change 워크플로우 전환
|
|
423
|
+
→ 전환 가이드 제공
|
|
260
424
|
```
|
|
261
425
|
|
|
262
|
-
### 커맨드 커스터마이징
|
|
263
|
-
|
|
264
|
-
`.claude/commands/sdd.*.md` 파일을 직접 수정하여 프로젝트에 맞게 커스터마이징할 수 있습니다.
|
|
265
|
-
|
|
266
|
-
```markdown
|
|
267
|
-
<!-- .claude/commands/sdd.new.md -->
|
|
268
|
-
새로운 기능 명세를 작성합니다.
|
|
269
|
-
|
|
270
|
-
## 지시사항
|
|
271
|
-
1. 사용자에게 기능명을 요청
|
|
272
|
-
2. sdd new <feature-id> --all 실행
|
|
273
|
-
3. spec.md 작성 안내
|
|
274
|
-
...
|
|
275
|
-
```
|
|
276
|
-
|
|
277
426
|
## 스펙 파일 형식
|
|
278
427
|
|
|
279
428
|
### spec.md
|
|
@@ -284,6 +433,7 @@ id: feature-id
|
|
|
284
433
|
title: "기능 제목"
|
|
285
434
|
status: draft
|
|
286
435
|
created: 2025-12-21
|
|
436
|
+
constitution_version: 1.0.0
|
|
287
437
|
depends: null
|
|
288
438
|
---
|
|
289
439
|
|
|
@@ -320,6 +470,93 @@ depends: null
|
|
|
320
470
|
| **MAY** | 선택적 | "다크 모드를 지원할 수 있다(MAY)" |
|
|
321
471
|
| **SHALL NOT** | 절대 금지 | "평문 비밀번호를 저장해서는 안 된다(SHALL NOT)" |
|
|
322
472
|
|
|
473
|
+
## CI/CD 통합
|
|
474
|
+
|
|
475
|
+
### GitHub Actions
|
|
476
|
+
|
|
477
|
+
```bash
|
|
478
|
+
sdd cicd setup github
|
|
479
|
+
# .github/workflows/sdd-validate.yml 생성
|
|
480
|
+
```
|
|
481
|
+
|
|
482
|
+
### GitLab CI
|
|
483
|
+
|
|
484
|
+
```bash
|
|
485
|
+
sdd cicd setup gitlab
|
|
486
|
+
# .gitlab-ci-sdd.yml 생성
|
|
487
|
+
```
|
|
488
|
+
|
|
489
|
+
### Git Hooks
|
|
490
|
+
|
|
491
|
+
```bash
|
|
492
|
+
sdd cicd hooks
|
|
493
|
+
# .husky/pre-commit, pre-push 생성
|
|
494
|
+
```
|
|
495
|
+
|
|
496
|
+
## 고급 기능
|
|
497
|
+
|
|
498
|
+
### 코드 매핑 설정
|
|
499
|
+
|
|
500
|
+
`.sdd/code-mapping.json` 파일을 사용하여 스펙과 코드 파일 간의 명시적 매핑을 정의할 수 있습니다:
|
|
501
|
+
|
|
502
|
+
```json
|
|
503
|
+
{
|
|
504
|
+
"version": "1.0.0",
|
|
505
|
+
"mappings": [
|
|
506
|
+
{
|
|
507
|
+
"specId": "user-auth",
|
|
508
|
+
"files": [
|
|
509
|
+
"src/core/auth.ts",
|
|
510
|
+
"src/services/auth-service.ts"
|
|
511
|
+
],
|
|
512
|
+
"directories": [
|
|
513
|
+
"src/auth/"
|
|
514
|
+
]
|
|
515
|
+
},
|
|
516
|
+
{
|
|
517
|
+
"specId": "payment",
|
|
518
|
+
"files": [
|
|
519
|
+
"src/payment/handler.ts"
|
|
520
|
+
]
|
|
521
|
+
}
|
|
522
|
+
],
|
|
523
|
+
"patterns": {
|
|
524
|
+
"include": ["src/**/*.ts"],
|
|
525
|
+
"exclude": ["**/*.test.ts", "**/*.spec.ts"]
|
|
526
|
+
}
|
|
527
|
+
}
|
|
528
|
+
```
|
|
529
|
+
|
|
530
|
+
### Constitution 위반 검증
|
|
531
|
+
|
|
532
|
+
스펙이 Constitution에 정의된 원칙을 위반하는지 자동으로 검사합니다:
|
|
533
|
+
|
|
534
|
+
```bash
|
|
535
|
+
# Constitution 위반 검사 포함 (기본값)
|
|
536
|
+
sdd validate
|
|
537
|
+
|
|
538
|
+
# Constitution 검사 스킵
|
|
539
|
+
sdd validate --no-constitution
|
|
540
|
+
```
|
|
541
|
+
|
|
542
|
+
위반 감지 예시:
|
|
543
|
+
- Constitution: "평문 비밀번호를 저장해서는 안 된다(SHALL NOT)"
|
|
544
|
+
- 스펙: "비밀번호를 평문으로 저장한다" → 위반 경고 출력
|
|
545
|
+
|
|
546
|
+
### What-if 시뮬레이션
|
|
547
|
+
|
|
548
|
+
변경을 적용하기 전에 영향도를 예측합니다:
|
|
549
|
+
|
|
550
|
+
```bash
|
|
551
|
+
sdd impact simulate <feature> <proposal>
|
|
552
|
+
```
|
|
553
|
+
|
|
554
|
+
시뮬레이션 결과:
|
|
555
|
+
- 현재 상태 vs 변경 후 상태 비교
|
|
556
|
+
- 리스크 점수 변화
|
|
557
|
+
- 새로 영향받는 스펙 목록
|
|
558
|
+
- 권장사항 및 경고
|
|
559
|
+
|
|
323
560
|
## 개발
|
|
324
561
|
|
|
325
562
|
```bash
|
|
@@ -360,14 +597,23 @@ sdd-tool/
|
|
|
360
597
|
│ │ │ ├── impact.ts
|
|
361
598
|
│ │ │ ├── status.ts
|
|
362
599
|
│ │ │ ├── list.ts
|
|
363
|
-
│ │ │
|
|
600
|
+
│ │ │ ├── prompt.ts
|
|
601
|
+
│ │ │ ├── constitution.ts
|
|
602
|
+
│ │ │ ├── start.ts
|
|
603
|
+
│ │ │ ├── transition.ts
|
|
604
|
+
│ │ │ ├── migrate.ts
|
|
605
|
+
│ │ │ └── cicd.ts
|
|
364
606
|
│ │ └── index.ts
|
|
365
607
|
│ ├── core/ # 핵심 로직
|
|
366
608
|
│ │ ├── spec/ # 스펙 파서/검증
|
|
367
609
|
│ │ ├── constitution/ # 헌법 시스템
|
|
368
610
|
│ │ ├── change/ # 변경 워크플로우
|
|
369
611
|
│ │ ├── impact/ # 영향도 분석
|
|
370
|
-
│ │
|
|
612
|
+
│ │ ├── new/ # 신규 기능 워크플로우
|
|
613
|
+
│ │ ├── watch/ # 파일 감시
|
|
614
|
+
│ │ ├── quality/ # 품질 분석
|
|
615
|
+
│ │ ├── report/ # 리포트 생성
|
|
616
|
+
│ │ └── migrate/ # 마이그레이션
|
|
371
617
|
│ ├── generators/ # 파일 생성기
|
|
372
618
|
│ ├── prompts/ # 슬래시 커맨드
|
|
373
619
|
│ ├── errors/ # 에러 처리
|