claude-symphony 0.0.1 → 0.0.2

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 (148) hide show
  1. package/README.md +16 -12
  2. package/bin/create.js +80 -69
  3. package/package.json +1 -1
  4. package/template/.claude/commands/benchmark.md +32 -32
  5. package/template/.claude/commands/brainstorm.md +33 -33
  6. package/template/.claude/commands/checkpoint.md +42 -42
  7. package/template/.claude/commands/codex.md +52 -52
  8. package/template/.claude/commands/collaborate.md +47 -47
  9. package/template/.claude/commands/context.md +77 -77
  10. package/template/.claude/commands/deploy.md +50 -50
  11. package/template/.claude/commands/fork.md +46 -46
  12. package/template/.claude/commands/gemini.md +43 -43
  13. package/template/.claude/commands/handoff.md +42 -42
  14. package/template/.claude/commands/implement.md +42 -42
  15. package/template/.claude/commands/init-project.md +25 -25
  16. package/template/.claude/commands/next.md +67 -67
  17. package/template/.claude/commands/planning.md +38 -38
  18. package/template/.claude/commands/qa.md +47 -47
  19. package/template/.claude/commands/refactor.md +50 -50
  20. package/template/.claude/commands/research.md +31 -31
  21. package/template/.claude/commands/restore.md +53 -53
  22. package/template/.claude/commands/run-stage.md +45 -45
  23. package/template/.claude/commands/stages.md +49 -49
  24. package/template/.claude/commands/status.md +41 -41
  25. package/template/.claude/commands/tasks.md +33 -33
  26. package/template/.claude/commands/test.md +45 -45
  27. package/template/.claude/commands/ui-ux.md +31 -31
  28. package/template/.claude/commands/validate.md +81 -81
  29. package/template/.claude/hooks/ai-selector.sh +39 -39
  30. package/template/.claude/hooks/auto-checkpoint.sh +30 -30
  31. package/template/.claude/hooks/output-validator.sh +45 -45
  32. package/template/.claude/hooks/post-stage.sh +28 -28
  33. package/template/.claude/hooks/pre-stage.sh +47 -47
  34. package/template/.claude/hooks/session-start.sh +27 -27
  35. package/template/.claude/hooks/statusline.sh +24 -24
  36. package/template/.claude/hooks/stop.sh +26 -26
  37. package/template/.claude/settings.json +32 -32
  38. package/template/.claude/skills/ai-collaboration/README.md +31 -31
  39. package/template/.claude/skills/ai-collaboration/debate.md +66 -66
  40. package/template/.claude/skills/ai-collaboration/parallel.md +34 -34
  41. package/template/.claude/skills/ai-collaboration/prompts/CLAUDE.md +59 -63
  42. package/template/.claude/skills/auto-checkpoint/README.md +46 -46
  43. package/template/.claude/skills/auto-checkpoint/prompts/CLAUDE.md +68 -72
  44. package/template/.claude/skills/auto-checkpoint/rollback.md +95 -95
  45. package/template/.claude/skills/auto-checkpoint/trigger.md +37 -37
  46. package/template/.claude/skills/context-compression/README.md +69 -69
  47. package/template/.claude/skills/context-compression/analyze.md +74 -74
  48. package/template/.claude/skills/context-compression/compress.md +103 -103
  49. package/template/.claude/skills/context-compression/prompts/compression.md +78 -78
  50. package/template/.claude/skills/output-validator/README.md +33 -33
  51. package/template/.claude/skills/output-validator/prompts/CLAUDE.md +74 -78
  52. package/template/.claude/skills/output-validator/validate.md +76 -76
  53. package/template/.claude/skills/smart-handoff/README.md +35 -35
  54. package/template/.claude/skills/smart-handoff/extract.md +42 -42
  55. package/template/.claude/skills/smart-handoff/prompts/CLAUDE.md +52 -54
  56. package/template/.claude/skills/smart-handoff/summarize.md +55 -55
  57. package/template/.claude/skills/stage-transition/README.md +50 -50
  58. package/template/.claude/skills/stage-transition/handoff-gen.md +89 -89
  59. package/template/.claude/skills/stage-transition/prompts/transition.md +74 -74
  60. package/template/.claude/skills/stage-transition/validate.md +41 -41
  61. package/template/CLAUDE.md +334 -335
  62. package/template/config/ai_benchmarking.yaml +22 -22
  63. package/template/config/ai_collaboration.yaml +18 -18
  64. package/template/config/ai_logging.yaml +50 -50
  65. package/template/config/auto_checkpoint.yaml +32 -32
  66. package/template/config/context.yaml +20 -20
  67. package/template/config/git.yaml +51 -51
  68. package/template/config/handoff_intelligence.yaml +23 -23
  69. package/template/config/mcp_fallbacks.yaml +71 -71
  70. package/template/config/memory_integration.yaml +23 -23
  71. package/template/config/model_enforcement.yaml +53 -53
  72. package/template/config/models.yaml +24 -24
  73. package/template/config/output_validation.yaml +44 -44
  74. package/template/config/pipeline.yaml +25 -25
  75. package/template/config/pipeline_forking.yaml +40 -40
  76. package/template/config/qa_logging.yaml +67 -67
  77. package/template/config/smart_rollback.yaml +48 -48
  78. package/template/config/stage_personas.yaml +154 -154
  79. package/template/config/workflow.yaml +16 -16
  80. package/template/scripts/ai-benchmark.sh +41 -41
  81. package/template/scripts/codex-wrapper.sh +32 -32
  82. package/template/scripts/context-manager.sh +136 -136
  83. package/template/scripts/create-checkpoint.sh +34 -34
  84. package/template/scripts/gemini-wrapper.sh +31 -31
  85. package/template/scripts/init-project.sh +40 -40
  86. package/template/scripts/list-stages.sh +30 -30
  87. package/template/scripts/next-stage.sh +67 -67
  88. package/template/scripts/output-validate.sh +2 -2
  89. package/template/scripts/pipeline-fork.sh +68 -68
  90. package/template/scripts/pre-run-check.sh +84 -84
  91. package/template/scripts/restore-checkpoint.sh +50 -50
  92. package/template/scripts/run-stage.sh +44 -44
  93. package/template/scripts/show-status.sh +30 -30
  94. package/template/scripts/smart-handoff.sh +70 -70
  95. package/template/stages/01-brainstorm/CLAUDE.md +70 -74
  96. package/template/stages/01-brainstorm/README.md +54 -54
  97. package/template/stages/01-brainstorm/config.yaml +18 -18
  98. package/template/stages/01-brainstorm/prompts/collaboration.md +24 -24
  99. package/template/stages/01-brainstorm/prompts/ideation.md +41 -41
  100. package/template/stages/01-brainstorm/prompts/persona.md +50 -50
  101. package/template/stages/01-brainstorm/prompts/requirements.md +55 -55
  102. package/template/stages/01-brainstorm/prompts/validation.md +28 -28
  103. package/template/stages/01-brainstorm/templates/ideas.md +47 -47
  104. package/template/stages/01-brainstorm/templates/requirements_analysis.md +61 -61
  105. package/template/stages/02-research/CLAUDE.md +72 -76
  106. package/template/stages/02-research/config.yaml +12 -12
  107. package/template/stages/02-research/prompts/collaboration.md +29 -29
  108. package/template/stages/02-research/prompts/feasibility.md +38 -38
  109. package/template/stages/02-research/prompts/market_analysis.md +29 -29
  110. package/template/stages/02-research/prompts/tech_stack.md +34 -34
  111. package/template/stages/02-research/prompts/validation.md +29 -29
  112. package/template/stages/03-planning/CLAUDE.md +88 -92
  113. package/template/stages/03-planning/config.yaml +10 -10
  114. package/template/stages/03-planning/prompts/architecture.md +43 -43
  115. package/template/stages/03-planning/prompts/collaboration.md +34 -34
  116. package/template/stages/03-planning/prompts/validation.md +34 -34
  117. package/template/stages/04-ui-ux/CLAUDE.md +68 -72
  118. package/template/stages/04-ui-ux/config.yaml +5 -5
  119. package/template/stages/04-ui-ux/prompts/collaboration.md +35 -35
  120. package/template/stages/04-ui-ux/prompts/validation.md +30 -30
  121. package/template/stages/05-task-management/CLAUDE.md +81 -85
  122. package/template/stages/05-task-management/config.yaml +17 -17
  123. package/template/stages/05-task-management/prompts/collaboration.md +30 -30
  124. package/template/stages/05-task-management/prompts/validation.md +33 -33
  125. package/template/stages/05-task-management/templates/notion_integration.md +70 -70
  126. package/template/stages/05-task-management/templates/parallel_groups.yaml +64 -64
  127. package/template/stages/05-task-management/templates/task_schema.yaml +33 -33
  128. package/template/stages/06-implementation/CLAUDE.md +117 -121
  129. package/template/stages/06-implementation/config.yaml +10 -10
  130. package/template/stages/06-implementation/prompts/collaboration.md +29 -29
  131. package/template/stages/06-implementation/prompts/validation.md +36 -36
  132. package/template/stages/07-refactoring/CLAUDE.md +120 -124
  133. package/template/stages/07-refactoring/config.yaml +11 -11
  134. package/template/stages/07-refactoring/prompts/collaboration.md +36 -36
  135. package/template/stages/07-refactoring/prompts/validation.md +40 -40
  136. package/template/stages/08-qa/CLAUDE.md +80 -84
  137. package/template/stages/08-qa/config.yaml +7 -7
  138. package/template/stages/08-qa/prompts/collaboration.md +34 -34
  139. package/template/stages/08-qa/prompts/validation.md +41 -41
  140. package/template/stages/09-testing/CLAUDE.md +86 -90
  141. package/template/stages/09-testing/config.yaml +10 -10
  142. package/template/stages/09-testing/prompts/collaboration.md +38 -38
  143. package/template/stages/09-testing/prompts/validation.md +41 -41
  144. package/template/stages/10-deployment/CLAUDE.md +86 -90
  145. package/template/stages/10-deployment/config.yaml +11 -11
  146. package/template/stages/10-deployment/prompts/collaboration.md +37 -37
  147. package/template/stages/10-deployment/prompts/validation.md +54 -54
  148. package/template/stages/10-deployment/templates/github-actions-cd.yaml +1 -1
