aiwf 0.3.4 → 0.3.6

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 (181) hide show
  1. package/.aiwf/00_PROJECT_MANIFEST.md +29 -16
  2. package/.aiwf/02_REQUIREMENTS/M03_Simone_Integration_Enhancement/M03_milestone_meta.md +55 -0
  3. package/.aiwf/02_REQUIREMENTS/M03_Simone_Integration_Enhancement/SPECS_AIWF_Simplified_Plan.md +221 -0
  4. package/.aiwf/03_SPRINTS/S03_M02_ecosystem_integration/S03_M02_sprint_meta.md +0 -1
  5. package/.aiwf/metrics/metrics.json +18 -0
  6. package/.aiwf/personas/current.json +5 -0
  7. package/.aiwf/test-results-s02.json +5 -5
  8. package/.claude/commands/aiwf/aiwf_add_task_to_sprint.md +283 -0
  9. package/.claude/commands/aiwf/aiwf_install_git_hooks.md +63 -0
  10. package/.claude/commands/aiwf/aiwf_link_feature_branch.md +43 -0
  11. package/.claude/commands/aiwf/aiwf_link_feature_commit.md +46 -0
  12. package/.claude/commands/aiwf/aiwf_persona_architect.md +1 -1
  13. package/.claude/commands/aiwf/aiwf_persona_backend.md +1 -1
  14. package/.claude/commands/aiwf/aiwf_persona_data_analyst.md +1 -1
  15. package/.claude/commands/aiwf/aiwf_persona_frontend.md +1 -1
  16. package/.claude/commands/aiwf/aiwf_persona_security.md +1 -1
  17. package/.claude/commands/aiwf/aiwf_persona_status.md +1 -1
  18. package/CHANGELOG.md +54 -5
  19. package/claude-code/aiwf/ko/commands/ai-persona.js +1 -1
  20. package/package.json +1 -1
  21. package/src/cli/index.js +58 -2
  22. package/src/commands/create-project.js +10 -7
  23. package/src/commands/persona.js +288 -0
  24. package/src/commands/sprint-task.js +262 -0
  25. package/src/lib/file-downloader.js +5 -0
  26. package/src/lib/installer.js +14 -4
  27. package/tests/integration/test-persona-system/.aiwf/metrics/metrics.json +833 -0
  28. package/tests/unit/sprint-task.test.js +172 -0
  29. package/.aiwf/sessions/session_1752877859489_1t7n2fhdb.json +0 -7
  30. package/.aiwf/sessions/session_1752877859515_cwdv211ry.json +0 -7
  31. package/.aiwf/sessions/session_1752877860664_huziadmbo.json +0 -7
  32. package/.aiwf/sessions/session_1752877860666_kyr5u1np6.json +0 -7
  33. package/.aiwf/sessions/session_1752877861848_9yinepw3t.json +0 -7
  34. package/.aiwf/sessions/session_1752877861874_y32sputuc.json +0 -7
  35. package/.aiwf/sessions/session_1752877862685_ivxbl5rhz.json +0 -7
  36. package/.aiwf/sessions/session_1752877862820_wnq4glvxi.json +0 -7
  37. package/.aiwf/sessions/session_1752877864632_3ebnpaelb.json +0 -7
  38. package/.aiwf/sessions/session_1752877864879_b9zgjcb7d.json +0 -7
  39. package/.aiwf/sessions/session_1752877865533_x14m1vodi.json +0 -7
  40. package/.aiwf/sessions/session_1752877865562_gkoh19n7d.json +0 -7
  41. package/.aiwf/sessions/session_1752877866333_wp8qpdcoh.json +0 -7
  42. package/.aiwf/sessions/session_1752877866509_dawntfpab.json +0 -7
  43. package/.aiwf/sessions/session_1752877866890_plc5vfucl.json +0 -7
  44. package/.aiwf/sessions/session_1752877866895_ga8hmq3oi.json +0 -7
  45. package/.aiwf/sessions/session_1752877867761_ayjp4v5f5.json +0 -7
  46. package/.aiwf/sessions/session_1752877867892_lfz6jy252.json +0 -7
  47. package/.aiwf/sessions/session_1752877868139_7bqd9ubli.json +0 -7
  48. package/.aiwf/sessions/session_1752877868162_zq3ofjbsh.json +0 -7
  49. package/.aiwf/sessions/session_1752877869054_7rlgm9jt6.json +0 -7
  50. package/.aiwf/sessions/session_1752877869477_ax3nhbxzr.json +0 -7
  51. package/.aiwf/sessions/session_1752877870095_6hgp4vl1e.json +0 -7
  52. package/.aiwf/sessions/session_1752877870381_qfcrdg4li.json +0 -7
  53. package/.aiwf/sessions/session_1752877871895_pgd5vllhz.json +0 -7
  54. package/.aiwf/sessions/session_1752877872199_jbhv2g2da.json +0 -7
  55. package/.aiwf/sessions/session_1752877872680_x04wpffu6.json +0 -7
  56. package/.aiwf/sessions/session_1752877872895_3y4vbeauo.json +0 -7
  57. package/.aiwf/sessions/session_1752877873178_3maolzc6b.json +0 -7
  58. package/.aiwf/sessions/session_1752877873180_ytm83j07f.json +0 -7
  59. package/.aiwf/sessions/session_1752877874217_dp56c9t42.json +0 -7
  60. package/.aiwf/sessions/session_1752877874415_epwp1g1og.json +0 -7
  61. package/.aiwf/sessions/session_1752877874454_heicyuryb.json +0 -7
  62. package/.aiwf/sessions/session_1752877874869_1c2illeu5.json +0 -7
  63. package/.aiwf/sessions/session_1752877874879_k1vo4vxyx.json +0 -7
  64. package/.aiwf/sessions/session_1752877874913_bwgyiz9bp.json +0 -7
  65. package/.aiwf/sessions/session_1752877876218_44807kztz.json +0 -7
  66. package/.aiwf/sessions/session_1752877876515_qkhjv5kpw.json +0 -7
  67. package/.aiwf/sessions/session_1752877876543_p605aud1m.json +0 -7
  68. package/.aiwf/sessions/session_1752877876819_l65w7ifck.json +0 -7
  69. package/.aiwf/sessions/session_1752877876867_xrhzss4we.json +0 -7
  70. package/.aiwf/sessions/session_1752877876872_u7aso54qb.json +0 -7
  71. package/.aiwf/sessions/session_1752877877705_telnfg4o6.json +0 -7
  72. package/.aiwf/sessions/session_1752877878285_6s45im2ib.json +0 -7
  73. package/.aiwf/sessions/session_1752877878506_v0dvguqhz.json +0 -7
  74. package/.aiwf/sessions/session_1752877878581_3ri3yc66a.json +0 -7
  75. package/.aiwf/sessions/session_1752877878756_a82x9s2pd.json +0 -7
  76. package/.aiwf/sessions/session_1752877878886_20pjsfour.json +0 -7
  77. package/.aiwf/sessions/session_1752877880266_fm1ydjw0g.json +0 -7
  78. package/.aiwf/sessions/session_1752877881149_xbat4z03d.json +0 -7
  79. package/.aiwf/sessions/session_1752877881551_qy5sic9qs.json +0 -7
  80. package/.aiwf/sessions/session_1752877881554_24ugd96wu.json +0 -7
  81. package/.aiwf/sessions/session_1752877881797_e9mm25uh0.json +0 -7
  82. package/.aiwf/sessions/session_1752877881822_bxvjj8c9g.json +0 -7
  83. package/.aiwf/sessions/session_1752877881890_jv7l6jve3.json +0 -7
  84. package/.aiwf/sessions/session_1752877881991_f0qugdtcq.json +0 -7
  85. package/.aiwf/sessions/session_1752877883387_0bvw9rvnx.json +0 -7
  86. package/.aiwf/sessions/session_1752877883820_q6g2md2up.json +0 -7
  87. package/.aiwf/sessions/session_1752877884393_sqr7trvjl.json +0 -7
  88. package/.aiwf/sessions/session_1752877884500_whtypmzlf.json +0 -7
  89. package/.aiwf/sessions/session_1752877884645_y9mvvxli1.json +0 -7
  90. package/.aiwf/sessions/session_1752877884733_hk46eenel.json +0 -7
  91. package/.aiwf/sessions/session_1752877884738_c62j6214r.json +0 -7
  92. package/.aiwf/sessions/session_1752877884771_temhxehoz.json +0 -7
  93. package/.aiwf/sessions/session_1752877885643_6v5fcktc7.json +0 -7
  94. package/.aiwf/sessions/session_1752877886426_ee8di2fqh.json +0 -7
  95. package/.aiwf/sessions/session_1752877886549_3xj6tdoew.json +0 -7
  96. package/.aiwf/sessions/session_1752877886604_aj80yyfco.json +0 -7
  97. package/.aiwf/sessions/session_1752877886702_2b8841vyg.json +0 -7
  98. package/.aiwf/sessions/session_1752877886712_ntqc8b8bz.json +0 -7
  99. package/.aiwf/sessions/session_1752877886968_946m8tbw6.json +0 -7
  100. package/.aiwf/sessions/session_1752877887008_wg6zfg8dn.json +0 -7
  101. package/.aiwf/sessions/session_1752877888479_ciiu2qiqs.json +0 -7
  102. package/.aiwf/sessions/session_1752877889330_ravg8l66k.json +0 -7
  103. package/.aiwf/sessions/session_1752877889542_7zepkhjkc.json +0 -7
  104. package/.aiwf/sessions/session_1752877889638_ev4htqiu0.json +0 -7
  105. package/.aiwf/sessions/session_1752877889956_szphy2qma.json +0 -7
  106. package/.aiwf/sessions/session_1752877890220_o6aaa57tt.json +0 -7
  107. package/.aiwf/sessions/session_1752877890527_v2loy5vu1.json +0 -7
  108. package/.aiwf/sessions/session_1752877890572_cwq8fiuma.json +0 -7
  109. package/.aiwf/sessions/session_1752877892200_sgcwq1alt.json +0 -7
  110. package/.aiwf/sessions/session_1752877892268_v8kexpbc5.json +0 -7
  111. package/.aiwf/sessions/session_1752877892384_1gbbgrp4y.json +0 -7
  112. package/.aiwf/sessions/session_1752877893568_9p2n5p31a.json +0 -7
  113. package/.aiwf/sessions/session_1752877893727_un34a5tvp.json +0 -7
  114. package/.aiwf/sessions/session_1752877893778_01j79sw9i.json +0 -7
  115. package/.aiwf/sessions/session_1752877894053_jrhba6wko.json +0 -7
  116. package/.aiwf/sessions/session_1752877894082_x3bghawox.json +0 -7
  117. package/.aiwf/sessions/session_1752877894500_iytiav2ku.json +0 -7
  118. package/.aiwf/sessions/session_1752877894667_ucn0gc2ge.json +0 -7
  119. package/test-token-system.js +0 -88
  120. package/tests/temp_invalid_json/invalid.json +0 -1
  121. /package/{.aiwf/templates → templates}/README.md +0 -0
  122. /package/{.aiwf/templates → templates}/api-server/config.json +0 -0
  123. /package/{.aiwf/templates → templates}/api-server/template/.aiwf/config.json +0 -0
  124. /package/{.aiwf/templates → templates}/api-server/template/.aiwf/feature-ledger.json +0 -0
  125. /package/{.aiwf/templates → templates}/api-server/template/.aiwf/personas/backend-engineer.json +0 -0
  126. /package/{.aiwf/templates → templates}/api-server/template/.aiwf/scripts/cli.js +0 -0
  127. /package/{.aiwf/templates → templates}/api-server/template/.env.example +0 -0
  128. /package/{.aiwf/templates → templates}/api-server/template/.eslintrc.json +0 -0
  129. /package/{.aiwf/templates → templates}/api-server/template/README.md +0 -0
  130. /package/{.aiwf/templates → templates}/api-server/template/jest.config.js +0 -0
  131. /package/{.aiwf/templates → templates}/api-server/template/nodemon.json +0 -0
  132. /package/{.aiwf/templates → templates}/api-server/template/package.json +0 -0
  133. /package/{.aiwf/templates → templates}/api-server/template/src/app.ts +0 -0
  134. /package/{.aiwf/templates → templates}/api-server/template/src/config/swagger.ts +0 -0
  135. /package/{.aiwf/templates → templates}/api-server/template/src/controllers/aiwfController.ts +0 -0
  136. /package/{.aiwf/templates → templates}/api-server/template/src/controllers/authController.ts +0 -0
  137. /package/{.aiwf/templates → templates}/api-server/template/src/controllers/statusController.ts +0 -0
  138. /package/{.aiwf/templates → templates}/api-server/template/src/index.ts +0 -0
  139. /package/{.aiwf/templates → templates}/api-server/template/src/middleware/aiwfMiddleware.ts +0 -0
  140. /package/{.aiwf/templates → templates}/api-server/template/src/middleware/authMiddleware.ts +0 -0
  141. /package/{.aiwf/templates → templates}/api-server/template/src/middleware/errorHandler.ts +0 -0
  142. /package/{.aiwf/templates → templates}/api-server/template/src/middleware/notFoundHandler.ts +0 -0
  143. /package/{.aiwf/templates → templates}/api-server/template/src/middleware/requestLogger.ts +0 -0
  144. /package/{.aiwf/templates → templates}/api-server/template/src/routes/aiwf.ts +0 -0
  145. /package/{.aiwf/templates → templates}/api-server/template/src/routes/index.ts +0 -0
  146. /package/{.aiwf/templates → templates}/api-server/template/src/routes/v1/index.ts +0 -0
  147. /package/{.aiwf/templates → templates}/api-server/template/src/utils/logger.ts +0 -0
  148. /package/{.aiwf/templates → templates}/api-server/template/tests/app.test.ts +0 -0
  149. /package/{.aiwf/templates → templates}/api-server/template/tsconfig.json +0 -0
  150. /package/{.aiwf/templates → templates}/npm-library/config.json +0 -0
  151. /package/{.aiwf/templates → templates}/npm-library/template/LICENSE +0 -0
  152. /package/{.aiwf/templates → templates}/npm-library/template/README.md +0 -0
  153. /package/{.aiwf/templates → templates}/npm-library/template/package.json +0 -0
  154. /package/{.aiwf/templates → templates}/web-app/config.json +0 -0
  155. /package/{.aiwf/templates → templates}/web-app/template/.aiwf/config.json +0 -0
  156. /package/{.aiwf/templates → templates}/web-app/template/.aiwf/feature-ledger.json +0 -0
  157. /package/{.aiwf/templates → templates}/web-app/template/.aiwf/personas/fullstack-developer.json +0 -0
  158. /package/{.aiwf/templates → templates}/web-app/template/.aiwf/scripts/cli.js +0 -0
  159. /package/{.aiwf/templates → templates}/web-app/template/.eslintrc.cjs +0 -0
  160. /package/{.aiwf/templates → templates}/web-app/template/README.md +0 -0
  161. /package/{.aiwf/templates → templates}/web-app/template/index.html +0 -0
  162. /package/{.aiwf/templates → templates}/web-app/template/package.json +0 -0
  163. /package/{.aiwf/templates → templates}/web-app/template/postcss.config.js +0 -0
  164. /package/{.aiwf/templates → templates}/web-app/template/public/vite.svg +0 -0
  165. /package/{.aiwf/templates → templates}/web-app/template/src/App.tsx +0 -0
  166. /package/{.aiwf/templates → templates}/web-app/template/src/components/Layout.tsx +0 -0
  167. /package/{.aiwf/templates → templates}/web-app/template/src/components/aiwf/ContextStatus.tsx +0 -0
  168. /package/{.aiwf/templates → templates}/web-app/template/src/components/aiwf/FeatureLedger.tsx +0 -0
  169. /package/{.aiwf/templates → templates}/web-app/template/src/components/aiwf/TokenUsage.tsx +0 -0
  170. /package/{.aiwf/templates → templates}/web-app/template/src/index.css +0 -0
  171. /package/{.aiwf/templates → templates}/web-app/template/src/main.tsx +0 -0
  172. /package/{.aiwf/templates → templates}/web-app/template/src/pages/AiwfDashboard.tsx +0 -0
  173. /package/{.aiwf/templates → templates}/web-app/template/src/pages/HomePage.tsx +0 -0
  174. /package/{.aiwf/templates → templates}/web-app/template/src/pages/NotFound.tsx +0 -0
  175. /package/{.aiwf/templates → templates}/web-app/template/src/stores/aiwfStore.ts +0 -0
  176. /package/{.aiwf/templates → templates}/web-app/template/src/types/global.d.ts +0 -0
  177. /package/{.aiwf/templates → templates}/web-app/template/src/vite-env.d.ts +0 -0
  178. /package/{.aiwf/templates → templates}/web-app/template/tailwind.config.js +0 -0
  179. /package/{.aiwf/templates → templates}/web-app/template/tsconfig.json +0 -0
  180. /package/{.aiwf/templates → templates}/web-app/template/tsconfig.node.json +0 -0
  181. /package/{.aiwf/templates → templates}/web-app/template/vite.config.ts +0 -0
