triflux 8.2.3 → 8.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-plugin/plugin.json +1 -1
- package/bin/tfx-doctor-tui.mjs +7 -0
- package/bin/tfx-profile.mjs +7 -0
- package/bin/tfx-setup-tui.mjs +7 -0
- package/bin/triflux.mjs +4 -4
- package/hub/intent.mjs +7 -7
- package/hub/team/tui.mjs +4 -0
- package/hub/workers/delegator-mcp.mjs +18 -18
- package/package.json +6 -2
- package/scripts/setup.mjs +4 -33
- package/scripts/tfx-route.sh +57 -57
- package/skills/tfx-auto-codex/SKILL.md +1 -1
- package/skills/tfx-codex/SKILL.md +2 -2
- package/skills/tfx-doctor/SKILL.md +161 -94
- package/skills/tfx-hub/SKILL.md +1 -1
- package/skills/tfx-profile/SKILL.md +149 -0
- package/skills/tfx-setup/SKILL.md +160 -101
- package/tui/codex-profile.mjs +402 -0
- package/tui/core.mjs +236 -0
- package/tui/doctor.mjs +327 -0
- package/tui/setup.mjs +362 -0
|
@@ -1,94 +1,161 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: tfx-doctor
|
|
3
|
-
description: >
|
|
4
|
-
triflux 진단 및 수리 도구.
|
|
5
|
-
스킬 미설치
|
|
6
|
-
Use when: not working, broken, error, 안 돼, 이상해, 에러, 캐시, reset
|
|
7
|
-
triggers:
|
|
8
|
-
- tfx-doctor
|
|
9
|
-
argument-hint: "[--fix|--reset]"
|
|
10
|
-
---
|
|
11
|
-
|
|
12
|
-
# tfx-doctor — triflux 진단 및 수리
|
|
13
|
-
|
|
14
|
-
> 뭔가 안 될 때, HUD가 이상할 때, CLI가 안 보일 때 실행하세요.
|
|
15
|
-
|
|
16
|
-
##
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
```
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
-
|
|
31
|
-
|
|
32
|
-
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
|
52
|
-
|
|
53
|
-
|
|
|
54
|
-
|
|
|
55
|
-
|
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
-
|
|
84
|
-
|
|
85
|
-
-
|
|
86
|
-
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
1
|
+
---
|
|
2
|
+
name: tfx-doctor
|
|
3
|
+
description: >
|
|
4
|
+
triflux 진단 및 수리 도구. AskUserQuestion 기반 인터랙티브 선택지로
|
|
5
|
+
CLI 미발견, HUD 미표시, 캐시 오류, 스킬 미설치 등을 진단하고 자동 수정합니다.
|
|
6
|
+
Use when: not working, broken, error, 안 돼, 이상해, 에러, 캐시, reset, doctor
|
|
7
|
+
triggers:
|
|
8
|
+
- tfx-doctor
|
|
9
|
+
argument-hint: "[--fix|--reset]"
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# tfx-doctor — triflux 진단 및 수리
|
|
13
|
+
|
|
14
|
+
> 뭔가 안 될 때, HUD가 이상할 때, CLI가 안 보일 때 실행하세요.
|
|
15
|
+
|
|
16
|
+
## 워크플로우
|
|
17
|
+
|
|
18
|
+
### Step 1: 모드 선택 (AskUserQuestion)
|
|
19
|
+
|
|
20
|
+
인자 없이 호출된 경우 모드를 선택한다:
|
|
21
|
+
|
|
22
|
+
```
|
|
23
|
+
question: "어떤 진단 모드를 실행하시겠습니까?"
|
|
24
|
+
header: "모드"
|
|
25
|
+
options:
|
|
26
|
+
- label: "진단 (Diagnose)"
|
|
27
|
+
description: "읽기 전용 전체 검사 — 아무것도 수정하지 않음"
|
|
28
|
+
- label: "수정 (Fix)"
|
|
29
|
+
description: "파일 동기화 + 캐시 정리 후 진단 실행"
|
|
30
|
+
- label: "캐시 관리 (Cache)"
|
|
31
|
+
description: "캐시 파일별 상태 조회, 선택적 삭제"
|
|
32
|
+
- label: "전체 초기화 (Reset)"
|
|
33
|
+
description: "모든 캐시 삭제 + 재생성 (위험)"
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
`--fix`, `--reset` 인자가 있으면 바로 해당 모드로 실행.
|
|
37
|
+
|
|
38
|
+
### Step 2: 모드별 실행
|
|
39
|
+
|
|
40
|
+
#### 진단 모드
|
|
41
|
+
|
|
42
|
+
```bash
|
|
43
|
+
Bash("triflux doctor --json")
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
JSON 결과를 파싱하여 마크다운 테이블로 표시:
|
|
47
|
+
|
|
48
|
+
```
|
|
49
|
+
| 항목 | 상태 | 비고 |
|
|
50
|
+
|------|------|------|
|
|
51
|
+
| tfx-route.sh | ✅ | v2.0 |
|
|
52
|
+
| HUD | ✅ | 설치됨 |
|
|
53
|
+
| Codex CLI | ✅ | found |
|
|
54
|
+
| Gemini CLI | ⚠ | 미설치 (선택) |
|
|
55
|
+
| ... | ... | ... |
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
이슈가 발견되면 AskUserQuestion:
|
|
59
|
+
```
|
|
60
|
+
question: "N개 이슈가 발견되었습니다. 자동 수정을 시도하시겠습니까?"
|
|
61
|
+
header: "수정"
|
|
62
|
+
options:
|
|
63
|
+
- label: "자동 수정 실행 (Recommended)"
|
|
64
|
+
description: "triflux doctor --fix 실행"
|
|
65
|
+
- label: "건너뛰기"
|
|
66
|
+
description: "수정 없이 결과만 확인"
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
#### 수정 모드
|
|
70
|
+
|
|
71
|
+
```bash
|
|
72
|
+
Bash("triflux doctor --fix")
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
결과를 보고한다.
|
|
76
|
+
|
|
77
|
+
#### 캐시 관리
|
|
78
|
+
|
|
79
|
+
`~/.claude/cache/` 디렉토리의 캐시 파일들을 Read/Glob으로 조회:
|
|
80
|
+
|
|
81
|
+
| 캐시 파일 | 설명 |
|
|
82
|
+
|-----------|------|
|
|
83
|
+
| claude-usage-cache.json | Claude 사용량 |
|
|
84
|
+
| codex-rate-limits-cache.json | Codex 레이트 리밋 |
|
|
85
|
+
| gemini-quota-cache.json | Gemini 쿼터 |
|
|
86
|
+
| sv-accumulator.json | 절약량 누적 |
|
|
87
|
+
| mcp-inventory.json | MCP 서버 인벤토리 |
|
|
88
|
+
| cli-issues.jsonl | CLI 이슈 로그 |
|
|
89
|
+
| triflux-update-check.json | 업데이트 체크 |
|
|
90
|
+
|
|
91
|
+
존재하는 캐시 파일 목록과 크기를 테이블로 표시 후 AskUserQuestion:
|
|
92
|
+
|
|
93
|
+
```
|
|
94
|
+
question: "어떻게 삭제하시겠습니까?"
|
|
95
|
+
header: "삭제"
|
|
96
|
+
options:
|
|
97
|
+
- label: "전체 삭제"
|
|
98
|
+
description: "모든 캐시 파일 삭제"
|
|
99
|
+
- label: "에러 캐시만 삭제"
|
|
100
|
+
description: "파싱 에러가 있는 파일만 삭제"
|
|
101
|
+
- label: "선택 삭제"
|
|
102
|
+
description: "파일 하나씩 선택하여 삭제"
|
|
103
|
+
- label: "취소"
|
|
104
|
+
description: "삭제하지 않음"
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
"선택 삭제" 시 각 파일에 대해 AskUserQuestion으로 삭제 여부 확인.
|
|
108
|
+
|
|
109
|
+
#### 전체 초기화
|
|
110
|
+
|
|
111
|
+
위험 확인:
|
|
112
|
+
```
|
|
113
|
+
question: "전체 캐시를 초기화하시겠습니까? 다음 세션에서 재생성됩니다."
|
|
114
|
+
header: "확인"
|
|
115
|
+
options:
|
|
116
|
+
- label: "초기화 실행"
|
|
117
|
+
description: "모든 캐시 삭제 + MCP/사용량 캐시 재생성"
|
|
118
|
+
- label: "취소"
|
|
119
|
+
description: "아무것도 하지 않음"
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
확인 시:
|
|
123
|
+
```bash
|
|
124
|
+
Bash("triflux doctor --reset")
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
### Step 3: 후속 조치
|
|
128
|
+
|
|
129
|
+
실행 완료 후 AskUserQuestion:
|
|
130
|
+
```
|
|
131
|
+
question: "다른 작업을 하시겠습니까?"
|
|
132
|
+
header: "계속"
|
|
133
|
+
options:
|
|
134
|
+
- label: "다른 모드 실행"
|
|
135
|
+
description: "진단/수정/캐시/초기화 메뉴로 돌아감"
|
|
136
|
+
- label: "종료"
|
|
137
|
+
description: "doctor 종료"
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
## 진단 항목
|
|
141
|
+
|
|
142
|
+
- tfx-route.sh 설치 상태
|
|
143
|
+
- HUD 설치 및 설정 상태
|
|
144
|
+
- Codex/Gemini/Claude CLI 경로 (크로스 셸)
|
|
145
|
+
- Codex Profiles (필수 프로파일 존재 여부)
|
|
146
|
+
- 스킬 설치 상태
|
|
147
|
+
- 플러그인 등록 상태
|
|
148
|
+
- MCP 인벤토리 캐시
|
|
149
|
+
- 잔존 팀(orphan teams) 감지
|
|
150
|
+
|
|
151
|
+
## 에러 처리
|
|
152
|
+
|
|
153
|
+
| 상황 | 처리 |
|
|
154
|
+
|------|------|
|
|
155
|
+
| 캐시 디렉토리 없음 | 정상 — 삭제할 파일 없음 보고 |
|
|
156
|
+
| 파일 삭제 권한 없음 | 수동 삭제 안내 |
|
|
157
|
+
| --fix 후에도 이슈 남음 | Codex/Gemini 설치는 수동 필요 안내 |
|
|
158
|
+
|
|
159
|
+
## standalone TUI
|
|
160
|
+
|
|
161
|
+
터미널에서 직접 실행도 가능: `node tui/doctor.mjs` (arrow key 방식)
|
package/skills/tfx-hub/SKILL.md
CHANGED
|
@@ -36,7 +36,7 @@ Bash("bash ~/.claude/scripts/tfx-route.sh {에이전트} '{hub 컨텍스트 +
|
|
|
36
36
|
|
|
37
37
|
# codex 직접 호출 시 — 반드시 exec 서브커맨드 포함
|
|
38
38
|
Bash("codex exec --dangerously-bypass-approvals-and-sandbox --skip-git-repo-check '{작업}'")
|
|
39
|
-
Bash("codex --profile
|
|
39
|
+
Bash("codex --profile gpt54_xhigh exec --dangerously-bypass-approvals-and-sandbox --skip-git-repo-check '{작업}'")
|
|
40
40
|
# ↑ --profile은 exec 앞에, --skip-git-repo-check은 exec 뒤에
|
|
41
41
|
|
|
42
42
|
# Claude 네이티브 (탐색/검증)
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: tfx-profile
|
|
3
|
+
description: >
|
|
4
|
+
Codex CLI 프로파일/모델 관리 인터랙티브 UI. tfx-route가 사용하는
|
|
5
|
+
프로파일 목록 조회, 모델 변경, effort 조정, 추가/삭제를 AskUserQuestion 기반
|
|
6
|
+
인터랙티브 선택지로 수행합니다.
|
|
7
|
+
Use when: codex profile, codex model, 프로파일 변경, 모델 변경, effort 변경,
|
|
8
|
+
codex 설정, profile manager, 프로파일 관리, 어떤 모델, tfx profile
|
|
9
|
+
triggers:
|
|
10
|
+
- tfx-profile
|
|
11
|
+
argument-hint: "[--list]"
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
# codex-profile — Codex 프로파일 매니저
|
|
15
|
+
|
|
16
|
+
> Codex CLI 프로파일의 모델/effort를 AskUserQuestion 선택지로 관리합니다.
|
|
17
|
+
|
|
18
|
+
## 워크플로우
|
|
19
|
+
|
|
20
|
+
### Step 1: config.toml 읽기 + 현재 상태 표시
|
|
21
|
+
|
|
22
|
+
`~/.codex/config.toml`을 Read 도구로 읽고 프로파일 테이블을 마크다운으로 출력한다:
|
|
23
|
+
|
|
24
|
+
```
|
|
25
|
+
| 프로파일 | 모델 | Effort |
|
|
26
|
+
|----------|------|--------|
|
|
27
|
+
| fast | gpt-5.3-codex | low |
|
|
28
|
+
| ... | ... | ... |
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
기본 모델(top-level `model`)과 기본 effort도 함께 표시.
|
|
32
|
+
|
|
33
|
+
### Step 2: 작업 선택 (AskUserQuestion)
|
|
34
|
+
|
|
35
|
+
AskUserQuestion으로 메인 메뉴를 제시한다:
|
|
36
|
+
|
|
37
|
+
```
|
|
38
|
+
question: "어떤 작업을 하시겠습니까?"
|
|
39
|
+
header: "작업"
|
|
40
|
+
options:
|
|
41
|
+
- label: "프로파일 모델 변경"
|
|
42
|
+
description: "기존 프로파일의 모델/effort를 수정"
|
|
43
|
+
- label: "기본 모델 변경"
|
|
44
|
+
description: "top-level default 모델/effort 수정"
|
|
45
|
+
- label: "프로파일 추가"
|
|
46
|
+
description: "새 프로파일 생성"
|
|
47
|
+
- label: "프로파일 삭제"
|
|
48
|
+
description: "기존 프로파일 제거"
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
### Step 3: 선택에 따른 세부 플로우
|
|
52
|
+
|
|
53
|
+
#### 프로파일 모델 변경
|
|
54
|
+
|
|
55
|
+
1. AskUserQuestion으로 프로파일 선택 (현재 프로파일 목록에서 2-4개씩 나눠서, 또는 "Other"로 직접 입력)
|
|
56
|
+
2. AskUserQuestion으로 모델 선택:
|
|
57
|
+
```
|
|
58
|
+
question: "모델을 선택하세요"
|
|
59
|
+
header: "Model"
|
|
60
|
+
options:
|
|
61
|
+
- label: "gpt-5.4"
|
|
62
|
+
description: "최신 플래그십"
|
|
63
|
+
- label: "gpt-5.3-codex"
|
|
64
|
+
description: "코딩 특화 (Recommended)"
|
|
65
|
+
- label: "gpt-5.1-codex-mini"
|
|
66
|
+
description: "경량 Spark"
|
|
67
|
+
- label: "o3"
|
|
68
|
+
description: "추론 특화"
|
|
69
|
+
```
|
|
70
|
+
3. AskUserQuestion으로 effort 선택:
|
|
71
|
+
```
|
|
72
|
+
question: "Reasoning Effort 레벨을 선택하세요"
|
|
73
|
+
header: "Effort"
|
|
74
|
+
options:
|
|
75
|
+
- label: "low"
|
|
76
|
+
description: "빠른 응답, 최소 추론"
|
|
77
|
+
- label: "medium"
|
|
78
|
+
description: "균형 잡힌 추론"
|
|
79
|
+
- label: "high"
|
|
80
|
+
description: "깊은 추론"
|
|
81
|
+
- label: "xhigh"
|
|
82
|
+
description: "최대 추론 (느림)"
|
|
83
|
+
```
|
|
84
|
+
4. 변경 diff를 preview로 보여주고 Edit 도구로 config.toml 수정
|
|
85
|
+
|
|
86
|
+
#### 기본 모델 변경
|
|
87
|
+
|
|
88
|
+
위와 동일한 모델/effort 선택 후 top-level `model`, `model_reasoning_effort` 수정.
|
|
89
|
+
|
|
90
|
+
#### 프로파일 추가
|
|
91
|
+
|
|
92
|
+
1. AskUserQuestion(Other)으로 프로파일 이름 입력
|
|
93
|
+
2. 모델 선택 → effort 선택
|
|
94
|
+
3. config.toml 끝에 새 `[profiles.name]` 섹션 추가
|
|
95
|
+
|
|
96
|
+
#### 프로파일 삭제
|
|
97
|
+
|
|
98
|
+
1. 프로파일 선택
|
|
99
|
+
2. AskUserQuestion 확인: "정말 삭제하시겠습니까?"
|
|
100
|
+
3. 해당 섹션 제거
|
|
101
|
+
|
|
102
|
+
### Step 4: 결과 확인
|
|
103
|
+
|
|
104
|
+
변경된 config.toml을 다시 읽어 업데이트된 테이블 표시.
|
|
105
|
+
"계속하시겠습니까?" AskUserQuestion → 반복 또는 종료.
|
|
106
|
+
|
|
107
|
+
## config.toml 수정 규칙
|
|
108
|
+
|
|
109
|
+
- **백업 필수**: 수정 전 원본 내용을 기억해둘 것 (rollback 가능하도록)
|
|
110
|
+
- **프로파일 섹션 형식**: `[profiles.name]\nmodel = "..."\nmodel_reasoning_effort = "..."`
|
|
111
|
+
- **다른 섹션 건드리지 않기**: `[notice]`, `[features]`, `[mcp_servers.*]`, `[projects.*]` 등은 절대 수정 금지
|
|
112
|
+
- **Edit 도구 사용**: old_string → new_string으로 정확한 섹션만 치환
|
|
113
|
+
|
|
114
|
+
## 참조
|
|
115
|
+
|
|
116
|
+
### 알려진 모델
|
|
117
|
+
|
|
118
|
+
| 모델 | 용도 |
|
|
119
|
+
|------|------|
|
|
120
|
+
| gpt-5.4 | 최신 플래그십 |
|
|
121
|
+
| gpt-5.3-codex | 코딩 특화 |
|
|
122
|
+
| gpt-5.1-codex-mini | 경량 Spark |
|
|
123
|
+
| o3 | 추론 특화 |
|
|
124
|
+
| o4-mini | 추론 경량 |
|
|
125
|
+
|
|
126
|
+
### Effort 레벨
|
|
127
|
+
|
|
128
|
+
| 레벨 | 설명 |
|
|
129
|
+
|------|------|
|
|
130
|
+
| low | 빠른 응답, 최소 추론 |
|
|
131
|
+
| medium | 균형 잡힌 추론 |
|
|
132
|
+
| high | 깊은 추론 |
|
|
133
|
+
| xhigh | 최대 추론 (느림) |
|
|
134
|
+
|
|
135
|
+
### config.toml 경로
|
|
136
|
+
|
|
137
|
+
`~/.codex/config.toml` (`$HOME/.codex/config.toml`)
|
|
138
|
+
|
|
139
|
+
## 에러 처리
|
|
140
|
+
|
|
141
|
+
| 상황 | 처리 |
|
|
142
|
+
|------|------|
|
|
143
|
+
| config.toml 미존재 | `/tfx-setup` 안내 |
|
|
144
|
+
| 파싱 실패 | 백업 후 수동 수정 안내 |
|
|
145
|
+
| 중복 프로파일명 | 이미 존재함 알림, 기존 편집으로 전환 |
|
|
146
|
+
|
|
147
|
+
## standalone TUI
|
|
148
|
+
|
|
149
|
+
터미널에서 직접 실행도 가능: `node tui/codex-profile.mjs` (arrow key 방식)
|
|
@@ -1,101 +1,160 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: tfx-setup
|
|
3
|
-
description:
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
-
|
|
58
|
-
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
1
|
+
---
|
|
2
|
+
name: tfx-setup
|
|
3
|
+
description: >
|
|
4
|
+
triflux 초기 설정 및 진단. AskUserQuestion 기반 인터랙티브 위저드로
|
|
5
|
+
파일 동기화, HUD 설정, Codex 프로파일, CLI 진단, MCP 확인을 수행합니다.
|
|
6
|
+
Use when: setup, 설정, 설치, install, 초기화, 처음, 시작, wizard
|
|
7
|
+
triggers:
|
|
8
|
+
- tfx-setup
|
|
9
|
+
argument-hint: "[doctor]"
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# tfx-setup — triflux 초기 설정 위저드
|
|
13
|
+
|
|
14
|
+
> 설치 후 최초 1회 실행 권장. HUD 설정, CLI 확인, 전체 진단을 수행합니다.
|
|
15
|
+
|
|
16
|
+
## 워크플로우
|
|
17
|
+
|
|
18
|
+
### Step 1: 모드 선택 (AskUserQuestion)
|
|
19
|
+
|
|
20
|
+
```
|
|
21
|
+
question: "어떤 설정 모드를 실행하시겠습니까?"
|
|
22
|
+
header: "모드"
|
|
23
|
+
options:
|
|
24
|
+
- label: "전체 설정 (Recommended)"
|
|
25
|
+
description: "5단계 순서 실행: 동기화 → HUD → 프로파일 → CLI → MCP"
|
|
26
|
+
- label: "단계별 선택"
|
|
27
|
+
description: "필요한 단계만 골라서 실행"
|
|
28
|
+
- label: "현재 상태 확인"
|
|
29
|
+
description: "설정 없이 진단만 수행"
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
`doctor` 인자가 있으면 바로 `triflux doctor` 실행.
|
|
33
|
+
|
|
34
|
+
### Step 2: 전체 설정 (5단계)
|
|
35
|
+
|
|
36
|
+
각 단계를 순서대로 실행하며 결과를 보고한다.
|
|
37
|
+
|
|
38
|
+
#### 단계 1: 파일 동기화
|
|
39
|
+
|
|
40
|
+
```bash
|
|
41
|
+
Bash("triflux setup")
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
스크립트/HUD/스킬을 `~/.claude/`에 배포. 결과 표시.
|
|
45
|
+
|
|
46
|
+
#### 단계 2: HUD 설정
|
|
47
|
+
|
|
48
|
+
`~/.claude/settings.json`을 Read 도구로 읽어 `statusLine` 확인.
|
|
49
|
+
|
|
50
|
+
- statusLine이 이미 `hud-qos-status.mjs`를 가리키면 → ✅ 표시
|
|
51
|
+
- statusLine이 없으면 → AskUserQuestion:
|
|
52
|
+
```
|
|
53
|
+
question: "HUD statusLine을 설정하시겠습니까?"
|
|
54
|
+
header: "HUD"
|
|
55
|
+
options:
|
|
56
|
+
- label: "설정 (Recommended)"
|
|
57
|
+
description: "hud-qos-status.mjs를 statusLine으로 등록"
|
|
58
|
+
- label: "건너뛰기"
|
|
59
|
+
description: "나중에 수동 설정"
|
|
60
|
+
```
|
|
61
|
+
- statusLine이 다른 값이면 → AskUserQuestion:
|
|
62
|
+
```
|
|
63
|
+
question: "기존 statusLine을 triflux HUD로 교체하시겠습니까?"
|
|
64
|
+
header: "HUD"
|
|
65
|
+
options:
|
|
66
|
+
- label: "교체"
|
|
67
|
+
description: "기존 statusLine을 triflux HUD로 덮어씀"
|
|
68
|
+
- label: "유지"
|
|
69
|
+
description: "현재 statusLine 유지"
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
설정 시 Edit 도구로 settings.json 수정:
|
|
73
|
+
```json
|
|
74
|
+
{
|
|
75
|
+
"statusLine": {
|
|
76
|
+
"type": "command",
|
|
77
|
+
"command": "\"<NODE_PATH>\" \"<HOME>/.claude/hud/hud-qos-status.mjs\""
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
#### 단계 3: Codex 프로파일
|
|
83
|
+
|
|
84
|
+
`~/.codex/config.toml`을 Read 도구로 읽어 필수 프로파일 존재 여부 확인.
|
|
85
|
+
필수: `codex53_high`, `codex53_xhigh`, `spark53_low`.
|
|
86
|
+
|
|
87
|
+
- 모두 존재 → ✅ 표시
|
|
88
|
+
- 누락 있으면 → AskUserQuestion:
|
|
89
|
+
```
|
|
90
|
+
question: "누락된 Codex 프로파일 N개를 생성하시겠습니까?"
|
|
91
|
+
header: "Profiles"
|
|
92
|
+
options:
|
|
93
|
+
- label: "생성 (Recommended)"
|
|
94
|
+
description: "누락된 프로파일을 config.toml에 추가"
|
|
95
|
+
- label: "건너뛰기"
|
|
96
|
+
description: "나중에 /tfx-profile로 관리"
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
#### 단계 4: CLI 진단
|
|
100
|
+
|
|
101
|
+
`triflux doctor --json`을 Bash로 실행하여 CLI 존재 여부 확인.
|
|
102
|
+
결과를 테이블로 표시.
|
|
103
|
+
|
|
104
|
+
#### 단계 5: MCP 서버 확인
|
|
105
|
+
|
|
106
|
+
`~/.claude/cache/mcp-inventory.json` 존재 여부 + 서버 수 확인.
|
|
107
|
+
없으면 재생성 여부를 AskUserQuestion으로 확인.
|
|
108
|
+
|
|
109
|
+
### Step 3: 단계별 선택
|
|
110
|
+
|
|
111
|
+
AskUserQuestion(multiSelect):
|
|
112
|
+
```
|
|
113
|
+
question: "실행할 단계를 선택하세요"
|
|
114
|
+
header: "단계"
|
|
115
|
+
multiSelect: true
|
|
116
|
+
options:
|
|
117
|
+
- label: "파일 동기화"
|
|
118
|
+
description: "스크립트/HUD/스킬 배포"
|
|
119
|
+
- label: "HUD 설정"
|
|
120
|
+
description: "settings.json statusLine 등록"
|
|
121
|
+
- label: "Codex 프로파일"
|
|
122
|
+
description: "필수 프로파일 생성"
|
|
123
|
+
- label: "CLI + MCP 진단"
|
|
124
|
+
description: "CLI 존재 + MCP 인벤토리 확인"
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
선택된 단계만 순서대로 실행.
|
|
128
|
+
|
|
129
|
+
### Step 4: 결과 요약
|
|
130
|
+
|
|
131
|
+
```
|
|
132
|
+
## tfx-setup 완료
|
|
133
|
+
|
|
134
|
+
| 항목 | 상태 |
|
|
135
|
+
|------|------|
|
|
136
|
+
| 파일 동기화 | ✅ |
|
|
137
|
+
| HUD 설정 | ✅ statusLine 등록됨 |
|
|
138
|
+
| Codex 프로파일 | ✅ 3개 확인 |
|
|
139
|
+
| Codex CLI | ✅ |
|
|
140
|
+
| Gemini CLI | ⚠ 미설치 (선택) |
|
|
141
|
+
| MCP 인벤토리 | ✅ N개 서버 |
|
|
142
|
+
|
|
143
|
+
### 다음 단계
|
|
144
|
+
- Codex 미설치 시: `npm install -g @openai/codex`
|
|
145
|
+
- Gemini 미설치 시: `npm install -g @google/gemini-cli`
|
|
146
|
+
- 세션 재시작하면 HUD가 표시됩니다
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
## 에러 처리
|
|
150
|
+
|
|
151
|
+
| 상황 | 처리 |
|
|
152
|
+
|------|------|
|
|
153
|
+
| `triflux: command not found` | `npm install -g triflux` 안내 |
|
|
154
|
+
| `settings.json` 파싱 실패 | 백업 생성 후 새로 작성 |
|
|
155
|
+
| 기존 statusLine이 다른 HUD | 교체/유지 AskUserQuestion |
|
|
156
|
+
| node.exe 경로에 공백 | 큰따옴표로 감싸기 |
|
|
157
|
+
|
|
158
|
+
## standalone TUI
|
|
159
|
+
|
|
160
|
+
터미널에서 직접 실행도 가능: `node tui/setup.mjs` (arrow key 방식)
|