@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.
@@ -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
- - 예: `.tasks/260314143000_example/spec.md R2` → R2만 대상
21
- - 예: `.tasks/260314143000_example/spec.md 3` → R3만 대상
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
- | 코드 작업 (로직) | 프로젝트 테스트 환경(vitest) 확인 → 있으면 테스트 코드 작성 계획 |
48
+ | 작업 유형 | 테스트 전략 |
49
+ |-----------------------|---------------------------------------------------------|
50
+ | 코드 작업 (로직) | 프로젝트 테스트 환경(vitest) 확인 → 있으면 테스트 코드 작성 계획 |
47
51
  | 코드 작업 (로직, 테스트 환경 없음) | subagent를 통한 직접 테스트 방안 계획 (sd-plan-dev에서 `_test.md` 작성) |
48
- | 코드 작업 (비로직, 텍스트 변경 등) | 테스트 생략 가능 |
49
- | 비코드 작업 (LLM용 문서) | subagent를 통한 테스트 방안 계획 (sd-plan-dev에서 `_test.md` 작성) |
50
- | 비코드 작업 (일반 문서) | 테스트 생략 가능 |
52
+ | 코드 작업 (비로직, 텍스트 변경 등) | 테스트 생략 가능 |
53
+ | 비코드 작업 (LLM용 문서) | subagent를 통한 테스트 방안 계획 (sd-plan-dev에서 `_test.md` 작성) |
54
+ | 비코드 작업 (일반 문서) | 테스트 생략 가능 |
51
55
 
52
56
  **테스트 시나리오 작성 원칙:**
57
+
53
58
  - 테스트는 **상태(정적)가 아닌 동작**을 검증한다
54
- - 상태 (X): "파일에 특정 텍스트가 적혀있는지 확인" → 정적 검사에 불과
55
- - 현상 (O): "실행했을 때 기대한 동작이 나타나는지 확인" → 실제 동작 검증
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
- ## 3. 구현계획서 초안 작성
69
+ **대상 파일:**
70
+
71
+ - 사용자가 직접 첨부한 파일 (이미지, 문서 등)
72
+ - 스킬(sd-document, sd-email-analyze 등)이 분석 과정에서 추출/생성한 파일 (추출 이미지 등)
73
+
74
+ **처리:**
75
+
76
+ 1. plan 저장 디렉토리의 `attachments/` 폴더를 생성한다
77
+ 2. 대상 파일을 `attachments/`로 복사한다
78
+ 3. 후속 초안 작성 단계에서 적절한 위치에 링크를 배치한다:
79
+ - 이미지: `![{파일명}](attachments/{파일명})`
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
- ## 4. 초안 기반 검토 질문
127
+ ## 5. 초안 기반 검토 질문
101
128
 
102
129
  초안은 사용자에게 출력하지 않는다 (최종본이 파일로 저장되므로 대화창 출력은 불필요).
103
130
  불명확하거나 확인이 필요한 부분이 있으면 다음 프로세스를 반복한다:
104
131
 
105
132
  1. 초안의 특정 부분을 인용하며 **자세한 설명을 텍스트로 먼저 출력**한다
106
- - "초안에서 X를 Y로 계획했는데, Z 방식도 고려할 수 있습니다" 형식으로 구체적으로 질문한다
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
- ## 5. 파일 저장
141
+ ## 6. 파일 저장
115
142
 
116
- - spec/audit 파일 기반 호출: 해당 문서와 동일 디렉토리에 저장. 전체면 `plan.md`, 특정 R항목이면 `{R번호}_plan.md` (예: `R2_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 `date +%y%m%d%H%M%S`, `{topic}`은 영문 kebab-case)
146
+ - spec/audit 없이 호출된 경우: 새 디렉토리 `.tasks/{yyMMddHHmmss}_{topic}/plan.md` 생성 (`yyMMddHHmmss`는 Bash
147
+ `date +%y%m%d%H%M%S`, `{topic}`은 영문 kebab-case)
119
148
 
120
- ## 6. 완료 안내
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
- 사용자 요청과 코드베이스를 분석하여 최대한 상세한 요구분석서(`_spec.md`)를 작성한다.
9
+ 사용자 요청과 코드베이스를 분석하여 최대한 상세한 요구분석서(`spec.md`)를 작성한다.
10
10
 
11
- ## 1. topic 파싱
11
+ ## 1. 인자 파싱
12
12
 
13
- `$ARGUMENTS`에서 topic을 추출한다.
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
- topic과 관련된 코드베이스를 분석한다.
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
+ - 이미지: `![{파일명}](attachments/{파일명})`
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
- ## 5. 파일 저장
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
- ## 6. 완료 안내
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`)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@simplysm/sd-claude",
3
- "version": "13.0.86",
3
+ "version": "13.0.87",
4
4
  "description": "Simplysm Claude Code asset installer",
5
5
  "author": "simplysm",
6
6
  "license": "Apache-2.0",