@@ -0,0 +1,283 @@
1
+ # 스프린트에 태스크 추가
2
+
3
+ 기존 스프린트에 새로운 개별 태스크를 추가합니다.
4
+
5
+ ## 사용법
6
+
7
+ ```
8
+ /aiwf:add_task_to_sprint <스프린트ID> <태스크 제목>
9
+ ```
10
+
11
+ 예시:
12
+ - `/aiwf:add_task_to_sprint S03 "API 성능 최적화"`
13
+ - `/aiwf:add_task_to_sprint S03 "데이터베이스 인덱스 추가"`
14
+
15
+ ## 정확히 다음 12개 항목으로 TODO 생성
16
+
17
+ 1. 인수 분석 및 검증
18
+ 2. 대상 스프린트 존재 확인
19
+ 3. 스프린트 컨텍스트 및 목표 심층 분석
20
+ 4. 태스크 적합성 평가 및 사용자 확인
21
+ 5. 기존 태스크 목록 확인 및 중복 검사
22
+ 6. 다음 태스크 번호 결정
23
+ 7. 태스크 상세 내용 작성
24
+ 8. 태스크 파일 생성
25
+ 9. 스프린트 메타 파일 업데이트
26
+ 10. 프로젝트 매니페스트 업데이트
27
+ 11. Git 상태 확인
28
+ 12. 최종 보고 및 다음 단계 안내
29
+
30
+ ## 모든 TODO 항목에 대한 세부사항
31
+
32
+ ### 1. 인수 분석 및 검증
33
+
34
+ 입력 형식: `<스프린트ID> <태스크 제목>`
35
+
36
+ **검증 항목:**
37
+ - 스프린트 ID가 제공되었는지 확인 (예: S01, S02, S03)
38
+ - 태스크 제목이 제공되었는지 확인
39
+ - 태스크 제목이 따옴표로 묶여있다면 제거
40
+ - 비어있는 경우 사용자에게 올바른 형식 요청
41
+
42
+ ### 2. 대상 스프린트 존재 확인
43
+
44
+ **확인 단계:**
45
+ - `.aiwf/03_SPRINTS/` 디렉토리에서 해당 스프린트 폴더 확인
46
+ - 스프린트 메타 파일 존재 확인 (`S##_M##_sprint_meta.md`)
47
+ - 스프린트 상태 확인 (completed가 아닌지)
48
+ - 존재하지 않으면 오류 메시지와 함께 중단
49
+
50
+ ### 3. 스프린트 컨텍스트 및 목표 심층 분석
51
+
52
+ **병렬 서브에이전트**를 사용하여 다음 내용을 상세히 분석:
53
+
54
+ 1. **스프린트 메타 파일 완전 분석**
55
+ - 스프린트 목표 및 범위 파악
56
+ - 예상 결과물(Deliverables) 확인
57
+ - 스프린트 성공 기준 이해
58
+ - 현재 진행 상황 및 남은 작업 파악
59
+
60
+ 2. **마일스톤 컨텍스트 확인**
61
+ - 관련 마일스톤 파일에서 상위 목표 확인
62
+ - 마일스톤 성공 기준과의 정렬성 검토
63
+ - 다른 스프린트와의 연관성 파악
64
+
65
+ 3. **기술적 제약사항 검토**
66
+ - `.aiwf/01_PROJECT_DOCS/ARCHITECTURE.md` 분석
67
+ - `.aiwf/05_ARCHITECTURAL_DECISIONS/` ADR 확인
68
+ - 기존 기술 스택 및 패턴 이해
69
+
70
+ 4. **분석 결과 정리**
71
+ - 스프린트의 핵심 목표 3-5개 도출
72
+ - 허용되는 작업 범위 명확화
73
+ - 제외되어야 할 작업 유형 식별
74
+
75
+ ### 4. 태스크 적합성 평가 및 사용자 확인
76
+
77
+ **태스크 적합성 심층 평가:**
78
+
79
+ 1. **스프린트 목표와의 정렬성 검사**
80
+ - 제안된 태스크가 스프린트 목표에 직접적으로 기여하는가?
81
+ - 스프린트 범위를 벗어나지 않는가?
82
+ - 마일스톤 목표와 일치하는가?
83
+
84
+ 2. **기존 태스크와의 관계 분석**
85
+ - 중복되는 태스크가 있는가?
86
+ - 다른 태스크와 충돌하거나 상충되는가?
87
+ - 선행 태스크가 필요한가?
88
+
89
+ 3. **우선순위 및 복잡도 평가**
90
+ - 현재 스프린트 내에서 완료 가능한가?
91
+ - 다른 태스크보다 우선순위가 높은가?
92
+ - 예상 작업량이 적절한가?
93
+
94
+ 4. **사용자에게 분석 결과 제시**
95
+ ```
96
+ 📊 태스크 적합성 분석 결과:
97
+
98
+ 🎯 스프린트 목표: [스프린트 핵심 목표]
99
+ 📋 제안된 태스크: [태스크 제목]
100
+
101
+ ✅ 적합성 평가:
102
+ - 목표 정렬성: [상/중/하] - [이유]
103
+ - 범위 적절성: [적합/경계/벗어남] - [설명]
104
+ - 우선순위: [높음/보통/낮음] - [근거]
105
+ - 예상 복잡도: [낮음/보통/높음]
106
+
107
+ 🔍 관련 태스크:
108
+ - [기존 태스크 목록 중 관련된 것들]
109
+
110
+ 💡 권장사항:
111
+ [태스크 추가를 권장하는지, 수정이 필요한지, 다른 스프린트가 적합한지 등]
112
+
113
+ 계속 진행하시겠습니까? (Y/N)
114
+ ```
115
+
116
+ 5. **사용자 확인 처리**
117
+ - Y: 태스크 추가 진행
118
+ - N: 취소하고 대안 제시
119
+ - 수정 제안 시: 새로운 태스크 제목으로 재평가
120
+
121
+ ### 5. 기존 태스크 목록 확인 및 중복 검사
122
+
123
+ **상세한 중복 및 충돌 검사:**
124
+ - 스프린트 디렉토리 내 모든 태스크 파일 스캔
125
+ - 제목 및 내용 기반 유사도 검사
126
+ - 기능적 중복 여부 확인
127
+ - 관련 태스크 그룹핑 제안
128
+
129
+ ### 6. 다음 태스크 번호 결정
130
+
131
+ **태스크 번호 할당:**
132
+ - 기존 태스크 번호 파악
133
+ - 순차적 번호 할당 (T01, T02...)
134
+ - 파일명 형식: `T##_S##_<제목_언더스코어>.md`
135
+
136
+ ### 7. 태스크 상세 내용 작성
137
+
138
+ **스프린트 분석 결과를 바탕으로 태스크 내용 구체화:**
139
+
140
+ 1. **태스크 개요 작성**
141
+ - 스프린트 목표와의 연관성 명시
142
+ - 구체적인 작업 범위 정의
143
+ - 예상 결과물 설명
144
+
145
+ 2. **요구사항 도출**
146
+ - 스프린트 목표에서 파생된 구체적 요구사항
147
+ - 기술적 제약사항 반영
148
+ - 측정 가능한 완료 조건
149
+
150
+ 3. **기술 가이드라인 구체화**
151
+ - 관련 ADR 참조
152
+ - 사용해야 할 기존 패턴/컴포넌트
153
+ - 준수해야 할 코딩 표준
154
+
155
+ 4. **구현 전략 수립**
156
+ - 단계별 구현 접근법
157
+ - 예상되는 기술적 도전과제
158
+ - 리스크 및 대응 방안
159
+
160
+ ### 8. 태스크 파일 생성
161
+
162
+ **파일 위치:** `.aiwf/03_SPRINTS/S##_M##_<name>/T##_S##_<title>.md`
163
+
164
+ **내용 포함:**
165
+ ```markdown
166
+ # T##: [태스크 제목]
167
+
168
+ **스프린트**: S## - [스프린트 이름]
169
+ **생성일**: YYYY-MM-DD HH:MM
170
+ **상태**: pending
171
+ **우선순위**: medium
172
+ **예상 시간**: TBD
173
+
174
+ ## 개요
175
+ [태스크에 대한 간단한 설명]
176
+
177
+ ## 요구사항
178
+ - [ ] [구체적인 요구사항 1]
179
+ - [ ] [구체적인 요구사항 2]
180
+ - [ ] [구체적인 요구사항 3]
181
+
182
+ ## 승인 기준
183
+ - [ ] [완료 조건 1]
184
+ - [ ] [완료 조건 2]
185
+ - [ ] [완료 조건 3]
186
+
187
+ ## 기술 가이드라인
188
+ - [관련 아키텍처 결정 참조]
189
+ - [기존 코드베이스 패턴 참조]
190
+ - [사용할 기술 스택]
191
+
192
+ ## 구현 노트
193
+ - [구현 시 고려사항]
194
+ - [잠재적 리스크]
195
+ - [테스트 전략]
196
+
197
+ ## 참조
198
+ - [관련 문서나 코드 링크]
199
+ ```
200
+
201
+ ### 9. 스프린트 메타 파일 업데이트
202
+
203
+ 스프린트 메타 파일의 태스크 섹션 업데이트:
204
+ - 새로운 태스크를 목록에 추가
205
+ - 전체 태스크 수 업데이트
206
+ - 진행률은 그대로 유지 (새 태스크는 pending)
207
+
208
+ ### 10. 프로젝트 매니페스트 업데이트
209
+
210
+ `.aiwf/00_PROJECT_MANIFEST.md` 업데이트:
211
+ - "활성 태스크" 섹션에 새 태스크 추가
212
+ - 태스크 통계 업데이트
213
+ - 최종 업데이트 시간 변경
214
+
215
+ ### 11. Git 상태 확인
216
+
217
+ **확인 사항:**
218
+ - 작업 디렉토리가 깨끗한지 확인
219
+ - 새로 생성된 파일 표시
220
+ - 수정된 파일 목록 제공
221
+
222
+ ### 12. 최종 보고 및 다음 단계 안내
223
+
224
+ **상세한 보고서 제공:**
225
+ ```
226
+ ✅ 태스크 추가 완료!
227
+
228
+ 📊 태스크 분석 요약:
229
+ - 스프린트 정렬성: [평가 결과]
230
+ - 우선순위: [설정된 우선순위]
231
+ - 예상 복잡도: [복잡도]
232
+ - 관련 태스크: [연관 태스크 목록]
233
+
234
+ 📄 생성된 파일: T##_S##_<title>.md
235
+ 🏃 스프린트: S## - [스프린트 이름]
236
+ 📋 태스크: T## - [태스크 제목]
237
+ ⏱️ 상태: pending
238
+
239
+ 📝 다음 단계:
240
+ 1. 태스크 파일을 열어 생성된 내용 검토
241
+ 2. 필요시 세부사항 추가 작성
242
+ 3. `/aiwf:do_task T##`로 작업 시작
243
+ 4. 완료 후 `/aiwf:update_task_status T## completed` 실행
244
+
245
+ 💡 팁:
246
+ - 태스크 목록 확인: `/aiwf:list_sprint_tasks S##`
247
+ - 태스크 상세 보기: `/aiwf:view_task T##`
248
+ - 관련 태스크 확인: [관련 태스크 번호들]
249
+ ```
250
+
251
+ **출력 형식:**
252
+ ```
253
+ ✅ 태스크 추가 완료!
254
+
255
+ 📄 생성된 파일: T##_S##_<title>.md
256
+ 🏃 스프린트: S## - [스프린트 이름]
257
+ 📋 태스크: T## - [태스크 제목]
258
+ ⏱️ 상태: pending
259
+
260
+ 📝 다음 단계:
261
+ 1. 태스크 파일을 열어 세부사항 작성
262
+ 2. `/aiwf:do_task T##`로 작업 시작
263
+ 3. 완료 후 `/aiwf:update_task_status T## completed` 실행
264
+
265
+ 💡 팁: 태스크 목록 확인은 `/aiwf:list_sprint_tasks S##`
266
+ ```
267
+
268
+ ## 주의사항
269
+
270
+ - **스프린트 적합성**: 태스크가 스프린트 목표에 부합하는지 반드시 검증
271
+ - **중복 방지**: 기존 태스크와의 중복 또는 충돌 확인
272
+ - **범위 관리**: 스프린트 범위를 벗어나는 태스크는 다른 스프린트로 안내
273
+ - **완료 가능성**: 현재 스프린트 기간 내 완료 가능한 작업인지 평가
274
+ - **의존성 확인**: 다른 태스크와의 의존 관계 파악 및 명시
275
+ - **품질 기준**: 태스크 설명은 구체적이고 측정 가능해야 함
276
+
277
+ ## 분석 중심 접근법의 이점
278
+
279
+ 1. **목표 정렬**: 모든 태스크가 스프린트 목표에 직접 기여
280
+ 2. **중복 방지**: 유사하거나 중복된 작업 사전 차단
281
+ 3. **품질 향상**: 상세한 분석으로 태스크 품질 개선
282
+ 4. **시간 절약**: 부적절한 태스크로 인한 재작업 방지
283
+ 5. **투명성**: 태스크 추가 근거와 맥락 명확화
@@ -0,0 +1,63 @@
1
+ # Install Git Hooks
2
+
3
+ Install or manage AIWF Git hooks for automatic Feature-Git integration.
4
+
5
+ ## Command Usage
6
+
7
+ ```bash
8
+ # Install hooks
9
+ /project:aiwf:install_git_hooks
10
+
11
+ # Check status
12
+ /project:aiwf:install_git_hooks status
13
+
14
+ # Uninstall hooks
15
+ /project:aiwf:install_git_hooks uninstall
16
+ ```
17
+
18
+ ## What It Does
19
+
20
+ ### Install (default)
21
+ 1. Backs up existing Git hooks if present
22
+ 2. Installs AIWF pre-commit hook
23
+ 3. Installs AIWF post-commit hook
24
+ 4. Installs AIWF post-merge hook
25
+
26
+ ### Status
27
+ - Shows which hooks are installed
28
+ - Indicates if AIWF hooks or other hooks are active
29
+
30
+ ### Uninstall
31
+ - Removes AIWF hooks
32
+ - Restores original hooks from backup if available
33
+
34
+ ## Hooks Functionality
35
+
36
+ ### Pre-commit Hook
37
+ - Scans staged files for Feature ID references
38
+ - Prepares for feature tracking
39
+
40
+ ### Post-commit Hook
41
+ - Extracts Feature ID from commit message
42
+ - Automatically links commit to feature
43
+ - Updates feature status (planned → active)
44
+
45
+ ### Post-merge Hook
46
+ - Detects merges to main/master branch
47
+ - Updates feature status to completed
48
+ - Finalizes feature metrics
49
+
50
+ ## Implementation
51
+
52
+ Execute the following command:
53
+
54
+ ```bash
55
+ node .aiwf/scripts/install-git-hooks.cjs {{COMMAND}}
56
+ ```
57
+
58
+ ## Notes
59
+
60
+ - Must be run from a Git repository root
61
+ - Preserves existing hooks as .aiwf-backup files
62
+ - Hooks are non-intrusive and fast
63
+ - Can be safely installed/uninstalled anytime
@@ -0,0 +1,43 @@
1
+ # Link Feature Branch
2
+
3
+ Link the current Git branch to a Feature in the Feature Ledger.
4
+
5
+ ## Command Usage
6
+
7
+ ```bash
8
+ /project:aiwf:link_feature_branch <feature-id>
9
+ ```
10
+
11
+ ## Parameters
12
+
13
+ - `feature-id`: The Feature ID to link the current branch to (e.g., FL001)
14
+
15
+ ## What It Does
16
+
17
+ 1. Gets the current Git branch name
18
+ 2. Updates the feature's git_branch field
19
+ 3. Establishes the branch-feature relationship
20
+
21
+ ## Examples
22
+
23
+ ```bash
24
+ # On branch feature/FL001-user-auth
25
+ /project:aiwf:link_feature_branch FL001
26
+
27
+ # Creates the link between current branch and feature
28
+ ```
29
+
30
+ ## Implementation
31
+
32
+ Execute the following command:
33
+
34
+ ```bash
35
+ node .aiwf/scripts/git-integration.cjs link-branch {{FEATURE_ID}}
36
+ ```
37
+
38
+ ## Notes
39
+
40
+ - Must be run from within a Git repository
41
+ - The current branch will be linked to the feature
42
+ - Overwrites any existing branch link
43
+ - Useful when branch naming doesn't follow the FL### pattern
@@ -0,0 +1,46 @@
1
+ # Link Feature Commit
2
+
3
+ Manually link a Git commit to a Feature in the Feature Ledger.
4
+
5
+ ## Command Usage
6
+
7
+ ```bash
8
+ /project:aiwf:link_feature_commit <feature-id> <commit-hash>
9
+ ```
10
+
11
+ ## Parameters
12
+
13
+ - `feature-id`: The Feature ID (e.g., FL001)
14
+ - `commit-hash`: The Git commit hash to link (full or short hash)
15
+
16
+ ## What It Does
17
+
18
+ 1. Retrieves commit information (message, author, date, stats)
19
+ 2. Links the commit to the specified feature
20
+ 3. Updates feature status if needed (planned → active)
21
+ 4. Records the commit in the feature's git_commits array
22
+
23
+ ## Examples
24
+
25
+ ```bash
26
+ # Link a specific commit to feature FL001
27
+ /project:aiwf:link_feature_commit FL001 abc123def
28
+
29
+ # Link the latest commit
30
+ /project:aiwf:link_feature_commit FL002 HEAD
31
+ ```
32
+
33
+ ## Implementation
34
+
35
+ Execute the following command:
36
+
37
+ ```bash
38
+ node .aiwf/scripts/git-integration.cjs link-commit {{FEATURE_ID}} {{COMMIT_HASH}}
39
+ ```
40
+
41
+ ## Notes
42
+
43
+ - The commit must exist in the current repository
44
+ - The feature file must exist in the Feature Ledgers
45
+ - Duplicate commits are automatically ignored
46
+ - Feature status automatically updates from 'planned' to 'active' on first commit
@@ -3,7 +3,7 @@
3
3
  AI를 시스템 아키텍처 전문가 모드로 전환합니다.
4
4
 
5
5
  ```bash
