@simplysm/sd-claude 13.0.86 → 13.0.87
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/claude/skills/sd-plan/SKILL.md +49 -19
- package/claude/skills/sd-spec/SKILL.md +77 -10
- package/package.json +1 -1
|
@@ -15,47 +15,72 @@ argument-hint: "<spec/audit 파일 경로 [R번호]> 또는 <간단한 요구사
|
|
|
15
15
|
### 1-1. spec/audit 파일 경로 (+ 선택적 R번호)
|
|
16
16
|
|
|
17
17
|
`$ARGUMENTS`에 `.md`로 끝나는 경로가 포함된 경우:
|
|
18
|
+
|
|
18
19
|
- 해당 파일을 Read한다
|
|
19
20
|
- 경로 뒤에 `R숫자` 또는 숫자만 있으면 해당 R항목만 대상으로 한다
|
|
20
|
-
|
|
21
|
-
|
|
21
|
+
- 예: `.tasks/260314143000_example/spec.md R2` → R2만 대상
|
|
22
|
+
- 예: `.tasks/260314143000_example/spec.md 3` → R3만 대상
|
|
22
23
|
- 경로만 있으면 전체 요구사항을 대상으로 한다
|
|
23
24
|
|
|
24
25
|
### 1-2. 인자 없음
|
|
25
26
|
|
|
26
27
|
`$ARGUMENTS`가 비어있으면:
|
|
28
|
+
|
|
27
29
|
- 현재 대화 맥락에서 spec/audit 내용을 파악한다
|
|
28
30
|
- 대화에도 spec/audit가 없으면 AskUserQuestion으로 spec 또는 review 파일 경로, 또는 요구사항을 요청한다
|
|
29
31
|
|
|
30
32
|
### 1-3. 간단한 요구사항 텍스트
|
|
31
33
|
|
|
32
34
|
위 조건에 해당하지 않으면 (`.md` 경로가 아닌 일반 텍스트):
|
|
35
|
+
|
|
33
36
|
- spec/audit 없이 해당 텍스트를 요구사항으로 직접 사용한다
|
|
34
37
|
- 이 경우 spec/audit 참조 없이 바로 plan을 수립한다
|
|
35
38
|
|
|
36
39
|
## 2. 요구사항 분석 및 작업 계획
|
|
37
40
|
|
|
38
41
|
요구사항을 독립적 기능 단위로 작업을 분리하고, 각 작업의 유형을 분류하여 테스트 전략을 결정한다.
|
|
42
|
+
|
|
39
43
|
- 각 작업은 하나의 독립적인 TDD 사이클로 처리할 수 있는 크기여야 한다
|
|
40
44
|
- 작업 간 의존성이 있으면 의존성을 명시한다
|
|
41
45
|
|
|
42
46
|
**작업 유형별 테스트 전략:**
|
|
43
47
|
|
|
44
|
-
| 작업 유형
|
|
45
|
-
|
|
46
|
-
| 코드 작업 (로직)
|
|
48
|
+
| 작업 유형 | 테스트 전략 |
|
|
49
|
+
|-----------------------|---------------------------------------------------------|
|
|
50
|
+
| 코드 작업 (로직) | 프로젝트 테스트 환경(vitest) 확인 → 있으면 테스트 코드 작성 계획 |
|
|
47
51
|
| 코드 작업 (로직, 테스트 환경 없음) | subagent를 통한 직접 테스트 방안 계획 (sd-plan-dev에서 `_test.md` 작성) |
|
|
48
|
-
| 코드 작업 (비로직, 텍스트 변경 등) | 테스트 생략 가능
|
|
49
|
-
| 비코드 작업 (LLM용 문서)
|
|
50
|
-
| 비코드 작업 (일반 문서)
|
|
52
|
+
| 코드 작업 (비로직, 텍스트 변경 등) | 테스트 생략 가능 |
|
|
53
|
+
| 비코드 작업 (LLM용 문서) | subagent를 통한 테스트 방안 계획 (sd-plan-dev에서 `_test.md` 작성) |
|
|
54
|
+
| 비코드 작업 (일반 문서) | 테스트 생략 가능 |
|
|
51
55
|
|
|
52
56
|
**테스트 시나리오 작성 원칙:**
|
|
57
|
+
|
|
53
58
|
- 테스트는 **상태(정적)가 아닌 동작**을 검증한다
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
- 예: LLM용 문서 테스트 시 "SKILL.md에 '테스트 재실행' 문구가 있는지"가 아니라 "LLM이 SKILL.md를 따라 실행했을 때 실제로 테스트를 재실행하는지"를
|
|
59
|
+
- 상태 (X): "파일에 특정 텍스트가 적혀있는지 확인" → 정적 검사에 불과
|
|
60
|
+
- 현상 (O): "실행했을 때 기대한 동작이 나타나는지 확인" → 실제 동작 검증
|
|
61
|
+
- 예: LLM용 문서 테스트 시 "SKILL.md에 '테스트 재실행' 문구가 있는지"가 아니라 "LLM이 SKILL.md를 따라 실행했을 때 실제로 테스트를 재실행하는지"를
|
|
62
|
+
검증한다
|
|
63
|
+
|
|
64
|
+
## 3. 첨부파일 수집
|
|
65
|
+
|
|
66
|
+
대화 중 등장한 파일을 수집하여 보존한다.
|
|
67
|
+
첨부파일이 없으면 이 단계를 건너뛴다.
|
|
57
68
|
|
|
58
|
-
|
|
69
|
+
**대상 파일:**
|
|
70
|
+
|
|
71
|
+
- 사용자가 직접 첨부한 파일 (이미지, 문서 등)
|
|
72
|
+
- 스킬(sd-document, sd-email-analyze 등)이 분석 과정에서 추출/생성한 파일 (추출 이미지 등)
|
|
73
|
+
|
|
74
|
+
**처리:**
|
|
75
|
+
|
|
76
|
+
1. plan 저장 디렉토리의 `attachments/` 폴더를 생성한다
|
|
77
|
+
2. 대상 파일을 `attachments/`로 복사한다
|
|
78
|
+
3. 후속 초안 작성 단계에서 적절한 위치에 링크를 배치한다:
|
|
79
|
+
- 이미지: ``
|
|
80
|
+
- 기타 파일: `[{파일명}](attachments/{파일명})`
|
|
81
|
+
- 배치 위치: 관련 작업 근처
|
|
82
|
+
|
|
83
|
+
## 4. 구현계획서 초안 작성
|
|
59
84
|
|
|
60
85
|
분석 결과를 바탕으로 아래 고정 구조의 구현계획서 초안을 작성한다.
|
|
61
86
|
불명확한 부분이 있더라도 최선의 판단으로 초안을 완성한다.
|
|
@@ -89,37 +114,42 @@ argument-hint: "<spec/audit 파일 경로 [R번호]> 또는 <간단한 요구사
|
|
|
89
114
|
```
|
|
90
115
|
|
|
91
116
|
**참조 문서 표기 규칙:**
|
|
117
|
+
|
|
92
118
|
- spec/audit 파일 경로로 호출된 경우: `**참조 문서:** {경로} {R번호}` 형식으로 상단에 명시
|
|
93
119
|
- 현재 대화의 spec/audit인 경우: `**참조 문서:** 현재 대화의 spec/audit` 으로 명시
|
|
94
120
|
- spec/audit 없이 호출된 경우: `**참조 문서:**` 줄 생략
|
|
95
121
|
|
|
96
122
|
**다중 작업인 경우:**
|
|
123
|
+
|
|
97
124
|
- 작업별로 `## 작업 1: {제목}`, `## 작업 2: {제목}` ... 으로 구분하고 각 작업 내에 작업 유형, TDD 계획 포함
|
|
98
125
|
- 작업 간 의존성이 있으면 `## 작업 의존성` 섹션에 명시
|
|
99
126
|
|
|
100
|
-
##
|
|
127
|
+
## 5. 초안 기반 검토 질문
|
|
101
128
|
|
|
102
129
|
초안은 사용자에게 출력하지 않는다 (최종본이 파일로 저장되므로 대화창 출력은 불필요).
|
|
103
130
|
불명확하거나 확인이 필요한 부분이 있으면 다음 프로세스를 반복한다:
|
|
104
131
|
|
|
105
132
|
1. 초안의 특정 부분을 인용하며 **자세한 설명을 텍스트로 먼저 출력**한다
|
|
106
|
-
|
|
107
|
-
|
|
133
|
+
- "초안에서 X를 Y로 계획했는데, Z 방식도 고려할 수 있습니다" 형식으로 구체적으로 질문한다
|
|
134
|
+
- 선택지 각각의 장단점, 트레이드오프를 설명한다
|
|
108
135
|
2. AskUserQuestion을 **1개만** 호출한다 (한번에 하나씩만 질문)
|
|
109
136
|
3. 답변을 반영하여 초안을 수정한다
|
|
110
137
|
4. 추가 확인이 필요하면 1번으로 돌아간다
|
|
111
138
|
|
|
112
139
|
불명확한 점이 없거나 충분히 확인되면 질문을 종료하고 파일 저장으로 넘어간다.
|
|
113
140
|
|
|
114
|
-
##
|
|
141
|
+
## 6. 파일 저장
|
|
115
142
|
|
|
116
|
-
- spec/audit 파일 기반 호출: 해당 문서와 동일 디렉토리에 저장. 전체면 `plan.md`, 특정 R항목이면 `{R번호}_plan.md` (예:
|
|
143
|
+
- spec/audit 파일 기반 호출: 해당 문서와 동일 디렉토리에 저장. 전체면 `plan.md`, 특정 R항목이면 `{R번호}_plan.md` (예:
|
|
144
|
+
`R2_plan.md`). spec이 서브디렉토리(`{R번호}/spec.md`)에 있는 경우에도 동일 규칙 적용 (해당 서브디렉토리에 저장)
|
|
117
145
|
- 현재 대화의 spec/audit 기반이고 파일 경로가 있는 경우: 해당 문서와 동일 디렉토리에 저장. 파일명 규칙 동일
|
|
118
|
-
- spec/audit 없이 호출된 경우: 새 디렉토리 `.tasks/{yyMMddHHmmss}_{topic}/plan.md` 생성 (`yyMMddHHmmss`는 Bash
|
|
146
|
+
- spec/audit 없이 호출된 경우: 새 디렉토리 `.tasks/{yyMMddHHmmss}_{topic}/plan.md` 생성 (`yyMMddHHmmss`는 Bash
|
|
147
|
+
`date +%y%m%d%H%M%S`, `{topic}`은 영문 kebab-case)
|
|
119
148
|
|
|
120
|
-
##
|
|
149
|
+
## 7. 완료 안내
|
|
121
150
|
|
|
122
151
|
문서 작성이 완료되면 다음을 출력한다:
|
|
152
|
+
|
|
123
153
|
- 완성된 문서의 파일 경로
|
|
124
154
|
- 사용자에게 직접 문서를 확인할 것을 권장
|
|
125
155
|
- 다음 단계 안내:
|
|
@@ -1,16 +1,34 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: sd-spec
|
|
3
3
|
description: 사용자 요청과 코드베이스를 분석하여 요구분석서를 작성. 사용자가 요구분석/spec 작성을 요청할 때 사용
|
|
4
|
-
argument-hint: "<topic>"
|
|
4
|
+
argument-hint: "<topic> 또는 <spec 경로 R번호> 또는 <R번호>"
|
|
5
5
|
---
|
|
6
6
|
|
|
7
7
|
# sd-spec: 요구분석서 작성
|
|
8
8
|
|
|
9
|
-
사용자 요청과 코드베이스를 분석하여 최대한 상세한 요구분석서(`
|
|
9
|
+
사용자 요청과 코드베이스를 분석하여 최대한 상세한 요구분석서(`spec.md`)를 작성한다.
|
|
10
10
|
|
|
11
|
-
## 1.
|
|
11
|
+
## 1. 인자 파싱
|
|
12
12
|
|
|
13
|
-
`$ARGUMENTS
|
|
13
|
+
`$ARGUMENTS`를 분석하여 호출 모드를 결정한다.
|
|
14
|
+
|
|
15
|
+
### 1-1. spec 파일 경로 + R번호 (상세 spec 모드)
|
|
16
|
+
|
|
17
|
+
`$ARGUMENTS`에 `.md`로 끝나는 경로가 포함되고, 뒤에 `R숫자` 또는 숫자가 따라오는 경우:
|
|
18
|
+
- 해당 spec 파일을 Read한다
|
|
19
|
+
- 해당 R항목의 내용을 추출한다. 해당 R번호가 존재하지 않으면 AskUserQuestion으로 올바른 R번호를 확인한다
|
|
20
|
+
- 예: `/sd-spec .tasks/260315_example/spec.md R2` → spec.md의 R2를 상세 분석
|
|
21
|
+
|
|
22
|
+
### 1-2. R번호만 (상세 spec 모드)
|
|
23
|
+
|
|
24
|
+
`$ARGUMENTS`가 `R숫자` 패턴인 경우 (예: `R1`, `R2`):
|
|
25
|
+
- 현재 대화 맥락에서 상위 spec을 파악한다
|
|
26
|
+
- 대화에도 spec이 없으면 AskUserQuestion으로 spec 파일 경로를 요청한다
|
|
27
|
+
- 해당 spec을 Read하고 R항목의 내용을 추출한다. 해당 R번호가 존재하지 않으면 AskUserQuestion으로 올바른 R번호를 확인한다
|
|
28
|
+
|
|
29
|
+
### 1-3. topic (신규 spec 모드)
|
|
30
|
+
|
|
31
|
+
위 조건에 해당하지 않으면 기존 신규 spec 작성 모드로 진입한다:
|
|
14
32
|
- `$ARGUMENTS`가 비어있으면 현재 대화 맥락에서 topic을 파악한다. 대화 맥락도 없으면 AskUserQuestion으로 topic을 요청한다
|
|
15
33
|
- topic을 영문 kebab-case로 변환한다 (예: "ORM 마이그레이션" → `orm-migration`, "사용자 인증" → `user-auth`)
|
|
16
34
|
- 특수문자(`#`, `/`, `\`, `(`, `)`, `.` 등)는 제거하거나 `-`로 치환한다 (예: "DB 연동 (v2.0)" → `db-connection-v2-0`)
|
|
@@ -18,10 +36,11 @@ argument-hint: "<topic>"
|
|
|
18
36
|
|
|
19
37
|
## 2. 코드베이스 분석
|
|
20
38
|
|
|
21
|
-
|
|
39
|
+
요구사항과 관련된 코드베이스를 분석한다.
|
|
22
40
|
- Agent tool (subagent_type: Explore)을 활용하여 관련 파일, 패키지, 의존성을 탐색한다
|
|
23
41
|
- 필요에 따라 Glob, Grep, Read 등을 직접 사용할 수도 있다
|
|
24
42
|
- 분석 결과로 현재 상태, 관련 코드/패키지, 기존 구현 방식을 파악한다
|
|
43
|
+
- **상세 spec 모드**: 상위 spec의 해당 R항목 범위로 분석을 한정한다
|
|
25
44
|
|
|
26
45
|
## 3. 반복적 명확화 질문
|
|
27
46
|
|
|
@@ -37,11 +56,40 @@ topic과 관련된 코드베이스를 분석한다.
|
|
|
37
56
|
|
|
38
57
|
충분한 정보가 모였다고 판단하면 질문을 종료하고 문서 작성으로 넘어간다.
|
|
39
58
|
|
|
40
|
-
## 4.
|
|
59
|
+
## 4. 첨부파일 수집
|
|
60
|
+
|
|
61
|
+
대화 중 등장한 파일을 수집하여 보존한다.
|
|
62
|
+
첨부파일이 없으면 이 단계를 건너뛴다.
|
|
63
|
+
|
|
64
|
+
**대상 파일:**
|
|
65
|
+
- 사용자가 직접 첨부한 파일 (이미지, 문서 등)
|
|
66
|
+
- 스킬(sd-document, sd-email-analyze 등)이 분석 과정에서 추출/생성한 파일 (추출 이미지 등)
|
|
67
|
+
|
|
68
|
+
**처리:**
|
|
69
|
+
1. spec 저장 디렉토리의 `attachments/` 폴더를 생성한다
|
|
70
|
+
2. 대상 파일을 `attachments/`로 복사한다
|
|
71
|
+
3. 후속 문서 작성 단계에서 적절한 위치에 링크를 배치한다:
|
|
72
|
+
- 이미지: ``
|
|
73
|
+
- 기타 파일: `[{파일명}](attachments/{파일명})`
|
|
74
|
+
- 배치 위치: 관련 요구사항 근처 (예: 와이어프레임은 해당 UI 요구사항 아래)
|
|
75
|
+
|
|
76
|
+
## 5. 요구분석서 작성
|
|
41
77
|
|
|
42
78
|
### 기본 섹션 (항상 포함)
|
|
43
79
|
|
|
44
|
-
다음 기본 섹션을 반드시 포함하여
|
|
80
|
+
다음 기본 섹션을 반드시 포함하여 작성한다.
|
|
81
|
+
|
|
82
|
+
**상세 spec 모드**에서는 문서 상단에 참조 문서를 추가한다:
|
|
83
|
+
|
|
84
|
+
```markdown
|
|
85
|
+
# 요구분석서: {R항목 제목의 상세 설명}
|
|
86
|
+
|
|
87
|
+
**참조 문서:** `{상위 spec 경로}` {R번호}
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
이하 섹션 구조(개요, 현재 상태, 요구사항, 영향 범위)는 신규 spec 모드와 동일하다.
|
|
91
|
+
|
|
92
|
+
**신규 spec 모드**에서는 참조 문서 없이 시작한다:
|
|
45
93
|
|
|
46
94
|
```markdown
|
|
47
95
|
# 요구분석서: {topic 설명}
|
|
@@ -123,7 +171,9 @@ topic과 관련된 코드베이스를 분석한다.
|
|
|
123
171
|
|
|
124
172
|
여러 특성이 해당되면 여러 참조 파일을 읽고 각각의 추가 섹션을 모두 포함한다.
|
|
125
173
|
|
|
126
|
-
##
|
|
174
|
+
## 6. 파일 저장
|
|
175
|
+
|
|
176
|
+
### 신규 spec 모드
|
|
127
177
|
|
|
128
178
|
- 디렉토리: `.tasks/{yyMMddHHmmss}_{topic}/`
|
|
129
179
|
- `yyMMddHHmmss`는 현재 시간 (Bash `date +%y%m%d%H%M%S`로 생성)
|
|
@@ -132,9 +182,26 @@ topic과 관련된 코드베이스를 분석한다.
|
|
|
132
182
|
- 전체 경로: `.tasks/{yyMMddHHmmss}_{topic}/spec.md`
|
|
133
183
|
- 디렉토리가 없으면 먼저 생성한다
|
|
134
184
|
|
|
135
|
-
|
|
185
|
+
### 상세 spec 모드
|
|
186
|
+
|
|
187
|
+
- 디렉토리: 상위 spec과 동일 디렉토리 하위에 `{R번호}/`
|
|
188
|
+
- 파일명: `spec.md`
|
|
189
|
+
- 전체 경로: `{상위 spec 디렉토리}/{R번호}/spec.md`
|
|
190
|
+
- 예: 상위 spec이 `.tasks/260315_example/spec.md`이고 R1이면 → `.tasks/260315_example/R1/spec.md`
|
|
191
|
+
- 디렉토리가 없으면 먼저 생성한다
|
|
192
|
+
|
|
193
|
+
**저장 구조 예시:**
|
|
194
|
+
```
|
|
195
|
+
.tasks/260315_example/
|
|
196
|
+
spec.md # 상위 spec (R1, R2, R3)
|
|
197
|
+
R1/
|
|
198
|
+
spec.md # R1 상세 spec (자체 R1, R2)
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
## 7. 완료 안내
|
|
136
202
|
|
|
137
203
|
문서 작성이 완료되면 다음을 출력한다:
|
|
138
204
|
- 완성된 문서의 파일 경로
|
|
139
205
|
- 사용자에게 직접 문서를 확인할 것을 권장
|
|
140
|
-
- 다음 단계 안내: "다음 단계로 `/sd-plan`을 실행하세요."
|
|
206
|
+
- **신규 spec 모드**: 다음 단계 안내: "다음 단계로 `/sd-plan`을 실행하세요."
|
|
207
|
+
- **상세 spec 모드**: 다음 단계 안내: "다음 단계로 `/sd-plan {상세 spec 전체 경로}`를 실행하세요." (예: `/sd-plan .tasks/260315_example/R1/spec.md`)
|