aiag-cli 2.2.2 → 2.3.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.
Files changed (77) hide show
  1. package/README.md +72 -37
  2. package/dist/cli.js +30 -2
  3. package/dist/cli.js.map +1 -1
  4. package/dist/commands/auto.js +45 -41
  5. package/dist/commands/auto.js.map +1 -1
  6. package/dist/commands/feature.d.ts +11 -0
  7. package/dist/commands/feature.d.ts.map +1 -0
  8. package/dist/commands/feature.js +153 -0
  9. package/dist/commands/feature.js.map +1 -0
  10. package/dist/commands/init.d.ts +1 -1
  11. package/dist/commands/init.d.ts.map +1 -1
  12. package/dist/commands/init.js +29 -78
  13. package/dist/commands/init.js.map +1 -1
  14. package/dist/commands/prd.d.ts +12 -0
  15. package/dist/commands/prd.d.ts.map +1 -0
  16. package/dist/commands/prd.js +179 -0
  17. package/dist/commands/prd.js.map +1 -0
  18. package/dist/prompts/coding.d.ts.map +1 -1
  19. package/dist/prompts/coding.js +12 -0
  20. package/dist/prompts/coding.js.map +1 -1
  21. package/dist/prompts/index.d.ts +2 -0
  22. package/dist/prompts/index.d.ts.map +1 -1
  23. package/dist/prompts/index.js +2 -0
  24. package/dist/prompts/index.js.map +1 -1
  25. package/dist/prompts/initializer.d.ts.map +1 -1
  26. package/dist/prompts/initializer.js +6 -0
  27. package/dist/prompts/initializer.js.map +1 -1
  28. package/dist/prompts/prd.d.ts +28 -0
  29. package/dist/prompts/prd.d.ts.map +1 -0
  30. package/dist/prompts/prd.js +105 -0
  31. package/dist/prompts/prd.js.map +1 -0
  32. package/dist/skills/index.d.ts +12 -0
  33. package/dist/skills/index.d.ts.map +1 -0
  34. package/dist/skills/index.js +12 -0
  35. package/dist/skills/index.js.map +1 -0
  36. package/dist/skills/installer.d.ts +38 -0
  37. package/dist/skills/installer.d.ts.map +1 -0
  38. package/dist/skills/installer.js +153 -0
  39. package/dist/skills/installer.js.map +1 -0
  40. package/dist/skills/loader.d.ts +34 -0
  41. package/dist/skills/loader.d.ts.map +1 -0
  42. package/dist/skills/loader.js +134 -0
  43. package/dist/skills/loader.js.map +1 -0
  44. package/dist/skills/runner.d.ts +14 -0
  45. package/dist/skills/runner.d.ts.map +1 -0
  46. package/dist/skills/runner.js +238 -0
  47. package/dist/skills/runner.js.map +1 -0
  48. package/dist/types.d.ts +127 -0
  49. package/dist/types.d.ts.map +1 -1
  50. package/dist/utils/prd.d.ts +21 -0
  51. package/dist/utils/prd.d.ts.map +1 -1
  52. package/dist/utils/prd.js +69 -0
  53. package/dist/utils/prd.js.map +1 -1
  54. package/dist/utils/taskmasterConverter.d.ts +72 -0
  55. package/dist/utils/taskmasterConverter.d.ts.map +1 -0
  56. package/dist/utils/taskmasterConverter.js +401 -0
  57. package/dist/utils/taskmasterConverter.js.map +1 -0
  58. package/dist/utils/taskmasterParser.d.ts +35 -0
  59. package/dist/utils/taskmasterParser.d.ts.map +1 -0
  60. package/dist/utils/taskmasterParser.js +259 -0
  61. package/dist/utils/taskmasterParser.js.map +1 -0
  62. package/package.json +1 -1
  63. package/templates/skills/prd-taskmaster/.taskmaster/docs/prd.md +2571 -0
  64. package/templates/skills/prd-taskmaster/.taskmaster/scripts/execution-state.py +87 -0
  65. package/templates/skills/prd-taskmaster/.taskmaster/scripts/learn-accuracy.py +113 -0
  66. package/templates/skills/prd-taskmaster/.taskmaster/scripts/rollback.sh +71 -0
  67. package/templates/skills/prd-taskmaster/.taskmaster/scripts/security-audit.py +130 -0
  68. package/templates/skills/prd-taskmaster/.taskmaster/scripts/track-time.py +133 -0
  69. package/templates/skills/prd-taskmaster/LICENSE +21 -0
  70. package/templates/skills/prd-taskmaster/README.md +608 -0
  71. package/templates/skills/prd-taskmaster/SKILL.md +1258 -0
  72. package/templates/skills/prd-taskmaster/reference/taskmaster-integration-guide.md +645 -0
  73. package/templates/skills/prd-taskmaster/reference/validation-checklist.md +394 -0
  74. package/templates/skills/prd-taskmaster/scripts/setup-taskmaster.sh +112 -0
  75. package/templates/skills/prd-taskmaster/templates/CLAUDE.md.template +635 -0
  76. package/templates/skills/prd-taskmaster/templates/taskmaster-prd-comprehensive.md +983 -0
  77. package/templates/skills/prd-taskmaster/templates/taskmaster-prd-minimal.md +103 -0