6
- cd .aiwf && node ../claude-code/aiwf/ko/commands/ai-persona.js architect
6
+ aiwf persona set architect
7
7
  ```
8
8
 
9
9
  ## 페르소나 컨텍스트 적용
@@ -3,7 +3,7 @@
3
3
  AI를 백엔드 개발 전문가 모드로 전환합니다.
4
4
 
5
5
  ```bash
6
- cd .aiwf && node ../claude-code/aiwf/ko/commands/ai-persona.js backend
6
+ aiwf persona set developer
7
7
  ```
8
8
 
9
9
  ## 페르소나 컨텍스트 적용
@@ -3,7 +3,7 @@
3
3
  AI를 데이터 분석 전문가 모드로 전환합니다.
4
4
 
5
5
  ```bash
6
- cd .aiwf && node ../claude-code/aiwf/ko/commands/ai-persona.js data_analyst
6
+ aiwf persona set developer
7
7
  ```
8
8
 
9
9
  ## 페르소나 컨텍스트 적용
@@ -3,7 +3,7 @@
3
3
  AI를 프론트엔드 개발 전문가 모드로 전환합니다.
4
4
 
5
5
  ```bash
6
- cd .aiwf && node ../claude-code/aiwf/ko/commands/ai-persona.js frontend
6
+ aiwf persona set developer
7
7
  ```
8
8
 
9
9
  ## 페르소나 컨텍스트 적용
@@ -3,7 +3,7 @@
3
3
  AI를 보안 전문가 모드로 전환합니다.
4
4
 
5
5
  ```bash
