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 CHANGED
@@ -2,6 +2,7 @@
2
2
 
3
3
  **Spec-Driven Development CLI** - 명세 기반 개발을 위한 통합 CLI 도구
4
4
 
5
+ [![npm version](https://img.shields.io/npm/v/sdd-tool)](https://www.npmjs.com/package/sdd-tool)
5
6
  [![Node.js](https://img.shields.io/badge/node-%3E%3D20.0.0-brightgreen)](https://nodejs.org/)
6
7
  [![TypeScript](https://img.shields.io/badge/typescript-5.x-blue)](https://www.typescriptlang.org/)
7
8
  [![License](https://img.shields.io/badge/license-MIT-green)](LICENSE)
@@ -28,7 +29,7 @@ npm install -g sdd-tool
28
29
  pnpm add -g sdd-tool
29
30
 
30
31
  # 또는 로컬에서 실행
31
- git clone <repository>
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
- # 3. 스펙 검증
50
+ # 4. 스펙 검증
47
51
  sdd validate
48
52
 
49
- # 4. 프로젝트 상태 확인
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
- ├── sdd.new.md
76
- ├── sdd.plan.md
77
- ├── sdd.tasks.md
78
- ├── sdd.implement.md
79
- ├── sdd.validate.md
80
- ├── sdd.status.md
81
- └── sdd.change.md
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 CHG-001 # 특정 변경 조회
126
- sdd change --list # 변경 목록
127
- sdd change apply CHG-001 # 변경 적용
128
- sdd change archive CHG-001 # 변경 아카이브
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 # 의존성 그래프 출력 (Mermaid)
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 plan # /sdd.plan 프롬프트
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 new <feature> --all # 기능 생성 (spec, plan, tasks)
186
- 2. spec.md 작성 # 요구사항 정의
187
- 3. sdd validate # 명세 검증
188
- 4. plan.md 작성 # 구현 계획
189
- 5. tasks.md 기반 구현 # 작업별 구현
190
- 6. sdd change archive # 완료 후 아카이브
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.plan # 현재 기능의 구현 계획 작성
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.plan
243
- spec.md 분석
244
- plan.md 작성 (기술 결정, 구현 단계, 리스크)
407
+ /sdd.chat
408
+ 자연어로 SDD 작업 수행
409
+ 질문/작성/검토/실행 모드 지원
245
410
  ```
246
411
 
247
- 3. **작업 분해**
412
+ 2. **새 기능 개발**
248
413
  ```
249
- /sdd.tasks
250
- plan.md 기반 작업 목록 생성
251
- 우선순위의존성 설정
414
+ /sdd.new
415
+ 기능명과 설명 입력
416
+ spec.md 자동 생성 작성 안내
252
417
  ```
253
418
 
254
- 4. **구현 진행**
419
+ 3. **워크플로우 전환**
255
420
  ```
256
- /sdd.implement
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
- │ │ │ └── prompt.ts
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
- │ │ └── new/ # 신규 기능 워크플로우
612
+ │ │ ├── new/ # 신규 기능 워크플로우
613
+ │ │ ├── watch/ # 파일 감시
614
+ │ │ ├── quality/ # 품질 분석
615
+ │ │ ├── report/ # 리포트 생성
616
+ │ │ └── migrate/ # 마이그레이션
371
617
  │ ├── generators/ # 파일 생성기
372
618
  │ ├── prompts/ # 슬래시 커맨드
373
619
  │ ├── errors/ # 에러 처리