package/README.md CHANGED
@@ -11,12 +11,13 @@ AI 에이전트 하네스 CLI - Claude Agent SDK 기반 장기 실행 에이전
11
11
 
12
12
  ### 주요 기능
13
13
 
14
- - **Claude Agent SDK 기반** (v2.0.0): 안정적인 SDK 직접 호출 방식
14
+ - **Claude Agent SDK 기반** (v2.0.0+): 안정적인 SDK 직접 호출 방식
15
+ - **prd-taskmaster 통합** (v2.3.0): PRD 생성 스킬 내장 및 자동 설치
15
16
  - **상태 외부화**: AI 메모리가 아닌 파일에 진행 상황 추적
16
17
  - **자동 구현 모드**: `aiag auto`로 다중 기능 자동 구현
17
18
  - **점진적 진행**: 테스트와 함께 한 번에 하나의 기능
18
19
  - **세션 관리**: 명확한 시작/종료 시퀀스
19
- - **PRD 기반 초기화**: PRD 문서로부터 기능 목록 자동 생성
20
+ - **PRD Feature 파이프라인**: `aiag prd` `aiag feature` → `aiag auto`
20
21
  - **aiag-adp 통합**: 웹 플랫폼과 양방향 동기화
21
22
 
22
23
  ## 설치
@@ -42,33 +43,34 @@ claude login
42
43
 
43
44
  ## 빠른 시작
44
45
 
45
- ### 1. PRD 기반 자동 초기화
46
+ ### 1. 프로젝트 초기화 PRD 생성
46
47
 
47
48
  ```bash
48
- # PRD 문서 작성
49
- cat > prd.md << 'EOF'
50
- # 프로젝트명
49
+ # 프로젝트 디렉토리 생성
50
+ mkdir my-project && cd my-project
51
+ git init
51
52
 
52
- ## 목표
53
- 프로젝트 목표 설명
53
+ # AIAG 초기화 (prd-taskmaster 스킬 자동 설치)
54
+ aiag init
54
55
 
55
- ## 주요 기능
56
- - 기능 1
57
- - 기능 2
58
- - 기능 3
56
+ # PRD 생성 (대화형 - 12+ 질문 답변)
57
+ aiag prd
59
58
 
60
- ## 제약사항
61
- - 제약사항 1
62
- EOF
59
+ # 또는 기존 요구사항 문서에서 PRD 변환
60
+ aiag prd --from requirements.md
61
+ ```
62
+
63
+ ### 2. Feature 목록 생성
63
64
 
64
- # AIAG 초기화 (PRD 분석 및 feature_list 자동 생성)
65
- aiag init --from-prd prd.md
65
+ ```bash
66
+ # PRD에서 feature_list.json 생성
67
+ aiag feature
66
68
 
67
69
  # 상태 확인
68
70
  aiag status
69
71
  ```
70
72
 
71
- ### 2. 자동 구현 모드 실행
73
+ ### 3. 자동 구현 모드 실행
72
74
 
