sdd-tool 0.6.0 → 0.6.2

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.
Files changed (2) hide show
  1. package/README.md +207 -477
  2. package/package.json +76 -76
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # SDD Tool
2
2
 
3
- **Spec-Driven Development CLI** - 명세 기반 개발을 위한 통합 CLI 도구
3
+ **Spec-Driven Development CLI** - AI와 함께하는 명세 기반 개발 도구
4
4
 
5
5
  [![npm version](https://img.shields.io/npm/v/sdd-tool)](https://www.npmjs.com/package/sdd-tool)
6
6
  [![Node.js](https://img.shields.io/badge/node-%3E%3D20.0.0-brightgreen)](https://nodejs.org/)
@@ -9,622 +9,352 @@
9
9
 
10
10
  ## 개요
11
11
 
12
- SDD Tool은 명세(Specification)를 중심으로 소프트웨어를 개발하는 방법론을 지원하는 CLI 도구입니다. 코드보다 명세를 우선시하여, 명세가 구현의 진실 공급원(Source of Truth)이 되도록 합니다.
12
+ SDD Tool은 **Claude Code**와 함께 사용하도록 설계된 명세 기반 개발(Spec-Driven Development) CLI입니다. 슬래시 커맨드를 통해 AI와 대화하며 명세를 작성하고, 코드를 구현합니다.
13
13
 
14
14
  ### 핵심 개념
15
15
 
16
16
  - **명세 우선**: 코드 작성 전 명세 작성
17
- - **RFC 2119 키워드**: SHALL, MUST, SHOULD, MAY, SHALL NOT
17
+ - **AI 협업**: Claude Code 슬래시 커맨드로 워크플로우 자동화
18
+ - **RFC 2119 키워드**: SHALL, MUST, SHOULD, MAY로 요구사항 명확화
18
19
  - **GIVEN-WHEN-THEN**: 시나리오 기반 요구사항 정의
19
- - **델타 시스템**: ADDED, MODIFIED, REMOVED로 변경 추적
20
20
  - **헌법(Constitution)**: 프로젝트 핵심 원칙 정의
21
21
 
22
+ ---
23
+
22
24
  ## 설치
23
25
 
24
26
  ```bash
25
- # npm
26
27
  npm install -g sdd-tool
27
-
28
- # pnpm
29
- pnpm add -g sdd-tool
30
-
31
- # 또는 로컬에서 실행
32
- git clone https://github.com/JakeB-5/sdd-tool.git
33
- cd sdd-tool
34
- pnpm install
35
- pnpm run build
36
28
  ```
37
29
 
38
- ## 빠른 시작
39
-
40
- ```bash
41
- # 1. 프로젝트 초기화
42
- sdd init
43
-
44
- # 2. 워크플로우 시작 (통합 진입점)
45
- sdd start
46
-
47
- # 3. 새 기능 생성
48
- sdd new user-auth --title "사용자 인증" --all
49
-
50
- # 4. 스펙 검증
51
- sdd validate
52
-
53
- # 5. 프로젝트 상태 확인
54
- sdd status
55
- ```
30
+ ---
56
31
 
57
- ## 명령어
32
+ ## Claude Code와 함께 시작하기
58
33
 
59
- ### `sdd init`
34
+ SDD Tool은 Claude Code의 슬래시 커맨드와 통합되어, AI와 대화하며 명세 기반 개발을 진행합니다.
60
35
 
61
- SDD 프로젝트를 초기화합니다.
36
+ ### Step 1: 프로젝트 초기화
62
37
 
63
38
  ```bash
64
- sdd init # 기본 초기화
65
- sdd init --force # 기존 파일 덮어쓰기
39
+ sdd init
66
40
  ```
67
41
 
68
- 생성되는 구조:
69
- ```
70
- .sdd/
71
- ├── constitution.md # 프로젝트 헌법 (핵심 원칙)
72
- ├── AGENTS.md # AI 워크플로우 가이드
73
- ├── specs/ # 기능 명세
74
- ├── changes/ # 변경 제안
75
- ├── archive/ # 완료된 변경
76
- └── templates/ # 템플릿 파일
77
- .claude/
78
- └── commands/ # Claude 슬래시 커맨드
79
- ```
42
+ 명령은 다음을 생성합니다:
43
+ - `.sdd/` - 명세 디렉토리 (constitution.md, specs/, changes/)
44
+ - `.claude/commands/` - **26개의 슬래시 커맨드** 자동 생성
80
45
 
81
- ### `sdd start`
46
+ ### Step 2: Claude Code 실행
82
47
 
83
- 통합 워크플로우 진입점입니다.
48
+ 프로젝트 디렉토리에서 Claude Code를 실행합니다:
84
49
 
85
50
  ```bash
86
- sdd start # 상태 확인 및 워크플로우 메뉴
87
- sdd start --status # 상태만 표시
88
- sdd start --workflow new-feature # 특정 워크플로우 시작
89
- sdd start --workflow change-spec # 변경 워크플로우
51
+ claude
90
52
  ```
91
53
 
92
- ### `sdd new`
93
-
94
- 새로운 기능을 생성합니다.
95
-
96
- ```bash
97
- # 기본 사용
98
- sdd new <feature-name>
54
+ ### Step 3: 워크플로우 시작
99
55
 
100
- # 옵션
101
- sdd new auth --title "인증 기능" --description "사용자 인증"
102
- sdd new auth --all # spec, plan, tasks, checklist 모두 생성
103
- sdd new auth --numbered # 자동 번호 부여 (feature/001-auth)
104
- sdd new auth --no-branch # Git 브랜치 생성 안 함
56
+ Claude Code에서 슬래시 커맨드를 입력합니다:
105
57
 
106
- # 서브커맨드
107
- sdd new plan <feature> # 구현 계획 생성
108
- sdd new tasks <feature> # 작업 분해 생성
109
- sdd new checklist # 워크플로우 체크리스트 생성
110
- sdd new counter # 기능 번호 카운터 관리
111
- sdd new counter --peek # 다음 번호 확인
112
- sdd new counter --history # 생성 이력
113
- sdd new counter --set <n> # 번호 설정
114
58
  ```
115
-
116
- ### `sdd validate`
117
-
118
- 스펙 파일의 형식을 검증합니다.
119
-
120
- ```bash
121
- sdd validate # 전체 검증
122
- sdd validate path/to/spec.md # 특정 파일 검증
123
- sdd validate --strict # 엄격 모드 (경고도 에러)
124
- sdd validate --check-links # 참조 링크 유효성 검사
125
- sdd validate --constitution # Constitution 위반 검사 (기본값)
126
- sdd validate --no-constitution # Constitution 검사 스킵
127
- sdd validate --quiet # 조용한 모드
59
+ /sdd.start
128
60
  ```
129
61
 
130
- 검증 항목:
131
- - YAML frontmatter 존재 형식
132
- - RFC 2119 키워드 사용
133
- - GIVEN-WHEN-THEN 시나리오 포함
134
- - 참조 링크 유효성 (--check-links)
135
- - Constitution 원칙 위반 (--constitution)
62
+ AI가 프로젝트 상태를 분석하고, 다음 작업을 안내합니다:
63
+ - 신규 프로젝트: Constitution 작성 권장
64
+ - 기존 프로젝트: 워크플로우 선택 메뉴 제공
136
65
 
137
- ### `sdd constitution`
66
+ ### Step 4: Constitution(헌법) 작성
138
67
 
139
- 프로젝트 Constitution(헌법)을 관리합니다.
68
+ 프로젝트의 핵심 원칙을 정의합니다:
140
69
 
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
70
  ```
152
-
153
- ### `sdd change`
154
-
155
- 변경 제안을 생성하고 관리합니다.
156
-
157
- ```bash
158
- 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> # 변경 아카이브
71
+ /sdd.constitution
166
72
  ```
167
73
 
168
- ### `sdd impact`
169
-
170
- 스펙 변경의 영향도를 분석합니다.
171
-
172
- ```bash
173
- # 기본 영향도 분석
174
- sdd impact <feature> # 특정 기능 영향도 분석
175
- sdd impact <feature> --graph # 의존성 그래프 출력 (Mermaid)
176
- sdd impact <feature> --json # JSON 형식 출력
74
+ 신규 프로젝트의 경우, 프로젝트 설명을 함께 입력할 수 있습니다:
177
75
 
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 # 예시
76
+ ```
77
+ /sdd.constitution React 기반 할일 관리
190
78
  ```
191
79
 
192
- 코드 영향도 분석은 다음 방법으로 스펙-코드 연결을 탐지합니다:
193
- - 주석 참조: `// spec: feature-id`, `/* spec: feature-id */`, `@spec feature-id`
194
- - 파일명/디렉토리명 매칭: `auth.ts` ↔ `auth` 스펙
195
- - 매핑 설정: `.sdd/code-mapping.json` 파일 사용
80
+ AI가 `.sdd/constitution.md`를 분석하고, 프로젝트 원칙 작성을 도와줍니다:
81
+ - 핵심 원칙 (Core Principles)
82
+ - 기술 원칙 (Technical Principles)
83
+ - 금지 사항 (Forbidden)
196
84
 
197
- ### `sdd transition`
85
+ ### Step 5: 새 기능 명세 작성
198
86
 
199
- 워크플로우 전환을 수행합니다.
87
+ 기능 명세를 AI와 함께 작성합니다:
200
88
 
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
89
  ```
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)
90
+ /sdd.new
217
91
  ```
218
92
 
219
- Ctrl+C로 종료 세션 통계가 표시됩니다.
220
-
221
- ### `sdd quality`
93
+ 필요한 기능을 함께 입력하면 AI가 바로 명세 작성을 시작합니다:
222
94
 
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
95
  ```
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 # 검증 결과 제외
96
+ /sdd.new 사용자 인증 기능
257
97
  ```
258
98
 
259
- ### `sdd migrate`
99
+ AI가 대화를 통해 다음을 생성합니다:
100
+ - `spec.md` - 기능 명세 (RFC 2119 + GIVEN-WHEN-THEN)
101
+ - `plan.md` - 구현 계획
102
+ - `tasks.md` - 작업 분해
260
103
 
261
- 기존 문서나 외부 SDD 도구에서 마이그레이션합니다.
104
+ ### Step 6: 구현 진행
262
105
 
263
- ```bash
264
- # 문서 마이그레이션
265
- sdd migrate docs <source> # 문서 마이그레이션
266
- sdd migrate analyze <file> # 문서 분석
267
- sdd migrate scan [dir] # 디렉토리 스캔
106
+ 작업 목록을 기반으로 순차적 구현:
268
107
 
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
108
  ```
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 검증 실행
109
+ /sdd.implement
291
110
  ```
292
111
 
293
- ### `sdd status`
294
-
295
- 프로젝트 상태를 조회합니다.
112
+ AI가 tasks.md를 읽고, TDD 방식으로 구현을 안내합니다.
296
113
 
297
- ```bash
298
- sdd status # 기본 상태
299
- sdd status --verbose # 상세 정보
300
- sdd status --json # JSON 형식
301
- ```
302
-
303
- ### `sdd list`
114
+ ---
304
115
 
305
- 항목 목록을 조회합니다.
116
+ ## 전체 워크플로우 예시
306
117
 
307
- ```bash
308
- sdd list # 전체 요약
309
- sdd list features # 기능 목록
310
- sdd list changes # 변경 목록
311
- sdd list specs # 스펙 파일 목록
312
- sdd list templates # 템플릿 목록
313
118
  ```
314
-
315
- ### `sdd prompt`
316
-
317
- AI 도구용 슬래시 커맨드 프롬프트를 출력합니다.
318
-
319
- ```bash
320
- sdd prompt # 사용 가능한 명령어 목록
321
- sdd prompt --list # 명령어 목록
322
- sdd prompt new # /sdd.new 프롬프트
323
- sdd prompt change # /sdd.change 프롬프트
119
+ ┌─────────────────────────────────────────────────────────────┐
120
+ │ 1. sdd init → 프로젝트 초기화 │
121
+ │ 2. claude → Claude Code 실행 │
122
+ │ 3. /sdd.start → 워크플로우 시작 │
123
+ │ 4. /sdd.constitution → 프로젝트 원칙 정의 │
124
+ │ 5. /sdd.new → 기능 명세 작성 │
125
+ │ 6. /sdd.plan → 구현 계획 수립 │
126
+ │ 7. /sdd.tasks → 작업 분해 │
127
+ │ 8. /sdd.implement → 순차적 구현 │
128
+ │ 9. /sdd.validate → 명세 검증 │
129
+ └─────────────────────────────────────────────────────────────┘
324
130
  ```
325
131
 
326
- ## 워크플로우
327
-
328
- ### 신규 기능 개발
132
+ ---
329
133
 
330
- ```
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 # 완료 후 아카이브
338
- ```
134
+ ## 슬래시 커맨드 (26개)
339
135
 
340
- ### 기존 기능 변경
136
+ `sdd init` 실행 시 `.claude/commands/`에 자동 생성됩니다.
341
137
 
342
- ```
343
- 1. sdd change -t "변경 제목" # 변경 제안 생성
344
- 2. proposal.md 작성 # 변경 내용 정의
345
- 3. sdd impact <feature> # 영향도 분석
346
- 4. sdd change validate <id> # 검증
347
- 5. sdd change apply <id> # 변경 적용
348
- 6. sdd change archive <id> # 아카이브
349
- ```
138
+ ### 핵심 워크플로우
350
139
 
351
- ### 워크플로우 전환
140
+ | 커맨드 | 설명 | 사용 시점 |
141
+ |--------|------|----------|
142
+ | `/sdd.start` | 통합 진입점 | 작업 시작 시 |
143
+ | `/sdd.constitution` | 프로젝트 원칙 관리 | 프로젝트 초기 설정 |
144
+ | `/sdd.new` | 새 기능 명세 작성 | 새 기능 개발 시 |
145
+ | `/sdd.plan` | 구현 계획 작성 | 명세 작성 후 |
146
+ | `/sdd.tasks` | 작업 분해 | 계획 수립 후 |
147
+ | `/sdd.implement` | 순차적 구현 | 작업 분해 후 |
148
+ | `/sdd.validate` | 스펙 검증 | 작성/수정 후 |
352
149
 
353
- 작업 워크플로우를 변경해야 할 때:
150
+ ### 변경 관리
354
151
 
355
- ```
356
- # 새 기능 → 변경 제안 (기존 스펙과 중복 발견 시)
357
- sdd transition new-to-change <spec-id>
358
-
359
- # 변경 기능 (범위가 커서 분리 필요 시)
360
- sdd transition change-to-new <change-id>
361
- ```
152
+ | 커맨드 | 설명 |
153
+ |--------|------|
154
+ | `/sdd.change` | 기존 스펙 변경 제안 |
155
+ | `/sdd.impact` | 변경 영향도 분석 |
156
+ | `/sdd.transition` | new change 워크플로우 전환 |
362
157
 
363
- ## Claude 슬래시 커맨드
158
+ ### 분석 품질
364
159
 
365
- `sdd init` 실행 `.claude/commands/` 디렉토리에 Claude Code용 슬래시 커맨드가 자동 생성됩니다.
160
+ | 커맨드 | 설명 |
161
+ |--------|------|
162
+ | `/sdd.analyze` | 요청 분석 및 규모 판단 |
163
+ | `/sdd.quality` | 스펙 품질 점수 산출 |
164
+ | `/sdd.report` | 프로젝트 리포트 생성 |
165
+ | `/sdd.search` | 스펙 검색 |
166
+ | `/sdd.status` | 프로젝트 상태 확인 |
366
167
 
367
- ### 기본 워크플로우 커맨드
168
+ ### 문서 생성
368
169
 
369
170
  | 커맨드 | 설명 |
370
171
  |--------|------|
371
- | `/sdd.start` | 통합 진입점 - 워크플로우 시작 |
372
- | `/sdd.new` | 기능 명세 작성 |
373
- | `/sdd.plan` | 구현 계획 작성 |
374
- | `/sdd.tasks` | 작업 분해 |
375
- | `/sdd.implement` | 순차적 구현 진행 |
376
- | `/sdd.validate` | 스펙 형식 검증 |
377
- | `/sdd.status` | 프로젝트 상태 확인 |
378
- | `/sdd.change` | 변경 제안 작성 |
379
- | `/sdd.constitution` | Constitution 관리 |
172
+ | `/sdd.research` | 기술 리서치 문서 |
173
+ | `/sdd.data-model` | 데이터 모델 문서 |
174
+ | `/sdd.guide` | 워크플로우 가이드 |
175
+ | `/sdd.prepare` | 환경 준비 가이드 |
380
176
 
381
- ### 고급 커맨드
177
+ ### 운영
382
178
 
383
179
  | 커맨드 | 설명 |
384
180
  |--------|------|
385
181
  | `/sdd.chat` | 대화형 SDD 어시스턴트 |
386
- | `/sdd.guide` | 전체 워크플로우 가이드 |
387
- | `/sdd.transition` | 워크플로우 전환 |
388
- | `/sdd.analyze` | 요청 분석 규모 판단 |
389
- | `/sdd.research` | 기술 리서치 문서 작성 |
390
- | `/sdd.data-model` | 데이터 모델 문서 작성 |
391
- | `/sdd.prepare` | 환경 준비 가이드 |
182
+ | `/sdd.list` | 항목 목록 조회 |
183
+ | `/sdd.watch` | 파일 감시 모드 |
184
+ | `/sdd.migrate` | 외부 도구에서 마이그레이션 |
185
+ | `/sdd.cicd` | CI/CD 설정 |
186
+ | `/sdd.prompt` | 프롬프트 출력 |
187
+
188
+ ---
392
189
 
393
- ### 사용법
190
+ ## 대화형 모드: /sdd.chat
394
191
 
395
- Claude Code에서 슬래시 커맨드를 입력하면 해당 워크플로우가 자동으로 실행됩니다:
192
+ 자연어로 SDD 작업을 수행할 있습니다:
396
193
 
397
194
  ```
398
- /sdd.start # 워크플로우 시작
399
- /sdd.new # 새 기능 명세 작성 시작
400
- /sdd.chat # 대화형 모드로 SDD 작업
195
+ /sdd.chat
401
196
  ```
402
197
 
403
- ### 워크플로우 예시
404
-
405
- 1. **대화형 모드로 시작**
406
- ```
407
- /sdd.chat
408
- 자연어로 SDD 작업 수행
409
- → 질문/작성/검토/실행 모드 지원
410
- ```
411
-
412
- 2. **새 기능 개발**
413
- ```
414
- /sdd.new
415
- → 기능명과 설명 입력
416
- → spec.md 자동 생성 및 작성 안내
417
- ```
198
+ 예시 대화:
199
+ ```
200
+ You: 사용자 인증 기능을 만들고 싶어
201
+ AI: 사용자 인증 기능의 명세를 작성해 드릴게요. 먼저 몇 가지 질문이 있습니다...
202
+ 1. 어떤 인증 방식을 사용하시나요? (JWT, 세션, OAuth)
203
+ 2. 소셜 로그인이 필요한가요?
204
+ ...
205
+ ```
418
206
 
419
- 3. **워크플로우 전환**
420
- ```
421
- /sdd.transition
422
- → new ↔ change 워크플로우 전환
423
- → 전환 가이드 제공
424
- ```
207
+ ---
425
208
 
426
209
  ## 스펙 파일 형식
427
210
 
428
- ### spec.md
211
+ ### spec.md 예시
429
212
 
430
213
  ```markdown
431
214
  ---
432
- id: feature-id
433
- title: "기능 제목"
215
+ id: user-auth
216
+ title: "사용자 인증"
434
217
  status: draft
435
- created: 2025-12-21
218
+ created: 2025-12-24
436
219
  constitution_version: 1.0.0
437
- depends: null
438
220
  ---
439
221
 
440
- # 기능 제목
222
+ # 사용자 인증
441
223
 
442
- > 기능 설명
443
-
444
- ---
224
+ > JWT 기반 사용자 인증 시스템
445
225
 
446
226
  ## 요구사항
447
227
 
448
- ### REQ-01: 요구사항 제목
449
-
450
- - 시스템은 [기능]을 지원해야 한다(SHALL)
451
- - 응답 시간은 1초 이내여야 한다(SHOULD)
228
+ ### REQ-01: 로그인
452
229
 
453
- ---
230
+ - 시스템은 이메일/비밀번호 로그인을 지원해야 한다(SHALL)
231
+ - 로그인 실패 시 구체적인 에러 메시지를 반환해야 한다(SHOULD)
454
232
 
455
233
  ## 시나리오
456
234
 
457
- ### Scenario 1: 성공 케이스
235
+ ### Scenario 1: 성공적인 로그인
458
236
 
459
- - **GIVEN** 유효한 사용자가 있을 때
460
- - **WHEN** 로그인을 시도하면
461
- - **THEN** 메인 페이지로 이동한다
237
+ - **GIVEN** 유효한 사용자 계정이 있을 때
238
+ - **WHEN** 올바른 이메일과 비밀번호로 로그인하면
239
+ - **THEN** JWT 토큰이 반환된다
240
+ - **AND** 토큰 만료 시간이 설정된다
462
241
  ```
463
242
 
464
243
  ### RFC 2119 키워드
465
244
 
466
- | 키워드 | 의미 | 사용 예시 |
467
- |--------|------|-----------|
468
- | **SHALL** / **MUST** | 절대 필수 | "시스템은 인증을 지원해야 한다(SHALL)" |
469
- | **SHOULD** | 권장 (예외 가능) | "응답 시간은 1초 이내여야 한다(SHOULD)" |
470
- | **MAY** | 선택적 | "다크 모드를 지원할 수 있다(MAY)" |
471
- | **SHALL NOT** | 절대 금지 | "평문 비밀번호를 저장해서는 안 된다(SHALL NOT)" |
245
+ | 키워드 | 의미 |
246
+ |--------|------|
247
+ | **SHALL** / **MUST** | 절대 필수 |
248
+ | **SHOULD** | 권장 (예외 허용) |
249
+ | **MAY** | 선택적 |
250
+ | **SHALL NOT** | 절대 금지 |
251
+
252
+ ---
472
253
 
473
- ## CI/CD 통합
254
+ ## CLI 명령어
474
255
 
475
- ### GitHub Actions
256
+ 슬래시 커맨드 외에 터미널에서 직접 사용할 수 있는 명령어들입니다.
257
+
258
+ ### 기본 명령어
476
259
 
477
260
  ```bash
478
- sdd cicd setup github
479
- # .github/workflows/sdd-validate.yml 생성
261
+ sdd init # 프로젝트 초기화
262
+ sdd validate # 스펙 검증
263
+ sdd status # 상태 확인
264
+ sdd list # 목록 조회
480
265
  ```
481
266
 
482
- ### GitLab CI
267
+ ### 기능 개발
483
268
 
484
269
  ```bash
485
- sdd cicd setup gitlab
486
- # .gitlab-ci-sdd.yml 생성
270
+ sdd new <name> # 새 기능 생성
271
+ sdd new <name> --all # spec + plan + tasks 모두 생성
487
272
  ```
488
273
 
489
- ### Git Hooks
274
+ ### 변경 관리
490
275
 
491
276
  ```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에 정의된 원칙을 위반하는지 자동으로 검사합니다:
277
+ sdd change # 변경 제안 생성
278
+ sdd change apply <id> # 변경 적용
279
+ sdd impact <feature> # 영향도 분석
280
+ ```
281
+
282
+ ### 품질 및 분석
533
283
 
534
284
  ```bash
535
- # Constitution 위반 검사 포함 (기본값)
536
- sdd validate
285
+ sdd quality # 품질 분석
286
+ sdd quality --min-score 70 # 최소 점수 기준
287
+ sdd report # 리포트 생성
288
+ sdd search <query> # 스펙 검색
289
+ ```
537
290
 
538
- # Constitution 검사 스킵
539
- sdd validate --no-constitution
291
+ ### 운영
292
+
293
+ ```bash
294
+ sdd watch # 파일 감시
295
+ sdd migrate detect # 외부 도구 감지
296
+ sdd cicd setup # CI/CD 설정
540
297
  ```
541
298
 
542
- 위반 감지 예시:
543
- - Constitution: "평문 비밀번호를 저장해서는 안 된다(SHALL NOT)"
544
- - 스펙: "비밀번호를 평문으로 저장한다" → 위반 경고 출력
299
+ ---
300
+
301
+ ## CI/CD 통합
302
+
303
+ ### GitHub Actions
545
304
 
546
- ### What-if 시뮬레이션
305
+ ```bash
306
+ sdd cicd setup github
307
+ ```
547
308
 
548
- 변경을 적용하기 전에 영향도를 예측합니다:
309
+ ### Git Hooks
549
310
 
550
311
  ```bash
551
- sdd impact simulate <feature> <proposal>
312
+ sdd cicd hooks
552
313
  ```
553
314
 
554
- 시뮬레이션 결과:
555
- - 현재 상태 vs 변경 후 상태 비교
556
- - 리스크 점수 변화
557
- - 새로 영향받는 스펙 목록
558
- - 권장사항 및 경고
315
+ 커밋 전 자동으로 스펙 검증이 실행됩니다.
316
+
317
+ ---
318
+
319
+ ## 디렉토리 구조
320
+
321
+ `sdd init` 실행 후 생성되는 구조:
322
+
323
+ ```
324
+ your-project/
325
+ ├── .sdd/
326
+ │ ├── constitution.md # 프로젝트 헌법
327
+ │ ├── AGENTS.md # AI 워크플로우 가이드
328
+ │ ├── specs/ # 기능 명세
329
+ │ │ └── feature-name/
330
+ │ │ ├── spec.md
331
+ │ │ ├── plan.md
332
+ │ │ └── tasks.md
333
+ │ ├── changes/ # 변경 제안
334
+ │ ├── archive/ # 완료된 변경
335
+ │ └── templates/ # 템플릿
336
+ └── .claude/
337
+ └── commands/ # 슬래시 커맨드 (26개)
338
+ ├── sdd.start.md
339
+ ├── sdd.new.md
340
+ ├── sdd.constitution.md
341
+ └── ...
342
+ ```
343
+
344
+ ---
559
345
 
560
346
  ## 개발
561
347
 
562
348
  ```bash
563
- # 의존성 설치
349
+ git clone https://github.com/JakeB-5/sdd-tool.git
350
+ cd sdd-tool
564
351
  pnpm install
565
-
566
- # 빌드
567
352
  pnpm run build
568
-
569
- # 개발 모드 (watch)
570
- pnpm run dev
571
-
572
- # 테스트
573
- pnpm test # watch 모드
574
- pnpm run test:run # 단일 실행
575
- pnpm run test:coverage # 커버리지
576
-
577
- # 린트
578
- pnpm run lint
579
-
580
- # 타입 체크
581
- pnpm run typecheck
582
- ```
583
-
584
- ### 프로젝트 구조
585
-
586
- ```
587
- sdd-tool/
588
- ├── bin/ # CLI 진입점
589
- │ └── sdd.js
590
- ├── src/
591
- │ ├── cli/ # CLI 명령어
592
- │ │ ├── commands/
593
- │ │ │ ├── init.ts
594
- │ │ │ ├── new.ts
595
- │ │ │ ├── validate.ts
596
- │ │ │ ├── change.ts
597
- │ │ │ ├── impact.ts
598
- │ │ │ ├── status.ts
599
- │ │ │ ├── list.ts
600
- │ │ │ ├── prompt.ts
601
- │ │ │ ├── constitution.ts
602
- │ │ │ ├── start.ts
603
- │ │ │ ├── transition.ts
604
- │ │ │ ├── migrate.ts
605
- │ │ │ └── cicd.ts
606
- │ │ └── index.ts
607
- │ ├── core/ # 핵심 로직
608
- │ │ ├── spec/ # 스펙 파서/검증
609
- │ │ ├── constitution/ # 헌법 시스템
610
- │ │ ├── change/ # 변경 워크플로우
611
- │ │ ├── impact/ # 영향도 분석
612
- │ │ ├── new/ # 신규 기능 워크플로우
613
- │ │ ├── watch/ # 파일 감시
614
- │ │ ├── quality/ # 품질 분석
615
- │ │ ├── report/ # 리포트 생성
616
- │ │ └── migrate/ # 마이그레이션
617
- │ ├── generators/ # 파일 생성기
618
- │ ├── prompts/ # 슬래시 커맨드
619
- │ ├── errors/ # 에러 처리
620
- │ ├── utils/ # 유틸리티
621
- │ └── types/ # 타입 정의
622
- ├── templates/ # 기본 템플릿
623
- └── tests/ # 테스트
624
- ├── unit/
625
- └── integration/
353
+ pnpm test
626
354
  ```
627
355
 
356
+ ---
357
+
628
358
  ## 라이선스
629
359
 
630
360
  MIT License
package/package.json CHANGED
@@ -1,76 +1,76 @@
1
- {
2
- "name": "sdd-tool",
3
- "version": "0.6.0",
4
- "description": "Unified Spec-Driven Development CLI - AI-first specification workflow",
5
- "type": "module",
6
- "bin": {
7
- "sdd": "bin/sdd.js"
8
- },
9
- "main": "./dist/index.js",
10
- "types": "./dist/index.d.ts",
11
- "exports": {
12
- ".": {
13
- "types": "./dist/index.d.ts",
14
- "import": "./dist/index.js"
15
- }
16
- },
17
- "scripts": {
18
- "build": "tsup",
19
- "dev": "tsup --watch",
20
- "test": "vitest",
21
- "test:run": "vitest run",
22
- "test:coverage": "vitest run --coverage",
23
- "lint": "eslint src/",
24
- "typecheck": "tsc --noEmit",
25
- "prepublishOnly": "npm run build && npm run test:run"
26
- },
27
- "repository": {
28
- "type": "git",
29
- "url": "git+https://github.com/JakeB-5/sdd-tool.git"
30
- },
31
- "homepage": "https://github.com/JakeB-5/sdd-tool#readme",
32
- "bugs": {
33
- "url": "https://github.com/JakeB-5/sdd-tool/issues"
34
- },
35
- "author": "JakeB-5",
36
- "dependencies": {
37
- "chalk": "^5.3.0",
38
- "chokidar": "^5.0.0",
39
- "commander": "^12.1.0",
40
- "gray-matter": "^4.0.3",
41
- "zod": "^3.23.8"
42
- },
43
- "devDependencies": {
44
- "@types/node": "^20.17.10",
45
- "@typescript-eslint/eslint-plugin": "^8.18.0",
46
- "@typescript-eslint/parser": "^8.18.0",
47
- "@vitest/coverage-v8": "^2.1.8",
48
- "eslint": "^9.16.0",
49
- "tsup": "^8.3.5",
50
- "typescript": "^5.7.2",
51
- "vitest": "^2.1.8"
52
- },
53
- "engines": {
54
- "node": ">=20.0.0"
55
- },
56
- "packageManager": "pnpm@9.15.1",
57
- "files": [
58
- "dist",
59
- "bin",
60
- "templates",
61
- "README.md",
62
- "LICENSE"
63
- ],
64
- "keywords": [
65
- "sdd",
66
- "spec-driven-development",
67
- "specification",
68
- "cli",
69
- "ai",
70
- "workflow",
71
- "rfc2119",
72
- "given-when-then",
73
- "bdd"
74
- ],
75
- "license": "MIT"
76
- }
1
+ {
2
+ "name": "sdd-tool",
3
+ "version": "0.6.2",
4
+ "description": "Unified Spec-Driven Development CLI - AI-first specification workflow",
5
+ "type": "module",
6
+ "bin": {
7
+ "sdd": "bin/sdd.js"
8
+ },
9
+ "main": "./dist/index.js",
10
+ "types": "./dist/index.d.ts",
11
+ "exports": {
12
+ ".": {
13
+ "types": "./dist/index.d.ts",
14
+ "import": "./dist/index.js"
15
+ }
16
+ },
17
+ "scripts": {
18
+ "build": "tsup",
19
+ "dev": "tsup --watch",
20
+ "test": "vitest",
21
+ "test:run": "vitest run",
22
+ "test:coverage": "vitest run --coverage",
23
+ "lint": "eslint src/",
24
+ "typecheck": "tsc --noEmit",
25
+ "prepublishOnly": "npm run build && npm run test:run"
26
+ },
27
+ "repository": {
28
+ "type": "git",
29
+ "url": "git+https://github.com/JakeB-5/sdd-tool.git"
30
+ },
31
+ "homepage": "https://github.com/JakeB-5/sdd-tool#readme",
32
+ "bugs": {
33
+ "url": "https://github.com/JakeB-5/sdd-tool/issues"
34
+ },
35
+ "author": "JakeB-5",
36
+ "dependencies": {
37
+ "chalk": "^5.3.0",
38
+ "chokidar": "^5.0.0",
39
+ "commander": "^12.1.0",
40
+ "gray-matter": "^4.0.3",
41
+ "zod": "^3.23.8"
42
+ },
43
+ "devDependencies": {
44
+ "@types/node": "^20.17.10",
45
+ "@typescript-eslint/eslint-plugin": "^8.18.0",
46
+ "@typescript-eslint/parser": "^8.18.0",
47
+ "@vitest/coverage-v8": "^2.1.8",
48
+ "eslint": "^9.16.0",
49
+ "tsup": "^8.3.5",
50
+ "typescript": "^5.7.2",
51
+ "vitest": "^2.1.8"
52
+ },
53
+ "engines": {
54
+ "node": ">=20.0.0"
55
+ },
56
+ "packageManager": "pnpm@9.15.1",
57
+ "files": [
58
+ "dist",
59
+ "bin",
60
+ "templates",
61
+ "README.md",
62
+ "LICENSE"
63
+ ],
64
+ "keywords": [
65
+ "sdd",
66
+ "spec-driven-development",
67
+ "specification",
68
+ "cli",
69
+ "ai",
70
+ "workflow",
71
+ "rfc2119",
72
+ "given-when-then",
73
+ "bdd"
74
+ ],
75
+ "license": "MIT"
76
+ }