@@ -1,6 +1,6 @@
1
1
  #!/bin/bash
2
2
  # claude-symphony Output Validator Hook
3
- # 스테이지 산출물 검증
3
+ # Stage output validation
4
4
 
5
5
  set -e
6
6
 
@@ -10,32 +10,32 @@ CONFIG_FILE="$PROJECT_ROOT/config/output_validation.yaml"
10
10
  PROGRESS_FILE="$PROJECT_ROOT/state/progress.json"
11
11
  VALIDATIONS_DIR="$PROJECT_ROOT/state/validations"
12
12
 
13
- # 색상 정의
13
+ # Color definitions
14
14
  RED='\033[0;31m'
15
15
  GREEN='\033[0;32m'
16
16
  YELLOW='\033[1;33m'
17
17
  BLUE='\033[0;34m'
18
18
  NC='\033[0m'
19
19
 
20
- # 결과 아이콘
20
+ # Result icons
21
21
  PASS="✅"
22
22
  FAIL="❌"
23
23
  WARN="⚠️"
24
24
  INFO="ℹ️"
25
25
 
26
- # 로그 함수
26
+ # Log functions
27
27
  log_pass() { echo -e "${GREEN}${PASS}${NC} $1"; }
28
28
  log_fail() { echo -e "${RED}${FAIL}${NC} $1"; }