73
75
  ```bash
74
76
  # 기본 5개 기능 자동 구현
@@ -84,7 +86,7 @@ aiag auto --verbose
84
86
  aiag auto --timeout 10
85
87
  ```
86
88
 
87
- ### 3. 결과 확인
89
+ ### 4. 결과 확인
88
90
 
89
91
  ```bash
90
92
  # 진행 상황 확인
@@ -98,16 +100,19 @@ open index.html
98
100
 
99
101
  ### 핵심 명령어
100
102
 
101
- | 명령어 | 설명 |
102
- | -------------------- | --------------------------- |
103
- | `aiag init` | 현재 디렉토리에 AIAG 초기화 |
104
- | `aiag status` | 프로젝트 진행 상황 표시 |
105
- | `aiag next` | 다음 기능 추천 받기 |
106
- | `aiag work [id]` | 단일 기능 작업 시작 |
107
- | `aiag auto [count]` | 자동 연속 구현 모드 |
108
- | `aiag test [id]` | 기능 테스트 실행 |
109
- | `aiag complete <id>` | 기능을 완료로 표시 |
110
- | `aiag commit` | 자동 메시지로 변경사항 커밋 |
103
+ | 명령어 | 설명 |
104
+ | -------------------- | ------------------------------------- |
105
+ | `aiag init` | 현재 디렉토리에 AIAG 초기화 |
106
+ | `aiag prd` | PRD 생성 (prd-taskmaster 스킬 사용) |
107
+ | `aiag feature` | PRD에서 feature_list.json 생성 |
108
+ | `aiag status` | 프로젝트 진행 상황 표시 |
109
+ | `aiag next` | 다음 기능 추천 받기 |
110
+ | `aiag work [id]` | 단일 기능 작업 시작 |
111
+ | `aiag auto [count]` | 자동 연속 구현 모드 |
112
+ | `aiag test [id]` | 기능 테스트 실행 |
113
+ | `aiag complete <id>` | 기능을 완료로 표시 |
114
+ | `aiag commit` | 자동 메시지로 변경사항 커밋 |
115
+ | `aiag validate` | Feature 목록 구조 검증 |
111
116
 
112
117
  ### 세션 명령어
113
118
 
@@ -132,8 +137,36 @@ aiag init [options]
132
137
 
133
138
  옵션:
134
139
  -f, --force 기존 프로젝트 재초기화
135
- --from-prd <file> 특정 PRD 파일 지정
136
- --minimal PRD 분석 없이 최소 구조만 생성
140
+ --minimal 최소 구조만 생성
141
+ --skip-skills 스킬 설치 생략
142
+ ```
143
+
144
+ ### prd 옵션
145
+
146
+ ```bash
147
+ aiag prd [options]
148
+
149
+ 옵션:
150
+ --from <path> 기존 요구사항 문서를 Taskmaster PRD로 변환
151
+ -o, --output <path> PRD 출력 경로 (기본: .taskmaster/docs/prd.md)
152
+ -t, --template 템플릿: minimal | comprehensive (기본: comprehensive)
153
+ --skip-validation 13개 품질 검증 생략
154
+ --dry-run 시뮬레이션 모드
155
+ -v, --verbose 상세 로그 출력
156
+ ```
157
+
158
+ ### feature 옵션
159
+
160
+ ```bash
161
+ aiag feature [options]
162
+
163
+ 옵션:
164
+ --from <path> PRD 파일 경로 지정
165
+ --format <type> PRD 포맷 강제 지정: taskmaster | generic
166
+ -o, --output <path> 출력 경로
167
+ --validate 생성 후 검증 실행
168
+ --dry-run 시뮬레이션 모드
169
+ -v, --verbose 상세 로그 출력
137
170
  ```
138
171
 
139
172
  ### auto 옵션
@@ -220,6 +253,14 @@ Anthropic의 Long-Running Agent 아키텍처 기반:
220
253
 
221
254
  ## 변경 이력
222
255
 
