aiwf 0.3.0 → 0.3.1
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/CHANGELOG.md +38 -36
- package/CLAUDE.md +8 -209
- package/README.md +25 -5
- package/claude-code/aiwf/en/.claude/commands/aiwf/aiwf_docs.md +225 -0
- package/claude-code/aiwf/en/.claude/commands/aiwf/aiwf_language_manager.md +287 -0
- package/claude-code/aiwf/en/.claude/commands/aiwf/aiwf_language_status.md +246 -0
- package/claude-code/aiwf/en/.claude/commands/aiwf/aiwf_switch_language.md +160 -0
- package/claude-code/aiwf/ko/.claude/commands/aiwf/aiwf_code_review.md +62 -62
- package/claude-code/aiwf/ko/.claude/commands/aiwf/aiwf_commit.md +111 -111
- package/claude-code/aiwf/ko/.claude/commands/aiwf/aiwf_create_general_task.md +106 -106
- package/claude-code/aiwf/ko/.claude/commands/aiwf/aiwf_create_milestone_plan.md +127 -127
- package/claude-code/aiwf/ko/.claude/commands/aiwf/aiwf_create_sprint_tasks.md +130 -130
- package/claude-code/aiwf/ko/.claude/commands/aiwf/aiwf_create_sprints_from_milestone.md +87 -87
- package/claude-code/aiwf/ko/.claude/commands/aiwf/aiwf_do_task.md +72 -72
- package/claude-code/aiwf/ko/.claude/commands/aiwf/aiwf_docs.md +225 -0
- package/claude-code/aiwf/ko/.claude/commands/aiwf/aiwf_initialize.md +86 -86
- package/claude-code/aiwf/ko/.claude/commands/aiwf/aiwf_issue_create.md +3 -3
- package/claude-code/aiwf/ko/.claude/commands/aiwf/aiwf_language_manager.md +287 -0
- package/claude-code/aiwf/ko/.claude/commands/aiwf/aiwf_language_status.md +246 -0
- package/claude-code/aiwf/ko/.claude/commands/aiwf/aiwf_pr_create.md +14 -14
- package/claude-code/aiwf/ko/.claude/commands/aiwf/aiwf_prime.md +5 -5
- package/claude-code/aiwf/ko/.claude/commands/aiwf/aiwf_project_review.md +39 -39
- package/claude-code/aiwf/ko/.claude/commands/aiwf/aiwf_switch_language.md +160 -0
- package/claude-code/aiwf/ko/.claude/commands/aiwf/aiwf_test.md +76 -77
- package/claude-code/aiwf/ko/.claude/commands/aiwf/aiwf_testing_review.md +120 -120
- package/claude-code/aiwf/ko/.claude/commands/aiwf/aiwf_ultrathink_general.md +209 -266
- package/claude-code/aiwf/ko/.claude/commands/aiwf/aiwf_yolo.md +226 -226
- package/docs/AI-WORKFLOW.ko.md +9 -2
- package/docs/AI-WORKFLOW.md +9 -2
- package/docs/COMMANDS_GUIDE.ko.md +93 -3
- package/docs/COMMANDS_GUIDE.md +94 -4
- package/docs/Enhanced_Installation_Flow_Design.md +498 -0
- package/docs/PRD.ko.md +110 -58
- package/docs/PRD.md +110 -58
- package/index.js +1240 -20
- package/jest.config.js +4 -0
- package/language-cli.js +279 -0
- package/language-utils.js +330 -0
- package/package.json +12 -4
- package/scripts/validate-commands.cjs +338 -0
- package/scripts/validate-commands.js +254 -0
- package/tests/basic.test.js +62 -0
- package/tests/commands.test.js +127 -0
- package/tests/installer.test.js +129 -0
- package/tests/language-utils.test.js +271 -0
- package/claude-code/aiwf/en/.claude/commands/aiwf/aiwf_prime_context.md +0 -5
- package/claude-code/aiwf/ko/.claude/commands/aiwf/aiwf_prime_context.md +0 -8
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
#
|
|
1
|
+
# 태스크에서 GitHub 이슈 생성
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
태스크 파일을 기반으로 GitHub 이슈를 자동으로 생성합니다.
|
|
4
4
|
|
|
5
|
-
##
|
|
5
|
+
## 정확히 다음 5개 항목으로 TODO 생성
|
|
6
6
|
|
|
7
7
|
1. Parse task file and extract information
|
|
8
8
|
2. Generate issue template
|
|
@@ -0,0 +1,287 @@
|
|
|
1
|
+
# AIWF 언어 관리자
|
|
2
|
+
|
|
3
|
+
AIWF 프레임워크의 언어 관련 기능을 통합적으로 관리하는 명령어입니다.
|
|
4
|
+
|
|
5
|
+
## 사용법
|
|
6
|
+
|
|
7
|
+
```
|
|
8
|
+
/project:aiwf:language_manager [action] [arguments]
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
### 액션 종류
|
|
12
|
+
|
|
13
|
+
- `status` - 현재 언어 상태 확인
|
|
14
|
+
- `switch <언어코드>` - 언어 전환
|
|
15
|
+
- `detect` - 시스템 언어 자동 감지
|
|
16
|
+
- `reset` - 언어 설정 초기화
|
|
17
|
+
- `test` - 언어 시스템 테스트
|
|
18
|
+
- `config` - 설정 파일 관리
|
|
19
|
+
|
|
20
|
+
## 실행 단계
|
|
21
|
+
|
|
22
|
+
### 1. 인수 분석 및 액션 라우팅
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
# 인수 파싱
|
|
26
|
+
ACTION="${1:-status}"
|
|
27
|
+
ARGUMENT="${2:-}"
|
|
28
|
+
|
|
29
|
+
echo "=== AIWF 언어 관리자 ==="
|
|
30
|
+
echo "액션: $ACTION"
|
|
31
|
+
echo "인수: $ARGUMENT"
|
|
32
|
+
echo ""
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
### 2. 액션별 실행
|
|
36
|
+
|
|
37
|
+
#### 2.1 상태 확인 (status)
|
|
38
|
+
|
|
39
|
+
```bash
|
|
40
|
+
if [ "$ACTION" = "status" ]; then
|
|
41
|
+
echo "📊 언어 상태 확인 중..."
|
|
42
|
+
node -e "
|
|
43
|
+
import('./language-utils.js').then(async ({ getLanguageStatus }) => {
|
|
44
|
+
const status = await getLanguageStatus();
|
|
45
|
+
|
|
46
|
+
console.log('=== 언어 설정 상태 ===');
|
|
47
|
+
console.log('감지된 언어:', status.detectedLanguage);
|
|
48
|
+
console.log('설정된 언어:', status.configuredLanguage || '없음');
|
|
49
|
+
console.log('현재 사용 언어:', status.effectiveLanguage);
|
|
50
|
+
console.log('자동 감지:', status.autoDetect ? '활성화' : '비활성화');
|
|
51
|
+
console.log('폴백 언어:', status.fallbackLanguage);
|
|
52
|
+
console.log('지원 언어:', status.supportedLanguages.join(', '));
|
|
53
|
+
|
|
54
|
+
if (status.error) {
|
|
55
|
+
console.log('⚠️ 오류:', status.error);
|
|
56
|
+
}
|
|
57
|
+
});
|
|
58
|
+
"
|
|
59
|
+
fi
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
#### 2.2 언어 전환 (switch)
|
|
63
|
+
|
|
64
|
+
```bash
|
|
65
|
+
if [ "$ACTION" = "switch" ]; then
|
|
66
|
+
if [ -z "$ARGUMENT" ]; then
|
|
67
|
+
echo "❌ 오류: 언어 코드를 지정해주세요"
|
|
68
|
+
echo "사용법: /project:aiwf:language_manager switch [ko|en]"
|
|
69
|
+
exit 1
|
|
70
|
+
fi
|
|
71
|
+
|
|
72
|
+
echo "🔄 언어 전환 중: $ARGUMENT"
|
|
73
|
+
node -e "
|
|
74
|
+
import('./language-utils.js').then(async ({ switchLanguage }) => {
|
|
75
|
+
const result = await switchLanguage(process.argv[1]);
|
|
76
|
+
|
|
77
|
+
if (result.success) {
|
|
78
|
+
console.log('✅ 언어 전환 성공!');
|
|
79
|
+
console.log('이전 언어:', result.previousLanguage);
|
|
80
|
+
console.log('새 언어:', result.newLanguage);
|
|
81
|
+
} else {
|
|
82
|
+
console.error('❌ 언어 전환 실패:', result.error);
|
|
83
|
+
process.exit(1);
|
|
84
|
+
}
|
|
85
|
+
});
|
|
86
|
+
" -- "$ARGUMENT"
|
|
87
|
+
fi
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
#### 2.3 언어 감지 (detect)
|
|
91
|
+
|
|
92
|
+
```bash
|
|
93
|
+
if [ "$ACTION" = "detect" ]; then
|
|
94
|
+
echo "🔍 시스템 언어 감지 중..."
|
|
95
|
+
node -e "
|
|
96
|
+
import('./language-utils.js').then(async ({ detectLanguage }) => {
|
|
97
|
+
const detected = await detectLanguage();
|
|
98
|
+
|
|
99
|
+
console.log('=== 언어 감지 결과 ===');
|
|
100
|
+
console.log('감지된 언어:', detected);
|
|
101
|
+
console.log('');
|
|
102
|
+
console.log('환경 변수:');
|
|
103
|
+
console.log(' LANG:', process.env.LANG || '설정되지 않음');
|
|
104
|
+
console.log(' LC_ALL:', process.env.LC_ALL || '설정되지 않음');
|
|
105
|
+
console.log(' LANGUAGE:', process.env.LANGUAGE || '설정되지 않음');
|
|
106
|
+
});
|
|
107
|
+
"
|
|
108
|
+
fi
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
#### 2.4 설정 초기화 (reset)
|
|
112
|
+
|
|
113
|
+
```bash
|
|
114
|
+
if [ "$ACTION" = "reset" ]; then
|
|
115
|
+
echo "🗑️ 언어 설정 초기화 중..."
|
|
116
|
+
|
|
117
|
+
# 설정 파일 삭제
|
|
118
|
+
if [ -f ".aiwf/config/language.json" ]; then
|
|
119
|
+
rm ".aiwf/config/language.json"
|
|
120
|
+
echo "✅ 언어 설정 파일이 삭제되었습니다"
|
|
121
|
+
else
|
|
122
|
+
echo "ℹ️ 언어 설정 파일이 존재하지 않습니다"
|
|
123
|
+
fi
|
|
124
|
+
|
|
125
|
+
# 재감지 수행
|
|
126
|
+
echo "🔄 언어 재감지 중..."
|
|
127
|
+
node -e "
|
|
128
|
+
import('./language-utils.js').then(async ({ detectLanguage }) => {
|
|
129
|
+
const detected = await detectLanguage();
|
|
130
|
+
console.log('재감지된 언어:', detected);
|
|
131
|
+
});
|
|
132
|
+
"
|
|
133
|
+
fi
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
#### 2.5 시스템 테스트 (test)
|
|
137
|
+
|
|
138
|
+
```bash
|
|
139
|
+
if [ "$ACTION" = "test" ]; then
|
|
140
|
+
echo "🧪 언어 시스템 테스트 중..."
|
|
141
|
+
node -e "
|
|
142
|
+
import('./language-utils.js').then(async (utils) => {
|
|
143
|
+
const { resolveCommandPath, detectLanguage, getLocalizedMessage } = utils;
|
|
144
|
+
|
|
145
|
+
console.log('=== 언어 시스템 테스트 ===');
|
|
146
|
+
|
|
147
|
+
// 1. 언어 감지 테스트
|
|
148
|
+
const detected = await detectLanguage();
|
|
149
|
+
console.log('✅ 언어 감지:', detected);
|
|
150
|
+
|
|
151
|
+
// 2. 명령어 경로 해결 테스트
|
|
152
|
+
const testCommands = ['aiwf_do_task', 'aiwf_commit'];
|
|
153
|
+
console.log('\n📁 명령어 경로 테스트:');
|
|
154
|
+
|
|
155
|
+
for (const cmd of testCommands) {
|
|
156
|
+
const result = await resolveCommandPath(cmd);
|
|
157
|
+
if (result.path) {
|
|
158
|
+
console.log(' ✅', cmd, result.fallback ? '(폴백)' : '(직접)');
|
|
159
|
+
} else {
|
|
160
|
+
console.log(' ❌', cmd, '실패');
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
// 3. 메시지 시스템 테스트
|
|
165
|
+
console.log('\n💬 메시지 시스템 테스트:');
|
|
166
|
+
const testMsg = getLocalizedMessage('LANGUAGE_NOT_SUPPORTED', detected);
|
|
167
|
+
console.log(' 메시지:', testMsg);
|
|
168
|
+
|
|
169
|
+
console.log('\n✅ 모든 테스트 완료');
|
|
170
|
+
});
|
|
171
|
+
"
|
|
172
|
+
fi
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
#### 2.6 설정 관리 (config)
|
|
176
|
+
|
|
177
|
+
```bash
|
|
178
|
+
if [ "$ACTION" = "config" ]; then
|
|
179
|
+
echo "⚙️ 언어 설정 파일 관리"
|
|
180
|
+
|
|
181
|
+
CONFIG_FILE=".aiwf/config/language.json"
|
|
182
|
+
|
|
183
|
+
if [ -f "$CONFIG_FILE" ]; then
|
|
184
|
+
echo "📄 현재 설정 파일 내용:"
|
|
185
|
+
cat "$CONFIG_FILE" | jq . 2>/dev/null || cat "$CONFIG_FILE"
|
|
186
|
+
echo ""
|
|
187
|
+
|
|
188
|
+
echo "📊 설정 파일 정보:"
|
|
189
|
+
echo " 위치: $CONFIG_FILE"
|
|
190
|
+
echo " 크기: $(stat -f%z "$CONFIG_FILE" 2>/dev/null || stat -c%s "$CONFIG_FILE" 2>/dev/null) bytes"
|
|
191
|
+
echo " 수정일: $(stat -f%Sm "$CONFIG_FILE" 2>/dev/null || stat -c%y "$CONFIG_FILE" 2>/dev/null)"
|
|
192
|
+
else
|
|
193
|
+
echo "❌ 설정 파일이 존재하지 않습니다: $CONFIG_FILE"
|
|
194
|
+
echo ""
|
|
195
|
+
echo "💡 설정 파일을 생성하려면 언어를 설정하세요:"
|
|
196
|
+
echo " /project:aiwf:language_manager switch ko"
|
|
197
|
+
echo " /project:aiwf:language_manager switch en"
|
|
198
|
+
fi
|
|
199
|
+
fi
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
### 3. 도움말 (기본값)
|
|
203
|
+
|
|
204
|
+
```bash
|
|
205
|
+
if [ "$ACTION" = "help" ] || [ "$ACTION" = "--help" ]; then
|
|
206
|
+
echo "📖 AIWF 언어 관리자 도움말"
|
|
207
|
+
echo ""
|
|
208
|
+
echo "사용법:"
|
|
209
|
+
echo " /project:aiwf:language_manager [action] [arguments]"
|
|
210
|
+
echo ""
|
|
211
|
+
echo "액션:"
|
|
212
|
+
echo " status 현재 언어 상태 확인"
|
|
213
|
+
echo " switch <lang> 언어 전환 (ko|en)"
|
|
214
|
+
echo " detect 시스템 언어 자동 감지"
|
|
215
|
+
echo " reset 언어 설정 초기화"
|
|
216
|
+
echo " test 언어 시스템 테스트"
|
|
217
|
+
echo " config 설정 파일 관리"
|
|
218
|
+
echo " help 이 도움말 표시"
|
|
219
|
+
echo ""
|
|
220
|
+
echo "예시:"
|
|
221
|
+
echo " /project:aiwf:language_manager status"
|
|
222
|
+
echo " /project:aiwf:language_manager switch ko"
|
|
223
|
+
echo " /project:aiwf:language_manager test"
|
|
224
|
+
fi
|
|
225
|
+
```
|
|
226
|
+
|
|
227
|
+
### 4. 결과 요약
|
|
228
|
+
|
|
229
|
+
```bash
|
|
230
|
+
echo ""
|
|
231
|
+
echo "=== 실행 완료 ==="
|
|
232
|
+
echo "액션: $ACTION"
|
|
233
|
+
echo "시각: $(date '+%Y-%m-%d %H:%M:%S')"
|
|
234
|
+
|
|
235
|
+
# 현재 언어 상태 간단 표시
|
|
236
|
+
node -e "
|
|
237
|
+
import('./language-utils.js').then(async ({ detectLanguage }) => {
|
|
238
|
+
const lang = await detectLanguage();
|
|
239
|
+
console.log('현재 언어:', lang);
|
|
240
|
+
});
|
|
241
|
+
" 2>/dev/null || echo "현재 언어: 감지 불가"
|
|
242
|
+
```
|
|
243
|
+
|
|
244
|
+
## 출력 예시
|
|
245
|
+
|
|
246
|
+
### 상태 확인
|
|
247
|
+
```
|
|
248
|
+
=== AIWF 언어 관리자 ===
|
|
249
|
+
액션: status
|
|
250
|
+
|
|
251
|
+
📊 언어 상태 확인 중...
|
|
252
|
+
=== 언어 설정 상태 ===
|
|
253
|
+
감지된 언어: ko
|
|
254
|
+
설정된 언어: ko
|
|
255
|
+
현재 사용 언어: ko
|
|
256
|
+
자동 감지: 활성화
|
|
257
|
+
폴백 언어: en
|
|
258
|
+
지원 언어: ko, en
|
|
259
|
+
|
|
260
|
+
=== 실행 완료 ===
|
|
261
|
+
액션: status
|
|
262
|
+
시각: 2025-07-03 06:25:30
|
|
263
|
+
현재 언어: ko
|
|
264
|
+
```
|
|
265
|
+
|
|
266
|
+
### 언어 전환
|
|
267
|
+
```
|
|
268
|
+
=== AIWF 언어 관리자 ===
|
|
269
|
+
액션: switch
|
|
270
|
+
인수: en
|
|
271
|
+
|
|
272
|
+
🔄 언어 전환 중: en
|
|
273
|
+
✅ 언어 전환 성공!
|
|
274
|
+
이전 언어: ko
|
|
275
|
+
새 언어: en
|
|
276
|
+
|
|
277
|
+
=== 실행 완료 ===
|
|
278
|
+
액션: switch
|
|
279
|
+
시각: 2025-07-03 06:25:35
|
|
280
|
+
현재 언어: en
|
|
281
|
+
```
|
|
282
|
+
|
|
283
|
+
## 관련 명령어
|
|
284
|
+
|
|
285
|
+
- `/project:aiwf:switch_language` - 간단한 언어 전환
|
|
286
|
+
- `/project:aiwf:language_status` - 상세한 상태 확인
|
|
287
|
+
- `/project:aiwf:initialize` - AIWF 초기화 (언어 선택 포함)
|
|
@@ -0,0 +1,246 @@
|
|
|
1
|
+
# AIWF 언어 상태 확인
|
|
2
|
+
|
|
3
|
+
AIWF 프레임워크의 현재 언어 설정 상태를 자세히 확인하는 명령어입니다.
|
|
4
|
+
|
|
5
|
+
## 사용법
|
|
6
|
+
|
|
7
|
+
이 명령어는 다음과 같은 정보를 제공합니다:
|
|
8
|
+
- 현재 감지된 시스템 언어
|
|
9
|
+
- 사용자가 설정한 언어 (있는 경우)
|
|
10
|
+
- 실제로 사용되는 언어
|
|
11
|
+
- 언어 설정 파일 상태
|
|
12
|
+
- 명령어 경로 해결 상태
|
|
13
|
+
|
|
14
|
+
## 실행 과정
|
|
15
|
+
|
|
16
|
+
### 1. 언어 상태 종합 분석
|
|
17
|
+
|
|
18
|
+
```bash
|
|
19
|
+
node -e "
|
|
20
|
+
import('./language-utils.js').then(async (utils) => {
|
|
21
|
+
const { getLanguageStatus, resolveCommandPath, getLocalizedMessage } = utils;
|
|
22
|
+
|
|
23
|
+
console.log('=== AIWF 언어 시스템 상태 분석 ===\n');
|
|
24
|
+
|
|
25
|
+
// 기본 상태 정보
|
|
26
|
+
const status = await getLanguageStatus();
|
|
27
|
+
|
|
28
|
+
console.log('📍 기본 정보:');
|
|
29
|
+
console.log(' 감지된 언어:', status.detectedLanguage);
|
|
30
|
+
console.log(' 설정된 언어:', status.configuredLanguage || '없음');
|
|
31
|
+
console.log(' 현재 사용 언어:', status.effectiveLanguage);
|
|
32
|
+
console.log(' 자동 감지:', status.autoDetect ? '활성화' : '비활성화');
|
|
33
|
+
console.log(' 폴백 언어:', status.fallbackLanguage);
|
|
34
|
+
console.log(' 지원 언어:', status.supportedLanguages.join(', '));
|
|
35
|
+
console.log(' 설정 파일:', status.configPath);
|
|
36
|
+
|
|
37
|
+
if (status.error) {
|
|
38
|
+
console.log(' ⚠️ 오류:', status.error);
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
console.log('\n📂 설정 파일 상태:');
|
|
42
|
+
try {
|
|
43
|
+
const fs = await import('fs/promises');
|
|
44
|
+
const configExists = await fs.access(status.configPath).then(() => true).catch(() => false);
|
|
45
|
+
|
|
46
|
+
if (configExists) {
|
|
47
|
+
const configContent = await fs.readFile(status.configPath, 'utf8');
|
|
48
|
+
const config = JSON.parse(configContent);
|
|
49
|
+
console.log(' ✅ 설정 파일 존재');
|
|
50
|
+
console.log(' 📄 내용:', JSON.stringify(config, null, 4));
|
|
51
|
+
} else {
|
|
52
|
+
console.log(' ❌ 설정 파일 없음');
|
|
53
|
+
}
|
|
54
|
+
} catch (error) {
|
|
55
|
+
console.log(' ⚠️ 설정 파일 읽기 오류:', error.message);
|
|
56
|
+
}
|
|
57
|
+
});
|
|
58
|
+
"
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
### 2. 환경 변수 분석
|
|
62
|
+
|
|
63
|
+
```bash
|
|
64
|
+
node -e "
|
|
65
|
+
console.log('\n🌍 시스템 환경 변수:');
|
|
66
|
+
console.log(' LANG:', process.env.LANG || '설정되지 않음');
|
|
67
|
+
console.log(' LC_ALL:', process.env.LC_ALL || '설정되지 않음');
|
|
68
|
+
console.log(' LANGUAGE:', process.env.LANGUAGE || '설정되지 않음');
|
|
69
|
+
console.log(' NODE_ENV:', process.env.NODE_ENV || '설정되지 않음');
|
|
70
|
+
"
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
### 3. 명령어 경로 테스트
|
|
74
|
+
|
|
75
|
+
```bash
|
|
76
|
+
node -e "
|
|
77
|
+
import('./language-utils.js').then(async ({ resolveCommandPath, detectLanguage }) => {
|
|
78
|
+
console.log('\n🔍 명령어 경로 해결 테스트:');
|
|
79
|
+
|
|
80
|
+
const currentLang = await detectLanguage();
|
|
81
|
+
console.log(' 현재 언어:', currentLang);
|
|
82
|
+
|
|
83
|
+
const testCommands = [
|
|
84
|
+
'aiwf_do_task',
|
|
85
|
+
'aiwf_commit',
|
|
86
|
+
'aiwf_initialize',
|
|
87
|
+
'aiwf_switch_language',
|
|
88
|
+
'aiwf_test',
|
|
89
|
+
'aiwf_code_review',
|
|
90
|
+
'aiwf_project_review'
|
|
91
|
+
];
|
|
92
|
+
|
|
93
|
+
for (const cmd of testCommands) {
|
|
94
|
+
const result = await resolveCommandPath(cmd);
|
|
95
|
+
if (result.path) {
|
|
96
|
+
const status = result.fallback ? '🔄 폴백' : '✅ 직접';
|
|
97
|
+
console.log(' ' + status, cmd + ':', result.language);
|
|
98
|
+
} else {
|
|
99
|
+
console.log(' ❌ 없음', cmd + ':', result.error);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
});
|
|
103
|
+
"
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
### 4. 메시지 시스템 테스트
|
|
107
|
+
|
|
108
|
+
```bash
|
|
109
|
+
node -e "
|
|
110
|
+
import('./language-utils.js').then(async ({ getLocalizedMessage, detectLanguage }) => {
|
|
111
|
+
console.log('\n💬 다국어 메시지 시스템 테스트:');
|
|
112
|
+
|
|
113
|
+
const currentLang = await detectLanguage();
|
|
114
|
+
console.log(' 현재 언어:', currentLang);
|
|
115
|
+
|
|
116
|
+
const testMessages = [
|
|
117
|
+
'LANGUAGE_NOT_SUPPORTED',
|
|
118
|
+
'CONFIG_LOAD_FAILED',
|
|
119
|
+
'CONFIG_SAVE_FAILED',
|
|
120
|
+
'COMMAND_NOT_FOUND',
|
|
121
|
+
'LANGUAGE_SWITCH_SUCCESS'
|
|
122
|
+
];
|
|
123
|
+
|
|
124
|
+
for (const msgKey of testMessages) {
|
|
125
|
+
const koMsg = getLocalizedMessage(msgKey, 'ko');
|
|
126
|
+
const enMsg = getLocalizedMessage(msgKey, 'en');
|
|
127
|
+
console.log(' ' + msgKey + ':');
|
|
128
|
+
console.log(' 한국어: ' + koMsg);
|
|
129
|
+
console.log(' English: ' + enMsg);
|
|
130
|
+
}
|
|
131
|
+
});
|
|
132
|
+
"
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
### 5. 디렉토리 구조 확인
|
|
136
|
+
|
|
137
|
+
```bash
|
|
138
|
+
node -e "
|
|
139
|
+
const fs = await import('fs/promises');
|
|
140
|
+
const path = await import('path');
|
|
141
|
+
|
|
142
|
+
console.log('\n📁 AIWF 디렉토리 구조:');
|
|
143
|
+
|
|
144
|
+
const checkDirs = [
|
|
145
|
+
'.aiwf',
|
|
146
|
+
'.aiwf/config',
|
|
147
|
+
'.claude',
|
|
148
|
+
'.claude/commands',
|
|
149
|
+
'.claude/commands/aiwf',
|
|
150
|
+
'claude-code/aiwf/ko/.claude/commands/aiwf',
|
|
151
|
+
'claude-code/aiwf/en/.claude/commands/aiwf'
|
|
152
|
+
];
|
|
153
|
+
|
|
154
|
+
for (const dir of checkDirs) {
|
|
155
|
+
try {
|
|
156
|
+
const exists = await fs.access(dir).then(() => true).catch(() => false);
|
|
157
|
+
if (exists) {
|
|
158
|
+
const files = await fs.readdir(dir);
|
|
159
|
+
console.log(' ✅', dir + ':', files.length + '개 파일');
|
|
160
|
+
} else {
|
|
161
|
+
console.log(' ❌', dir + ':', '디렉토리 없음');
|
|
162
|
+
}
|
|
163
|
+
} catch (error) {
|
|
164
|
+
console.log(' ⚠️', dir + ':', '접근 오류');
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
"
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
## 진단 및 권장사항
|
|
171
|
+
|
|
172
|
+
### 언어 감지 문제 해결
|
|
173
|
+
|
|
174
|
+
명령어가 다음과 같은 권장사항을 제공합니다:
|
|
175
|
+
|
|
176
|
+
1. **설정 파일이 없는 경우**:
|
|
177
|
+
```
|
|
178
|
+
💡 권장사항: 언어를 명시적으로 설정하세요
|
|
179
|
+
/project:aiwf:switch_language ko
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
2. **환경 변수 문제**:
|
|
183
|
+
```
|
|
184
|
+
💡 권장사항: 환경 변수를 확인하세요
|
|
185
|
+
export LANG=ko_KR.UTF-8
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
3. **명령어 파일 누락**:
|
|
189
|
+
```
|
|
190
|
+
💡 권장사항: AIWF를 다시 설치하세요
|
|
191
|
+
npx aiwf --force
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
## 출력 예시
|
|
195
|
+
|
|
196
|
+
```
|
|
197
|
+
=== AIWF 언어 시스템 상태 분석 ===
|
|
198
|
+
|
|
199
|
+
📍 기본 정보:
|
|
200
|
+
감지된 언어: ko
|
|
201
|
+
설정된 언어: ko
|
|
202
|
+
현재 사용 언어: ko
|
|
203
|
+
자동 감지: 활성화
|
|
204
|
+
폴백 언어: en
|
|
205
|
+
지원 언어: ko, en
|
|
206
|
+
설정 파일: .aiwf/config/language.json
|
|
207
|
+
|
|
208
|
+
📂 설정 파일 상태:
|
|
209
|
+
✅ 설정 파일 존재
|
|
210
|
+
📄 내용: {
|
|
211
|
+
"language": "ko",
|
|
212
|
+
"auto_detect": true,
|
|
213
|
+
"last_updated": "2025-07-03T06:25:00.000Z",
|
|
214
|
+
"fallback": "en"
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
🌍 시스템 환경 변수:
|
|
218
|
+
LANG: ko_KR.UTF-8
|
|
219
|
+
LC_ALL: 설정되지 않음
|
|
220
|
+
LANGUAGE: 설정되지 않음
|
|
221
|
+
NODE_ENV: 설정되지 않음
|
|
222
|
+
|
|
223
|
+
🔍 명령어 경로 해결 테스트:
|
|
224
|
+
현재 언어: ko
|
|
225
|
+
✅ 직접 aiwf_do_task: ko
|
|
226
|
+
✅ 직접 aiwf_commit: ko
|
|
227
|
+
✅ 직접 aiwf_initialize: ko
|
|
228
|
+
✅ 직접 aiwf_switch_language: ko
|
|
229
|
+
🔄 폴백 aiwf_test: en
|
|
230
|
+
❌ 없음 aiwf_unknown: 명령어 파일을 찾을 수 없습니다
|
|
231
|
+
|
|
232
|
+
💬 다국어 메시지 시스템 테스트:
|
|
233
|
+
현재 언어: ko
|
|
234
|
+
LANGUAGE_NOT_SUPPORTED:
|
|
235
|
+
한국어: 지원되지 않는 언어입니다
|
|
236
|
+
English: Language not supported
|
|
237
|
+
|
|
238
|
+
📁 AIWF 디렉토리 구조:
|
|
239
|
+
✅ .aiwf: 8개 파일
|
|
240
|
+
✅ .aiwf/config: 1개 파일
|
|
241
|
+
✅ .claude: 2개 파일
|
|
242
|
+
✅ .claude/commands: 1개 파일
|
|
243
|
+
❌ .claude/commands/aiwf: 디렉토리 없음
|
|
244
|
+
✅ claude-code/aiwf/ko/.claude/commands/aiwf: 15개 파일
|
|
245
|
+
✅ claude-code/aiwf/en/.claude/commands/aiwf: 14개 파일
|
|
246
|
+
```
|
|
@@ -1,22 +1,22 @@
|
|
|
1
|
-
#
|
|
1
|
+
# 태스크 완료 후 풀 리퀘스트 생성
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
태스크 완료 후 GitHub 풀 리퀘스트를 생성하고 관련 이슈와 연결합니다.
|
|
4
4
|
|
|
5
|
-
##
|
|
5
|
+
## 정확히 다음 6개 항목으로 TODO 생성
|
|
6
6
|
|
|
7
|
-
1.
|
|
8
|
-
2.
|
|
9
|
-
3.
|
|
10
|
-
4.
|
|
11
|
-
5.
|
|
12
|
-
6.
|
|
7
|
+
1. 현재 브랜치 및 변경사항 확인
|
|
8
|
+
2. PR 본문 템플릿 생성
|
|
9
|
+
3. GitHub PR 생성
|
|
10
|
+
4. 이슈와 PR 연결
|
|
11
|
+
5. 리뷰어 배정
|
|
12
|
+
6. 결과 보고
|
|
13
13
|
|
|
14
|
-
## 1 ·
|
|
14
|
+
## 1 · 브랜치 및 변경사항 확인
|
|
15
15
|
|
|
16
|
-
|
|
17
|
-
- `git branch --show-current`:
|
|
18
|
-
- `git log main..HEAD --oneline`:
|
|
19
|
-
- `git diff main...HEAD --stat`:
|
|
16
|
+
병렬로 실행:
|
|
17
|
+
- `git branch --show-current`: 현재 브랜치 확인
|
|
18
|
+
- `git log main..HEAD --oneline`: 커밋 히스토리
|
|
19
|
+
- `git diff main...HEAD --stat`: 변경된 파일 통계
|
|
20
20
|
|
|
21
21
|
Extract GitHub issue number from task file
|
|
22
22
|
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
# 지식 프라임
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
이 프로젝트의 기본 정보로 자신을 준비시키세요.
|
|
4
|
+
환경을 인식하고 있는지 확인하세요.
|
|
5
5
|
|
|
6
|
-
##
|
|
6
|
+
## **병렬 에이전트**를 사용하여 다음을 수행하세요
|
|
7
7
|
|
|
8
|
-
-
|
|
9
|
-
-
|
|
8
|
+
- 기본 프로젝트 정보를 위해 .aiwf/01_PROJECT_DOCS/ARCHITECTURE.md 읽기
|
|
9
|
+
- 프로젝트 상태를 위해 .aiwf/00_PROJECT_MANIFEST.md 읽기
|