sdd-tool 1.0.1 → 1.2.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/LICENSE +21 -21
- package/README.md +533 -471
- package/bin/sdd.js +2 -2
- package/dist/cli/index.js +11158 -5042
- package/dist/cli/index.js.map +1 -1
- package/dist/index.js.map +1 -1
- package/package.json +80 -81
- package/templates/agents.md +62 -62
- package/templates/constitution.md +43 -43
- package/templates/git/.gitattributes.sdd +39 -0
- package/templates/git/.gitignore.sdd +44 -0
- package/templates/git/.gitmessage +20 -0
- package/templates/git/commitlint.config.js +122 -0
- package/templates/github/branch-protection.md +194 -0
- package/templates/github/workflows/sdd-labeler.yml +125 -0
- package/templates/github/workflows/sdd-validate.yml +85 -0
- package/templates/proposal.md +71 -71
- package/templates/spec.md +27 -27
package/README.md
CHANGED
|
@@ -1,471 +1,533 @@
|
|
|
1
|
-
# SDD Tool
|
|
2
|
-
|
|
3
|
-
**Spec-Driven Development CLI** - AI와 함께하는 명세 기반 개발 도구
|
|
4
|
-
|
|
5
|
-
[](https://www.npmjs.com/package/sdd-tool)
|
|
6
|
-
[](https://github.com/JakeB-5/sdd-tool/actions/workflows/ci.yml)
|
|
7
|
-
[](https://nodejs.org/)
|
|
8
|
-
[](https://www.typescriptlang.org/)
|
|
9
|
-
[](LICENSE)
|
|
10
|
-
|
|
11
|
-
📚 **[문서 사이트](https://jakeb-5.github.io/sdd-tool/)** | 🚀 **[시작하기](https://jakeb-5.github.io/sdd-tool/guide/getting-started)** | 📋 **[CLI 레퍼런스](https://jakeb-5.github.io/sdd-tool/cli/)**
|
|
12
|
-
|
|
13
|
-
## 개요
|
|
14
|
-
|
|
15
|
-
SDD Tool은 **Claude Code**와 함께 사용하도록 설계된 명세 기반 개발(Spec-Driven Development) CLI입니다. **슬래시 커맨드**를 통해 AI와 대화하며 명세를 작성하고, 코드를 구현합니다.
|
|
16
|
-
|
|
17
|
-
### 핵심 개념
|
|
18
|
-
|
|
19
|
-
- **명세 우선**: 코드 작성 전 명세 작성
|
|
20
|
-
- **AI 협업**: Claude Code 슬래시 커맨드로 워크플로우 자동화
|
|
21
|
-
- **RFC 2119 키워드**: SHALL, MUST, SHOULD, MAY로 요구사항 명확화
|
|
22
|
-
- **GIVEN-WHEN-THEN**: 시나리오 기반 요구사항 정의
|
|
23
|
-
- **헌법(Constitution)**: 프로젝트 핵심 원칙 정의
|
|
24
|
-
|
|
25
|
-
---
|
|
26
|
-
|
|
27
|
-
## 설치
|
|
28
|
-
|
|
29
|
-
```bash
|
|
30
|
-
npm install -g sdd-tool
|
|
31
|
-
```
|
|
32
|
-
|
|
33
|
-
---
|
|
34
|
-
|
|
35
|
-
## 빠른 시작
|
|
36
|
-
|
|
37
|
-
```bash
|
|
38
|
-
# 1. 프로젝트 초기화 (슬래시 커맨드
|
|
39
|
-
sdd init
|
|
40
|
-
|
|
41
|
-
# 2. Claude Code 실행
|
|
42
|
-
claude
|
|
43
|
-
|
|
44
|
-
# 3. 슬래시 커맨드로 워크플로우 시작
|
|
45
|
-
/sdd.start
|
|
46
|
-
```
|
|
47
|
-
|
|
48
|
-
---
|
|
49
|
-
|
|
50
|
-
## 전체 워크플로우
|
|
51
|
-
|
|
52
|
-
```
|
|
53
|
-
┌─────────────────────────────────────────────────────────────┐
|
|
54
|
-
│ SDD 슬래시 커맨드 워크플로우 │
|
|
55
|
-
├─────────────────────────────────────────────────────────────┤
|
|
56
|
-
│ │
|
|
57
|
-
│ 1. /sdd.start → 워크플로우 시작 │
|
|
58
|
-
│ │ │
|
|
59
|
-
│ ▼ │
|
|
60
|
-
│ 2. /sdd.constitution → 프로젝트 원칙 정의 │
|
|
61
|
-
│ │ │
|
|
62
|
-
│ ▼ │
|
|
63
|
-
│ 3. /sdd.new → 기능 명세 작성 (spec.md) │
|
|
64
|
-
│ │ │
|
|
65
|
-
│ ▼ │
|
|
66
|
-
│ 4. /sdd.plan → 구현 계획 수립 (plan.md) │
|
|
67
|
-
│ │ │
|
|
68
|
-
│ ▼ │
|
|
69
|
-
│ 5. /sdd.tasks → 작업 분해 (tasks.md) │
|
|
70
|
-
│ │ │
|
|
71
|
-
│ ▼ │
|
|
72
|
-
│ 6. /sdd.prepare → 서브에이전트/스킬 점검 │
|
|
73
|
-
│ │ │
|
|
74
|
-
│ ▼ │
|
|
75
|
-
│ 7. /sdd.implement → 순차적 구현 │
|
|
76
|
-
│ │ │
|
|
77
|
-
│ ▼ │
|
|
78
|
-
│ 8. /sdd.validate → 명세 검증 │
|
|
79
|
-
│ │
|
|
80
|
-
└─────────────────────────────────────────────────────────────┘
|
|
81
|
-
```
|
|
82
|
-
|
|
83
|
-
---
|
|
84
|
-
|
|
85
|
-
## 슬래시 커맨드 (29개)
|
|
86
|
-
|
|
87
|
-
`sdd init` 실행 시 `.claude/commands/`에 자동 생성됩니다.
|
|
88
|
-
|
|
89
|
-
### 핵심 워크플로우
|
|
90
|
-
|
|
91
|
-
| 커맨드 | 설명 | 사용 예시 |
|
|
92
|
-
|--------|------|----------|
|
|
93
|
-
| `/sdd.start` | 통합 진입점 | `/sdd.start` |
|
|
94
|
-
| `/sdd.constitution` | 프로젝트 원칙 관리 | `/sdd.constitution React 기반 할일 앱` |
|
|
95
|
-
| `/sdd.new` | 새 기능 명세 작성 | `/sdd.new 사용자 인증 기능` |
|
|
96
|
-
| `/sdd.plan` | 구현 계획 작성 | `/sdd.plan` |
|
|
97
|
-
| `/sdd.tasks` | 작업 분해 | `/sdd.tasks` |
|
|
98
|
-
| `/sdd.prepare` | 서브에이전트/스킬 점검 | `/sdd.prepare` |
|
|
99
|
-
| `/sdd.implement` | 순차적 구현 | `/sdd.implement` |
|
|
100
|
-
| `/sdd.validate` | 스펙 검증 | `/sdd.validate` |
|
|
101
|
-
|
|
102
|
-
### 변경 관리
|
|
103
|
-
|
|
104
|
-
| 커맨드 | 설명 |
|
|
105
|
-
|--------|------|
|
|
106
|
-
| `/sdd.change` | 기존 스펙 변경 제안 |
|
|
107
|
-
| `/sdd.impact` | 변경 영향도 분석 |
|
|
108
|
-
| `/sdd.transition` | new ↔ change 워크플로우 전환 |
|
|
109
|
-
|
|
110
|
-
### 분석 및 품질
|
|
111
|
-
|
|
112
|
-
| 커맨드 | 설명 |
|
|
113
|
-
|--------|------|
|
|
114
|
-
| `/sdd.analyze` | 요청 분석 및 규모 판단 |
|
|
115
|
-
| `/sdd.quality` | 스펙 품질 점수 산출 |
|
|
116
|
-
| `/sdd.report` | 프로젝트 리포트 생성 |
|
|
117
|
-
| `/sdd.search` | 스펙 검색 |
|
|
118
|
-
| `/sdd.status` | 프로젝트 상태 확인 |
|
|
119
|
-
| `/sdd.list` | 항목 목록 조회 |
|
|
120
|
-
| `/sdd.sync` | 스펙-코드 동기화 검증 |
|
|
121
|
-
| `/sdd.diff` | 스펙 변경사항 시각화 |
|
|
122
|
-
| `/sdd.export` | 스펙 내보내기 (HTML, JSON) |
|
|
123
|
-
|
|
124
|
-
### 문서 생성
|
|
125
|
-
|
|
126
|
-
| 커맨드 | 설명 |
|
|
127
|
-
|--------|------|
|
|
128
|
-
| `/sdd.research` | 기술 리서치 문서 |
|
|
129
|
-
| `/sdd.data-model` | 데이터 모델 문서 |
|
|
130
|
-
| `/sdd.guide` | 워크플로우 가이드 |
|
|
131
|
-
|
|
132
|
-
### 운영
|
|
133
|
-
|
|
134
|
-
| 커맨드 | 설명 |
|
|
135
|
-
|--------|------|
|
|
136
|
-
| `/sdd.chat` | 대화형 SDD 어시스턴트 |
|
|
137
|
-
| `/sdd.watch` | 파일 감시 모드 |
|
|
138
|
-
| `/sdd.migrate` | 외부 도구에서 마이그레이션 |
|
|
139
|
-
| `/sdd.cicd` | CI/CD 설정 |
|
|
140
|
-
| `/sdd.prompt` | 프롬프트 출력 |
|
|
141
|
-
|
|
142
|
-
---
|
|
143
|
-
|
|
144
|
-
## 워크플로우 상세
|
|
145
|
-
|
|
146
|
-
### Step 1: /sdd.start
|
|
147
|
-
|
|
148
|
-
프로젝트 상태를 분석하고 다음 작업을 안내합니다:
|
|
149
|
-
|
|
150
|
-
```
|
|
151
|
-
/sdd.start
|
|
152
|
-
```
|
|
153
|
-
|
|
154
|
-
- 신규 프로젝트: Constitution 작성 권장
|
|
155
|
-
- 기존 프로젝트: 워크플로우 선택 메뉴 제공
|
|
156
|
-
|
|
157
|
-
### Step 2: /sdd.constitution
|
|
158
|
-
|
|
159
|
-
프로젝트의 핵심 원칙을 정의합니다:
|
|
160
|
-
|
|
161
|
-
```
|
|
162
|
-
/sdd.constitution React 기반 할일 관리 앱
|
|
163
|
-
```
|
|
164
|
-
|
|
165
|
-
AI가 `.sdd/constitution.md`를 분석하고, 프로젝트 원칙 작성을 도와줍니다:
|
|
166
|
-
- 핵심 원칙 (Core Principles)
|
|
167
|
-
- 기술 원칙 (Technical Principles)
|
|
168
|
-
- 금지 사항 (Forbidden)
|
|
169
|
-
|
|
170
|
-
### Step 3: /sdd.new
|
|
171
|
-
|
|
172
|
-
기능 명세를 AI와 함께 작성합니다:
|
|
173
|
-
|
|
174
|
-
```
|
|
175
|
-
/sdd.new 사용자 인증 기능
|
|
176
|
-
```
|
|
177
|
-
|
|
178
|
-
AI가 대화를 통해 다음을 생성합니다:
|
|
179
|
-
- `spec.md` - 기능 명세 (RFC 2119 + GIVEN-WHEN-THEN)
|
|
180
|
-
|
|
181
|
-
### Step 4: /sdd.plan
|
|
182
|
-
|
|
183
|
-
구현 계획을 수립합니다:
|
|
184
|
-
|
|
185
|
-
```
|
|
186
|
-
/sdd.plan
|
|
187
|
-
```
|
|
188
|
-
|
|
189
|
-
- 기술 결정사항과 근거
|
|
190
|
-
- 구현 단계(Phase) 정의
|
|
191
|
-
- 리스크 분석 및 완화 전략
|
|
192
|
-
|
|
193
|
-
### Step 5: /sdd.tasks
|
|
194
|
-
|
|
195
|
-
작업을 실행 가능한 단위로 분해합니다:
|
|
196
|
-
|
|
197
|
-
```
|
|
198
|
-
/sdd.tasks
|
|
199
|
-
```
|
|
200
|
-
|
|
201
|
-
- 각 작업은 2-4시간 내 완료 가능한 크기
|
|
202
|
-
- 작업 간 의존성 표시
|
|
203
|
-
- 우선순위: HIGH(🔴), MEDIUM(🟡), LOW(🟢)
|
|
204
|
-
|
|
205
|
-
### Step 6: /sdd.prepare
|
|
206
|
-
|
|
207
|
-
구현에 필요한 Claude Code 도구를 점검합니다:
|
|
208
|
-
|
|
209
|
-
```
|
|
210
|
-
/sdd.prepare
|
|
211
|
-
```
|
|
212
|
-
|
|
213
|
-
**기능:**
|
|
214
|
-
- tasks.md 분석하여 필요한 도구 자동 감지
|
|
215
|
-
- 서브에이전트 (`.claude/agents/`) 존재 여부 확인
|
|
216
|
-
- 스킬 (`.claude/skills/`) 존재 여부 확인
|
|
217
|
-
- 누락된 도구 자동 생성
|
|
218
|
-
|
|
219
|
-
**감지 대상:**
|
|
220
|
-
|
|
221
|
-
| 키워드 | 서브에이전트 | 스킬 |
|
|
222
|
-
|--------|-------------|------|
|
|
223
|
-
| 테스트, test | test-runner | test |
|
|
224
|
-
| api, rest | api-scaffold | gen-api |
|
|
225
|
-
| component | component-gen | gen-component |
|
|
226
|
-
| database | - | db-migrate |
|
|
227
|
-
| 문서, doc | - | gen-doc |
|
|
228
|
-
| review | code-reviewer | review |
|
|
229
|
-
|
|
230
|
-
**CLI에서도 사용 가능:**
|
|
231
|
-
|
|
232
|
-
```bash
|
|
233
|
-
sdd prepare user-auth # 대화형
|
|
234
|
-
sdd prepare user-auth --dry-run # 미리보기
|
|
235
|
-
sdd prepare user-auth --auto-approve # 자동 생성
|
|
236
|
-
```
|
|
237
|
-
|
|
238
|
-
### Step 7: /sdd.implement
|
|
239
|
-
|
|
240
|
-
작업 목록을 기반으로 순차적 구현:
|
|
241
|
-
|
|
242
|
-
```
|
|
243
|
-
/sdd.implement
|
|
244
|
-
```
|
|
245
|
-
|
|
246
|
-
AI가 tasks.md를 읽고, TDD 방식으로 구현을 안내합니다:
|
|
247
|
-
1. 작업 상태를 "진행 중"으로 변경
|
|
248
|
-
2. 테스트 작성
|
|
249
|
-
3. 코드 구현
|
|
250
|
-
4. 작업 상태를 "완료"로 변경
|
|
251
|
-
|
|
252
|
-
### Step 8: /sdd.validate
|
|
253
|
-
|
|
254
|
-
명세 검증:
|
|
255
|
-
|
|
256
|
-
```
|
|
257
|
-
/sdd.validate
|
|
258
|
-
```
|
|
259
|
-
|
|
260
|
-
- RFC 2119 키워드 사용 여부
|
|
261
|
-
- GIVEN-WHEN-THEN 형식 준수
|
|
262
|
-
- 메타데이터 필수 필드 확인
|
|
263
|
-
|
|
264
|
-
---
|
|
265
|
-
|
|
266
|
-
## 대화형 모드: /sdd.chat
|
|
267
|
-
|
|
268
|
-
자연어로 SDD 작업을 수행할 수 있습니다:
|
|
269
|
-
|
|
270
|
-
```
|
|
271
|
-
/sdd.chat
|
|
272
|
-
```
|
|
273
|
-
|
|
274
|
-
예시 대화:
|
|
275
|
-
```
|
|
276
|
-
You: 사용자 인증 기능을 만들고 싶어
|
|
277
|
-
AI: 사용자 인증 기능의 명세를 작성해 드릴게요. 먼저 몇 가지 질문이 있습니다...
|
|
278
|
-
1. 어떤 인증 방식을 사용하시나요? (JWT, 세션, OAuth)
|
|
279
|
-
2. 소셜 로그인이 필요한가요?
|
|
280
|
-
...
|
|
281
|
-
```
|
|
282
|
-
|
|
283
|
-
---
|
|
284
|
-
|
|
285
|
-
## 스펙 파일 형식
|
|
286
|
-
|
|
287
|
-
### spec.md 예시
|
|
288
|
-
|
|
289
|
-
```markdown
|
|
290
|
-
---
|
|
291
|
-
id: user-auth
|
|
292
|
-
title: "사용자 인증"
|
|
293
|
-
status: draft
|
|
294
|
-
created: 2025-12-24
|
|
295
|
-
constitution_version: 1.0.0
|
|
296
|
-
---
|
|
297
|
-
|
|
298
|
-
# 사용자 인증
|
|
299
|
-
|
|
300
|
-
> JWT 기반 사용자 인증 시스템
|
|
301
|
-
|
|
302
|
-
## 요구사항
|
|
303
|
-
|
|
304
|
-
### REQ-01: 로그인
|
|
305
|
-
|
|
306
|
-
- 시스템은 이메일/비밀번호 로그인을 지원해야 한다(SHALL)
|
|
307
|
-
- 로그인 실패 시 구체적인 에러 메시지를 반환해야 한다(SHOULD)
|
|
308
|
-
|
|
309
|
-
## 시나리오
|
|
310
|
-
|
|
311
|
-
### Scenario 1: 성공적인 로그인
|
|
312
|
-
|
|
313
|
-
- **GIVEN** 유효한 사용자 계정이 있을 때
|
|
314
|
-
- **WHEN** 올바른 이메일과 비밀번호로 로그인하면
|
|
315
|
-
- **THEN** JWT 토큰이 반환된다
|
|
316
|
-
- **AND** 토큰 만료 시간이 설정된다
|
|
317
|
-
```
|
|
318
|
-
|
|
319
|
-
### RFC 2119 키워드
|
|
320
|
-
|
|
321
|
-
| 키워드 | 의미 |
|
|
322
|
-
|--------|------|
|
|
323
|
-
| **SHALL** / **MUST** | 절대 필수 |
|
|
324
|
-
| **SHOULD** | 권장 (예외 허용) |
|
|
325
|
-
| **MAY** | 선택적 |
|
|
326
|
-
| **SHALL NOT** | 절대 금지 |
|
|
327
|
-
|
|
328
|
-
---
|
|
329
|
-
|
|
330
|
-
## CLI 명령어
|
|
331
|
-
|
|
332
|
-
슬래시 커맨드 외에 터미널에서 직접 사용할 수 있는 명령어들입니다.
|
|
333
|
-
|
|
334
|
-
### 기본 명령어
|
|
335
|
-
|
|
336
|
-
```bash
|
|
337
|
-
sdd init # 프로젝트 초기화
|
|
338
|
-
sdd
|
|
339
|
-
sdd
|
|
340
|
-
sdd
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
sdd
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
sdd
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
sdd
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
sdd sync
|
|
373
|
-
sdd sync
|
|
374
|
-
sdd sync --
|
|
375
|
-
|
|
376
|
-
sdd
|
|
377
|
-
|
|
378
|
-
sdd diff
|
|
379
|
-
sdd diff --
|
|
380
|
-
sdd diff
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
sdd export
|
|
389
|
-
sdd export --
|
|
390
|
-
sdd export
|
|
391
|
-
sdd export --
|
|
392
|
-
sdd export
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
```
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
```bash
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
1
|
+
# SDD Tool
|
|
2
|
+
|
|
3
|
+
**Spec-Driven Development CLI** - AI와 함께하는 명세 기반 개발 도구
|
|
4
|
+
|
|
5
|
+
[](https://www.npmjs.com/package/sdd-tool)
|
|
6
|
+
[](https://github.com/JakeB-5/sdd-tool/actions/workflows/ci.yml)
|
|
7
|
+
[](https://nodejs.org/)
|
|
8
|
+
[](https://www.typescriptlang.org/)
|
|
9
|
+
[](LICENSE)
|
|
10
|
+
|
|
11
|
+
📚 **[문서 사이트](https://jakeb-5.github.io/sdd-tool/)** | 🚀 **[시작하기](https://jakeb-5.github.io/sdd-tool/guide/getting-started)** | 📋 **[CLI 레퍼런스](https://jakeb-5.github.io/sdd-tool/cli/)**
|
|
12
|
+
|
|
13
|
+
## 개요
|
|
14
|
+
|
|
15
|
+
SDD Tool은 **Claude Code**와 함께 사용하도록 설계된 명세 기반 개발(Spec-Driven Development) CLI입니다. **슬래시 커맨드**를 통해 AI와 대화하며 명세를 작성하고, 코드를 구현합니다.
|
|
16
|
+
|
|
17
|
+
### 핵심 개념
|
|
18
|
+
|
|
19
|
+
- **명세 우선**: 코드 작성 전 명세 작성
|
|
20
|
+
- **AI 협업**: Claude Code 슬래시 커맨드로 워크플로우 자동화
|
|
21
|
+
- **RFC 2119 키워드**: SHALL, MUST, SHOULD, MAY로 요구사항 명확화
|
|
22
|
+
- **GIVEN-WHEN-THEN**: 시나리오 기반 요구사항 정의
|
|
23
|
+
- **헌법(Constitution)**: 프로젝트 핵심 원칙 정의
|
|
24
|
+
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
## 설치
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
npm install -g sdd-tool
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
---
|
|
34
|
+
|
|
35
|
+
## 빠른 시작
|
|
36
|
+
|
|
37
|
+
```bash
|
|
38
|
+
# 1. 프로젝트 초기화 (슬래시 커맨드 + Git/CI-CD 설정)
|
|
39
|
+
sdd init
|
|
40
|
+
|
|
41
|
+
# 2. Claude Code 실행
|
|
42
|
+
claude
|
|
43
|
+
|
|
44
|
+
# 3. 슬래시 커맨드로 워크플로우 시작
|
|
45
|
+
/sdd.start
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
---
|
|
49
|
+
|
|
50
|
+
## 전체 워크플로우
|
|
51
|
+
|
|
52
|
+
```
|
|
53
|
+
┌─────────────────────────────────────────────────────────────┐
|
|
54
|
+
│ SDD 슬래시 커맨드 워크플로우 │
|
|
55
|
+
├─────────────────────────────────────────────────────────────┤
|
|
56
|
+
│ │
|
|
57
|
+
│ 1. /sdd.start → 워크플로우 시작 │
|
|
58
|
+
│ │ │
|
|
59
|
+
│ ▼ │
|
|
60
|
+
│ 2. /sdd.constitution → 프로젝트 원칙 정의 │
|
|
61
|
+
│ │ │
|
|
62
|
+
│ ▼ │
|
|
63
|
+
│ 3. /sdd.new → 기능 명세 작성 (spec.md) │
|
|
64
|
+
│ │ │
|
|
65
|
+
│ ▼ │
|
|
66
|
+
│ 4. /sdd.plan → 구현 계획 수립 (plan.md) │
|
|
67
|
+
│ │ │
|
|
68
|
+
│ ▼ │
|
|
69
|
+
│ 5. /sdd.tasks → 작업 분해 (tasks.md) │
|
|
70
|
+
│ │ │
|
|
71
|
+
│ ▼ │
|
|
72
|
+
│ 6. /sdd.prepare → 서브에이전트/스킬 점검 │
|
|
73
|
+
│ │ │
|
|
74
|
+
│ ▼ │
|
|
75
|
+
│ 7. /sdd.implement → 순차적 구현 │
|
|
76
|
+
│ │ │
|
|
77
|
+
│ ▼ │
|
|
78
|
+
│ 8. /sdd.validate → 명세 검증 │
|
|
79
|
+
│ │
|
|
80
|
+
└─────────────────────────────────────────────────────────────┘
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
---
|
|
84
|
+
|
|
85
|
+
## 슬래시 커맨드 (29개)
|
|
86
|
+
|
|
87
|
+
`sdd init` 실행 시 `.claude/commands/`에 자동 생성됩니다.
|
|
88
|
+
|
|
89
|
+
### 핵심 워크플로우
|
|
90
|
+
|
|
91
|
+
| 커맨드 | 설명 | 사용 예시 |
|
|
92
|
+
|--------|------|----------|
|
|
93
|
+
| `/sdd.start` | 통합 진입점 | `/sdd.start` |
|
|
94
|
+
| `/sdd.constitution` | 프로젝트 원칙 관리 | `/sdd.constitution React 기반 할일 앱` |
|
|
95
|
+
| `/sdd.new` | 새 기능 명세 작성 | `/sdd.new 사용자 인증 기능` |
|
|
96
|
+
| `/sdd.plan` | 구현 계획 작성 | `/sdd.plan` |
|
|
97
|
+
| `/sdd.tasks` | 작업 분해 | `/sdd.tasks` |
|
|
98
|
+
| `/sdd.prepare` | 서브에이전트/스킬 점검 | `/sdd.prepare` |
|
|
99
|
+
| `/sdd.implement` | 순차적 구현 | `/sdd.implement` |
|
|
100
|
+
| `/sdd.validate` | 스펙 검증 | `/sdd.validate` |
|
|
101
|
+
|
|
102
|
+
### 변경 관리
|
|
103
|
+
|
|
104
|
+
| 커맨드 | 설명 |
|
|
105
|
+
|--------|------|
|
|
106
|
+
| `/sdd.change` | 기존 스펙 변경 제안 |
|
|
107
|
+
| `/sdd.impact` | 변경 영향도 분석 |
|
|
108
|
+
| `/sdd.transition` | new ↔ change 워크플로우 전환 |
|
|
109
|
+
|
|
110
|
+
### 분석 및 품질
|
|
111
|
+
|
|
112
|
+
| 커맨드 | 설명 |
|
|
113
|
+
|--------|------|
|
|
114
|
+
| `/sdd.analyze` | 요청 분석 및 규모 판단 |
|
|
115
|
+
| `/sdd.quality` | 스펙 품질 점수 산출 |
|
|
116
|
+
| `/sdd.report` | 프로젝트 리포트 생성 |
|
|
117
|
+
| `/sdd.search` | 스펙 검색 |
|
|
118
|
+
| `/sdd.status` | 프로젝트 상태 확인 |
|
|
119
|
+
| `/sdd.list` | 항목 목록 조회 |
|
|
120
|
+
| `/sdd.sync` | 스펙-코드 동기화 검증 |
|
|
121
|
+
| `/sdd.diff` | 스펙 변경사항 시각화 |
|
|
122
|
+
| `/sdd.export` | 스펙 내보내기 (HTML, JSON) |
|
|
123
|
+
|
|
124
|
+
### 문서 생성
|
|
125
|
+
|
|
126
|
+
| 커맨드 | 설명 |
|
|
127
|
+
|--------|------|
|
|
128
|
+
| `/sdd.research` | 기술 리서치 문서 |
|
|
129
|
+
| `/sdd.data-model` | 데이터 모델 문서 |
|
|
130
|
+
| `/sdd.guide` | 워크플로우 가이드 |
|
|
131
|
+
|
|
132
|
+
### 운영
|
|
133
|
+
|
|
134
|
+
| 커맨드 | 설명 |
|
|
135
|
+
|--------|------|
|
|
136
|
+
| `/sdd.chat` | 대화형 SDD 어시스턴트 |
|
|
137
|
+
| `/sdd.watch` | 파일 감시 모드 |
|
|
138
|
+
| `/sdd.migrate` | 외부 도구에서 마이그레이션 |
|
|
139
|
+
| `/sdd.cicd` | CI/CD 설정 |
|
|
140
|
+
| `/sdd.prompt` | 프롬프트 출력 |
|
|
141
|
+
|
|
142
|
+
---
|
|
143
|
+
|
|
144
|
+
## 워크플로우 상세
|
|
145
|
+
|
|
146
|
+
### Step 1: /sdd.start
|
|
147
|
+
|
|
148
|
+
프로젝트 상태를 분석하고 다음 작업을 안내합니다:
|
|
149
|
+
|
|
150
|
+
```
|
|
151
|
+
/sdd.start
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
- 신규 프로젝트: Constitution 작성 권장
|
|
155
|
+
- 기존 프로젝트: 워크플로우 선택 메뉴 제공
|
|
156
|
+
|
|
157
|
+
### Step 2: /sdd.constitution
|
|
158
|
+
|
|
159
|
+
프로젝트의 핵심 원칙을 정의합니다:
|
|
160
|
+
|
|
161
|
+
```
|
|
162
|
+
/sdd.constitution React 기반 할일 관리 앱
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
AI가 `.sdd/constitution.md`를 분석하고, 프로젝트 원칙 작성을 도와줍니다:
|
|
166
|
+
- 핵심 원칙 (Core Principles)
|
|
167
|
+
- 기술 원칙 (Technical Principles)
|
|
168
|
+
- 금지 사항 (Forbidden)
|
|
169
|
+
|
|
170
|
+
### Step 3: /sdd.new
|
|
171
|
+
|
|
172
|
+
기능 명세를 AI와 함께 작성합니다:
|
|
173
|
+
|
|
174
|
+
```
|
|
175
|
+
/sdd.new 사용자 인증 기능
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
AI가 대화를 통해 다음을 생성합니다:
|
|
179
|
+
- `spec.md` - 기능 명세 (RFC 2119 + GIVEN-WHEN-THEN)
|
|
180
|
+
|
|
181
|
+
### Step 4: /sdd.plan
|
|
182
|
+
|
|
183
|
+
구현 계획을 수립합니다:
|
|
184
|
+
|
|
185
|
+
```
|
|
186
|
+
/sdd.plan
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
- 기술 결정사항과 근거
|
|
190
|
+
- 구현 단계(Phase) 정의
|
|
191
|
+
- 리스크 분석 및 완화 전략
|
|
192
|
+
|
|
193
|
+
### Step 5: /sdd.tasks
|
|
194
|
+
|
|
195
|
+
작업을 실행 가능한 단위로 분해합니다:
|
|
196
|
+
|
|
197
|
+
```
|
|
198
|
+
/sdd.tasks
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
- 각 작업은 2-4시간 내 완료 가능한 크기
|
|
202
|
+
- 작업 간 의존성 표시
|
|
203
|
+
- 우선순위: HIGH(🔴), MEDIUM(🟡), LOW(🟢)
|
|
204
|
+
|
|
205
|
+
### Step 6: /sdd.prepare
|
|
206
|
+
|
|
207
|
+
구현에 필요한 Claude Code 도구를 점검합니다:
|
|
208
|
+
|
|
209
|
+
```
|
|
210
|
+
/sdd.prepare
|
|
211
|
+
```
|
|
212
|
+
|
|
213
|
+
**기능:**
|
|
214
|
+
- tasks.md 분석하여 필요한 도구 자동 감지
|
|
215
|
+
- 서브에이전트 (`.claude/agents/`) 존재 여부 확인
|
|
216
|
+
- 스킬 (`.claude/skills/`) 존재 여부 확인
|
|
217
|
+
- 누락된 도구 자동 생성
|
|
218
|
+
|
|
219
|
+
**감지 대상:**
|
|
220
|
+
|
|
221
|
+
| 키워드 | 서브에이전트 | 스킬 |
|
|
222
|
+
|--------|-------------|------|
|
|
223
|
+
| 테스트, test | test-runner | test |
|
|
224
|
+
| api, rest | api-scaffold | gen-api |
|
|
225
|
+
| component | component-gen | gen-component |
|
|
226
|
+
| database | - | db-migrate |
|
|
227
|
+
| 문서, doc | - | gen-doc |
|
|
228
|
+
| review | code-reviewer | review |
|
|
229
|
+
|
|
230
|
+
**CLI에서도 사용 가능:**
|
|
231
|
+
|
|
232
|
+
```bash
|
|
233
|
+
sdd prepare user-auth # 대화형
|
|
234
|
+
sdd prepare user-auth --dry-run # 미리보기
|
|
235
|
+
sdd prepare user-auth --auto-approve # 자동 생성
|
|
236
|
+
```
|
|
237
|
+
|
|
238
|
+
### Step 7: /sdd.implement
|
|
239
|
+
|
|
240
|
+
작업 목록을 기반으로 순차적 구현:
|
|
241
|
+
|
|
242
|
+
```
|
|
243
|
+
/sdd.implement
|
|
244
|
+
```
|
|
245
|
+
|
|
246
|
+
AI가 tasks.md를 읽고, TDD 방식으로 구현을 안내합니다:
|
|
247
|
+
1. 작업 상태를 "진행 중"으로 변경
|
|
248
|
+
2. 테스트 작성
|
|
249
|
+
3. 코드 구현
|
|
250
|
+
4. 작업 상태를 "완료"로 변경
|
|
251
|
+
|
|
252
|
+
### Step 8: /sdd.validate
|
|
253
|
+
|
|
254
|
+
명세 검증:
|
|
255
|
+
|
|
256
|
+
```
|
|
257
|
+
/sdd.validate
|
|
258
|
+
```
|
|
259
|
+
|
|
260
|
+
- RFC 2119 키워드 사용 여부
|
|
261
|
+
- GIVEN-WHEN-THEN 형식 준수
|
|
262
|
+
- 메타데이터 필수 필드 확인
|
|
263
|
+
|
|
264
|
+
---
|
|
265
|
+
|
|
266
|
+
## 대화형 모드: /sdd.chat
|
|
267
|
+
|
|
268
|
+
자연어로 SDD 작업을 수행할 수 있습니다:
|
|
269
|
+
|
|
270
|
+
```
|
|
271
|
+
/sdd.chat
|
|
272
|
+
```
|
|
273
|
+
|
|
274
|
+
예시 대화:
|
|
275
|
+
```
|
|
276
|
+
You: 사용자 인증 기능을 만들고 싶어
|
|
277
|
+
AI: 사용자 인증 기능의 명세를 작성해 드릴게요. 먼저 몇 가지 질문이 있습니다...
|
|
278
|
+
1. 어떤 인증 방식을 사용하시나요? (JWT, 세션, OAuth)
|
|
279
|
+
2. 소셜 로그인이 필요한가요?
|
|
280
|
+
...
|
|
281
|
+
```
|
|
282
|
+
|
|
283
|
+
---
|
|
284
|
+
|
|
285
|
+
## 스펙 파일 형식
|
|
286
|
+
|
|
287
|
+
### spec.md 예시
|
|
288
|
+
|
|
289
|
+
```markdown
|
|
290
|
+
---
|
|
291
|
+
id: user-auth
|
|
292
|
+
title: "사용자 인증"
|
|
293
|
+
status: draft
|
|
294
|
+
created: 2025-12-24
|
|
295
|
+
constitution_version: 1.0.0
|
|
296
|
+
---
|
|
297
|
+
|
|
298
|
+
# 사용자 인증
|
|
299
|
+
|
|
300
|
+
> JWT 기반 사용자 인증 시스템
|
|
301
|
+
|
|
302
|
+
## 요구사항
|
|
303
|
+
|
|
304
|
+
### REQ-01: 로그인
|
|
305
|
+
|
|
306
|
+
- 시스템은 이메일/비밀번호 로그인을 지원해야 한다(SHALL)
|
|
307
|
+
- 로그인 실패 시 구체적인 에러 메시지를 반환해야 한다(SHOULD)
|
|
308
|
+
|
|
309
|
+
## 시나리오
|
|
310
|
+
|
|
311
|
+
### Scenario 1: 성공적인 로그인
|
|
312
|
+
|
|
313
|
+
- **GIVEN** 유효한 사용자 계정이 있을 때
|
|
314
|
+
- **WHEN** 올바른 이메일과 비밀번호로 로그인하면
|
|
315
|
+
- **THEN** JWT 토큰이 반환된다
|
|
316
|
+
- **AND** 토큰 만료 시간이 설정된다
|
|
317
|
+
```
|
|
318
|
+
|
|
319
|
+
### RFC 2119 키워드
|
|
320
|
+
|
|
321
|
+
| 키워드 | 의미 |
|
|
322
|
+
|--------|------|
|
|
323
|
+
| **SHALL** / **MUST** | 절대 필수 |
|
|
324
|
+
| **SHOULD** | 권장 (예외 허용) |
|
|
325
|
+
| **MAY** | 선택적 |
|
|
326
|
+
| **SHALL NOT** | 절대 금지 |
|
|
327
|
+
|
|
328
|
+
---
|
|
329
|
+
|
|
330
|
+
## CLI 명령어
|
|
331
|
+
|
|
332
|
+
슬래시 커맨드 외에 터미널에서 직접 사용할 수 있는 명령어들입니다.
|
|
333
|
+
|
|
334
|
+
### 기본 명령어
|
|
335
|
+
|
|
336
|
+
```bash
|
|
337
|
+
sdd init # 프로젝트 초기화 (대화형 Git/CI-CD 설정 포함)
|
|
338
|
+
sdd init --skip-git-setup # Git/CI-CD 설정 건너뛰기
|
|
339
|
+
sdd init --auto-approve # 모든 설정 자동 승인
|
|
340
|
+
sdd validate # 스펙 검증
|
|
341
|
+
sdd status # 상태 확인
|
|
342
|
+
sdd list # 목록 조회
|
|
343
|
+
```
|
|
344
|
+
|
|
345
|
+
### 기능 개발
|
|
346
|
+
|
|
347
|
+
```bash
|
|
348
|
+
sdd new <name> # 새 기능 생성
|
|
349
|
+
sdd new <name> --all # spec + plan + tasks 모두 생성
|
|
350
|
+
sdd prepare <name> # 서브에이전트/스킬 점검
|
|
351
|
+
```
|
|
352
|
+
|
|
353
|
+
### 변경 관리
|
|
354
|
+
|
|
355
|
+
```bash
|
|
356
|
+
sdd change # 변경 제안 생성
|
|
357
|
+
sdd change apply <id> # 변경 적용
|
|
358
|
+
sdd impact <feature> # 영향도 분석
|
|
359
|
+
```
|
|
360
|
+
|
|
361
|
+
### 품질 및 분석
|
|
362
|
+
|
|
363
|
+
```bash
|
|
364
|
+
sdd quality # 품질 분석
|
|
365
|
+
sdd report # 리포트 생성
|
|
366
|
+
sdd search <query> # 스펙 검색
|
|
367
|
+
```
|
|
368
|
+
|
|
369
|
+
### 동기화 및 변경 추적 (v0.8.0)
|
|
370
|
+
|
|
371
|
+
```bash
|
|
372
|
+
sdd sync # 스펙-코드 동기화 검증
|
|
373
|
+
sdd sync user-auth # 특정 스펙만 검증
|
|
374
|
+
sdd sync --ci --threshold 80 # CI 모드 (동기화율 임계값)
|
|
375
|
+
sdd sync --json # JSON 출력
|
|
376
|
+
sdd sync --markdown # 마크다운 리포트
|
|
377
|
+
|
|
378
|
+
sdd diff # 스펙 변경사항 (작업 디렉토리)
|
|
379
|
+
sdd diff --staged # 스테이징된 변경
|
|
380
|
+
sdd diff abc123 def456 # 커밋 간 비교
|
|
381
|
+
sdd diff --stat # 통계 요약
|
|
382
|
+
sdd diff --json # JSON 출력
|
|
383
|
+
```
|
|
384
|
+
|
|
385
|
+
### 스펙 내보내기 (v0.9.0)
|
|
386
|
+
|
|
387
|
+
```bash
|
|
388
|
+
sdd export user-auth # 단일 스펙 HTML 내보내기
|
|
389
|
+
sdd export --all # 전체 스펙 내보내기
|
|
390
|
+
sdd export --format json # JSON 형식
|
|
391
|
+
sdd export --format markdown # 마크다운 병합
|
|
392
|
+
sdd export -o ./docs/specs.html # 출력 경로 지정
|
|
393
|
+
sdd export --theme dark # 다크 테마
|
|
394
|
+
sdd export --no-toc # 목차 제외
|
|
395
|
+
```
|
|
396
|
+
|
|
397
|
+
### 도메인 관리 (v1.2.0)
|
|
398
|
+
|
|
399
|
+
```bash
|
|
400
|
+
sdd domain create auth # 새 도메인 생성
|
|
401
|
+
sdd domain list # 도메인 목록
|
|
402
|
+
sdd domain show auth # 도메인 상세 정보
|
|
403
|
+
sdd domain link auth user-login # 스펙을 도메인에 연결
|
|
404
|
+
sdd domain depends order --on auth # 도메인 의존성 설정
|
|
405
|
+
sdd domain graph # 의존성 그래프 (Mermaid)
|
|
406
|
+
sdd domain graph --format dot # DOT 형식
|
|
407
|
+
```
|
|
408
|
+
|
|
409
|
+
### 컨텍스트 관리 (v1.2.0)
|
|
410
|
+
|
|
411
|
+
```bash
|
|
412
|
+
sdd context set auth # 컨텍스트 설정
|
|
413
|
+
sdd context set auth order # 여러 도메인
|
|
414
|
+
sdd context set auth --include-deps # 의존성 포함
|
|
415
|
+
sdd context show # 현재 컨텍스트
|
|
416
|
+
sdd context specs # 컨텍스트 내 스펙 목록
|
|
417
|
+
sdd context clear # 컨텍스트 해제
|
|
418
|
+
```
|
|
419
|
+
|
|
420
|
+
### 역추출 (v1.2.0)
|
|
421
|
+
|
|
422
|
+
```bash
|
|
423
|
+
sdd reverse scan # 프로젝트 구조 스캔
|
|
424
|
+
sdd reverse scan --depth deep # 심층 분석
|
|
425
|
+
sdd reverse extract # 스펙 초안 추출
|
|
426
|
+
sdd reverse extract --ai # AI 기반 의도 추론
|
|
427
|
+
sdd reverse review # 추출된 스펙 리뷰
|
|
428
|
+
sdd reverse finalize # 승인된 스펙 확정
|
|
429
|
+
```
|
|
430
|
+
|
|
431
|
+
### Git 워크플로우 (v1.0.0)
|
|
432
|
+
|
|
433
|
+
```bash
|
|
434
|
+
# Git Hooks 설정
|
|
435
|
+
sdd git hooks install # pre-commit, commit-msg, pre-push 설치
|
|
436
|
+
sdd git hooks uninstall # hooks 제거
|
|
437
|
+
|
|
438
|
+
# 커밋 템플릿 설정
|
|
439
|
+
sdd git template install # .gitmessage 템플릿 설치
|
|
440
|
+
|
|
441
|
+
# 전체 Git 워크플로우 설정
|
|
442
|
+
sdd git setup # hooks + template + .gitignore/.gitattributes
|
|
443
|
+
|
|
444
|
+
# CI/CD 설정
|
|
445
|
+
sdd cicd setup github # GitHub Actions 워크플로우 생성
|
|
446
|
+
sdd cicd setup gitlab # GitLab CI 설정 생성
|
|
447
|
+
sdd cicd check # CI 환경 검증
|
|
448
|
+
```
|
|
449
|
+
|
|
450
|
+
---
|
|
451
|
+
|
|
452
|
+
## Claude Code 도구 구조
|
|
453
|
+
|
|
454
|
+
```
|
|
455
|
+
your-project/
|
|
456
|
+
├── .sdd/
|
|
457
|
+
│ ├── constitution.md # 프로젝트 헌법
|
|
458
|
+
│ ├── AGENTS.md # AI 워크플로우 가이드
|
|
459
|
+
│ ├── domains.yml # 도메인 정의 (v1.2.0)
|
|
460
|
+
│ ├── .context.json # 현재 컨텍스트 (v1.2.0)
|
|
461
|
+
│ ├── specs/ # 기능 명세
|
|
462
|
+
│ │ ├── feature-name/ # 단순 기능
|
|
463
|
+
│ │ │ ├── spec.md
|
|
464
|
+
│ │ │ ├── plan.md
|
|
465
|
+
│ │ │ └── tasks.md
|
|
466
|
+
│ │ └── domain-name/ # 도메인별 그룹 (v1.2.0)
|
|
467
|
+
│ │ └── feature/
|
|
468
|
+
│ │ └── spec.md
|
|
469
|
+
│ ├── changes/ # 변경 제안
|
|
470
|
+
│ ├── archive/ # 완료된 변경
|
|
471
|
+
│ └── drafts/ # 역추출 임시 스펙 (v1.2.0)
|
|
472
|
+
│
|
|
473
|
+
└── .claude/
|
|
474
|
+
├── commands/ # 슬래시 커맨드 (29개)
|
|
475
|
+
│ ├── sdd.start.md
|
|
476
|
+
│ ├── sdd.new.md
|
|
477
|
+
│ └── ...
|
|
478
|
+
├── agents/ # 서브에이전트
|
|
479
|
+
│ ├── test-runner.md
|
|
480
|
+
│ └── api-scaffold.md
|
|
481
|
+
├── skills/ # 스킬 (v1.2.0)
|
|
482
|
+
│ ├── dev-implement.md
|
|
483
|
+
│ ├── dev-test.md
|
|
484
|
+
│ ├── sdd-reverse.md
|
|
485
|
+
│ ├── sdd-domain.md
|
|
486
|
+
│ ├── sdd-context.md
|
|
487
|
+
│ └── ...
|
|
488
|
+
└── settings.json # 스킬 설정 (v1.2.0)
|
|
489
|
+
```
|
|
490
|
+
|
|
491
|
+
---
|
|
492
|
+
|
|
493
|
+
## 개발
|
|
494
|
+
|
|
495
|
+
```bash
|
|
496
|
+
git clone https://github.com/JakeB-5/sdd-tool.git
|
|
497
|
+
cd sdd-tool
|
|
498
|
+
pnpm install
|
|
499
|
+
pnpm run build
|
|
500
|
+
pnpm test
|
|
501
|
+
```
|
|
502
|
+
|
|
503
|
+
### 문서 개발
|
|
504
|
+
|
|
505
|
+
```bash
|
|
506
|
+
pnpm run docs:dev # 개발 서버
|
|
507
|
+
pnpm run docs:build # 빌드
|
|
508
|
+
pnpm run docs:preview # 미리보기
|
|
509
|
+
```
|
|
510
|
+
|
|
511
|
+
### 테스트 커버리지
|
|
512
|
+
|
|
513
|
+
```bash
|
|
514
|
+
pnpm run test:coverage # 커버리지 리포트
|
|
515
|
+
```
|
|
516
|
+
|
|
517
|
+
---
|
|
518
|
+
|
|
519
|
+
## 기여
|
|
520
|
+
|
|
521
|
+
기여를 환영합니다! [CONTRIBUTING.md](CONTRIBUTING.md)를 참고해주세요.
|
|
522
|
+
|
|
523
|
+
---
|
|
524
|
+
|
|
525
|
+
## 변경 이력
|
|
526
|
+
|
|
527
|
+
자세한 변경 이력은 [CHANGELOG.md](CHANGELOG.md)를 참고해주세요.
|
|
528
|
+
|
|
529
|
+
---
|
|
530
|
+
|
|
531
|
+
## 라이선스
|
|
532
|
+
|
|
533
|
+
MIT License - 자세한 내용은 [LICENSE](LICENSE) 파일을 참고해주세요.
|