triflux 8.12.2 → 9.0.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/marketplace.json +2 -2
- package/.claude-plugin/plugin.json +1 -1
- package/bin/triflux.mjs +64 -0
- package/hub/team/backend.mjs +2 -1
- package/hub/team/cli/commands/start/index.mjs +2 -2
- package/hub/team/cli/commands/start/parse-args.mjs +10 -0
- package/hub/workers/delegator-mcp.mjs +2 -5
- package/package.json +1 -1
- package/scripts/cache-buildup.mjs +24 -395
- package/scripts/cache-doctor.mjs +149 -0
- package/scripts/cache-warmup.mjs +514 -0
- package/scripts/cross-review-gate.mjs +180 -0
- package/scripts/cross-review-tracker.mjs +279 -0
- package/scripts/headless-guard.mjs +38 -0
- package/scripts/lib/env-probe.mjs +130 -0
- package/scripts/lib/mcp-filter.mjs +730 -720
- package/scripts/lib/mcp-manifest.mjs +79 -0
- package/scripts/mcp-gateway-config.mjs +104 -7
- package/scripts/mcp-gateway-start.mjs +7 -0
- package/scripts/mcp-gateway-verify.mjs +15 -1
- package/scripts/preflight-cache.mjs +68 -137
- package/scripts/session-spawn-helper.mjs +184 -0
- package/scripts/setup.mjs +7 -8
- package/scripts/tfx-route-worker.mjs +59 -1
- package/skills/merge-worktree/SKILL.md +144 -0
- package/skills/tfx-analysis/SKILL.md +1 -0
- package/skills/tfx-auto/SKILL.md +1 -0
- package/skills/tfx-auto-codex/SKILL.md +1 -0
- package/skills/tfx-autopilot/SKILL.md +1 -2
- package/skills/tfx-codex/SKILL.md +2 -0
- package/skills/tfx-codex-swarm/SKILL.md +62 -18
- package/skills/tfx-codex-swarm/mcp-daemon/start-daemons.ps1 +54 -0
- package/skills/tfx-codex-swarm/mcp-daemon/stop-daemons.ps1 +15 -0
- package/skills/tfx-consensus/SKILL.md +1 -0
- package/skills/tfx-deep-analysis/SKILL.md +1 -0
- package/skills/tfx-deep-plan/SKILL.md +1 -0
- package/skills/tfx-deep-qa/SKILL.md +1 -0
- package/skills/tfx-deep-research/SKILL.md +1 -0
- package/skills/tfx-deep-review/SKILL.md +1 -0
- package/skills/tfx-doctor/SKILL.md +5 -0
- package/skills/tfx-gemini/SKILL.md +1 -0
- package/skills/tfx-hub/SKILL.md +1 -0
- package/skills/tfx-multi/SKILL.md +1 -0
- package/skills/tfx-plan/SKILL.md +1 -0
- package/skills/tfx-qa/SKILL.md +1 -0
- package/skills/tfx-ralph/SKILL.md +2 -5
- package/skills/tfx-research/SKILL.md +1 -0
- package/skills/tfx-review/SKILL.md +2 -0
- package/skills/tfx-setup/SKILL.md +182 -7
|
@@ -14,6 +14,7 @@ argument-hint: "[--depth quick|standard|deep] <리서치 주제>"
|
|
|
14
14
|
|
|
15
15
|
# tfx-deep-research — Multi-Source Deep Research with Tri-CLI Consensus
|
|
16
16
|
|
|
17
|
+
> **Light 버전**: tfx-research. 기본값. 깊이 수정자 없으면 Light 선택.
|
|
17
18
|
> 쿼리 분해 → 3-CLI 독립 병렬 검색 → 교차검증 → 합의 기반 종합 보고서.
|
|
18
19
|
> STORM(Stanford) perspective-guided + GPT-Researcher recursive tree + Tavily deep research pipeline 영감.
|
|
19
20
|
|
|
@@ -87,6 +87,10 @@ Bash("triflux doctor --fix")
|
|
|
87
87
|
| mcp-inventory.json | MCP 서버 인벤토리 |
|
|
88
88
|
| cli-issues.jsonl | CLI 이슈 로그 |
|
|
89
89
|
| triflux-update-check.json | 업데이트 체크 |
|
|
90
|
+
| .omc/cache/codex-skills.json | Codex 스킬 인덱스 |
|
|
91
|
+
| .omc/state/tier-environment.json | Tier 환경 스냅샷 |
|
|
92
|
+
| .omc/cache/project-meta.json | 프로젝트 메타 |
|
|
93
|
+
| .omc/state/search-engines.json | 검색 엔진 상태 |
|
|
90
94
|
|
|
91
95
|
존재하는 캐시 파일 목록과 크기를 테이블로 표시 후 AskUserQuestion:
|
|
92
96
|
|
|
@@ -146,6 +150,7 @@ options:
|
|
|
146
150
|
- 스킬 설치 상태
|
|
147
151
|
- 플러그인 등록 상태
|
|
148
152
|
- MCP 인벤토리 캐시
|
|
153
|
+
- Phase 1 웜업 캐시 무결성 (`node scripts/cache-doctor.mjs`)
|
|
149
154
|
- 잔존 팀(orphan teams) 감지
|
|
150
155
|
|
|
151
156
|
## 에러 처리
|
package/skills/tfx-hub/SKILL.md
CHANGED
|
@@ -11,6 +11,7 @@ argument-hint: "<start|stop|status|자유형 작업 설명>"
|
|
|
11
11
|
|
|
12
12
|
# tfx-hub — MCP 메시지 버스 관리 + 개방형 작업
|
|
13
13
|
|
|
14
|
+
> **인프라**: 다른 스킬이 내부적으로 사용. 직접 호출할 필요 없음.
|
|
14
15
|
> CLI 에이전트(Codex/Gemini/Claude) 간 실시간 메시지 허브를 관리합니다.
|
|
15
16
|
> **커맨드 매칭 + fallthrough**: start/stop/status에 매칭되면 즉시 실행,
|
|
16
17
|
> 매칭 안 되면 **hub 도메인 컨텍스트를 활용한 범용 작업**으로 처리합니다.
|
|
@@ -8,6 +8,7 @@ argument-hint: '"작업 설명" | --agents codex,gemini "작업" | --tmux "작
|
|
|
8
8
|
|
|
9
9
|
# tfx-multi v3 — 파이프라인 기반 멀티-CLI 팀 오케스트레이터
|
|
10
10
|
|
|
11
|
+
> **인프라**: 다른 스킬이 내부적으로 사용. 직접 호출할 필요 없음.
|
|
11
12
|
> Claude Code Native Teams의 Shift+Down 네비게이션을 복원한다.
|
|
12
13
|
> Codex/Gemini 워커마다 최소 프롬프트(~100 토큰)의 슬림 Agent 래퍼를 spawn하여 네비게이션에 등록하고,
|
|
13
14
|
> 실제 작업은 `tfx-route.sh`가 수행한다. task 상태는 `team_task_list`를 truth source로 검증한다.
|
package/skills/tfx-plan/SKILL.md
CHANGED
package/skills/tfx-qa/SKILL.md
CHANGED
|
@@ -2,16 +2,13 @@
|
|
|
2
2
|
name: tfx-ralph
|
|
3
3
|
description: "작업이 완전히 끝날 때까지 멈추지 않고 반복 실행해야 할 때 사용한다. 'ralph', '끝까지 해', '멈추지 마', 'don't stop', '완료될 때까지', '다 될 때까지 계속' 같은 요청에 반드시 사용. 여러 기준을 모두 충족해야 하는 복잡한 구현 작업에 적극 활용."
|
|
4
4
|
triggers:
|
|
5
|
-
- ralph
|
|
6
|
-
- don't stop
|
|
7
|
-
- 끝까지
|
|
8
|
-
- until done
|
|
9
|
-
- 멈추지 마
|
|
5
|
+
- tfx-ralph
|
|
10
6
|
argument-hint: "<완료할 작업 설명>"
|
|
11
7
|
---
|
|
12
8
|
|
|
13
9
|
# tfx-ralph — Alias for tfx-persist
|
|
14
10
|
|
|
11
|
+
> **래퍼**: tfx-persist의 alias. 동일 기능.
|
|
15
12
|
> `tfx-ralph`는 `tfx-persist`의 alias이다. 동일한 Tri-Verified Persistence Loop을 실행한다.
|
|
16
13
|
> The boulder never stops — but it stops being wrong.
|
|
17
14
|
|
|
@@ -11,6 +11,8 @@ argument-hint: "[파일 경로 또는 변경 설명]"
|
|
|
11
11
|
|
|
12
12
|
# tfx-review — Light Code Review
|
|
13
13
|
|
|
14
|
+
> **Deep 버전**: tfx-deep-review. "제대로/꼼꼼히" 수정자로 자동 에스컬레이션.
|
|
15
|
+
> **HARD RULE**: 리뷰 결과를 생성할 때 Claude가 직접 git log/diff를 실행하지 마라. Codex code-reviewer에게 위임하라.
|
|
14
16
|
> Codex 단일 리뷰로 빠른 피드백. 토큰 최소화.
|
|
15
17
|
|
|
16
18
|
## 워크플로우
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
name: tfx-setup
|
|
3
3
|
description: >
|
|
4
4
|
triflux 초기 설정 및 진단. AskUserQuestion 기반 인터랙티브 위저드로
|
|
5
|
-
파일 동기화, HUD 설정, Codex 프로파일, CLI 진단, MCP
|
|
5
|
+
파일 동기화, HUD 설정, Codex 프로파일, CLI 진단, MCP 확인, 검색 MCP 설정을 수행합니다.
|
|
6
6
|
Use when: setup, 설정, 설치, install, 초기화, 처음, 시작, wizard
|
|
7
7
|
triggers:
|
|
8
8
|
- tfx-setup
|
|
@@ -22,7 +22,7 @@ question: "어떤 설정 모드를 실행하시겠습니까?"
|
|
|
22
22
|
header: "모드"
|
|
23
23
|
options:
|
|
24
24
|
- label: "전체 설정 (Recommended)"
|
|
25
|
-
description: "
|
|
25
|
+
description: "6단계 순서 실행: 동기화 → HUD → 프로파일 → CLI → MCP → 검색 MCP"
|
|
26
26
|
- label: "단계별 선택"
|
|
27
27
|
description: "필요한 단계만 골라서 실행"
|
|
28
28
|
- label: "현재 상태 확인"
|
|
@@ -31,7 +31,7 @@ options:
|
|
|
31
31
|
|
|
32
32
|
`doctor` 인자가 있으면 바로 `triflux doctor` 실행.
|
|
33
33
|
|
|
34
|
-
### Step 2: 전체 설정 (
|
|
34
|
+
### Step 2: 전체 설정 (6단계)
|
|
35
35
|
|
|
36
36
|
각 단계를 순서대로 실행하며 결과를 보고한다.
|
|
37
37
|
|
|
@@ -119,10 +119,181 @@ Bash("triflux setup")
|
|
|
119
119
|
`triflux doctor --json`을 Bash로 실행하여 CLI 존재 여부 확인.
|
|
120
120
|
결과를 테이블로 표시.
|
|
121
121
|
|
|
122
|
-
#### 단계 5: MCP 서버
|
|
122
|
+
#### 단계 5: MCP 서버 설정 위저드
|
|
123
123
|
|
|
124
|
-
|
|
125
|
-
|
|
124
|
+
> MCP 서버를 선택적으로 활성화한다. API 키 없는 서버는 건너뛸 수 있다.
|
|
125
|
+
> 선택 결과는 `~/.claude/cache/mcp-enabled.json` 매니페스트에 저장된다.
|
|
126
|
+
> 이후 gateway-start, gateway-config, mcp-filter 모두 이 매니페스트를 참조한다.
|
|
127
|
+
|
|
128
|
+
##### 5-1: 기존 매니페스트 확인
|
|
129
|
+
|
|
130
|
+
Read 도구로 `~/.claude/cache/mcp-enabled.json` 읽기 시도.
|
|
131
|
+
- 존재하면 → 현재 설정 표시 후 AskUserQuestion:
|
|
132
|
+
```
|
|
133
|
+
question: "MCP 서버 설정을 변경하시겠습니까?"
|
|
134
|
+
header: "MCP"
|
|
135
|
+
options:
|
|
136
|
+
- label: "현재 설정 유지"
|
|
137
|
+
description: "활성: {현재 enabled 목록}"
|
|
138
|
+
- label: "다시 설정"
|
|
139
|
+
description: "서버를 다시 선택"
|
|
140
|
+
```
|
|
141
|
+
"현재 설정 유지" 선택 시 → Step 5 완료, 다음 단계로.
|
|
142
|
+
|
|
143
|
+
##### 5-2: Core 서버 안내
|
|
144
|
+
|
|
145
|
+
Core 서버(context7, serena)는 API 키 불필요, 자동 활성화됨을 표시:
|
|
146
|
+
```
|
|
147
|
+
✅ context7 — 라이브러리 문서 조회 (API 키 불필요)
|
|
148
|
+
✅ serena — 시맨틱 코드 분석 (API 키 불필요)
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
##### 5-3: 검색 MCP 선택
|
|
152
|
+
|
|
153
|
+
AskUserQuestion(multiSelect):
|
|
154
|
+
```
|
|
155
|
+
question: "어떤 검색 MCP를 활성화하시겠습니까? (API 키 필요)"
|
|
156
|
+
header: "검색 MCP"
|
|
157
|
+
multiSelect: true
|
|
158
|
+
options:
|
|
159
|
+
- label: "brave-search"
|
|
160
|
+
description: "Brave 웹/뉴스 검색 (BRAVE_API_KEY 필요)"
|
|
161
|
+
- label: "exa"
|
|
162
|
+
description: "코드/리포/학술 검색 (EXA_API_KEY 필요)"
|
|
163
|
+
- label: "tavily"
|
|
164
|
+
description: "리서치/팩트체크 검색 (TAVILY_API_KEY 필요)"
|
|
165
|
+
- label: "없음"
|
|
166
|
+
description: "검색 MCP 사용 안 함 (context7만 사용)"
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
선택된 서버마다 환경변수 존재 여부를 `process.env`로 확인:
|
|
170
|
+
- 환경변수 있음 → ✅ 표시
|
|
171
|
+
- 환경변수 없음 → ⚠️ 경고 + 안내:
|
|
172
|
+
```
|
|
173
|
+
⚠️ exa: EXA_API_KEY가 설정되지 않았습니다.
|
|
174
|
+
→ 환경변수를 설정한 뒤 세션을 재시작하면 활성화됩니다.
|
|
175
|
+
→ 매니페스트에는 활성으로 기록합니다 (키 추가 후 바로 사용 가능).
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
##### 5-4: 통합 MCP 선택
|
|
179
|
+
|
|
180
|
+
AskUserQuestion(multiSelect):
|
|
181
|
+
```
|
|
182
|
+
question: "어떤 통합 MCP를 활성화하시겠습니까?"
|
|
183
|
+
header: "통합 MCP"
|
|
184
|
+
multiSelect: true
|
|
185
|
+
options:
|
|
186
|
+
- label: "jira"
|
|
187
|
+
description: "Jira 이슈/스프린트 관리 (JIRA_API_TOKEN + EMAIL + URL 필요)"
|
|
188
|
+
- label: "notion"
|
|
189
|
+
description: "Notion 페이지 관리 (NOTION_TOKEN 필요)"
|
|
190
|
+
- label: "없음"
|
|
191
|
+
description: "통합 MCP 사용 안 함"
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
notion 선택 시 notion-guest도 함께 활성화.
|
|
195
|
+
환경변수 체크는 5-3과 동일 패턴.
|
|
196
|
+
|
|
197
|
+
##### 5-5: 매니페스트 저장
|
|
198
|
+
|
|
199
|
+
선택된 서버 목록을 수집하여 Bash 도구로 저장:
|
|
200
|
+
```bash
|
|
201
|
+
node -e "
|
|
202
|
+
import { writeManifest } from './scripts/lib/mcp-manifest.mjs';
|
|
203
|
+
writeManifest(['brave-search', 'exa']); // 예시: 선택된 서버
|
|
204
|
+
console.log('Manifest saved');
|
|
205
|
+
"
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
또는 Write 도구로 직접 `~/.claude/cache/mcp-enabled.json` 작성:
|
|
209
|
+
```json
|
|
210
|
+
{
|
|
211
|
+
"version": 1,
|
|
212
|
+
"updatedAt": "2026-03-31T...",
|
|
213
|
+
"enabled": ["context7", "serena", "brave-search", "exa"]
|
|
214
|
+
}
|
|
215
|
+
```
|
|
216
|
+
|
|
217
|
+
##### 5-6: 결과 표시
|
|
218
|
+
|
|
219
|
+
```
|
|
220
|
+
## MCP 서버 설정 완료
|
|
221
|
+
|
|
222
|
+
| 서버 | 상태 | 비고 |
|
|
223
|
+
|------|------|------|
|
|
224
|
+
| context7 | ✅ 활성 | Core (항상 활성) |
|
|
225
|
+
| serena | ✅ 활성 | Core (항상 활성) |
|
|
226
|
+
| brave-search | ✅ 활성 | BRAVE_API_KEY ✅ |
|
|
227
|
+
| exa | ⚠️ 활성 | EXA_API_KEY 미설정 — 키 추가 후 사용 가능 |
|
|
228
|
+
| tavily | ⏭️ 건너뜀 | 사용자 선택 |
|
|
229
|
+
| jira | ⏭️ 건너뜀 | 사용자 선택 |
|
|
230
|
+
| notion | ⏭️ 건너뜀 | 사용자 선택 |
|
|
231
|
+
|
|
232
|
+
💡 나중에 변경: `/tfx-setup` → 단계별 선택 → MCP 설정
|
|
233
|
+
```
|
|
234
|
+
|
|
235
|
+
#### 단계 6: 검색 MCP 설정
|
|
236
|
+
|
|
237
|
+
프로젝트 `.mcp.json`을 Read 도구로 읽어 기존 검색 MCP 서버 확인.
|
|
238
|
+
환경변수 파일(`~/projects/.env`, 프로젝트 `.env`)에서 API 키 자동 감지.
|
|
239
|
+
|
|
240
|
+
감지된 키 상태를 옵션 description에 반영하여 표시 → AskUserQuestion:
|
|
241
|
+
```
|
|
242
|
+
question: "어떤 검색 MCP 서버를 설정하시겠습니까?"
|
|
243
|
+
header: "검색 MCP"
|
|
244
|
+
multiSelect: true
|
|
245
|
+
options:
|
|
246
|
+
- label: "Exa Web Search"
|
|
247
|
+
description: "시맨틱 검색 + 크롤링 (EXA_API_KEY: ✅감지됨/❌미감지)"
|
|
248
|
+
- label: "Brave Search"
|
|
249
|
+
description: "웹/뉴스/이미지 검색 (BRAVE_API_KEY: ✅감지됨/❌미감지)"
|
|
250
|
+
- label: "Tavily Search"
|
|
251
|
+
description: "AI 최적화 검색 (TAVILY_API_KEY: ✅감지됨/❌미감지)"
|
|
252
|
+
- label: "건너뛰기"
|
|
253
|
+
description: "검색 MCP 설정 안 함"
|
|
254
|
+
```
|
|
255
|
+
|
|
256
|
+
"건너뛰기" 선택 시 이 단계 종료.
|
|
257
|
+
|
|
258
|
+
각 선택된 서버에 대해:
|
|
259
|
+
1. API 키가 감지됨 → "감지된 키를 사용합니다" 확인 메시지
|
|
260
|
+
2. API 키 미감지 → AskUserQuestion으로 키 입력 요청:
|
|
261
|
+
```
|
|
262
|
+
question: "{서버명} API 키를 입력하세요 (발급: {URL})"
|
|
263
|
+
header: "API Key"
|
|
264
|
+
```
|
|
265
|
+
빈 입력이면 해당 서버 건너뛰기.
|
|
266
|
+
3. `.mcp.json`에 서버 추가 (Edit 도구). 파일 없으면 Write 도구로 생성.
|
|
267
|
+
|
|
268
|
+
MCP 서버 설정 레지스트리:
|
|
269
|
+
```json
|
|
270
|
+
{
|
|
271
|
+
"exa": {
|
|
272
|
+
"command": "npx",
|
|
273
|
+
"args": ["-y", "exa-mcp-server"],
|
|
274
|
+
"env": { "EXA_API_KEY": "{key}" },
|
|
275
|
+
"keyUrl": "https://exa.ai/dashboard"
|
|
276
|
+
},
|
|
277
|
+
"brave-search": {
|
|
278
|
+
"command": "npx",
|
|
279
|
+
"args": ["-y", "@modelcontextprotocol/server-brave-search"],
|
|
280
|
+
"env": { "BRAVE_API_KEY": "{key}" },
|
|
281
|
+
"keyUrl": "https://brave.com/search/api/"
|
|
282
|
+
},
|
|
283
|
+
"tavily": {
|
|
284
|
+
"command": "npx",
|
|
285
|
+
"args": ["-y", "tavily-mcp@latest"],
|
|
286
|
+
"env": { "TAVILY_API_KEY": "{key}" },
|
|
287
|
+
"keyUrl": "https://app.tavily.com/home"
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
```
|
|
291
|
+
|
|
292
|
+
키 감지 경로 (순서대로 탐색, 첫 번째 매치 사용):
|
|
293
|
+
1. 셸 환경변수 (`$EXA_API_KEY` 등)
|
|
294
|
+
2. `~/projects/.env`
|
|
295
|
+
3. 프로젝트 루트 `.env`
|
|
296
|
+
4. `~/.claude/settings.json` → `env` 섹션
|
|
126
297
|
|
|
127
298
|
### Step 3: 단계별 선택
|
|
128
299
|
|
|
@@ -142,6 +313,8 @@ options:
|
|
|
142
313
|
description: "triflux-profiles.json 생성/확인"
|
|
143
314
|
- label: "CLI + MCP 진단"
|
|
144
315
|
description: "CLI 존재 + MCP 인벤토리 확인"
|
|
316
|
+
- label: "검색 MCP"
|
|
317
|
+
description: "Exa/Brave/Tavily 검색 서버 설정"
|
|
145
318
|
```
|
|
146
319
|
|
|
147
320
|
선택된 단계만 순서대로 실행.
|
|
@@ -159,11 +332,13 @@ options:
|
|
|
159
332
|
| Codex CLI | ✅ |
|
|
160
333
|
| Gemini CLI | ⚠ 미설치 (선택) |
|
|
161
334
|
| MCP 인벤토리 | ✅ N개 서버 |
|
|
335
|
+
| 검색 MCP | ✅ Exa, Tavily / ⏭ Brave (키 없음) |
|
|
162
336
|
|
|
163
337
|
### 다음 단계
|
|
164
338
|
- Codex 미설치 시: `npm install -g @openai/codex`
|
|
165
339
|
- Gemini 미설치 시: `npm install -g @google/gemini-cli`
|
|
166
|
-
-
|
|
340
|
+
- 검색 MCP 추가/변경: `/tfx-setup` → 단계별 선택 → 검색 MCP
|
|
341
|
+
- 세션 재시작하면 HUD + 검색 MCP가 활성화됩니다
|
|
167
342
|
```
|
|
168
343
|
|
|
169
344
|
## 에러 처리
|