jun-claude-code 0.0.16 → 0.1.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 +73 -62
- package/dist/__tests__/merge-settings.test.d.ts +1 -0
- package/dist/__tests__/merge-settings.test.js +340 -0
- package/dist/cli.js +3 -1
- package/dist/copy.d.ts +7 -0
- package/dist/copy.js +35 -21
- package/dist/init-context.js +50 -17
- package/dist/init-project.d.ts +5 -0
- package/dist/init-project.js +21 -9
- package/dist/utils.d.ts +12 -0
- package/dist/utils.js +26 -0
- package/package.json +4 -2
- package/templates/global/CLAUDE.md +31 -182
- package/templates/global/agents/context-manager.md +9 -0
- package/templates/global/hooks/dangerous-command-blocker.sh +67 -0
- package/templates/global/hooks/skill-forced-subagent.sh +3 -22
- package/templates/global/hooks/skill-forced.sh +6 -36
- package/templates/global/hooks/workflow-enforced.sh +4 -41
- package/templates/global/settings.json +15 -0
- package/templates/global/skills/ContextHandoff/SKILL.md +54 -0
- package/templates/global/skills/PromptStructuring/SKILL.md +10 -58
- package/templates/global/skills/PromptStructuring/output-optimization.md +66 -0
- package/templates/global/skills/PromptStructuring/positive-phrasing.md +17 -194
- package/templates/global/skills/PromptStructuring/xml-tags.md +24 -317
- package/templates/global/statusline-command.sh +84 -0
|
@@ -48,27 +48,7 @@ Main Agent의 Context Window는 제한적입니다.
|
|
|
48
48
|
- Subagent 호출 및 결과 전달
|
|
49
49
|
- 단순 명령 실행 (Bash) - **Git/코드수정은 Subagent 전담**
|
|
50
50
|
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
**모든 Git 작업은 `git-manager` Agent에 위임하세요.**
|
|
54
|
-
|
|
55
|
-
\`\`\`
|
|
56
|
-
Task(subagent_type="git-manager", prompt="현재 변경사항을 커밋해줘")
|
|
57
|
-
Task(subagent_type="git-manager", prompt="PR을 생성해줘")
|
|
58
|
-
\`\`\`
|
|
59
|
-
|
|
60
|
-
| Git 작업 | 전담 여부 | 이유 |
|
|
61
|
-
|----------|----------|------|
|
|
62
|
-
| 단순 커밋 | **전담** | 커밋 규칙 자동 준수 |
|
|
63
|
-
| PR 생성 | **전담** | PR 템플릿 자동 적용 |
|
|
64
|
-
| 브랜치 관리 | **전담** | 안전 규칙 자동 적용 |
|
|
65
|
-
|
|
66
|
-
### 왜 Subagent를 사용해야 하는가?
|
|
67
|
-
|
|
68
|
-
1. **Context 절약**: Subagent의 탐색/분석 결과는 요약되어 Main에 전달
|
|
69
|
-
2. **대화 지속성**: Main Context가 절약되어 더 긴 대화 가능
|
|
70
|
-
3. **전문성**: 각 Agent는 특정 작업에 최적화됨
|
|
71
|
-
4. **병렬 처리**: 여러 Agent를 동시에 실행 가능
|
|
51
|
+
모든 Git 작업(커밋, PR, 브랜치)은 git-manager에 위임
|
|
72
52
|
|
|
73
53
|
</delegation_rules>
|
|
74
54
|
|
|
@@ -133,16 +113,10 @@ cat << 'EOF'
|
|
|
133
113
|
아래는 이 프로젝트의 배경 정보입니다. 작업 판단 시 참고하세요.
|
|
134
114
|
상세 분석이 필요하면 아래 Agent에 위임하세요.
|
|
135
115
|
|
|
136
|
-
| 필요한 정보 | Agent |
|
|
137
|
-
|
|
138
|
-
| 프로젝트 배경/도메인 지식 | project-context-collector |
|
|
139
|
-
| 소스 코드 패턴/구현 방식 | context-collector |
|
|
140
|
-
|
|
141
|
-
두 Agent를 순차적으로 사용하면 가장 포괄적인 Context를 수집할 수 있습니다:
|
|
142
|
-
\`\`\`
|
|
143
|
-
1. project-context-collector → 프로젝트 배경 수집
|
|
144
|
-
2. context-collector → 소스 코드 패턴 수집
|
|
145
|
-
\`\`\`
|
|
116
|
+
| 필요한 정보 | Agent |
|
|
117
|
+
|------------|-------|
|
|
118
|
+
| 프로젝트 배경/도메인 지식 | project-context-collector |
|
|
119
|
+
| 소스 코드 패턴/구현 방식 | context-collector |
|
|
146
120
|
|
|
147
121
|
EOF
|
|
148
122
|
|
|
@@ -263,11 +237,7 @@ Step 5 - 구현: 모든 관련 Skill 확인 및 Agent 호출 후에 구현을
|
|
|
263
237
|
|
|
264
238
|
---
|
|
265
239
|
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
- **탐색 작업은 Subagent 전담**: Main Context 절약
|
|
269
|
-
- **구현 후 검증 수행**: code-reviewer + qa-tester
|
|
270
|
-
- **단순 작업은 예외**: 설정 파일 수정, 오타 수정은 직접 처리 가능
|
|
240
|
+
탐색은 Subagent 전담, 구현 후 검증(code-reviewer + qa-tester), 단순 작업은 직접 처리 가능
|
|
271
241
|
|
|
272
242
|
지금 바로 모든 사용 가능한 Skill과 Agent를 평가하세요.
|
|
273
243
|
|
|
@@ -25,7 +25,6 @@ MANDATORY WORKFLOW SEQUENCE PROTOCOL
|
|
|
25
25
|
|
|
26
26
|
### Step 1.1: Context 수집
|
|
27
27
|
|
|
28
|
-
필수 조건:
|
|
29
28
|
- [ ] EnterPlanMode 진입 (복잡한 작업인 경우)
|
|
30
29
|
- [ ] 관련 Context 문서 확인 (.claude/context/)
|
|
31
30
|
- [ ] 필요한 Skill 활성화 (.claude/skills/)
|
|
@@ -38,8 +37,6 @@ MANDATORY WORKFLOW SEQUENCE PROTOCOL
|
|
|
38
37
|
- [ ] 각 Task에 명확한 완료 조건 정의
|
|
39
38
|
- [ ] Task 간 의존성 설정
|
|
40
39
|
|
|
41
|
-
도구: TaskCreate, TaskUpdate, TaskList
|
|
42
|
-
|
|
43
40
|
### Step 1.3: 코드 수정 계획 작성
|
|
44
41
|
|
|
45
42
|
필수 출력:
|
|
@@ -47,11 +44,9 @@ MANDATORY WORKFLOW SEQUENCE PROTOCOL
|
|
|
47
44
|
- [ ] 각 파일의 변경 내용 요약
|
|
48
45
|
- [ ] 예상되는 영향 범위
|
|
49
46
|
|
|
50
|
-
### Step 1.4: 사용자 Confirm
|
|
47
|
+
### Step 1.4: 사용자 Confirm -- 필수
|
|
51
48
|
|
|
52
|
-
|
|
53
|
-
- ExitPlanMode 사용 (Plan Mode인 경우)
|
|
54
|
-
- 또는 계획 내용을 명시적으로 보여주고 확인 요청
|
|
49
|
+
- [ ] 계획을 사용자에게 보여주고 승인받은 후 구현 진행
|
|
55
50
|
|
|
56
51
|
</checklist>
|
|
57
52
|
|
|
@@ -70,8 +65,6 @@ MANDATORY WORKFLOW SEQUENCE PROTOCOL
|
|
|
70
65
|
- [ ] UI/UX UserFlow 분석: 사용자 경험에 미치는 영향
|
|
71
66
|
- [ ] Breaking Change 여부 확인
|
|
72
67
|
|
|
73
|
-
도구: impact-analyzer Agent (복잡한 경우)
|
|
74
|
-
|
|
75
68
|
</checklist>
|
|
76
69
|
|
|
77
70
|
</phase>
|
|
@@ -113,11 +106,8 @@ MANDATORY WORKFLOW SEQUENCE PROTOCOL
|
|
|
113
106
|
- [ ] Skill checklist 기준 검토
|
|
114
107
|
- [ ] lint 실행
|
|
115
108
|
|
|
116
|
-
도구: code-reviewer Agent
|
|
117
|
-
|
|
118
109
|
### Step 4.2: Task 완료 검증
|
|
119
110
|
|
|
120
|
-
필수 확인:
|
|
121
111
|
- [ ] 원래 요청사항이 모두 충족되었는지 확인
|
|
122
112
|
- [ ] 예상한 동작이 구현되었는지 확인
|
|
123
113
|
- [ ] 모든 엣지케이스가 처리되었는지 점검
|
|
@@ -128,26 +118,7 @@ MANDATORY WORKFLOW SEQUENCE PROTOCOL
|
|
|
128
118
|
|
|
129
119
|
### 워크플로우 요약
|
|
130
120
|
|
|
131
|
-
|
|
132
|
-
│ PHASE 1: 계획 │
|
|
133
|
-
│ ├─ 1.1 Context 수집 │
|
|
134
|
-
│ ├─ 1.2 TaskList 생성 │
|
|
135
|
-
│ ├─ 1.3 수정 계획 작성 │
|
|
136
|
-
│ └─ 1.4 사용자 Confirm │
|
|
137
|
-
│ ↓ │
|
|
138
|
-
│ PHASE 2: 검증 │
|
|
139
|
-
│ └─ 2.1 사이드이펙트 검증 (Code Flow, UserFlow) │
|
|
140
|
-
│ ↓ │
|
|
141
|
-
│ PHASE 3: 구현 │
|
|
142
|
-
│ ├─ 3.1 코드 수정 (작은 단위) │
|
|
143
|
-
│ └─ 3.2 git add & commit (단위별) │
|
|
144
|
-
│ ↓ │
|
|
145
|
-
│ PHASE 4: 리뷰 │
|
|
146
|
-
│ ├─ 4.1 Self Code Review + lint │
|
|
147
|
-
│ └─ 4.2 Task 완료 검증 │
|
|
148
|
-
└─────────────────────────────────────────────────────────────┘
|
|
149
|
-
|
|
150
|
-
---
|
|
121
|
+
계획(Context->TaskList->수정계획->Confirm) -> 검증(사이드이펙트) -> 구현(코드수정->커밋) -> 리뷰(CodeReview->완료검증)
|
|
151
122
|
|
|
152
123
|
### 참조 가능한 Skills (자동 탐색됨)
|
|
153
124
|
|
|
@@ -189,13 +160,5 @@ done
|
|
|
189
160
|
|
|
190
161
|
cat << 'EOF'
|
|
191
162
|
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
다음의 경우 Phase를 축소/생략 가능:
|
|
195
|
-
- 단순 오타 수정
|
|
196
|
-
- 설정 파일 간단 수정
|
|
197
|
-
- 1-2줄 변경
|
|
198
|
-
- 사용자가 명시적으로 빠른 수정 요청
|
|
199
|
-
|
|
200
|
-
그 외 모든 코드 작업은 위 순서를 따르세요.
|
|
163
|
+
예외: 단순 오타/설정/1-2줄 수정, 사용자가 빠른 수정 요청 시 Phase 축소 가능
|
|
201
164
|
EOF
|
|
@@ -1,4 +1,8 @@
|
|
|
1
1
|
{
|
|
2
|
+
"statusLine": {
|
|
3
|
+
"type": "command",
|
|
4
|
+
"command": "~/.claude/statusline-command.sh"
|
|
5
|
+
},
|
|
2
6
|
"hooks": {
|
|
3
7
|
"UserPromptSubmit": [
|
|
4
8
|
{
|
|
@@ -23,6 +27,17 @@
|
|
|
23
27
|
}
|
|
24
28
|
]
|
|
25
29
|
}
|
|
30
|
+
],
|
|
31
|
+
"PreToolUse": [
|
|
32
|
+
{
|
|
33
|
+
"matcher": "Bash",
|
|
34
|
+
"hooks": [
|
|
35
|
+
{
|
|
36
|
+
"type": "command",
|
|
37
|
+
"command": "~/.claude/hooks/dangerous-command-blocker.sh"
|
|
38
|
+
}
|
|
39
|
+
]
|
|
40
|
+
}
|
|
26
41
|
]
|
|
27
42
|
}
|
|
28
43
|
}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: context-handoff
|
|
3
|
+
description: 컨텍스트 압축을 위한 HANDOFF.md 작성 가이드
|
|
4
|
+
keywords: [HANDOFF, 컨텍스트, context, 압축, handoff, 세션, clear, 토큰]
|
|
5
|
+
estimated_tokens: ~300
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Context Handoff
|
|
9
|
+
|
|
10
|
+
긴 대화에서 컨텍스트 성능이 저하될 때 HANDOFF.md를 생성하여 핵심 정보만 이어갑니다.
|
|
11
|
+
|
|
12
|
+
<instructions>
|
|
13
|
+
|
|
14
|
+
## 언제 사용하는가
|
|
15
|
+
|
|
16
|
+
- 토큰 사용량이 50k 이상일 때 (`/context`로 확인)
|
|
17
|
+
- 응답 품질이 눈에 띄게 저하될 때
|
|
18
|
+
- 복잡한 작업을 새 세션에서 이어갈 때
|
|
19
|
+
|
|
20
|
+
## HANDOFF.md 포맷
|
|
21
|
+
|
|
22
|
+
```markdown
|
|
23
|
+
# 프로젝트: [이름]
|
|
24
|
+
## 목표
|
|
25
|
+
[현재 작업의 최종 목표]
|
|
26
|
+
## 완료된 작업
|
|
27
|
+
- [완료 항목 1]
|
|
28
|
+
- [완료 항목 2]
|
|
29
|
+
## 시도했지만 실패한 것
|
|
30
|
+
- [실패 항목]: [실패 이유]
|
|
31
|
+
## 현재 문제
|
|
32
|
+
[지금 막혀있는 것]
|
|
33
|
+
## 다음 단계
|
|
34
|
+
1. [즉시 해야 할 것]
|
|
35
|
+
2. [그 다음 해야 할 것]
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
## 워크플로우
|
|
39
|
+
|
|
40
|
+
1. `/context`로 토큰 사용량 확인
|
|
41
|
+
2. HANDOFF.md 생성 (프로젝트 루트)
|
|
42
|
+
3. `/clear`로 컨텍스트 초기화
|
|
43
|
+
4. 새 대화에서 "HANDOFF.md를 읽고 이어서 작업해줘" 입력
|
|
44
|
+
|
|
45
|
+
</instructions>
|
|
46
|
+
|
|
47
|
+
<rules>
|
|
48
|
+
|
|
49
|
+
- HANDOFF.md는 **500자 이내**로 작성 (길면 의미 없음)
|
|
50
|
+
- "시도했지만 실패한 것"을 반드시 포함 (같은 실수 반복 방지)
|
|
51
|
+
- 코드 스니펫은 포함하지 않음 (파일 경로만 기록)
|
|
52
|
+
- 작업 완료 후 HANDOFF.md 삭제
|
|
53
|
+
|
|
54
|
+
</rules>
|
|
@@ -1,67 +1,19 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: PromptStructuring
|
|
3
|
-
description: "Claude Code 프롬프트의 XML 태그
|
|
4
|
-
keywords: [prompt, xml-tags, positive-phrasing,
|
|
5
|
-
estimated_tokens:
|
|
3
|
+
description: "Claude Code 프롬프트의 XML 태그 구조화, 긍정 표현 전환, 출력 최적화 가이드"
|
|
4
|
+
keywords: [prompt, xml-tags, positive-phrasing, output-optimization, 프롬프트, 구조화, 긍정표현, XML, 출력최적화]
|
|
5
|
+
estimated_tokens: 300
|
|
6
6
|
---
|
|
7
7
|
|
|
8
8
|
# 프롬프트 구조화 스킬
|
|
9
9
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
프롬프트의 **형식과 표현 방식**은 LLM 출력 품질에 직접적인 영향을 준다.
|
|
13
|
-
|
|
14
|
-
- **형식**: 동일한 내용이라도 XML 태그로 의미를 구분하면 모델이 역할/지시/규칙을 명확히 구분
|
|
15
|
-
- **표현**: 부정 표현("~금지") 대신 긍정 표현("~한다")을 사용하면 의도한 행동을 직접 유도
|
|
16
|
-
|
|
17
|
-
### 연구 근거
|
|
18
|
-
|
|
19
|
-
| 연구 | 핵심 발견 | 시사점 |
|
|
20
|
-
|------|----------|--------|
|
|
21
|
-
| Sclar et al. (2023) | 동일 내용, 형식만 변경해도 최대 76%p 성능 차이 | 프롬프트 구조가 정확도에 직결 |
|
|
22
|
-
| Voronov et al. (2024) | 프롬프트 포맷팅이 Few-shot 성능에 체계적 영향 | 일관된 태그 구조가 안정적 성능 보장 |
|
|
23
|
-
| Anthropic 공식 가이드 | XML 태그 사용을 공식 권장 | Claude 모델에 최적화된 구조화 방식 |
|
|
10
|
+
프롬프트의 형식과 표현 방식은 LLM 출력 품질에 직접적인 영향을 준다.
|
|
24
11
|
|
|
25
12
|
## 핵심 원칙
|
|
26
13
|
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
## 역할 -> <role>
|
|
35
|
-
## 지시사항 -> <instructions>
|
|
36
|
-
## 규칙 -> <rules>
|
|
37
|
-
## 제약사항 -> <constraints>
|
|
38
|
-
```
|
|
39
|
-
|
|
40
|
-
### 2. 긍정 표현으로 행동 유도
|
|
41
|
-
|
|
42
|
-
부정 명령 대신 긍정 행동을 명시한다.
|
|
43
|
-
|
|
44
|
-
```
|
|
45
|
-
부정 표현 -> 긍정 표현
|
|
46
|
-
|
|
47
|
-
"코드 직접 수정 금지" -> "모든 코드 수정은 code-writer에 위임"
|
|
48
|
-
"git add -A 금지" -> "수정한 파일만 개별 지정하여 git add"
|
|
49
|
-
"과도한 추상화 금지" -> "필요한 만큼만 추상화"
|
|
50
|
-
```
|
|
51
|
-
|
|
52
|
-
### 3. `->` 흐름 기호 활용
|
|
53
|
-
|
|
54
|
-
단계, 변환, 위임을 나타낼 때 `->` 기호를 사용한다.
|
|
55
|
-
|
|
56
|
-
```
|
|
57
|
-
단계: 계획 -> 구현 -> 검증
|
|
58
|
-
변환: 부정 표현 -> 긍정 표현
|
|
59
|
-
위임: 코드 수정 -> code-writer Agent
|
|
60
|
-
```
|
|
61
|
-
|
|
62
|
-
## 관련 문서
|
|
63
|
-
|
|
64
|
-
| 문서 | 설명 |
|
|
65
|
-
|------|------|
|
|
66
|
-
| `xml-tags.md` | XML 태그 표준 목록, 파일 유형별 권장 조합, Before/After 예시 |
|
|
67
|
-
| `positive-phrasing.md` | 부정 -> 긍정 전환 패턴, 카테고리별 변환 테이블, 체크리스트 |
|
|
14
|
+
| 원칙 | 요약 | 상세 |
|
|
15
|
+
|------|------|------|
|
|
16
|
+
| 1. XML 태그 | `##` 대신 `<role>`, `<instructions>`, `<rules>` 등으로 의미 구분 | `xml-tags.md` |
|
|
17
|
+
| 2. 긍정 표현 | "~금지" 대신 "~한다"로 행동 직접 유도 | `positive-phrasing.md` |
|
|
18
|
+
| 3. 흐름 기호 | 단계/변환/위임에 `->` 사용: 계획 -> 구현 -> 검증 | - |
|
|
19
|
+
| 4. 출력 최적화 | 반복 제거, 테이블 > 산문, Hook 출력 150줄 이내 | `output-optimization.md` |
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: PromptStructuring-output-optimization
|
|
3
|
+
description: "Hook/프롬프트 출력의 토큰 최적화 기법과 가이드라인"
|
|
4
|
+
keywords: [output, optimization, hook, 토큰절약, 출력최적화, 슬림화]
|
|
5
|
+
estimated_tokens: 500
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# 출력 최적화 가이드
|
|
9
|
+
|
|
10
|
+
## 목표
|
|
11
|
+
|
|
12
|
+
Hook/프롬프트 출력은 매 실행마다 Context Window를 소비한다. 최소한의 텍스트로 최대한의 지시를 전달한다.
|
|
13
|
+
|
|
14
|
+
## 출력 예산
|
|
15
|
+
|
|
16
|
+
| 항목 | 권장 | 최대 |
|
|
17
|
+
|------|------|------|
|
|
18
|
+
| 개별 Hook 출력 | ~50줄 | 80줄 |
|
|
19
|
+
| 전체 Hook 출력 합계 | ~120줄 | 150줄 |
|
|
20
|
+
| Subagent Hook 출력 | ~30줄 | 50줄 |
|
|
21
|
+
|
|
22
|
+
## 반복 제거 규칙
|
|
23
|
+
|
|
24
|
+
- 동일 내용을 2회 이상 출력하지 않는다
|
|
25
|
+
- CLAUDE.md에 이미 있는 내용은 Hook에서 반복하지 않는다
|
|
26
|
+
- 여러 Hook 간 중복 내용을 제거한다
|
|
27
|
+
|
|
28
|
+
## 축약 기법
|
|
29
|
+
|
|
30
|
+
| 기법 | Before | After |
|
|
31
|
+
|------|--------|-------|
|
|
32
|
+
| 테이블 > 산문 | 3줄 설명 | 1행 테이블 |
|
|
33
|
+
| 인라인 > 블록 | 코드 블록 예시 | 인라인 `코드` |
|
|
34
|
+
| 키워드 > 문장 | "이 작업은 git-manager Agent에 위임하세요" | "Git 작업 -> git-manager" |
|
|
35
|
+
| 1줄 요약 > 상세 | 5줄 설명 | 1줄 핵심 |
|
|
36
|
+
|
|
37
|
+
## 삭제 대상 판별
|
|
38
|
+
|
|
39
|
+
- "왜 이렇게 하는가?" 설명 -> 삭제 (이유보다 행동이 중요)
|
|
40
|
+
- 동일 규칙의 예시 3개 -> 1개로 축소
|
|
41
|
+
- ASCII 다이어그램 -> 인라인 흐름으로 대체: `A -> B -> C`
|
|
42
|
+
- 반복되는 라벨 ("필수 조건:", "필수 원칙:") -> 제거
|
|
43
|
+
|
|
44
|
+
## Before/After 예시
|
|
45
|
+
|
|
46
|
+
```
|
|
47
|
+
Before (15줄):
|
|
48
|
+
### 왜 Subagent를 사용해야 하는가?
|
|
49
|
+
1. Context 절약: ...
|
|
50
|
+
2. 대화 지속성: ...
|
|
51
|
+
3. 전문성: ...
|
|
52
|
+
4. 병렬 처리: ...
|
|
53
|
+
|
|
54
|
+
After (0줄): 삭제 (이유보다 규칙 자체가 중요)
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
```
|
|
58
|
+
Before (20줄 ASCII 다이어그램):
|
|
59
|
+
┌────────────────────┐
|
|
60
|
+
│ PHASE 1: 계획 │
|
|
61
|
+
│ ... │
|
|
62
|
+
└────────────────────┘
|
|
63
|
+
|
|
64
|
+
After (1줄):
|
|
65
|
+
계획(Context→TaskList→Confirm) → 검증 → 구현(코드수정→커밋) → 리뷰
|
|
66
|
+
```
|
|
@@ -1,206 +1,29 @@
|
|
|
1
1
|
---
|
|
2
|
-
name:
|
|
3
|
-
description: "
|
|
4
|
-
keywords: [positive
|
|
5
|
-
estimated_tokens:
|
|
2
|
+
name: PromptStructuring-positive-phrasing
|
|
3
|
+
description: "부정 표현을 긍정 표현으로 전환하는 패턴과 체크리스트"
|
|
4
|
+
keywords: [positive, phrasing, 긍정표현, 부정표현, 전환]
|
|
5
|
+
estimated_tokens: 350
|
|
6
6
|
---
|
|
7
7
|
|
|
8
8
|
# 긍정 표현 전환 가이드
|
|
9
9
|
|
|
10
|
-
## 왜 긍정 표현인가
|
|
11
|
-
|
|
12
|
-
부정 명령("~하지 마", "~금지")은 LLM이 **금지 대상을 먼저 인식**하게 만든다.
|
|
13
|
-
|
|
14
|
-
```
|
|
15
|
-
"코드를 직접 수정하지 마세요"
|
|
16
|
-
-> 모델이 "코드를 직접 수정" 개념을 활성화한 후 억제 시도
|
|
17
|
-
-> 의도치 않은 활성화 가능성 존재
|
|
18
|
-
|
|
19
|
-
"모든 코드 수정은 code-writer에 위임하세요"
|
|
20
|
-
-> 모델이 "code-writer에 위임" 행동을 직접 활성화
|
|
21
|
-
-> 원하는 행동을 바로 유도
|
|
22
|
-
```
|
|
23
|
-
|
|
24
|
-
긍정 표현은 **원하는 행동 자체를 명시**하므로 모델이 바로 올바른 방향으로 행동한다.
|
|
25
|
-
|
|
26
|
-
---
|
|
27
|
-
|
|
28
10
|
## 전환 패턴
|
|
29
11
|
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
|
33
|
-
|
|
34
|
-
| "
|
|
35
|
-
| "
|
|
36
|
-
| "
|
|
37
|
-
| "~하지 마세요" | -> | "~하세요" (원하는 행동) |
|
|
38
|
-
| "~을 사용하지 않는다" | -> | "~을 사용한다" (대안 명시) |
|
|
39
|
-
|
|
40
|
-
**예시:**
|
|
41
|
-
|
|
42
|
-
```
|
|
43
|
-
"git add -A 금지"
|
|
44
|
-
-> "수정한 파일만 개별 지정하여 git add"
|
|
45
|
-
|
|
46
|
-
"구체 클래스 직접 의존 금지"
|
|
47
|
-
-> "인터페이스/추상화에 의존한다"
|
|
48
|
-
|
|
49
|
-
"전역 상태 직접 접근 금지 (Presentational에서)"
|
|
50
|
-
-> "props로 의존성을 전달한다"
|
|
51
|
-
```
|
|
52
|
-
|
|
53
|
-
### 카테고리 2: 확인 패턴
|
|
54
|
-
|
|
55
|
-
| 부정 표현 | -> | 긍정 표현 |
|
|
56
|
-
|----------|-----|----------|
|
|
57
|
-
| "~없는지 확인" | -> | "~인지 확인" |
|
|
58
|
-
| "에러가 발생하지 않는지 확인" | -> | "정상 동작하는지 확인" |
|
|
59
|
-
| "누락된 것이 없는지 점검" | -> | "모든 항목이 포함되었는지 점검" |
|
|
60
|
-
|
|
61
|
-
**예시:**
|
|
62
|
-
|
|
63
|
-
```
|
|
64
|
-
"순환 의존이 발생하지 않는가?"
|
|
65
|
-
-> "의존 방향이 단방향인가?"
|
|
66
|
-
|
|
67
|
-
"빌드 에러가 발생하지 않는 상태 유지"
|
|
68
|
-
-> "빌드 가능 상태를 유지"
|
|
69
|
-
|
|
70
|
-
"누락된 엣지케이스 없는지 점검"
|
|
71
|
-
-> "모든 엣지케이스가 처리되었는지 점검"
|
|
72
|
-
```
|
|
73
|
-
|
|
74
|
-
### 카테고리 3: 과도 방지 패턴
|
|
75
|
-
|
|
76
|
-
| 부정 표현 | -> | 긍정 표현 |
|
|
77
|
-
|----------|-----|----------|
|
|
78
|
-
| "과도한 X 금지" | -> | "필요한 만큼만 X" |
|
|
79
|
-
| "불필요한 X 금지" | -> | "필요한 X만 포함" |
|
|
80
|
-
| "복잡한 X 피하기" | -> | "단순한 X 유지" |
|
|
81
|
-
|
|
82
|
-
**예시:**
|
|
83
|
-
|
|
84
|
-
```
|
|
85
|
-
"과도한 추상화 금지"
|
|
86
|
-
-> "필요한 만큼만 추상화"
|
|
87
|
-
|
|
88
|
-
"불필요한 파일 생성 금지"
|
|
89
|
-
-> "기존 파일 수정을 우선"
|
|
90
|
-
|
|
91
|
-
"주석 과다 금지"
|
|
92
|
-
-> "코드가 자명할 때는 주석 생략"
|
|
93
|
-
```
|
|
94
|
-
|
|
95
|
-
### 카테고리 4: 위임 패턴
|
|
96
|
-
|
|
97
|
-
| 부정 표현 | -> | 긍정 표현 |
|
|
98
|
-
|----------|-----|----------|
|
|
99
|
-
| "직접 수행 금지" | -> | "Subagent에 위임" |
|
|
100
|
-
| "Main Agent에서 직접 X 금지" | -> | "X는 [Agent명]이 전담" |
|
|
101
|
-
| "직접 수정하지 않는다" | -> | "[Agent명]에 위임한다" |
|
|
102
|
-
|
|
103
|
-
**예시:**
|
|
104
|
-
|
|
105
|
-
```
|
|
106
|
-
"Main Agent에서 직접 코드 수정 금지"
|
|
107
|
-
-> "모든 코드 수정은 code-writer가 전담"
|
|
12
|
+
| 부정 표현 | 긍정 표현 |
|
|
13
|
+
|----------|----------|
|
|
14
|
+
| "코드 직접 수정 금지" | "모든 코드 수정은 code-writer에 위임" |
|
|
15
|
+
| "git add -A 금지" | "수정한 파일만 개별 지정하여 git add" |
|
|
16
|
+
| "과도한 추상화 금지" | "필요한 만큼만 추상화" |
|
|
17
|
+
| "main에 직접 push 금지" | "feature 브랜치에서 작업 후 PR 생성" |
|
|
18
|
+
| "테스트 없이 배포 금지" | "배포 전 테스트 통과 확인" |
|
|
108
19
|
|
|
109
|
-
|
|
110
|
-
-> "모든 Git 작업은 git-manager에 위임"
|
|
20
|
+
## 원칙
|
|
111
21
|
|
|
112
|
-
"
|
|
113
|
-
|
|
114
|
-
```
|
|
115
|
-
|
|
116
|
-
---
|
|
117
|
-
|
|
118
|
-
## 파일 유형별 자주 등장하는 전환
|
|
119
|
-
|
|
120
|
-
### Agent 파일
|
|
121
|
-
|
|
122
|
-
| 부정 표현 | -> | 긍정 표현 |
|
|
123
|
-
|----------|-----|----------|
|
|
124
|
-
| "코드 직접 수정 금지" | -> | "모든 코드 수정은 code-writer에 위임" |
|
|
125
|
-
| "여러 기능을 동시에 구현하지 않는다" | -> | "한 번에 하나의 기능만 구현한다" |
|
|
126
|
-
| "import 경로가 올바르지 않은 상태로 두지 않는다" | -> | "각 파일 작성 후 import 경로가 올바른지 확인한다" |
|
|
127
|
-
|
|
128
|
-
### Skill 파일
|
|
129
|
-
|
|
130
|
-
| 부정 표현 | -> | 긍정 표현 |
|
|
131
|
-
|----------|-----|----------|
|
|
132
|
-
| "중첩 요소 사용 금지" | -> | "단일 수준 구조를 유지한다" |
|
|
133
|
-
| "장황한 설명 금지" | -> | "테이블과 코드 예제로 압축한다" |
|
|
134
|
-
| "1000줄 초과 금지" | -> | "500줄 이내로 유지하고, 초과 시 파일을 분리한다" |
|
|
135
|
-
|
|
136
|
-
### Hook 파일
|
|
137
|
-
|
|
138
|
-
| 부정 표현 | -> | 긍정 표현 |
|
|
139
|
-
|----------|-----|----------|
|
|
140
|
-
| "Phase를 건너뛰지 마세요" | -> | "모든 Phase를 순서대로 완료한다" |
|
|
141
|
-
| "검증 없이 진행하지 않는다" | -> | "검증을 통과한 후에만 다음 단계로 진행한다" |
|
|
142
|
-
| "계획 없이 코드를 작성하지 않는다" | -> | "계획을 확인한 후 코드를 작성한다" |
|
|
143
|
-
|
|
144
|
-
### CLAUDE.md 파일
|
|
145
|
-
|
|
146
|
-
| 부정 표현 | -> | 긍정 표현 |
|
|
147
|
-
|----------|-----|----------|
|
|
148
|
-
| "git add -A 금지" | -> | "수정한 파일만 개별 지정하여 git add" |
|
|
149
|
-
| "자동으로 커밋/푸시하지 않는다" | -> | "사용자가 명시적으로 요청할 때만 커밋/푸시한다" |
|
|
150
|
-
| "3개 이상 파일 수정 금지" | -> | "파일 수정은 Subagent에 위임한다" |
|
|
151
|
-
|
|
152
|
-
---
|
|
153
|
-
|
|
154
|
-
## 전환 시 주의사항
|
|
155
|
-
|
|
156
|
-
### 맥락을 보존한다
|
|
157
|
-
|
|
158
|
-
부정 표현을 긍정으로 바꿀 때 원래 의도가 손실되지 않도록 한다.
|
|
159
|
-
|
|
160
|
-
```
|
|
161
|
-
원문: "Presentational 컴포넌트에서 API 호출, 전역 상태 접근 금지"
|
|
162
|
-
|
|
163
|
-
나쁜 전환: "Presentational 컴포넌트에서 작업한다"
|
|
164
|
-
-> 원래 의도(제한 사항)가 사라짐
|
|
165
|
-
|
|
166
|
-
좋은 전환: "Presentational 컴포넌트는 UI 렌더링만 전담한다. 데이터는 props로 전달받는다"
|
|
167
|
-
-> 허용 범위를 명시하여 제한 의도를 보존
|
|
168
|
-
```
|
|
169
|
-
|
|
170
|
-
### 대안을 함께 명시한다
|
|
171
|
-
|
|
172
|
-
"~하지 마"만 긍정으로 바꾸면 모호해질 수 있다. **대안 행동**을 함께 제시한다.
|
|
173
|
-
|
|
174
|
-
```
|
|
175
|
-
나쁜 전환: "try-catch 대신 다른 것을 사용한다"
|
|
176
|
-
-> "다른 것"이 모호
|
|
177
|
-
|
|
178
|
-
좋은 전환: "Promise 처리 시 then-catch 패턴을 사용한다"
|
|
179
|
-
-> 구체적 대안 제시
|
|
180
|
-
```
|
|
181
|
-
|
|
182
|
-
### 정량적 기준이 있으면 유지한다
|
|
183
|
-
|
|
184
|
-
```
|
|
185
|
-
원문: "1000줄 초과 금지"
|
|
186
|
-
좋은 전환: "500줄 이내로 유지하고, 초과 시 파일을 분리한다"
|
|
187
|
-
-> 수치 기준을 유지하면서 긍정형으로 전환
|
|
188
|
-
```
|
|
189
|
-
|
|
190
|
-
---
|
|
22
|
+
- 부정 명령은 "하지 말 것"만 전달 -> 긍정 명령은 "무엇을 할 것"을 직접 유도
|
|
23
|
+
- 금지/불가/하지마 -> 대신 ~한다/~를 사용/~에 위임
|
|
191
24
|
|
|
192
25
|
## 체크리스트
|
|
193
26
|
|
|
194
|
-
|
|
195
|
-
- [ ]
|
|
196
|
-
- [ ]
|
|
197
|
-
- [ ] 제약사항이 "~만 한다", "~전용", "~전담" 형태로 표현되었는가?
|
|
198
|
-
- [ ] 부정 -> 긍정 전환 시 원래 의도가 보존되었는가?
|
|
199
|
-
- [ ] 대안 행동이 구체적으로 명시되었는가?
|
|
200
|
-
- [ ] 정량적 기준(줄 수, 파일 수 등)이 유지되었는가?
|
|
201
|
-
</checklist>
|
|
202
|
-
|
|
203
|
-
<reference>
|
|
204
|
-
- `SKILL.md` - 프롬프트 구조화 개요 및 핵심 원칙
|
|
205
|
-
- `xml-tags.md` - XML 태그 표준 및 사용 가이드
|
|
206
|
-
</reference>
|
|
27
|
+
- [ ] "금지", "불가", "하지 마" 표현이 있는가? -> 긍정 행동으로 전환
|
|
28
|
+
- [ ] 제약사항이 행동 지시로 변환 가능한가? -> 가능하면 변환
|
|
29
|
+
- [ ] 예외 상황 설명이 "~하면 안 됨"인가? -> "~하는 경우에만 허용"으로 변환
|