256
+ ### v2.3.0 (2024-12-25)
257
+
258
+ - **신규 명령어**: `aiag prd` - PRD 생성 (prd-taskmaster 스킬 통합)
259
+ - **신규 명령어**: `aiag feature` - PRD에서 feature_list.json 생성
260
+ - **prd-taskmaster 스킬 번들링**: `aiag init` 시 자동 설치
261
+ - **PRD 변환 기능**: `aiag prd --from <path>` 옵션 추가
262
+ - **Breaking Change**: `aiag init --from-prd` 옵션 제거 (→ `aiag feature` 사용)
263
+
223
264
  ### v2.0.0 (2024-12-22)
224
265
 
225
266
  - **Breaking Change**: Claude Agent SDK로 완전 전환
@@ -234,12 +275,6 @@ Anthropic의 Long-Running Agent 아키텍처 기반:
234
275
  - `login`, `logout`, `connect`, `sync` 명령어 추가
235
276
  - SSE 실시간 스트리밍 지원
236
277
 
237
- ### v1.8.0
238
-
239
- - `aiag auto` 자동 구현 모드 추가
240
- - Claude Code 자동 실행
241
- - 자동 재시도 및 실패 분석
242
-
243
278
  [전체 변경 이력](CHANGELOG.md)
244
279
 
245
280
  ## Author
package/dist/cli.js CHANGED
@@ -2,6 +2,8 @@
2
2
  import { Command } from 'commander';
3
3
  import { createRequire } from 'module';
4
4
  import { init } from './commands/init.js';
5
+ import { prd } from './commands/prd.js';
6
+ import { feature } from './commands/feature.js';
5
7
  import { status } from './commands/status.js';
6
8
  import { next } from './commands/next.js';
7
9
  import { test } from './commands/test.js';
@@ -25,11 +27,37 @@ program
25
27
  .command('init')
26
28
  .description('Initialize a new AIAG project')
27
29
  .option('-f, --force', 'Force reinitialize')
28
- .option('--from-prd <file>', 'Generate features from PRD file')
29
- .option('--minimal', 'Skip PRD analysis and create minimal structure')
30
+ .option('--minimal', 'Minimal structure only')
31
+ .option('--skip-skills', 'Skip skill installation')
30
32
  .action(async (options) => {
31
33
  await init(options);
32
34
  });
35
+ // aiag prd - PRD 생성
36
+ program
37
+ .command('prd')
38
+ .description('Generate PRD using prd-taskmaster skill (interactive or from existing doc)')
39
+ .option('--from <path>', 'Convert existing requirements doc or PRD draft to taskmaster format')
40
+ .option('-o, --output <path>', 'PRD output path', '.taskmaster/docs/prd.md')
41
+ .option('-t, --template <name>', 'Template: minimal | comprehensive', 'comprehensive')
42
+ .option('--skip-validation', 'Skip 13 quality validations')
43
+ .option('--dry-run', 'Simulation mode')
44
+ .option('-v, --verbose', 'Verbose output')
45
+ .action(async (options) => {
46
+ await prd(options);
47
+ });
48
+ // aiag feature - Feature 목록 생성
49
+ program
50
+ .command('feature')
51
+ .description('Generate feature_list.json from PRD')
52
+ .option('--from <path>', 'PRD file path')
53
+ .option('--format <type>', 'Force PRD format: taskmaster | generic')
54
+ .option('-o, --output <path>', 'Output path')
55
+ .option('--validate', 'Validate after generation')
56
+ .option('--dry-run', 'Simulation mode')
57
+ .option('-v, --verbose', 'Verbose output')
58
+ .action(async (options) => {
59
+ await feature(options);
60
+ });
33
61
  // aiag status
34
62
  program
35
63
  .command('status')
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -213,11 +213,11 @@ export async function auto(count = '5', options = {}) {
213
213
  attemptNumber: interruptedWork.attemptNumber,
214
214
  previousError: interruptedWork.previousError,
215
215
  };
216
- verboseLog(`Auto-retrying interrupted feature: ${feature.id} (attempt ${interruptedWork.attemptNumber}/${maxAttempts})`);
216
+ verboseLog(`중단된 기능 자동 재시도: ${feature.id} (시도 ${interruptedWork.attemptNumber}/${maxAttempts})`);
217
217
  }
