aiwf 0.3.3 → 0.3.4
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/.aiwf/config/language.json +1 -1
- package/.aiwf/sessions/session_1752877859489_1t7n2fhdb.json +7 -0
- package/.aiwf/sessions/session_1752877859515_cwdv211ry.json +7 -0
- package/.aiwf/sessions/session_1752877860664_huziadmbo.json +7 -0
- package/.aiwf/sessions/session_1752877860666_kyr5u1np6.json +7 -0
- package/.aiwf/sessions/session_1752877861848_9yinepw3t.json +7 -0
- package/.aiwf/sessions/session_1752877861874_y32sputuc.json +7 -0
- package/.aiwf/sessions/session_1752877862685_ivxbl5rhz.json +7 -0
- package/.aiwf/sessions/session_1752877862820_wnq4glvxi.json +7 -0
- package/.aiwf/sessions/session_1752877864632_3ebnpaelb.json +7 -0
- package/.aiwf/sessions/session_1752877864879_b9zgjcb7d.json +7 -0
- package/.aiwf/sessions/session_1752877865533_x14m1vodi.json +7 -0
- package/.aiwf/sessions/session_1752877865562_gkoh19n7d.json +7 -0
- package/.aiwf/sessions/session_1752877866333_wp8qpdcoh.json +7 -0
- package/.aiwf/sessions/session_1752877866509_dawntfpab.json +7 -0
- package/.aiwf/sessions/session_1752877866890_plc5vfucl.json +7 -0
- package/.aiwf/sessions/session_1752877866895_ga8hmq3oi.json +7 -0
- package/.aiwf/sessions/session_1752877867761_ayjp4v5f5.json +7 -0
- package/.aiwf/sessions/session_1752877867892_lfz6jy252.json +7 -0
- package/.aiwf/sessions/session_1752877868139_7bqd9ubli.json +7 -0
- package/.aiwf/sessions/session_1752877868162_zq3ofjbsh.json +7 -0
- package/.aiwf/sessions/session_1752877869054_7rlgm9jt6.json +7 -0
- package/.aiwf/sessions/session_1752877869477_ax3nhbxzr.json +7 -0
- package/.aiwf/sessions/session_1752877870095_6hgp4vl1e.json +7 -0
- package/.aiwf/sessions/session_1752877870381_qfcrdg4li.json +7 -0
- package/.aiwf/sessions/session_1752877871895_pgd5vllhz.json +7 -0
- package/.aiwf/sessions/session_1752877872199_jbhv2g2da.json +7 -0
- package/.aiwf/sessions/session_1752877872680_x04wpffu6.json +7 -0
- package/.aiwf/sessions/session_1752877872895_3y4vbeauo.json +7 -0
- package/.aiwf/sessions/session_1752877873178_3maolzc6b.json +7 -0
- package/.aiwf/sessions/session_1752877873180_ytm83j07f.json +7 -0
- package/.aiwf/sessions/session_1752877874217_dp56c9t42.json +7 -0
- package/.aiwf/sessions/session_1752877874415_epwp1g1og.json +7 -0
- package/.aiwf/sessions/session_1752877874454_heicyuryb.json +7 -0
- package/.aiwf/sessions/session_1752877874869_1c2illeu5.json +7 -0
- package/.aiwf/sessions/session_1752877874879_k1vo4vxyx.json +7 -0
- package/.aiwf/sessions/session_1752877874913_bwgyiz9bp.json +7 -0
- package/.aiwf/sessions/session_1752877876218_44807kztz.json +7 -0
- package/.aiwf/sessions/session_1752877876515_qkhjv5kpw.json +7 -0
- package/.aiwf/sessions/session_1752877876543_p605aud1m.json +7 -0
- package/.aiwf/sessions/session_1752877876819_l65w7ifck.json +7 -0
- package/.aiwf/sessions/session_1752877876867_xrhzss4we.json +7 -0
- package/.aiwf/sessions/session_1752877876872_u7aso54qb.json +7 -0
- package/.aiwf/sessions/session_1752877877705_telnfg4o6.json +7 -0
- package/.aiwf/sessions/session_1752877878285_6s45im2ib.json +7 -0
- package/.aiwf/sessions/session_1752877878506_v0dvguqhz.json +7 -0
- package/.aiwf/sessions/session_1752877878581_3ri3yc66a.json +7 -0
- package/.aiwf/sessions/session_1752877878756_a82x9s2pd.json +7 -0
- package/.aiwf/sessions/session_1752877878886_20pjsfour.json +7 -0
- package/.aiwf/sessions/session_1752877880266_fm1ydjw0g.json +7 -0
- package/.aiwf/sessions/session_1752877881149_xbat4z03d.json +7 -0
- package/.aiwf/sessions/session_1752877881551_qy5sic9qs.json +7 -0
- package/.aiwf/sessions/session_1752877881554_24ugd96wu.json +7 -0
- package/.aiwf/sessions/session_1752877881797_e9mm25uh0.json +7 -0
- package/.aiwf/sessions/session_1752877881822_bxvjj8c9g.json +7 -0
- package/.aiwf/sessions/session_1752877881890_jv7l6jve3.json +7 -0
- package/.aiwf/sessions/session_1752877881991_f0qugdtcq.json +7 -0
- package/.aiwf/sessions/session_1752877883387_0bvw9rvnx.json +7 -0
- package/.aiwf/sessions/session_1752877883820_q6g2md2up.json +7 -0
- package/.aiwf/sessions/session_1752877884393_sqr7trvjl.json +7 -0
- package/.aiwf/sessions/session_1752877884500_whtypmzlf.json +7 -0
- package/.aiwf/sessions/session_1752877884645_y9mvvxli1.json +7 -0
- package/.aiwf/sessions/session_1752877884733_hk46eenel.json +7 -0
- package/.aiwf/sessions/session_1752877884738_c62j6214r.json +7 -0
- package/.aiwf/sessions/session_1752877884771_temhxehoz.json +7 -0
- package/.aiwf/sessions/session_1752877885643_6v5fcktc7.json +7 -0
- package/.aiwf/sessions/session_1752877886426_ee8di2fqh.json +7 -0
- package/.aiwf/sessions/session_1752877886549_3xj6tdoew.json +7 -0
- package/.aiwf/sessions/session_1752877886604_aj80yyfco.json +7 -0
- package/.aiwf/sessions/session_1752877886702_2b8841vyg.json +7 -0
- package/.aiwf/sessions/session_1752877886712_ntqc8b8bz.json +7 -0
- package/.aiwf/sessions/session_1752877886968_946m8tbw6.json +7 -0
- package/.aiwf/sessions/session_1752877887008_wg6zfg8dn.json +7 -0
- package/.aiwf/sessions/session_1752877888479_ciiu2qiqs.json +7 -0
- package/.aiwf/sessions/session_1752877889330_ravg8l66k.json +7 -0
- package/.aiwf/sessions/session_1752877889542_7zepkhjkc.json +7 -0
- package/.aiwf/sessions/session_1752877889638_ev4htqiu0.json +7 -0
- package/.aiwf/sessions/session_1752877889956_szphy2qma.json +7 -0
- package/.aiwf/sessions/session_1752877890220_o6aaa57tt.json +7 -0
- package/.aiwf/sessions/session_1752877890527_v2loy5vu1.json +7 -0
- package/.aiwf/sessions/session_1752877890572_cwq8fiuma.json +7 -0
- package/.aiwf/sessions/session_1752877892200_sgcwq1alt.json +7 -0
- package/.aiwf/sessions/session_1752877892268_v8kexpbc5.json +7 -0
- package/.aiwf/sessions/session_1752877892384_1gbbgrp4y.json +7 -0
- package/.aiwf/sessions/session_1752877893568_9p2n5p31a.json +7 -0
- package/.aiwf/sessions/session_1752877893727_un34a5tvp.json +7 -0
- package/.aiwf/sessions/session_1752877893778_01j79sw9i.json +7 -0
- package/.aiwf/sessions/session_1752877894053_jrhba6wko.json +7 -0
- package/.aiwf/sessions/session_1752877894082_x3bghawox.json +7 -0
- package/.aiwf/sessions/session_1752877894500_iytiav2ku.json +7 -0
- package/.aiwf/sessions/session_1752877894667_ucn0gc2ge.json +7 -0
- package/.aiwf/test-results-s02.json +4 -4
- package/.claude/commands/aiwf/aiwf_changelog.md +82 -0
- package/.claude/commands/aiwf/aiwf_code_review.md +88 -0
- package/.claude/commands/aiwf/aiwf_commit.md +160 -0
- package/.claude/commands/aiwf/aiwf_compress_aggressive_persona.md +53 -0
- package/.claude/commands/aiwf/aiwf_compress_context.md +116 -0
- package/.claude/commands/aiwf/aiwf_compress_minimal_persona.md +48 -0
- package/.claude/commands/aiwf/aiwf_compress_stats.md +79 -0
- package/.claude/commands/aiwf/aiwf_compress_with_persona.md +51 -0
- package/.claude/commands/aiwf/aiwf_create_feature_ledger.md +54 -0
- package/.claude/commands/aiwf/aiwf_create_general_task.md +147 -0
- package/.claude/commands/aiwf/aiwf_create_milestone_plan.md +194 -0
- package/.claude/commands/aiwf/aiwf_create_prd.md +280 -0
- package/.claude/commands/aiwf/aiwf_create_sprint_tasks.md +189 -0
- package/.claude/commands/aiwf/aiwf_create_sprints_from_milestone.md +121 -0
- package/.claude/commands/aiwf/aiwf_default_mode.md +44 -0
- package/.claude/commands/aiwf/aiwf_discuss_review.md +29 -0
- package/.claude/commands/aiwf/aiwf_do_task.md +109 -0
- package/.claude/commands/aiwf/aiwf_docs.md +225 -0
- package/.claude/commands/aiwf/aiwf_evaluate.md +92 -0
- package/.claude/commands/aiwf/aiwf_get_feature_details.md +78 -0
- package/.claude/commands/aiwf/aiwf_infinite.md +202 -0
- package/.claude/commands/aiwf/aiwf_initialize.md +134 -0
- package/.claude/commands/aiwf/aiwf_issue_create.md +65 -0
- package/.claude/commands/aiwf/aiwf_link_feature_to_milestone.md +57 -0
- package/.claude/commands/aiwf/aiwf_list_features.md +54 -0
- package/.claude/commands/aiwf/aiwf_mermaid.md +272 -0
- package/.claude/commands/aiwf/aiwf_persona_architect.md +48 -0
- package/.claude/commands/aiwf/aiwf_persona_backend.md +37 -0
- package/.claude/commands/aiwf/aiwf_persona_data_analyst.md +37 -0
- package/.claude/commands/aiwf/aiwf_persona_frontend.md +37 -0
- package/.claude/commands/aiwf/aiwf_persona_security.md +48 -0
- package/.claude/commands/aiwf/aiwf_persona_status.md +50 -0
- package/.claude/commands/aiwf/aiwf_pr_create.md +76 -0
- package/.claude/commands/aiwf/aiwf_prime.md +9 -0
- package/.claude/commands/aiwf/aiwf_project_review.md +261 -0
- package/.claude/commands/aiwf/aiwf_switch_language.md +160 -0
- package/.claude/commands/aiwf/aiwf_test.md +124 -0
- package/.claude/commands/aiwf/aiwf_testing_review.md +198 -0
- package/.claude/commands/aiwf/aiwf_tm-run-all-subtask.md +210 -0
- package/.claude/commands/aiwf/aiwf_ultrathink_code_advanced.md +460 -0
- package/.claude/commands/aiwf/aiwf_ultrathink_code_basic.md +165 -0
- package/.claude/commands/aiwf/aiwf_ultrathink_general.md +305 -0
- package/.claude/commands/aiwf/aiwf_update_docs_kr.md +25 -0
- package/.claude/commands/aiwf/aiwf_update_feature_status.md +53 -0
- package/.claude/commands/aiwf/aiwf_yolo.md +300 -0
- package/.eslintrc.json +26 -0
- package/.prettierrc +10 -0
- package/CLAUDE.md +154 -54
- package/README.ko.md +25 -0
- package/README.md +25 -0
- package/TEST_RECOVERY_PLAN.md +68 -0
- package/docs/CLEANUP_RECOMMENDATIONS.md +86 -0
- package/docs/CLI_USAGE_GUIDE.md +479 -0
- package/package.json +9 -9
- package/scripts/update-feature-status.js +70 -0
- package/{lib → src/cli}/cache-cli.js +4 -4
- package/src/cli/index.js +165 -0
- package/{language-cli.js → src/cli/language-cli.js} +11 -4
- package/src/commands/cache-templates.js +209 -0
- package/src/commands/create-offline.js +86 -0
- package/src/commands/create-project.js +151 -0
- package/src/lib/backup-manager.js +270 -0
- package/src/lib/file-downloader.js +208 -0
- package/src/lib/installer.js +676 -0
- package/src/lib/rollback-manager.js +418 -0
- package/src/lib/validator.js +561 -0
- package/src/utils/git-integration.js +173 -0
- package/{language-utils.js → src/utils/language-utils.js} +2 -1
- package/src/utils/messages.js +136 -0
- package/src/utils/paths.js +130 -0
- package/tests/application.test.js +2 -2
- package/tests/installer.test.js +2 -2
- package/tests/integration/ai-persona-system.test.js +4 -4
- package/tests/integration/test-persona-system/docs/README.md +1 -0
- package/tests/integration/test-persona-system/package.json +1 -0
- package/tests/integration/test-persona-system/src/auth.js +1 -0
- package/tests/integration/test-persona-system/src/index.js +1 -0
- package/tests/integration/test-persona-system/test/test.js +1 -0
- package/tests/language-utils.test.js +1 -1
- package/tests/temp_invalid_json/invalid.json +1 -0
- package/tests/unit/ai-persona-manager.test.js +7 -7
- package/.aiwf/05_DOCUMENTATION/performance-report.md +0 -33
- package/.aiwf/test-cache/86c7f9e80251abb8bedd58953ab0d1779e46b4f43ea33b63bffdb778106373b0.json +0 -6
- package/.aiwf/test-cache/9e252a90b80fce0585d7ed0646e7a9b4343e109f661f42a3ae678ba1ec5e22c7.json +0 -7
- package/.aiwf/token-data/alerts.json +0 -293
- package/.aiwf/token-data/monitor-config.json +0 -12
- package/CHANGELOG_M02.md +0 -52
- package/claude-code/aiwf/ko/templates/web-app/template/package-lock.json +0 -10022
- package/claude-code/aiwf/ko/token-data/alerts.json +0 -293
- package/claude-code/aiwf/ko/token-data/monitor-config.json +0 -12
- package/docs/m02-dod-checklist.md +0 -125
- package/docs/m02-gap-analysis.md +0 -214
- package/docs/m02-milestone-completion-report.md +0 -186
- package/docs/m02-milestone-executive-summary.md +0 -68
- package/index.js +0 -1951
- package/lib/cache-integration.js +0 -401
- package/lib/file-batch-processor.js +0 -401
- package/lib/performance-benchmark.js +0 -621
- package/lib/template-manager.js +0 -310
- package/scripts/validate-commands.cjs +0 -338
- /package/{lib → src/lib}/ai-persona-manager.js +0 -0
- /package/{lib → src/lib}/cache-system.js +0 -0
- /package/{lib → src/lib}/context-engine.js +0 -0
- /package/{lib → src/lib}/memory-profiler.js +0 -0
- /package/{lib → src/lib}/metrics-collector.js +0 -0
- /package/{lib → src/lib}/offline-detector.js +0 -0
- /package/{lib → src/lib}/task-analyzer.js +0 -0
- /package/{lib → src/lib}/template-cache-system.js +0 -0
- /package/{lib → src/lib}/template-downloader.js +0 -0
- /package/{lib → src/lib}/template-version-manager.js +0 -0
- /package/{lib → src/lib}/token-optimizer.js +0 -0
|
@@ -0,0 +1,479 @@
|
|
|
1
|
+
# AIWF CLI 사용 가이드
|
|
2
|
+
|
|
3
|
+
## 📋 목차
|
|
4
|
+
1. [설치 및 초기 설정](#설치-및-초기-설정)
|
|
5
|
+
2. [기본 명령어](#기본-명령어)
|
|
6
|
+
3. [AI 도구 관리](#ai-도구-관리)
|
|
7
|
+
4. [캐시 관리](#캐시-관리)
|
|
8
|
+
5. [언어 관리](#언어-관리)
|
|
9
|
+
6. [Claude Code 통합 명령어](#claude-code-통합-명령어)
|
|
10
|
+
7. [Git 통합 및 Feature Tracking](#git-통합-및-feature-tracking)
|
|
11
|
+
8. [일반적인 워크플로우](#일반적인-워크플로우)
|
|
12
|
+
9. [문제 해결](#문제-해결)
|
|
13
|
+
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
## 🚀 설치 및 초기 설정
|
|
17
|
+
|
|
18
|
+
### 최초 설치
|
|
19
|
+
```bash
|
|
20
|
+
# 프로젝트 디렉토리에서 실행
|
|
21
|
+
cd my-project
|
|
22
|
+
npx aiwf
|
|
23
|
+
|
|
24
|
+
# 또는 전역 설치
|
|
25
|
+
npm install -g aiwf
|
|
26
|
+
aiwf
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
설치 과정:
|
|
30
|
+
1. 언어 선택 (한국어/English)
|
|
31
|
+
2. 자동으로 필요한 파일 다운로드
|
|
32
|
+
3. 프로젝트 구조 생성
|
|
33
|
+
|
|
34
|
+
### 강제 설치 (프롬프트 없이)
|
|
35
|
+
```bash
|
|
36
|
+
aiwf install --force
|
|
37
|
+
# 또는
|
|
38
|
+
aiwf install -f
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
### 설치 후 생성되는 구조
|
|
42
|
+
```
|
|
43
|
+
your-project/
|
|
44
|
+
├── .aiwf/ # AIWF 프로젝트 관리
|
|
45
|
+
├── .claude/commands/aiwf/ # Claude Code 명령어
|
|
46
|
+
├── .cursor/rules/ # Cursor IDE 규칙
|
|
47
|
+
├── .windsurf/rules/ # Windsurf IDE 규칙
|
|
48
|
+
└── [기존 프로젝트 파일들]
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
---
|
|
52
|
+
|
|
53
|
+
## 📌 기본 명령어
|
|
54
|
+
|
|
55
|
+
### aiwf 메인 명령어
|
|
56
|
+
```bash
|
|
57
|
+
# 기본 설치 (install이 기본 동작)
|
|
58
|
+
aiwf
|
|
59
|
+
|
|
60
|
+
# 명시적 설치
|
|
61
|
+
aiwf install
|
|
62
|
+
|
|
63
|
+
# 강제 설치
|
|
64
|
+
aiwf install --force
|
|
65
|
+
|
|
66
|
+
# 도움말
|
|
67
|
+
aiwf --help
|
|
68
|
+
|
|
69
|
+
# 버전 확인
|
|
70
|
+
aiwf --version
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
---
|
|
74
|
+
|
|
75
|
+
## 🤖 AI 도구 관리
|
|
76
|
+
|
|
77
|
+
### AI 도구 설치
|
|
78
|
+
```bash
|
|
79
|
+
# 특정 AI 도구 템플릿 설치
|
|
80
|
+
aiwf ai-tool install claude-code
|
|
81
|
+
aiwf ai-tool install cursor
|
|
82
|
+
aiwf ai-tool install windsurf
|
|
83
|
+
aiwf ai-tool install github-copilot
|
|
84
|
+
aiwf ai-tool install augment
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
### AI 도구 목록 확인
|
|
88
|
+
```bash
|
|
89
|
+
# 설치 가능한 도구와 설치된 도구 목록
|
|
90
|
+
aiwf ai-tool list
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
출력 예시:
|
|
94
|
+
```
|
|
95
|
+
🤖 AI Tool Templates
|
|
96
|
+
|
|
97
|
+
claude-code
|
|
98
|
+
Status: ✓ Installed
|
|
99
|
+
Version: 1.0.0
|
|
100
|
+
Features: custom_instructions, project_context, command_integration
|
|
101
|
+
|
|
102
|
+
cursor
|
|
103
|
+
Status: Available
|
|
104
|
+
Version: 1.0.0
|
|
105
|
+
Features: smart_completion, aiwf_context_awareness, project_structure_recognition
|
|
106
|
+
|
|
107
|
+
windsurf
|
|
108
|
+
Status: Available
|
|
109
|
+
Version: 1.0.0
|
|
110
|
+
Features: ai_assistance, code_generation, context_awareness
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
### AI 도구 업데이트
|
|
114
|
+
```bash
|
|
115
|
+
# 특정 도구 업데이트
|
|
116
|
+
aiwf ai-tool update claude-code
|
|
117
|
+
|
|
118
|
+
# 업데이트 확인
|
|
119
|
+
aiwf ai-tool check
|
|
120
|
+
aiwf ai-tool check claude-code # 특정 도구만
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
### AI 도구 검증
|
|
124
|
+
```bash
|
|
125
|
+
# 설치 상태 검증
|
|
126
|
+
aiwf ai-tool verify claude-code
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
### AI 도구 버전 확인
|
|
130
|
+
```bash
|
|
131
|
+
aiwf ai-tool version claude-code
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
---
|
|
135
|
+
|
|
136
|
+
## 💾 캐시 관리
|
|
137
|
+
|
|
138
|
+
### 템플릿 다운로드 (오프라인 사용)
|
|
139
|
+
```bash
|
|
140
|
+
# 대화형 선택
|
|
141
|
+
aiwf cache download
|
|
142
|
+
|
|
143
|
+
# 모든 템플릿 다운로드
|
|
144
|
+
aiwf cache download --all
|
|
145
|
+
|
|
146
|
+
# 특정 타입만 다운로드
|
|
147
|
+
aiwf cache download --type ai-tools
|
|
148
|
+
aiwf cache download --type projects
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
### 캐시 목록 확인
|
|
152
|
+
```bash
|
|
153
|
+
# 전체 캐시 목록
|
|
154
|
+
aiwf cache list
|
|
155
|
+
|
|
156
|
+
# 타입별 필터
|
|
157
|
+
aiwf cache list --type ai-tools
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
### 캐시 정리
|
|
161
|
+
```bash
|
|
162
|
+
# 만료된 캐시만 정리 (기본 7일)
|
|
163
|
+
aiwf cache clean
|
|
164
|
+
|
|
165
|
+
# 모든 캐시 삭제
|
|
166
|
+
aiwf cache clean --all
|
|
167
|
+
|
|
168
|
+
# 특정 기간 이상된 캐시 삭제
|
|
169
|
+
aiwf cache clean --max-age 30 # 30일 이상
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
### 캐시 업데이트
|
|
173
|
+
```bash
|
|
174
|
+
# 업데이트 확인
|
|
175
|
+
aiwf cache update
|
|
176
|
+
|
|
177
|
+
# 업데이트 확인 후 자동 설치
|
|
178
|
+
aiwf cache update --install
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
### 캐시 상태 확인
|
|
182
|
+
```bash
|
|
183
|
+
aiwf cache status
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
출력 예시:
|
|
187
|
+
```
|
|
188
|
+
📊 AIWF Cache Status
|
|
189
|
+
|
|
190
|
+
Cache Location: /Users/username/.aiwf-cache
|
|
191
|
+
Network Status: Online
|
|
192
|
+
|
|
193
|
+
Cache Statistics:
|
|
194
|
+
Total Size: 24.3 MB
|
|
195
|
+
Templates: 12
|
|
196
|
+
AI Tools: 5
|
|
197
|
+
Oldest Entry: 2024-01-13
|
|
198
|
+
|
|
199
|
+
By Status:
|
|
200
|
+
Valid: 10 templates
|
|
201
|
+
Expired: 2 templates
|
|
202
|
+
Corrupted: 0 templates
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
---
|
|
206
|
+
|
|
207
|
+
## 🌐 언어 관리
|
|
208
|
+
|
|
209
|
+
### 언어 상태 확인
|
|
210
|
+
```bash
|
|
211
|
+
# 현재 언어 설정 확인
|
|
212
|
+
aiwf-lang
|
|
213
|
+
aiwf-lang status
|
|
214
|
+
aiwf-lang s # 별칭
|
|
215
|
+
```
|
|
216
|
+
|
|
217
|
+
### 언어 변경
|
|
218
|
+
```bash
|
|
219
|
+
# 한국어로 변경
|
|
220
|
+
aiwf-lang set ko
|
|
221
|
+
|
|
222
|
+
# 영어로 변경
|
|
223
|
+
aiwf-lang set en
|
|
224
|
+
|
|
225
|
+
# 대화형 선택
|
|
226
|
+
aiwf-lang set
|
|
227
|
+
|
|
228
|
+
# 자동 감지 설정
|
|
229
|
+
aiwf-lang set --auto-detect true
|
|
230
|
+
aiwf-lang set --auto-detect false
|
|
231
|
+
```
|
|
232
|
+
|
|
233
|
+
### 언어 초기화
|
|
234
|
+
```bash
|
|
235
|
+
# 자동 감지 모드로 리셋
|
|
236
|
+
aiwf-lang reset
|
|
237
|
+
aiwf-lang r # 별칭
|
|
238
|
+
```
|
|
239
|
+
|
|
240
|
+
---
|
|
241
|
+
|
|
242
|
+
## 🤝 Claude Code 통합 명령어
|
|
243
|
+
|
|
244
|
+
Claude Code에서 사용할 수 있는 `/aiwf_*` 명령어들:
|
|
245
|
+
|
|
246
|
+
### 프로젝트 초기화
|
|
247
|
+
```
|
|
248
|
+
/aiwf_initialize # 프로젝트 초기 설정
|
|
249
|
+
/aiwf_prime # 프로젝트 컨텍스트 로드
|
|
250
|
+
```
|
|
251
|
+
|
|
252
|
+
### 계획 및 작업 관리
|
|
253
|
+
```
|
|
254
|
+
/aiwf_create_milestone_plan # 마일스톤 계획 생성
|
|
255
|
+
/aiwf_create_sprints_from_milestone # 스프린트 생성
|
|
256
|
+
/aiwf_create_sprint_tasks # 스프린트 작업 생성
|
|
257
|
+
/aiwf_create_general_task # 일반 작업 생성
|
|
258
|
+
/aiwf_create_prd # 제품 요구사항 문서 생성
|
|
259
|
+
```
|
|
260
|
+
|
|
261
|
+
### 개발 작업
|
|
262
|
+
```
|
|
263
|
+
/aiwf_do_task # 작업 실행
|
|
264
|
+
/aiwf_commit # Git 커밋 생성
|
|
265
|
+
/aiwf_test # 테스트 실행
|
|
266
|
+
```
|
|
267
|
+
|
|
268
|
+
### 코드 리뷰
|
|
269
|
+
```
|
|
270
|
+
/aiwf_code_review # 코드 리뷰
|
|
271
|
+
/aiwf_project_review # 프로젝트 전체 리뷰
|
|
272
|
+
/aiwf_testing_review # 테스트 커버리지 리뷰
|
|
273
|
+
/aiwf_discuss_review # 리뷰 결과 토론
|
|
274
|
+
```
|
|
275
|
+
|
|
276
|
+
### AI 페르소나
|
|
277
|
+
```
|
|
278
|
+
/project:aiwf:ai_persona:architect # 아키텍트 페르소나
|
|
279
|
+
/project:aiwf:ai_persona:backend # 백엔드 개발자
|
|
280
|
+
/project:aiwf:ai_persona:frontend # 프론트엔드 개발자
|
|
281
|
+
/project:aiwf:ai_persona:security # 보안 전문가
|
|
282
|
+
/project:aiwf:ai_persona:data_analyst # 데이터 분석가
|
|
283
|
+
/project:aiwf:ai_persona:status # 현재 페르소나 상태
|
|
284
|
+
/project:aiwf:ai_persona:auto on # 자동 페르소나 전환
|
|
285
|
+
```
|
|
286
|
+
|
|
287
|
+
### GitHub 통합
|
|
288
|
+
```
|
|
289
|
+
/aiwf_pr_create # Pull Request 생성
|
|
290
|
+
/aiwf_issue_create # GitHub Issue 생성
|
|
291
|
+
```
|
|
292
|
+
|
|
293
|
+
### 고급 기능
|
|
294
|
+
```
|
|
295
|
+
/aiwf_yolo # 자동 작업 실행
|
|
296
|
+
/aiwf_infinite # 연속 작업 모드
|
|
297
|
+
/aiwf_ultrathink_code_advanced # 고급 코드 분석
|
|
298
|
+
```
|
|
299
|
+
|
|
300
|
+
---
|
|
301
|
+
|
|
302
|
+
## 🔗 Git 통합 및 Feature Tracking
|
|
303
|
+
|
|
304
|
+
### Git Hooks 설치
|
|
305
|
+
```bash
|
|
306
|
+
# 프로젝트 루트에서 실행
|
|
307
|
+
./hooks/install-hooks.sh
|
|
308
|
+
```
|
|
309
|
+
|
|
310
|
+
### Feature 관련 스크립트
|
|
311
|
+
```bash
|
|
312
|
+
# Git 히스토리에서 Feature ID 스캔
|
|
313
|
+
node commands/scan-git-history.js --since 2025-01-01
|
|
314
|
+
|
|
315
|
+
# 특정 Feature의 커밋 동기화
|
|
316
|
+
node commands/sync-feature-commits.js FL001
|
|
317
|
+
|
|
318
|
+
# Feature 커밋 리포트 생성
|
|
319
|
+
node commands/feature-commit-report.js --format markdown
|
|
320
|
+
```
|
|
321
|
+
|
|
322
|
+
### Git 커밋 시 자동 Feature 추적
|
|
323
|
+
```bash
|
|
324
|
+
# Feature ID가 포함된 커밋
|
|
325
|
+
git commit -m "feat(FL001): 인증 시스템 구현"
|
|
326
|
+
# post-commit hook이 자동으로 Feature Ledger 업데이트
|
|
327
|
+
```
|
|
328
|
+
|
|
329
|
+
---
|
|
330
|
+
|
|
331
|
+
## 💡 일반적인 워크플로우
|
|
332
|
+
|
|
333
|
+
### 1. 새 프로젝트 시작
|
|
334
|
+
```bash
|
|
335
|
+
# 1. 프로젝트 생성
|
|
336
|
+
mkdir my-awesome-project
|
|
337
|
+
cd my-awesome-project
|
|
338
|
+
|
|
339
|
+
# 2. AIWF 설치
|
|
340
|
+
npx aiwf
|
|
341
|
+
|
|
342
|
+
# 3. Git hooks 설치
|
|
343
|
+
git init
|
|
344
|
+
./hooks/install-hooks.sh
|
|
345
|
+
|
|
346
|
+
# 4. AI 도구 설정
|
|
347
|
+
aiwf ai-tool install claude-code
|
|
348
|
+
aiwf ai-tool install cursor
|
|
349
|
+
|
|
350
|
+
# 5. Claude Code에서 프로젝트 열기
|
|
351
|
+
# 그 후 /aiwf_initialize 실행
|
|
352
|
+
```
|
|
353
|
+
|
|
354
|
+
### 2. 기존 프로젝트에 추가
|
|
355
|
+
```bash
|
|
356
|
+
# 1. 프로젝트 디렉토리로 이동
|
|
357
|
+
cd existing-project
|
|
358
|
+
|
|
359
|
+
# 2. AIWF 설치
|
|
360
|
+
npx aiwf
|
|
361
|
+
|
|
362
|
+
# 3. 기존 구조와 통합
|
|
363
|
+
/aiwf_prime # Claude Code에서
|
|
364
|
+
```
|
|
365
|
+
|
|
366
|
+
### 3. 팀 협업 설정
|
|
367
|
+
```bash
|
|
368
|
+
# 1. 언어 설정 통일
|
|
369
|
+
aiwf-lang set ko # 또는 en
|
|
370
|
+
|
|
371
|
+
# 2. AI 도구 표준화
|
|
372
|
+
aiwf ai-tool install claude-code
|
|
373
|
+
aiwf ai-tool install cursor
|
|
374
|
+
|
|
375
|
+
# 3. Git hooks 설정
|
|
376
|
+
./hooks/install-hooks.sh
|
|
377
|
+
|
|
378
|
+
# 4. .gitignore에 추가
|
|
379
|
+
echo ".aiwf/backup_*" >> .gitignore
|
|
380
|
+
echo "token-data/" >> .gitignore
|
|
381
|
+
```
|
|
382
|
+
|
|
383
|
+
### 4. 오프라인 개발 준비
|
|
384
|
+
```bash
|
|
385
|
+
# 1. 모든 템플릿 다운로드
|
|
386
|
+
aiwf cache download --all
|
|
387
|
+
|
|
388
|
+
# 2. 캐시 상태 확인
|
|
389
|
+
aiwf cache status
|
|
390
|
+
|
|
391
|
+
# 3. 오프라인에서도 정상 작동
|
|
392
|
+
# 캐시된 템플릿 자동 사용
|
|
393
|
+
```
|
|
394
|
+
|
|
395
|
+
---
|
|
396
|
+
|
|
397
|
+
## 🔧 문제 해결
|
|
398
|
+
|
|
399
|
+
### 설치 실패 시
|
|
400
|
+
```bash
|
|
401
|
+
# 1. 강제 재설치
|
|
402
|
+
aiwf install --force
|
|
403
|
+
|
|
404
|
+
# 2. 캐시 정리 후 재시도
|
|
405
|
+
aiwf cache clean --all
|
|
406
|
+
aiwf install
|
|
407
|
+
|
|
408
|
+
# 3. 수동 정리
|
|
409
|
+
rm -rf .aiwf .claude .cursor .windsurf
|
|
410
|
+
aiwf install
|
|
411
|
+
```
|
|
412
|
+
|
|
413
|
+
### 언어 관련 문제
|
|
414
|
+
```bash
|
|
415
|
+
# 언어 설정 초기화
|
|
416
|
+
aiwf-lang reset
|
|
417
|
+
|
|
418
|
+
# 수동으로 언어 설정
|
|
419
|
+
aiwf-lang set ko --auto-detect false
|
|
420
|
+
```
|
|
421
|
+
|
|
422
|
+
### 네트워크 문제
|
|
423
|
+
```bash
|
|
424
|
+
# 1. 캐시 모드 사용
|
|
425
|
+
aiwf cache download --all # 온라인일 때 미리 실행
|
|
426
|
+
|
|
427
|
+
# 2. 프록시 설정 (필요시)
|
|
428
|
+
export HTTPS_PROXY=http://proxy.company.com:8080
|
|
429
|
+
aiwf install
|
|
430
|
+
```
|
|
431
|
+
|
|
432
|
+
### 권한 문제
|
|
433
|
+
```bash
|
|
434
|
+
# 실행 권한 부여
|
|
435
|
+
chmod +x hooks/install-hooks.sh
|
|
436
|
+
chmod +x hooks/post-commit
|
|
437
|
+
chmod +x index.js
|
|
438
|
+
chmod +x language-cli.js
|
|
439
|
+
```
|
|
440
|
+
|
|
441
|
+
### 업데이트 후 문제 발생
|
|
442
|
+
```bash
|
|
443
|
+
# 백업에서 복원
|
|
444
|
+
# 백업 위치: .aiwf/backup_YYYY-MM-DD_HHMMSS
|
|
445
|
+
cp -r .aiwf/backup_2024-01-20_143052/* .aiwf/
|
|
446
|
+
```
|
|
447
|
+
|
|
448
|
+
---
|
|
449
|
+
|
|
450
|
+
## 📚 추가 리소스
|
|
451
|
+
|
|
452
|
+
- **GitHub 저장소**: https://github.com/aiwf/aiwf
|
|
453
|
+
- **문제 보고**: https://github.com/aiwf/aiwf/issues
|
|
454
|
+
- **문서**: [COMMANDS_GUIDE.md](docs/COMMANDS_GUIDE.md)
|
|
455
|
+
- **한국어 문서**: [COMMANDS_GUIDE.ko.md](docs/COMMANDS_GUIDE.ko.md)
|
|
456
|
+
|
|
457
|
+
---
|
|
458
|
+
|
|
459
|
+
## 🎯 빠른 참조
|
|
460
|
+
|
|
461
|
+
```bash
|
|
462
|
+
# 설치
|
|
463
|
+
npx aiwf
|
|
464
|
+
|
|
465
|
+
# AI 도구
|
|
466
|
+
aiwf ai-tool install claude-code
|
|
467
|
+
aiwf ai-tool list
|
|
468
|
+
|
|
469
|
+
# 캐시
|
|
470
|
+
aiwf cache download --all
|
|
471
|
+
aiwf cache status
|
|
472
|
+
|
|
473
|
+
# 언어
|
|
474
|
+
aiwf-lang set ko
|
|
475
|
+
aiwf-lang status
|
|
476
|
+
|
|
477
|
+
# Git hooks
|
|
478
|
+
./hooks/install-hooks.sh
|
|
479
|
+
```
|
package/package.json
CHANGED
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "aiwf",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.4",
|
|
4
4
|
"description": "AI Workflow Framework for Claude Code with multi-language support (Korean/English)",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"bin": {
|
|
8
|
-
"aiwf": "./index.js",
|
|
9
|
-
"aiwf-lang": "./language-cli.js"
|
|
8
|
+
"aiwf": "./src/cli/index.js",
|
|
9
|
+
"aiwf-lang": "./src/cli/language-cli.js"
|
|
10
10
|
},
|
|
11
11
|
"scripts": {
|
|
12
12
|
"test": "node --experimental-vm-modules node_modules/.bin/jest",
|
|
13
|
-
"lang:status": "node
|
|
14
|
-
"lang:set": "node
|
|
15
|
-
"lang:reset": "node
|
|
13
|
+
"lang:status": "node src/cli/index.js lang status",
|
|
14
|
+
"lang:set": "node src/cli/index.js lang set",
|
|
15
|
+
"lang:reset": "node src/cli/index.js lang reset",
|
|
16
16
|
"validate:commands": "node scripts/validate-commands.js"
|
|
17
17
|
},
|
|
18
18
|
"keywords": [
|
|
@@ -30,12 +30,12 @@
|
|
|
30
30
|
"license": "MIT",
|
|
31
31
|
"repository": {
|
|
32
32
|
"type": "git",
|
|
33
|
-
"url": "git+https://github.com/
|
|
33
|
+
"url": "git+https://github.com/moonklabs/aiwf.git"
|
|
34
34
|
},
|
|
35
35
|
"bugs": {
|
|
36
|
-
"url": "https://github.com/
|
|
36
|
+
"url": "https://github.com/moonklabs/aiwf/issues"
|
|
37
37
|
},
|
|
38
|
-
"homepage": "https://github.com/
|
|
38
|
+
"homepage": "https://github.com/moonklabs/aiwf#readme",
|
|
39
39
|
"engines": {
|
|
40
40
|
"node": ">=14.0.0"
|
|
41
41
|
},
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
import { promises as fs } from 'fs';
|
|
4
|
+
import path from 'path';
|
|
5
|
+
import { parseYamlFrontmatter, updateYamlFrontmatter, getFeaturePath } from '../src/utils/git-integration.js';
|
|
6
|
+
|
|
7
|
+
// Feature 상태 업데이트 함수
|
|
8
|
+
async function updateFeatureStatus(featureId, newStatus) {
|
|
9
|
+
const featurePath = await getFeaturePath(featureId);
|
|
10
|
+
if (!featurePath) {
|
|
11
|
+
console.error(`Feature ${featureId} not found`);
|
|
12
|
+
return false;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
try {
|
|
16
|
+
const content = await fs.readFile(featurePath, 'utf-8');
|
|
17
|
+
const metadata = parseYamlFrontmatter(content);
|
|
18
|
+
|
|
19
|
+
if (!metadata) {
|
|
20
|
+
console.error(`Invalid feature file format: ${featurePath}`);
|
|
21
|
+
return false;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
// 상태 업데이트
|
|
25
|
+
const oldStatus = metadata.status;
|
|
26
|
+
metadata.status = newStatus;
|
|
27
|
+
|
|
28
|
+
// 완료 시간 기록
|
|
29
|
+
if (newStatus === 'completed' && !metadata.actual_completion) {
|
|
30
|
+
metadata.actual_completion = new Date().toISOString().split('T')[0];
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
// 파일 업데이트
|
|
34
|
+
const updatedContent = updateYamlFrontmatter(content, metadata);
|
|
35
|
+
await fs.writeFile(featurePath, updatedContent, 'utf-8');
|
|
36
|
+
|
|
37
|
+
console.log(`✅ Feature ${featureId} status updated: ${oldStatus} → ${newStatus}`);
|
|
38
|
+
return true;
|
|
39
|
+
|
|
40
|
+
} catch (error) {
|
|
41
|
+
console.error(`Error updating feature ${featureId}:`, error.message);
|
|
42
|
+
return false;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
// CLI 실행
|
|
47
|
+
if (process.argv.length < 4) {
|
|
48
|
+
console.log('Usage: node update-feature-status.js <featureId> <newStatus>');
|
|
49
|
+
console.log('Status: planning | active | completed | archived');
|
|
50
|
+
process.exit(1);
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
const featureId = process.argv[2];
|
|
54
|
+
const newStatus = process.argv[3];
|
|
55
|
+
|
|
56
|
+
const validStatuses = ['planning', 'active', 'completed', 'archived'];
|
|
57
|
+
if (!validStatuses.includes(newStatus)) {
|
|
58
|
+
console.error(`Invalid status: ${newStatus}`);
|
|
59
|
+
console.log(`Valid statuses: ${validStatuses.join(', ')}`);
|
|
60
|
+
process.exit(1);
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
updateFeatureStatus(featureId, newStatus)
|
|
64
|
+
.then(success => process.exit(success ? 0 : 1))
|
|
65
|
+
.catch(error => {
|
|
66
|
+
console.error('Unexpected error:', error);
|
|
67
|
+
process.exit(1);
|
|
68
|
+
});
|
|
69
|
+
|
|
70
|
+
export { updateFeatureStatus };
|
|
@@ -4,10 +4,10 @@ import { Command } from 'commander';
|
|
|
4
4
|
import chalk from 'chalk';
|
|
5
5
|
import ora from 'ora';
|
|
6
6
|
import prompts from 'prompts';
|
|
7
|
-
import { TemplateCache } from '
|
|
8
|
-
import { OfflineDetector } from '
|
|
9
|
-
import { TemplateDownloader } from '
|
|
10
|
-
import { TemplateVersionManager } from '
|
|
7
|
+
import { TemplateCache } from '../lib/template-cache-system.js';
|
|
8
|
+
import { OfflineDetector } from '../lib/offline-detector.js';
|
|
9
|
+
import { TemplateDownloader } from '../lib/template-downloader.js';
|
|
10
|
+
import { TemplateVersionManager } from '../lib/template-version-manager.js';
|
|
11
11
|
|
|
12
12
|
/**
|
|
13
13
|
* 캐시 관리 CLI 명령어
|