29
29
  log_warn() { echo -e "${YELLOW}${WARN}${NC} $1"; }
30
30
  log_info() { echo -e "${BLUE}${INFO}${NC} $1"; }
31
31
 
32
- # 검증 결과 저장
32
+ # Validation results storage
33
33
  TOTAL_CHECKS=0
34
34
  PASSED_CHECKS=0
35
35
  FAILED_CHECKS=0
36
36
  WARNINGS=0
37
37
 
38
- # 현재 스테이지 확인
38
+ # Get current stage
39
39
  get_current_stage() {
40
40
  if [ -f "$PROGRESS_FILE" ]; then
41
41
  cat "$PROGRESS_FILE" 2>/dev/null | grep -o '"current_stage"[[:space:]]*:[[:space:]]*"[^"]*"' | cut -d'"' -f4
@@ -44,7 +44,7 @@ get_current_stage() {
44
44
  fi
45
45
  }
46
46
 
47
- # 파일 존재 확인
47
+ # Check file exists
48
48
  check_file_exists() {
49
49
  local file_path="$1"
50
50
  local required="$2"
@@ -53,23 +53,23 @@ check_file_exists() {
53
53
  TOTAL_CHECKS=$((TOTAL_CHECKS + 1))
54
54
 
55
55
  if [ -e "$full_path" ]; then
56
- log_pass "$file_path 존재"
56
+ log_pass "$file_path exists"
57
57
  PASSED_CHECKS=$((PASSED_CHECKS + 1))
58
58
  return 0
59
59
  else
60
60
  if [ "$required" = "true" ]; then
61
- log_fail "$file_path 누락"
61
+ log_fail "$file_path missing"
62
62
  FAILED_CHECKS=$((FAILED_CHECKS + 1))
63
63
  return 1
64
64
  else
65
- log_warn "$file_path 누락 (선택사항)"
65
+ log_warn "$file_path missing (optional)"
66
66
  WARNINGS=$((WARNINGS + 1))
67
67
  return 0
68
68
  fi
69
69
  fi
70
70
  }
71
71
 
72
- # 디렉토리 확인
72
+ # Check directory exists
73
73
  check_directory_exists() {
74
74
  local dir_path="$1"
75
75
  local full_path="$PROJECT_ROOT/$dir_path"
@@ -77,17 +77,17 @@ check_directory_exists() {
77
77
  TOTAL_CHECKS=$((TOTAL_CHECKS + 1))
78
78
 
79
79
  if [ -d "$full_path" ]; then
80
- log_pass "$dir_path 디렉토리 존재"
80
+ log_pass "$dir_path directory exists"
81
81
  PASSED_CHECKS=$((PASSED_CHECKS + 1))
82
82
  return 0
83
83
  else
84
- log_fail "$dir_path 디렉토리 누락"
84
+ log_fail "$dir_path directory missing"
85
85
  FAILED_CHECKS=$((FAILED_CHECKS + 1))
86
86
  return 1
87
87
  fi
88
88
  }
89
89
 
90
- # 파일 최소 크기 확인
90
+ # Check file minimum size
91
91
  check_file_size() {
92
92
  local file_path="$1"
93
93
  local min_size="$2"
@@ -98,18 +98,18 @@ check_file_size() {
98
98
  TOTAL_CHECKS=$((TOTAL_CHECKS + 1))
99
99
 
100
100
  if [ "$size" -ge "$min_size" ]; then
101
- log_pass "$file_path 크기 충족 (${size} bytes >= ${min_size})"
101
+ log_pass "$file_path size met (${size} bytes >= ${min_size})"
102
102
  PASSED_CHECKS=$((PASSED_CHECKS + 1))
103
103
  return 0
104
104
  else
105
- log_fail "$file_path 크기 미달 (${size} bytes < ${min_size})"
105
+ log_fail "$file_path size insufficient (${size} bytes < ${min_size})"
106
106
  FAILED_CHECKS=$((FAILED_CHECKS + 1))
107
107
  return 1
108
108
  fi
109
109
  fi
110
110
  }
111
111
 
112
- # 마크다운 섹션 확인
112
+ # Check markdown sections
113
113
  check_markdown_sections() {
114
114
  local file_path="$1"
115
115
  shift
@@ -121,43 +121,43 @@ check_markdown_sections() {
121
121
  TOTAL_CHECKS=$((TOTAL_CHECKS + 1))
122
122
 
123
123
  if grep -q "^#.*$section" "$full_path" || grep -q "^##.*$section" "$full_path"; then
124
- log_pass "$file_path: '$section' 섹션 존재"
124
+ log_pass "$file_path: '$section' section exists"
125
125
  PASSED_CHECKS=$((PASSED_CHECKS + 1))
126
126
  else
127
- log_fail "$file_path: '$section' 섹션 누락"
127
+ log_fail "$file_path: '$section' section missing"
128
128
  FAILED_CHECKS=$((FAILED_CHECKS + 1))
129
129
  fi
130
130
  done
131
131
  fi
132
132
  }
133
133
 
134
- # 명령어 실행 검증
134
+ # Run validation command
135
135
  run_validation_command() {
136
136
  local name="$1"
137
137
  local command="$2"
138
138
  local required="$3"
139
139
 
140
140
  TOTAL_CHECKS=$((TOTAL_CHECKS + 1))
141
- log_info "실행 중: $name ($command)"
141
+ log_info "Running: $name ($command)"
142
142
 
143
143
  if eval "$command" > /dev/null 2>&1; then
144
- log_pass "$name 통과"
144
+ log_pass "$name passed"
145
145
  PASSED_CHECKS=$((PASSED_CHECKS + 1))
146
146
  return 0
147
147
  else
148
148
  if [ "$required" = "true" ]; then
149
- log_fail "$name 실패"
149
+ log_fail "$name failed"
150
150
  FAILED_CHECKS=$((FAILED_CHECKS + 1))
151
151
  return 1
152
152
  else
153
- log_warn "$name 실패 (선택사항)"
153
+ log_warn "$name failed (optional)"
154
154
  WARNINGS=$((WARNINGS + 1))
155
155
  return 0
156
156
  fi
157
157
  fi
158
158
  }
159
159
 
160
- # 스테이지별 검증
160
+ # Stage-specific validation
161
161
  validate_stage() {
162
162
  local stage="$1"
163
163
  local stage_dir="$PROJECT_ROOT/stages/$stage"
@@ -165,11 +165,11 @@ validate_stage() {
165
165
 
166
166
  echo ""
167
167
  echo "=========================================="
168
- echo " 산출물 검증: $stage"
168
+ echo " Output Validation: $stage"
169
169
  echo "=========================================="
170
170
  echo ""
171
171
 
172
- # HANDOFF.md 확인 (모든 스테이지 공통)
172
+ # HANDOFF.md check (common for all stages)
173
173
  check_file_exists "stages/$stage/HANDOFF.md" "true"
174
174
 
175
175
  case "$stage" in
@@ -177,7 +177,7 @@ validate_stage() {
177
177
  check_file_exists "stages/$stage/outputs/ideas.md" "true"
178
178
  check_file_size "stages/$stage/outputs/ideas.md" 500
179
179
  check_file_exists "stages/$stage/outputs/requirements_analysis.md" "true"
180
- check_markdown_sections "stages/$stage/outputs/requirements_analysis.md" "기능" "비기능"
180
+ check_markdown_sections "stages/$stage/outputs/requirements_analysis.md" "Functional" "Non-functional"
181
181
  ;;
182
182
 
183
183
  "02-research")
@@ -196,7 +196,7 @@ validate_stage() {
196
196
  check_directory_exists "stages/$stage/outputs/source_code"
197
197
  check_file_exists "stages/$stage/outputs/implementation_log.md" "true"
198
198
 
199
- # 빌드 검증
199
+ # Build validation
200
200
  if [ -f "$PROJECT_ROOT/package.json" ]; then
201
201
  run_validation_command "lint" "npm run lint --prefix $PROJECT_ROOT" "true"
202
202
  run_validation_command "typecheck" "npm run typecheck --prefix $PROJECT_ROOT" "true"
@@ -208,47 +208,47 @@ validate_stage() {
208
208
  check_file_exists "stages/$stage/outputs/test_report.md" "true"
209
209
  check_file_exists "stages/$stage/outputs/coverage_report.md" "true"
210
210
 
211
- # 테스트 검증
211
+ # Test validation
212
212
  if [ -f "$PROJECT_ROOT/package.json" ]; then
213
213
  run_validation_command "test" "npm run test --prefix $PROJECT_ROOT" "true"
214
214
  fi
215
215
  ;;
216
216
 
217
217
  *)
218
- log_info "스테이지 $stage에 대한 특정 검증 규칙 없음"
218
+ log_info "No specific validation rules for stage $stage"
219
219
  ;;
220
220
  esac
221
221
  }
222
222
 
223
- # 결과 요약 출력
223
+ # Print result summary
224
224
  print_summary() {
225
225
  echo ""
226
226
  echo "=========================================="
227
- echo " 검증 결과 요약"
227
+ echo " Validation Result Summary"
228
228
  echo "=========================================="
229
229
  echo ""
230
- echo " 검사: $TOTAL_CHECKS"
231
- echo -e "${GREEN}통과: $PASSED_CHECKS${NC}"
232
- echo -e "${RED}실패: $FAILED_CHECKS${NC}"
233
- echo -e "${YELLOW}경고: $WARNINGS${NC}"
230
+ echo "Total checks: $TOTAL_CHECKS"
231
+ echo -e "${GREEN}Passed: $PASSED_CHECKS${NC}"
232
+ echo -e "${RED}Failed: $FAILED_CHECKS${NC}"
233
+ echo -e "${YELLOW}Warnings: $WARNINGS${NC}"
234
234
  echo ""
235
235
 
236
- # 점수 계산
236
+ # Calculate score
237
237
  if [ "$TOTAL_CHECKS" -gt 0 ]; then
238
238
  local score=$(echo "scale=2; $PASSED_CHECKS / $TOTAL_CHECKS" | bc)
239
- echo "점수: $score"
239
+ echo "Score: $score"
240
240
 
241
241
  if [ "$FAILED_CHECKS" -eq 0 ]; then
242
- echo -e "${GREEN}${PASS} 검증 통과${NC}"
242
+ echo -e "${GREEN}${PASS} Validation passed${NC}"
243
243
  return 0
244
244
  else
245
- echo -e "${RED}${FAIL} 검증 실패 - 스테이지 전환 차단됨${NC}"
245
+ echo -e "${RED}${FAIL} Validation failed - Stage transition blocked${NC}"
246
246
  return 1
247
247
  fi
248
248
  fi
249
249
  }
250
250
 
251
- # 결과 저장
251
+ # Save results
252
252
  save_results() {
253
253
  local stage="$1"
254
254
  local timestamp=$(date +%Y%m%d_%H%M%S)
@@ -268,13 +268,13 @@ save_results() {
268
268
  EOF
269
269
  }
270
270
 
271
- # 메인 실행
271
+ # Main execution
272
272
  main() {
273
273
  local stage="${1:-$(get_current_stage)}"
274
274
  local verbose="${2:-false}"
275
275
 
276
276
  if [ "$stage" = "unknown" ]; then
277
- log_fail "현재 스테이지를 확인할 수 없습니다."
277
+ log_fail "Cannot determine current stage."
278
278
  exit 1
279
279
  fi
280
280
 
@@ -283,7 +283,7 @@ main() {
283
283
  print_summary
284
284
  }
285
285
 
286
- # 직접 실행 시에만 main 호출
286
+ # Call main only when executed directly
287
287
  if [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then
288
288
  main "$@"
289
289
  fi
@@ -1,5 +1,5 @@
1
1
  #!/bin/bash
2
- # post-stage.sh - 스테이지 완료 후 훅
2
+ # post-stage.sh - Post-stage completion hook
3
3
  # claude-symphony workflow pipeline
4
4
 
5
5
  set -e
@@ -9,7 +9,7 @@ PROJECT_ROOT="$(cd "$(dirname "$0")/../.." && pwd)"
9
9
  PROGRESS_FILE="$PROJECT_ROOT/state/progress.json"
10
10
  TIMESTAMP=$(date -u +"%Y-%m-%dT%H:%M:%SZ")
11
11
 
12
- # 색상 정의
12
+ # Color definitions
13
13
  RED='\033[0;31m'
14
14
  GREEN='\033[0;32m'
15
15
  YELLOW='\033[1;33m'
@@ -20,47 +20,47 @@ echo "━━━━━━━━━━━━━━━━━━━━━━━━
20
20
  echo "📋 Post-Stage Hook: $STAGE_ID"
21
21
  echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
22
22
 
23
- # 1. 완료 조건 검증
23
+ # 1. Validate completion criteria
24
24
  validate_completion() {
25
25
  local stage_dir="$PROJECT_ROOT/stages/$STAGE_ID"
26
26
  local config_file="$stage_dir/config.yaml"
27
27
 
28
- echo "완료 조건 검증 중..."
28
+ echo "Validating completion criteria..."
29
29
 
30
- # outputs 디렉토리 확인
30
+ # Check outputs directory
31
31
  if [ -d "$stage_dir/outputs" ]; then
32
32
  local output_count=$(ls -1 "$stage_dir/outputs" 2>/dev/null | wc -l)
33
- echo -e " ${GREEN}✓${NC} 출력 파일: $output_count"
33
+ echo -e " ${GREEN}✓${NC} Output files: $output_count"
34
34
  fi
35
35
 
36
36
  return 0
37
37
  }
38
38
 
39
- # 2. HANDOFF.md 생성 알림
39
+ # 2. HANDOFF.md generation notification
40
40
  check_handoff() {
41
41
  local handoff_file="$PROJECT_ROOT/stages/$STAGE_ID/HANDOFF.md"
42
42
 
43
43
  if [ ! -f "$handoff_file" ]; then
44
- echo -e " ${YELLOW}⚠${NC} HANDOFF.md 미생성"
45
- echo " /handoff 실행하여 핸드오프 문서를 생성해주세요."
44
+ echo -e " ${YELLOW}⚠${NC} HANDOFF.md not generated"
45
+ echo " Please run /handoff to generate the handoff document."
46
46
  return 1
47
47
  fi
48
48
 
49
- echo -e " ${GREEN}✓${NC} HANDOFF.md 존재"
49
+ echo -e " ${GREEN}✓${NC} HANDOFF.md exists"
50
50
 
51
- # 핸드오프 아카이브
51
+ # Archive handoff
52
52
  local archive_name="${STAGE_ID}-$(date +%Y%m%d-%H%M).md"
53
53
  cp "$handoff_file" "$PROJECT_ROOT/state/handoffs/$archive_name"
54
- echo -e " ${GREEN}✓${NC} 핸드오프 아카이브: state/handoffs/$archive_name"
54
+ echo -e " ${GREEN}✓${NC} Handoff archived: state/handoffs/$archive_name"
55
55
 
56
56
  return 0
57
57
  }
58
58
 
59
- # 3. progress.json 업데이트
59
+ # 3. Update progress.json
60
60
  update_progress() {
61
- echo "상태 업데이트 중..."
61
+ echo "Updating status..."
62
62
 
63
- # jq로 상태 업데이트
63
+ # Update status with jq
64
64
  if command -v jq &> /dev/null; then
65
65
  local tmp_file=$(mktemp)
66
66
  jq ".stages.\"$STAGE_ID\".status = \"completed\" | \
@@ -69,27 +69,27 @@ update_progress() {
69
69
  .pipeline.updated_at = \"$TIMESTAMP\"" \
70
70
  "$PROGRESS_FILE" > "$tmp_file" && mv "$tmp_file" "$PROGRESS_FILE"
71
71
 
72
- echo -e " ${GREEN}✓${NC} progress.json 업데이트됨"
72
+ echo -e " ${GREEN}✓${NC} progress.json updated"
73
73
  else
74
- echo -e " ${YELLOW}⚠${NC} jq 미설치 - 수동 업데이트 필요"
74
+ echo -e " ${YELLOW}⚠${NC} jq not installed - Manual update required"
75
75
  fi
76
76
 
77
77
  return 0
78
78
  }
79
79
 
80
- # 4. 체크포인트 생성 알림 (필수 스테이지)
80
+ # 4. Checkpoint creation reminder (required stages)
81
81
  remind_checkpoint() {
82
82
  local stage_num=$(echo "$STAGE_ID" | cut -d'-' -f1)
83
83
 
84
84
  if [ "$stage_num" == "06" ] || [ "$stage_num" == "07" ]; then
85
85
  echo ""
86
- echo -e "${BLUE}📌 체크포인트 알림${NC}"
87
- echo " 스테이지는 체크포인트 생성이 권장됩니다."
88
- echo " /checkpoint \"스테이지 완료\" 를 실행해주세요."
86
+ echo -e "${BLUE}📌 Checkpoint Reminder${NC}"
87
+ echo " Checkpoint creation is recommended for this stage."
88
+ echo " Please run /checkpoint \"Stage completed\""
89
89
  fi
90
90
  }
91
91
 
92
- # 5. 다음 스테이지 안내
92
+ # 5. Show next stage guidance
93
93
  show_next_stage() {
94
94
  local config_file="$PROJECT_ROOT/stages/$STAGE_ID/config.yaml"
95
95
  local next_stage=""
@@ -102,19 +102,19 @@ show_next_stage() {
102
102
  echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
103
103
 
104
104
  if [ -z "$next_stage" ] || [ "$next_stage" == "null" ]; then
105
- echo -e "${GREEN}🎉 파이프라인 완료!${NC}"
106
- echo " 모든 스테이지가 완료되었습니다."
105
+ echo -e "${GREEN}🎉 Pipeline Complete!${NC}"
106
+ echo " All stages have been completed."
107
107
  else
108
- echo -e "${GREEN}✓${NC} 스테이지 $STAGE_ID 완료"
108
+ echo -e "${GREEN}✓${NC} Stage $STAGE_ID completed"
109
109
  echo ""
110
- echo -e "${BLUE}다음 스테이지: $next_stage${NC}"
111
- echo " 실행: /run-stage $next_stage"
110
+ echo -e "${BLUE}Next stage: $next_stage${NC}"
111
+ echo " Run: /run-stage $next_stage"
112
112
  fi
113
113
 
114
114
  echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
115
115
  }
116
116
 
117
- # 실행
117
+ # Execute
118
118
  echo ""
119
119
  validate_completion
120
120
  check_handoff
@@ -1,5 +1,5 @@
1
1
  #!/bin/bash
2
- # pre-stage.sh - 스테이지 실행 전 훅
2
+ # pre-stage.sh - Pre-stage execution hook
3
3
  # claude-symphony workflow pipeline
4
4
 
5
5
  set -e
@@ -8,7 +8,7 @@ STAGE_ID="$1"
8
8
  PROJECT_ROOT="$(cd "$(dirname "$0")/../.." && pwd)"
9
9
  PROGRESS_FILE="$PROJECT_ROOT/state/progress.json"
10
10
 
11
- # 색상 정의
11
+ # Color definitions
12
12
  RED='\033[0;31m'
13
13
  GREEN='\033[0;32m'
14
14
  YELLOW='\033[1;33m'
@@ -21,45 +21,45 @@ echo "━━━━━━━━━━━━━━━━━━━━━━━━
21
21
  echo "🔍 Pre-Stage Hook: $STAGE_ID"
22
22
  echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
23
23
 
24
- # 1. 이전 스테이지 완료 여부 확인
24
+ # 1. Check if previous stage is completed
25
25
  check_prerequisites() {
26
26
  local stage_num=$(echo "$STAGE_ID" | cut -d'-' -f1)
27
27
 
28
- # 01 스테이지는 전제조건 없음
28
+ # Stage 01 has no prerequisites
29
29
  if [ "$stage_num" == "01" ]; then
30
- echo -e "${GREEN}✓${NC} 번째 스테이지 - 전제조건 없음"
30
+ echo -e "${GREEN}✓${NC} First stage - No prerequisites"
31
31
  return 0
32
32
  fi
33
33
 
34
- # 이전 스테이지 번호 계산
34
+ # Calculate previous stage number
35
35
  local prev_num=$(printf "%02d" $((10#$stage_num - 1)))
36
36
  local prev_stage=$(ls "$PROJECT_ROOT/stages/" | grep "^${prev_num}-" | head -1)
37
37
 
38
38
  if [ -z "$prev_stage" ]; then
39
- echo -e "${RED}✗${NC} 이전 스테이지를 찾을 없습니다: $prev_num"
39
+ echo -e "${RED}✗${NC} Cannot find previous stage: $prev_num"
40
40
  return 1
41
41
  fi
42
42
 
43
- # 이전 스테이지 상태 확인
43
+ # Check previous stage status
44
44
  local prev_status=$(jq -r ".stages.\"$prev_stage\".status" "$PROGRESS_FILE" 2>/dev/null || echo "pending")
45
45
 
46
46
  if [ "$prev_status" != "completed" ]; then
47
- echo -e "${RED}✗${NC} 이전 스테이지 미완료: $prev_stage (상태: $prev_status)"
48
- echo " 먼저 이전 스테이지를 완료해주세요."
47
+ echo -e "${RED}✗${NC} Previous stage not completed: $prev_stage (status: $prev_status)"
48
+ echo " Please complete the previous stage first."
49
49
  return 1
50
50
  fi
51
51
 
52
- echo -e "${GREEN}✓${NC} 이전 스테이지 완료: $prev_stage"
52
+ echo -e "${GREEN}✓${NC} Previous stage completed: $prev_stage"
53
53
  return 0
54
54
  }
55
55
 
56
- # 2. HANDOFF.md 존재 확인
56
+ # 2. Check HANDOFF.md exists
57
57
  check_handoff() {
58
58
  local stage_num=$(echo "$STAGE_ID" | cut -d'-' -f1)
59
59
 
60
- # 01 스테이지는 핸드오프 불필요
60
+ # Stage 01 doesn't need handoff
61
61
  if [ "$stage_num" == "01" ]; then
62
- echo -e "${GREEN}✓${NC} 번째 스테이지 - 핸드오프 불필요"
62
+ echo -e "${GREEN}✓${NC} First stage - No handoff needed"
63
63
  return 0
64
64
  fi
65
65
 
@@ -68,62 +68,62 @@ check_handoff() {
68
68
  local handoff_file="$PROJECT_ROOT/stages/$prev_stage/HANDOFF.md"
69
69
 
70
70
  if [ ! -f "$handoff_file" ]; then
71
- echo -e "${RED}✗${NC} HANDOFF.md 없음: $handoff_file"
72
- echo " 이전 스테이지에서 /handoff 실행해주세요."
71
+ echo -e "${RED}✗${NC} HANDOFF.md missing: $handoff_file"
72
+ echo " Please run /handoff in the previous stage."
73
73
  return 1
74
74
  fi
75
75
 
76
- echo -e "${GREEN}✓${NC} HANDOFF.md 존재: $prev_stage/HANDOFF.md"
76
+ echo -e "${GREEN}✓${NC} HANDOFF.md exists: $prev_stage/HANDOFF.md"
77
77
  return 0
78
78
  }
79
79
 
80
- # 3. 필수 입력 파일 확인
80
+ # 3. Check required input files
81
81
  check_inputs() {
82
82
  local config_file="$PROJECT_ROOT/stages/$STAGE_ID/config.yaml"
83
83
 
84
84
  if [ ! -f "$config_file" ]; then
85
- echo -e "${YELLOW}⚠${NC} config.yaml 없음 - 입력 파일 검증 스킵"
85
+ echo -e "${YELLOW}⚠${NC} config.yaml missing - Skipping input file validation"
86
86
  return 0
87
87
  fi
88
88
 
89
- # YAML에서 required inputs 추출 (간단한 파싱)
89
+ # Extract required inputs from YAML (simple parsing)
90
90
  local inputs=$(grep -A100 "^inputs:" "$config_file" | grep -A50 "required:" | grep "name:" | head -5)
91
91
 
92
92
  if [ -z "$inputs" ]; then
93
- echo -e "${GREEN}✓${NC} 필수 입력 파일 없음"
93
+ echo -e "${GREEN}✓${NC} No required input files"
94
94
  return 0
95
95
  fi
96
96
 
97
- echo "필수 입력 파일 확인 중..."
98
- # 실제 구현에서는 YAML 파서 사용 권장
99
- echo -e "${GREEN}✓${NC} 입력 파일 검증 완료"
97
+ echo "Checking required input files..."
98
+ # In actual implementation, YAML parser recommended
99
+ echo -e "${GREEN}✓${NC} Input file validation complete"
100
100
  return 0
101
101
  }
102
102
 
103
- # 4. 체크포인트 확인 (필수 스테이지)
103
+ # 4. Check checkpoint (required stages)
104
104
  check_checkpoint() {
105
105
  local stage_num=$(echo "$STAGE_ID" | cut -d'-' -f1)
106
106
 
107
- # 06, 07 스테이지는 이전 체크포인트 확인
107
+ # Stage 06, 07 check for previous checkpoint
108
108
  if [ "$stage_num" == "07" ]; then
109
109
  local cp_count=$(jq '.checkpoints | length' "$PROGRESS_FILE" 2>/dev/null || echo "0")
110
110
 
111
111
  if [ "$cp_count" == "0" ]; then
112
- echo -e "${YELLOW}⚠${NC} 경고: 체크포인트가 없습니다."
113
- echo " 리팩토링 체크포인트 생성을 권장합니다."
114
- echo " /checkpoint 를 실행해주세요."
112
+ echo -e "${YELLOW}⚠${NC} Warning: No checkpoints exist."
113
+ echo " Checkpoint creation before refactoring is recommended."
114
+ echo " Please run /checkpoint"
115
115
  else
116
- echo -e "${GREEN}✓${NC} 체크포인트 존재: $cp_count"
116
+ echo -e "${GREEN}✓${NC} Checkpoints exist: $cp_count"
117
117
  fi
118
118
  fi
119
119
 
120
120
  return 0
121
121
  }
122
122
 
123
- # 5. 컨텍스트 상태 확인 (50% 이하 경고)
123
+ # 5. Check context status (warning if 50% or below)
124
124
  check_context_status() {
125
125
  if [ ! -f "$CONTEXT_TRIGGER_FILE" ]; then
126
- echo -e "${GREEN}✓${NC} 컨텍스트 상태 정상"
126
+ echo -e "${GREEN}✓${NC} Context status normal"
127
127
  return 0
128
128
  fi
129
129
 
@@ -136,43 +136,43 @@ check_context_status() {
136
136
  echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
137
137
 
138
138
  if [ "$LEVEL" = "critical" ]; then
139
- echo -e "${RED}⚠️ 컨텍스트 크리티컬 상태 (${REMAINING}% 남음)${NC}"
139
+ echo -e "${RED}⚠️ Context critical state (${REMAINING}% remaining)${NC}"
140
140
  echo ""
141
- echo "자동 스냅샷이 저장되었습니다."
142
- echo "스테이지 시작 전 /compact 또는 /clear 권장합니다."
141
+ echo "Auto-snapshot has been saved."
142
+ echo "Running /compact or /clear before starting is recommended."
143
143
  echo ""
144
- echo -e "${YELLOW}계속 진행하시겠습니까? (y/n)${NC}"
144
+ echo -e "${YELLOW}Do you want to continue? (y/n)${NC}"
145
145
  else
146
- echo -e "${YELLOW}⚠️ 컨텍스트 부족 경고 (${REMAINING}% 남음)${NC}"
146
+ echo -e "${YELLOW}⚠️ Context low warning (${REMAINING}% remaining)${NC}"
147
147
  echo ""
148
- echo "자동 스냅샷이 저장되었습니다."
149
- echo " 작업 스테이지의 경우 /compact 실행을 권장합니다."
148
+ echo "Auto-snapshot has been saved."
149
+ echo "Running /compact is recommended for long work stages."
150
150
  echo ""
151
- echo -e "${CYAN}계속 진행하시겠습니까? (y/n)${NC}"
151
+ echo -e "${CYAN}Do you want to continue? (y/n)${NC}"
152
152
  fi
153
153
 
154
154
  read -r response </dev/tty 2>/dev/null || response="y"
155
155
 
156
156
  if [ "$response" != "y" ] && [ "$response" != "Y" ]; then
157
157
  echo ""
158
- echo "스테이지 시작이 취소되었습니다."
159
- echo " → /compact 실행 다시 시도해주세요."
160
- echo " → 스냅샷 위치: state/context/"
158
+ echo "Stage start cancelled."
159
+ echo " → Run /compact and try again."
160
+ echo " → Snapshot location: state/context/"
161
161
  echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
162
162
  return 1
163
163
  fi
164
164
 
165
165
  echo ""
166
- echo -e "${GREEN}✓${NC} 사용자 확인 완료 - 스테이지 진행"
166
+ echo -e "${GREEN}✓${NC} User confirmation complete - Proceeding with stage"
167
167
  echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
168
168
  return 0
169
169
  fi
170
170
 
171
- echo -e "${GREEN}✓${NC} 컨텍스트 상태 정상"
171
+ echo -e "${GREEN}✓${NC} Context status normal"
172
172
  return 0
173
173
  }
174
174
 
175
- # 실행
175
+ # Execute
176
176
  echo ""
177
177
  check_context_status || exit 1
178
178
  check_prerequisites || exit 1
@@ -182,5 +182,5 @@ check_checkpoint
182
182
 
183
183
  echo ""
184
184
  echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
185
- echo -e "${GREEN}✓${NC} Pre-Stage Hook 완료 - 스테이지 실행 가능"
185
+ echo -e "${GREEN}✓${NC} Pre-Stage Hook complete - Stage execution ready"
186
186
  echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"