218
218
  else {
219
219
  // 최대 시도 횟수 초과 - 영구 실패 처리
220
- verboseLog(`Feature ${interruptedWork.feature.id} exceeded max attempts (${maxAttempts}), moving to next`);
220
+ verboseLog(`기능 ${interruptedWork.feature.id} 최대 시도 횟수(${maxAttempts}) 초과하여 다음으로 이동`);
221
221
  appendToProgress(baseDir, `- [!] ${interruptedWork.feature.id}: Permanently failed after ${maxAttempts} attempts\n`);
222
222
  clearSessionContextUtil(baseDir); // 컨텍스트 정리하고 다음 feature로
223
223
  feature = selectNextFeature(currentFeatureList, options, processedInDryRun);
@@ -229,7 +229,7 @@ export async function auto(count = '5', options = {}) {
229
229
  feature = selectNextFeature(currentFeatureList, options, processedInDryRun);
230
230
  featureContext = { attemptNumber: 1 };
231
231
  if (feature) {
232
- verboseLog(`Selected next feature: ${feature.id}`);
232
+ verboseLog(`다음 기능 선택됨: ${feature.id}`);
233
233
  }
234
234
  }
235
235
  if (!feature) {
@@ -277,25 +277,25 @@ export async function auto(count = '5', options = {}) {
277
277
  category: feature.category,
278
278
  });
279
279
  // 2. Build enhanced prompt context
280
- verboseLog(`Building prompt context for ${feature.id}`);
280
+ verboseLog(`${feature.id}에 대한 프롬프트 컨텍스트 구축 중`);
281
281
  const promptContext = await buildPromptContext(baseDir, feature, currentFeatureList, featureContext?.attemptNumber || 1, featureContext?.previousError);
282
282
  // 3. Claude Code로 구현 시도 (SDK 사용)
283
283
  console.log(` ${icons.arrow} ${colors.cyan('work')} ${feature.id}`);
284
- verboseLog(`Starting Claude SDK for ${feature.id}`);
284
+ verboseLog(`${feature.id}에 대한 Claude SDK 시작`);
285
285
  const implementStart = Date.now();
286
286
  const implementResult = await runClaudeCode(baseDir, feature, promptContext, claudeTimeout, isVerbose);
287
287
  if (!implementResult.success) {
288
- verboseLog(`Implementation failed: ${implementResult.error}`);
288
+ verboseLog(`구현 실패: ${implementResult.error}`);
289
289
  throw new Error(implementResult.error || 'Implementation failed');
290
290
  }
291
291
  const implementDuration = Date.now() - implementStart;
292
292
  console.log(` ${icons.success} work completed (${formatDuration(implementDuration)})`);
293
- verboseLog('Implementation completed successfully');
293
+ verboseLog('구현이 성공적으로 완료됨');
294
294
  // 서버에 progress 로그 전송
295
295
  await sendFeatureLog(serverCtx, feature.id, 'progress', `Implementation completed in ${formatDuration(implementDuration)}`, { phase: 'implementation', duration: implementDuration });
296
296
  // 2. Self-Verification
297
297
  console.log(` ${icons.arrow} ${colors.cyan('verify')} ${feature.id}`);
298
- verboseLog('Running self-verification of acceptance criteria');
298
+ verboseLog('인수 조건의 자가 검증 실행 중');
299
299
  const verifyStart = Date.now();
300
300
  const verificationResult = await runSelfVerification(baseDir, feature, claudeTimeout, isVerbose);
301
301
  if (!verificationResult.allPassed) {
@@ -303,12 +303,12 @@ export async function auto(count = '5', options = {}) {
303
303
  .filter((r) => !r.passed)
304
304
  .map((r) => `- ${r.criterion}: ${r.evidence}`)
305
305
  .join('\n');
306
- verboseLog(`Self-verification failed:\n${failedCriteria}`);
306
+ verboseLog(`자가 검증 실패:\n${failedCriteria}`);
307
307
  throw new Error(`Self-verification failed. Not all acceptance criteria are met:\n${failedCriteria}`);
308
308
  }
309
309
  const verifyDuration = Date.now() - verifyStart;
310
310
  console.log(` ${icons.success} verify passed (${formatDuration(verifyDuration)})`);
311
- verboseLog(`All ${feature.acceptanceCriteria.length} criteria passed verification`);
311
+ verboseLog(`모든 ${feature.acceptanceCriteria.length} 조건이 검증을 통과함`);
312
312
  // 서버에 verification 로그 전송
313
313
  await sendFeatureLog(serverCtx, feature.id, 'progress', `Self-verification passed (${feature.acceptanceCriteria.length} criteria)`, { phase: 'verification', duration: verifyDuration });
314
314
  // 3. 테스트 실행
@@ -373,9 +373,9 @@ export async function auto(count = '5', options = {}) {
373
373
  console.log(` ${icons.error} Failed: ${errorMessage}`);
374
374
  // Verbose: show failure analysis
375
375
  if (isVerbose && failureAnalysis.category !== 'unknown') {
376
- verboseLog(`Failure category: ${failureAnalysis.category}`);
377
- verboseLog(`Suggested fix: ${failureAnalysis.suggestion}`);
378
- verboseLog(`Should retry: ${failureAnalysis.shouldRetry ? 'Yes' : 'No (consider manual fix)'}`);
376
+ verboseLog(`실패 카테고리: ${failureAnalysis.category}`);
377
+ verboseLog(`권장 수정: ${failureAnalysis.suggestion}`);
378
+ verboseLog(`재시도 여부: ${failureAnalysis.shouldRetry ? '' : '아니오 (수동 수정 권장)'}`);
379
379
  }
380
380
  results.push({
381
381
  featureId: feature.id,
@@ -529,7 +529,7 @@ async function runClaudeCode(baseDir, feature, context, timeout, verbose) {
529
529
  }
530
530
  };
531
531
  // Claude Agent SDK 사용
532
- verboseLog('Using Claude Agent SDK');
532
+ verboseLog('Claude Agent SDK 사용 중');
533
533
  try {
534
534
  const result = await runFeatureImplementation(feature, prompt, {
535
535
  workingDirectory: baseDir,
@@ -552,17 +552,17 @@ async function runClaudeCode(baseDir, feature, context, timeout, verbose) {
552
552
  },
553
553
  });
554
554
  if (result.success) {
555
- verboseLog(`SDK execution completed: turns=${result.numTurns}, cost=$${result.costUsd?.toFixed(4)}`);
555
+ verboseLog(`SDK 실행 완료: turns=${result.numTurns}, cost=$${result.costUsd?.toFixed(4)}`);
556
556
  return { success: true, output: result.result };
557
557
  }
558
558
  else {
559
- verboseLog(`SDK execution failed: ${result.error}`);
559
+ verboseLog(`SDK 실행 실패: ${result.error}`);
560
560
  return { success: false, error: result.error, output: result.result };
561
561
  }
562
562
  }
563
563
  catch (error) {
564
564
  const errorMessage = error instanceof Error ? error.message : String(error);
565
- verboseLog(`SDK execution error: ${errorMessage}`);
565
+ verboseLog(`SDK 실행 오류: ${errorMessage}`);
566
566
  return { success: false, error: errorMessage };
567
567
  }
568
568
  }
@@ -748,54 +748,58 @@ async function runSelfVerification(baseDir, feature, timeout, verbose) {
748
748
  console.log(colors.dim(` [verbose] ${message}`));
749
749
  }
750
750
  };
751
- verboseLog(`Starting self-verification for ${feature.id}`);
751
+ verboseLog(`${feature.id}에 대한 자가 검증 시작`);
752
752
  const verificationPrompt = `
753
753
  # Self-Verification for ${feature.id}
754
754
 
755
- Your implementation of ${feature.id} is complete. Now you MUST verify that ALL acceptance criteria are satisfied.
755
+ ## 언어 규칙
756
+ - **모든 출력과 설명은 한국어로 작성하세요.**
757
+ - 코드, 명령어, 파일명은 영어로 유지하세요.
756
758
 
757
- ## Acceptance Criteria to Verify:
759
+ ${feature.id} 구현이 완료되었습니다. 이제 모든 인수 조건(Acceptance Criteria)이 충족되었는지 반드시 검증해야 합니다.
760
+
761
+ ## 검증할 인수 조건:
758
762
 
759
763
  ${feature.acceptanceCriteria.map((c, i) => `${i + 1}. ${c}`).join('\n')}
760
764
 
761
- ## Verification Instructions:
765
+ ## 검증 방법:
762
766
 
763
- For each criterion above, check if it is satisfied by:
764
- 1. Inspecting the code you wrote
765
- 2. Checking if files exist
766
- 3. Verifying function signatures and implementations
767
- 4. Confirming expected behavior
767
+ 조건에 대해 다음을 확인하세요:
768
+ 1. 작성한 코드 검토
769
+ 2. 파일 존재 여부 확인
770
+ 3. 함수 시그니처 구현 확인
771
+ 4. 예상 동작 확인
768
772
 
769
- ## Response Format:
773
+ ## 응답 형식:
770
774
 
771
- You MUST respond with EXACTLY this format for each criterion:
775
+ 조건에 대해 정확히 다음 형식으로 응답하세요:
772
776
 
773
777
  \`\`\`
774
778
  CRITERION 1: [PASS/FAIL]
775
- Evidence: [Brief explanation of how this criterion is met, or why it failed]
779
+ Evidence: [ 조건이 충족된 방법 또는 실패 이유에 대한 간단한 설명 (한국어)]
776
780
 
777
781
  CRITERION 2: [PASS/FAIL]
778
- Evidence: [Brief explanation]
782
+ Evidence: [간단한 설명 (한국어)]
779
783
 
780
784
  ...
781
785
  \`\`\`
782
786
 
783
- Then, at the end, provide a final verdict:
787
+ 마지막에 최종 판정을 제공하세요:
784
788
 
785
789
  \`\`\`
786
790
  FINAL VERDICT: [ALL PASS / FAILED]
787
791
  \`\`\`
788
792
 
789
- **IMPORTANT:**
790
- - Be HONEST and STRICT in your verification
791
- - If ANY criterion is not met, mark it as FAIL
792
- - Only respond ALL PASS if EVERY criterion is satisfied
793
- - If you're unsure about a criterion, mark it as FAIL and explain why
793
+ **중요:**
794
+ - 검증 정직하고 엄격하게 평가하세요
795
+ - 하나라도 충족되지 않으면 FAIL로 표시하세요
796
+ - 모든 조건이 충족된 경우에만 ALL PASS 응답하세요
797
+ - 확신이 없는 조건은 FAIL 표시하고 이유를 설명하세요
794
798
 
795
- Start verification now.
799
+ 지금 검증을 시작하세요.
796
800
  `;
797
801
  // Claude Agent SDK를 사용한 검증
798
- verboseLog('Running verification via SDK');
802
+ verboseLog('SDK를 통한 검증 실행 중');
799
803
  const result = await runAgent({
800
804
  workingDirectory: baseDir,
801
805
  prompt: verificationPrompt,
@@ -817,7 +821,7 @@ Start verification now.
817
821
  },
818
822
  });
819
823
  if (!result.success) {
820
- verboseLog(`Verification failed to run: ${result.error}`);
824
+ verboseLog(`검증 실행 실패: ${result.error}`);
821
825
  return {
822
826
  allPassed: false,
823
827
  results: feature.acceptanceCriteria.map((c) => ({
@@ -1221,8 +1225,8 @@ async function runInitializerSession(baseDir, timeout, verbose) {
1221
1225
  console.log(colors.dim(` [verbose] ${message}`));
1222
1226
  }
1223
1227
  };
1224
- verboseLog('Running Initializer Agent via SDK');
1225
- verboseLog(`PRD found: ${prdContent ? 'Yes' : 'No'}`);
1228
+ verboseLog('SDK를 통해 Initializer Agent 실행 ');
1229
+ verboseLog(`PRD 발견: ${prdContent ? '' : '아니오'}`);
1226
1230
  // SDK의 runInitializer 함수 사용
1227
1231
  const result = await runInitializer(prompt, {
1228
1232
  workingDirectory: baseDir,