6
- cd .aiwf && node ../claude-code/aiwf/ko/commands/ai-persona.js security
6
+ aiwf persona set security
7
7
  ```
8
8
 
9
9
  ## 페르소나 컨텍스트 적용
@@ -3,7 +3,7 @@
3
3
  현재 활성화된 AI 페르소나의 상태를 확인합니다.
4
4
 
5
5
  ```bash
6
- cd .aiwf && node ../claude-code/aiwf/ko/commands/ai-persona.js status
6
+ aiwf persona status
7
7
  ```
8
8
 
9
9
  ## 설명
package/CHANGELOG.md CHANGED
@@ -7,6 +7,51 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [0.3.5] - 2025-07-19
11
+
12
+ ### ✨ Features
13
+ - **Persona Management**: Implement unified persona management system (`b913da0`)
14
+ - **Runtime State**: Add runtime persona state and metrics tracking (`6e5ca2c`)
15
+ - **Templates**: Add AIWF test instance and project templates (`3034bce`)
16
+ - **Korean Support**: AIWF 한글 템플릿 추가 문서 및 파일 보완 (`5a24037`)
17
+ - **Template Structure**: AIWF 한글 템플릿 구조 완성 (`f12fb76`)
18
+ - **Template Manager**: 템플릿 관리자 구현 및 작업 템플릿 개선 (`feec001`)
19
+ - **Context Compression**: Implement persona-aware context compression (`646fd4c`)
20
+ - **Quality Evaluation**: Add persona quality evaluation system (`4b60a79`)
21
+ - **Claude Commands**: Add Claude Code commands for 5 AI personas (`3ccdb7b`)
22
+ - **Feature Ledger**: Implement Feature Ledger CLI with full CRUD operations (`97c15b3`)
23
+
24
+ ### 📝 Documentation
25
+ - **Persona Docs**: Standardize persona command documentation (`a5a1a98`)
26
+ - **README**: Update README with new persona features (`5dbafc6`)
27
+
28
+ ### ♻️ Refactoring
29
+ - **Project Structure**: 완전한 src 폴더 구조 통합 및 정리 (`92fc7f0`)
30
+ - **Evaluation System**: Replace complex evaluation with lightweight background monitoring (`b39da95`)
31
+
32
+ ### 🔧 Build/Config
33
+ - **Dependencies**: Bump version to 0.3.4 and clean up dependencies (`66166cb`)
34
+ - **Gitignore**: Add .aiwf/backup_*/ pattern to .gitignore (`2952457`)
35
+ - **Development Rules**: Update .gitignore and add framework development rules to CLAUDE.md (`e58a4eb`)
36
+
37
+ ### 🔄 Other Changes
38
+ - 버전 0.3.3으로 업데이트 및 불필요한 압축 관련 문서 삭제 (`9c7c67e`)
39
+ - 설치 완료 플래그 파일 생성 및 기존 설치 확인 로직 수정 (`e956b59`)
40
+ - 버전 업데이트 및 불필요한 CLI 명령어 제거 (`659e6b5`)
41
+
42
+ ## [0.3.4] - 2025-07-19
43
+
44
+ ### 🔧 Build/Config
45
+ - Clean up dependencies and update package configuration
46
+
47
+ ## [0.3.3] - 2025-07-14
48
+
49
+ ### 🔄 Other Changes
50
+ - Remove unnecessary compression-related documentation
51
+ - Create installation completion flag file
52
+ - Fix existing installation check logic
53
+ - Remove unnecessary CLI commands
54
+
10
55
  ### Added
11
56
  - 📚 **Comprehensive Documentation Suite**
12
57
  - API Reference guide with complete module documentation
@@ -124,8 +169,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
124
169
  - GitHub repository download functionality
125
170
  - Simple installation script
126
171
 
127
- [Unreleased]: https://github.com/aiwf/aiwf/compare/v1.0.0...HEAD
128
- [1.0.0]: https://github.com/aiwf/aiwf/compare/v0.3.0...v1.0.0
129
- [0.3.0]: https://github.com/aiwf/aiwf/compare/v0.2.0...v0.3.0
130
- [0.2.0]: https://github.com/aiwf/aiwf/compare/v0.1.0...v0.2.0
131
- [0.1.0]: https://github.com/aiwf/aiwf/releases/tag/v0.1.0
172
+ [Unreleased]: https://github.com/moonklabs/aiwf/compare/v0.3.5...HEAD
173
+ [0.3.5]: https://github.com/moonklabs/aiwf/compare/v0.3.4...v0.3.5
174
+ [0.3.4]: https://github.com/moonklabs/aiwf/compare/v0.3.3...v0.3.4
175
+ [0.3.3]: https://github.com/moonklabs/aiwf/compare/v0.3.1...v0.3.3
176
+ [0.3.1]: https://github.com/moonklabs/aiwf/compare/v1.0.0...v0.3.1
177
+ [1.0.0]: https://github.com/moonklabs/aiwf/compare/v0.3.0...v1.0.0
178
+ [0.3.0]: https://github.com/moonklabs/aiwf/compare/v0.2.0...v0.3.0
179
+ [0.2.0]: https://github.com/moonklabs/aiwf/compare/v0.1.0...v0.2.0
180
+ [0.1.0]: https://github.com/moonklabs/aiwf/releases/tag/v0.1.0
@@ -5,7 +5,7 @@
5
5
  * 다양한 개발 작업을 위한 AI 행동 페르소나 관리
6
6
  */
7
7
 
8
- import { AIPersonaManager } from '../../../../lib/ai-persona-manager.js';
8
+ import { AIPersonaManager } from '../../../../src/lib/ai-persona-manager.js';
9
9
  import { getBackgroundMonitor } from '../utils/background-monitor.js';
10
10
  import path from 'path';
11
11
  import chalk from 'chalk';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "aiwf",
3
- "version": "0.3.4",
3
+ "version": "0.3.6",
4
4
  "description": "AI Workflow Framework for Claude Code with multi-language support (Korean/English)",
5
5
  "main": "index.js",
6
6
  "type": "module",
package/src/cli/index.js CHANGED
@@ -4,7 +4,9 @@ import { program } from 'commander';
4
4
  import chalk from 'chalk';
5
5
  import { installAIWF } from '../lib/installer.js';
6
6
  import AIToolCommand from '../commands/ai-tool.js';
7
+ import PersonaCommand from '../commands/persona.js';
7
8
  import { CacheCLI } from './cache-cli.js';
9
+ import { addTaskToSprint } from '../commands/sprint-task.js';
8
10
 
9
11
  // Parse version from package.json
10
12
  import { readFileSync } from 'fs';
@@ -21,9 +23,9 @@ program
21
23
  .version(packageJson.version)
22
24
  .description('AIWF - AI Workflow Framework');
23
25
 
24
- // Install command (default action)
26
+ // Install command
25
27
  program
26
- .command('install', { isDefault: true })
28
+ .command('install')
27
29
  .description('Install AIWF framework')
28
30
  .option('-f, --force', 'Force install without prompts')
29
31
  .action((options) => installAIWF({ ...options, debugLog: true }));
@@ -161,5 +163,59 @@ lang
161
163
  await resetLanguage();
162
164
  });
163
165
 
166
+ // Persona management commands
167
+ const persona = program.command('persona');
168
+ persona.description('Manage AI personas / AI 페르소나 관리');
169
+
170
+ persona
171
+ .command('status')
172
+ .alias('s')
173
+ .description('Show current persona status / 현재 페르소나 상태 표시')
174
+ .action(async () => {
175
+ const personaCmd = new PersonaCommand();
176
+ await personaCmd.showStatus();
177
+ });
178
+
179
+ persona
180
+ .command('list')
181
+ .alias('ls')
182
+ .description('List available personas / 사용 가능한 페르소나 목록')
183
+ .action(async () => {
184
+ const personaCmd = new PersonaCommand();
185
+ await personaCmd.listPersonas();
186
+ });
187
+
188
+ persona
189
+ .command('set <persona-name>')
190
+ .alias('switch')
191
+ .description('Switch to specific persona / 특정 페르소나로 전환')
192
+ .action(async (personaName) => {
193
+ const personaCmd = new PersonaCommand();
194
+ await personaCmd.setPersona(personaName);
195
+ });
196
+
197
+ persona
198
+ .command('reset')
199
+ .alias('r')
200
+ .description('Reset to default persona / 기본 페르소나로 리셋')
201
+ .action(async () => {
202
+ const personaCmd = new PersonaCommand();
203
+ await personaCmd.resetPersona();
204
+ });
205
+
206
+ // Sprint task management command
207
+ program
208
+ .command('sprint-task <sprintId> <taskTitle>')
209
+ .alias('st')
210
+ .description('Add a task to an existing sprint / 스프린트에 태스크 추가')
211
+ .action(async (sprintId, taskTitle) => {
212
+ try {
213
+ await addTaskToSprint(sprintId, taskTitle);
214
+ } catch (error) {
215
+ console.error(chalk.red(`오류: ${error.message}`));
216
+ process.exit(1);
217
+ }
218
+ });
219
+
164
220
  // Parse command line arguments
165
221
  program.parse(process.argv);