triflux 10.3.4 → 10.7.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.
Files changed (329) hide show
  1. package/LICENSE +21 -21
  2. package/bin/tfx-doctor-tui.mjs +1 -1
  3. package/bin/tfx-doctor.mjs +6 -1
  4. package/bin/tfx-profile.mjs +1 -1
  5. package/bin/tfx-setup-tui.mjs +1 -1
  6. package/bin/tfx-setup.mjs +6 -1
  7. package/bin/triflux.mjs +2396 -1140
  8. package/hooks/agent-route-guard.mjs +12 -8
  9. package/hooks/cross-review-tracker.mjs +21 -8
  10. package/hooks/error-context.mjs +19 -7
  11. package/hooks/hook-adaptive-collector.mjs +18 -16
  12. package/hooks/hook-manager.mjs +93 -32
  13. package/hooks/hook-orchestrator.mjs +108 -24
  14. package/hooks/hook-registry.json +11 -0
  15. package/hooks/keyword-rules.json +6 -10
  16. package/hooks/lib/resolve-root.mjs +1 -1
  17. package/hooks/mcp-config-watcher.mjs +6 -2
  18. package/hooks/pipeline-stop.mjs +3 -6
  19. package/hooks/safety-guard.mjs +99 -28
  20. package/hooks/session-start-fast.mjs +143 -0
  21. package/hooks/subagent-verifier.mjs +5 -4
  22. package/hub/account-broker.mjs +256 -60
  23. package/hub/adaptive-diagnostic.mjs +75 -48
  24. package/hub/adaptive-inject.mjs +95 -57
  25. package/hub/adaptive-memory.mjs +156 -42
  26. package/hub/adaptive.mjs +60 -31
  27. package/hub/assign-callbacks.mjs +67 -30
  28. package/hub/bridge.mjs +0 -1
  29. package/hub/cli-adapter-base.mjs +200 -48
  30. package/hub/codex-adapter.mjs +76 -96
  31. package/hub/codex-compat.mjs +3 -3
  32. package/hub/codex-preflight.mjs +63 -37
  33. package/hub/delegator/contracts.mjs +19 -23
  34. package/hub/delegator/index.mjs +3 -3
  35. package/hub/delegator/service.mjs +88 -64
  36. package/hub/delegator/tool-definitions.mjs +5 -5
  37. package/hub/fullcycle.mjs +33 -17
  38. package/hub/gemini-adapter.mjs +69 -94
  39. package/hub/hitl.mjs +89 -30
  40. package/hub/intent.mjs +161 -38
  41. package/hub/lib/cache-guard.mjs +43 -17
  42. package/hub/lib/mcp-response-cache.mjs +66 -32
  43. package/hub/lib/memory-store.mjs +285 -111
  44. package/hub/lib/path-utils.mjs +35 -37
  45. package/hub/lib/process-utils.mjs +106 -37
  46. package/hub/lib/spawn-trace.mjs +527 -0
  47. package/hub/lib/ssh-command.mjs +34 -4
  48. package/hub/lib/ssh-retry.mjs +5 -1
  49. package/hub/lib/uuidv7.mjs +4 -3
  50. package/hub/memory-doctor.mjs +266 -106
  51. package/hub/middleware/request-logger.mjs +61 -34
  52. package/hub/paths.mjs +9 -9
  53. package/hub/pipeline/gates/confidence.mjs +34 -15
  54. package/hub/pipeline/gates/consensus.mjs +27 -15
  55. package/hub/pipeline/gates/index.mjs +7 -3
  56. package/hub/pipeline/gates/selfcheck.mjs +57 -19
  57. package/hub/pipeline/index.mjs +77 -42
  58. package/hub/pipeline/state.mjs +10 -10
  59. package/hub/pipeline/transitions.mjs +40 -23
  60. package/hub/platform.mjs +57 -48
  61. package/hub/promote-penalties.mjs +25 -7
  62. package/hub/quality/deslop.mjs +70 -49
  63. package/hub/research.mjs +32 -25
  64. package/hub/router.mjs +240 -107
  65. package/hub/routing/complexity.mjs +132 -29
  66. package/hub/routing/index.mjs +17 -12
  67. package/hub/routing/q-learning.mjs +76 -28
  68. package/hub/server.mjs +4 -4
  69. package/hub/session-fingerprint.mjs +126 -60
  70. package/hub/state.mjs +84 -43
  71. package/hub/store-adapter.mjs +59 -26
  72. package/hub/store.mjs +356 -153
  73. package/hub/team/agent-map.json +22 -7
  74. package/hub/team/ansi.mjs +186 -122
  75. package/hub/team/backend.mjs +28 -10
  76. package/hub/team/cli/commands/attach.mjs +29 -9
  77. package/hub/team/cli/commands/control.mjs +29 -8
  78. package/hub/team/cli/commands/debug.mjs +32 -11
  79. package/hub/team/cli/commands/focus.mjs +38 -11
  80. package/hub/team/cli/commands/interrupt.mjs +18 -6
  81. package/hub/team/cli/commands/kill.mjs +16 -5
  82. package/hub/team/cli/commands/list.mjs +11 -4
  83. package/hub/team/cli/commands/send.mjs +19 -6
  84. package/hub/team/cli/commands/start/index.mjs +154 -31
  85. package/hub/team/cli/commands/start/parse-args.mjs +38 -11
  86. package/hub/team/cli/commands/start/start-headless.mjs +112 -36
  87. package/hub/team/cli/commands/start/start-in-process.mjs +12 -2
  88. package/hub/team/cli/commands/start/start-mux.mjs +70 -21
  89. package/hub/team/cli/commands/start/start-wt.mjs +29 -12
  90. package/hub/team/cli/commands/status.mjs +43 -14
  91. package/hub/team/cli/commands/stop.mjs +11 -4
  92. package/hub/team/cli/commands/task.mjs +8 -3
  93. package/hub/team/cli/commands/tasks.mjs +1 -1
  94. package/hub/team/cli/index.mjs +2 -2
  95. package/hub/team/cli/manifest.mjs +38 -8
  96. package/hub/team/cli/render.mjs +30 -8
  97. package/hub/team/cli/services/attach-fallback.mjs +31 -11
  98. package/hub/team/cli/services/hub-client.mjs +42 -14
  99. package/hub/team/cli/services/member-selector.mjs +11 -4
  100. package/hub/team/cli/services/native-control.mjs +48 -21
  101. package/hub/team/cli/services/runtime-mode.mjs +2 -1
  102. package/hub/team/cli/services/state-store.mjs +25 -8
  103. package/hub/team/cli/services/task-model.mjs +16 -6
  104. package/hub/team/conductor-mesh-bridge.mjs +24 -23
  105. package/hub/team/conductor.mjs +8 -4
  106. package/hub/team/dashboard-anchor.mjs +4 -5
  107. package/hub/team/dashboard-layout.mjs +3 -1
  108. package/hub/team/dashboard-open.mjs +41 -21
  109. package/hub/team/dashboard.mjs +76 -28
  110. package/hub/team/event-log.mjs +18 -10
  111. package/hub/team/handoff.mjs +31 -15
  112. package/hub/team/headless.mjs +2 -1
  113. package/hub/team/health-probe.mjs +69 -54
  114. package/hub/team/launcher-template.mjs +16 -13
  115. package/hub/team/native-supervisor.mjs +65 -21
  116. package/hub/team/native.mjs +74 -35
  117. package/hub/team/nativeProxy.mjs +184 -113
  118. package/hub/team/notify.mjs +119 -76
  119. package/hub/team/orchestrator.mjs +9 -4
  120. package/hub/team/pane.mjs +12 -7
  121. package/hub/team/process-cleanup.mjs +25 -16
  122. package/hub/team/psmux.mjs +491 -201
  123. package/hub/team/remote-probe.mjs +68 -52
  124. package/hub/team/remote-session.mjs +117 -59
  125. package/hub/team/remote-watcher.mjs +61 -33
  126. package/hub/team/routing.mjs +51 -25
  127. package/hub/team/runtime-strategy.mjs +3 -1
  128. package/hub/team/session.mjs +98 -34
  129. package/hub/team/staleState.mjs +72 -30
  130. package/hub/team/swarm-locks.mjs +15 -13
  131. package/hub/team/swarm-planner.mjs +32 -21
  132. package/hub/team/swarm-reconciler.mjs +48 -23
  133. package/hub/team/tui-lite.mjs +266 -68
  134. package/hub/team/tui-remote-adapter.mjs +14 -10
  135. package/hub/team/tui-viewer.mjs +99 -43
  136. package/hub/team/tui.mjs +708 -271
  137. package/hub/team/worktree-lifecycle.mjs +152 -58
  138. package/hub/team/wt-manager.mjs +24 -14
  139. package/hub/token-mode.mjs +71 -71
  140. package/hub/tray.mjs +66 -23
  141. package/hub/workers/claude-worker.mjs +162 -118
  142. package/hub/workers/codex-mcp.mjs +192 -141
  143. package/hub/workers/delegator-mcp.mjs +507 -333
  144. package/hub/workers/factory.mjs +8 -8
  145. package/hub/workers/gemini-worker.mjs +115 -84
  146. package/hub/workers/interface.mjs +6 -1
  147. package/hub/workers/worker-utils.mjs +21 -14
  148. package/hud/colors.mjs +27 -9
  149. package/hud/constants.mjs +162 -26
  150. package/hud/context-monitor.mjs +82 -41
  151. package/hud/hud-qos-status.mjs +129 -49
  152. package/hud/mission-board.mjs +6 -3
  153. package/hud/providers/claude.mjs +226 -115
  154. package/hud/providers/codex.mjs +62 -22
  155. package/hud/providers/gemini.mjs +168 -56
  156. package/hud/renderers.mjs +384 -119
  157. package/hud/terminal.mjs +101 -31
  158. package/hud/utils.mjs +78 -38
  159. package/mesh/index.mjs +11 -5
  160. package/mesh/mesh-budget.mjs +18 -9
  161. package/mesh/mesh-heartbeat.mjs +1 -1
  162. package/mesh/mesh-queue.mjs +3 -5
  163. package/mesh/mesh-router.mjs +5 -4
  164. package/package.json +2 -1
  165. package/scripts/__tests__/gen-skill-docs.test.mjs +36 -7
  166. package/scripts/__tests__/keyword-detector.test.mjs +77 -28
  167. package/scripts/__tests__/mcp-guard-engine.test.mjs +58 -20
  168. package/scripts/__tests__/remote-spawn-transfer.test.mjs +30 -19
  169. package/scripts/__tests__/remote-spawn.test.mjs +10 -4
  170. package/scripts/__tests__/session-start-fast.test.mjs +36 -0
  171. package/scripts/__tests__/skill-template.test.mjs +98 -50
  172. package/scripts/__tests__/smoke.test.mjs +1 -1
  173. package/scripts/__tests__/spawn-trace.test.mjs +102 -0
  174. package/scripts/__tests__/tfx-doctor-diagnose.test.mjs +48 -0
  175. package/scripts/cache-doctor.mjs +11 -4
  176. package/scripts/cache-warmup.mjs +96 -37
  177. package/scripts/claudemd-sync.mjs +27 -17
  178. package/scripts/codex-gateway-preflight.mjs +52 -37
  179. package/scripts/codex-mcp-gateway-sync.mjs +59 -39
  180. package/scripts/completions/tfx.bash +47 -47
  181. package/scripts/completions/tfx.fish +44 -44
  182. package/scripts/completions/tfx.zsh +83 -83
  183. package/scripts/config-audit.mjs +232 -0
  184. package/scripts/convert-to-tmpl.mjs +54 -0
  185. package/scripts/cross-review-gate.mjs +35 -12
  186. package/scripts/cross-review-tracker.mjs +21 -8
  187. package/scripts/demo.mjs +35 -17
  188. package/scripts/doctor-diagnose.mjs +284 -0
  189. package/scripts/gen-skill-docs.mjs +7 -2
  190. package/scripts/gen-skill-manifest.mjs +2 -1
  191. package/scripts/headless-guard.mjs +86 -48
  192. package/scripts/hub-ensure.mjs +45 -26
  193. package/scripts/keyword-detector.mjs +41 -20
  194. package/scripts/keyword-rules-expander.mjs +47 -30
  195. package/scripts/lib/claudemd-scanner.mjs +6 -1
  196. package/scripts/lib/context.mjs +3 -3
  197. package/scripts/lib/cross-review-utils.mjs +6 -3
  198. package/scripts/lib/env-probe.mjs +47 -28
  199. package/scripts/lib/gemini-profiles.mjs +44 -10
  200. package/scripts/lib/handoff.mjs +33 -17
  201. package/scripts/lib/hook-utils.mjs +8 -6
  202. package/scripts/lib/keyword-rules.mjs +43 -19
  203. package/scripts/lib/logger.mjs +24 -24
  204. package/scripts/lib/mcp-filter.mjs +377 -239
  205. package/scripts/lib/mcp-guard-engine.mjs +194 -79
  206. package/scripts/lib/mcp-manifest.mjs +23 -13
  207. package/scripts/lib/mcp-server-catalog.mjs +300 -63
  208. package/scripts/lib/psmux-info.mjs +11 -6
  209. package/scripts/lib/remote-spawn-transfer.mjs +44 -14
  210. package/scripts/lib/skill-template.mjs +30 -7
  211. package/scripts/mcp-check.mjs +58 -39
  212. package/scripts/mcp-gateway-config.mjs +83 -39
  213. package/scripts/mcp-gateway-ensure.mjs +43 -35
  214. package/scripts/mcp-gateway-integration-test.mjs +70 -58
  215. package/scripts/mcp-gateway-start.mjs +126 -60
  216. package/scripts/mcp-gateway-verify.mjs +24 -22
  217. package/scripts/mcp-safety-guard.mjs +44 -11
  218. package/scripts/notion-read.mjs +199 -84
  219. package/scripts/pack.mjs +94 -89
  220. package/scripts/preflight-cache.mjs +27 -10
  221. package/scripts/preinstall.mjs +42 -13
  222. package/scripts/remote-spawn.mjs +309 -94
  223. package/scripts/run.cjs +8 -5
  224. package/scripts/session-spawn-helper.mjs +130 -39
  225. package/scripts/session-stale-cleanup.mjs +123 -0
  226. package/scripts/setup.mjs +941 -492
  227. package/scripts/test-lock.mjs +20 -7
  228. package/scripts/test-tfx-route-no-claude-native.mjs +16 -12
  229. package/scripts/tfx-batch-stats.mjs +32 -11
  230. package/scripts/tfx-gate-activate.mjs +11 -4
  231. package/scripts/tfx-route-post.mjs +87 -20
  232. package/scripts/tfx-route-worker.mjs +57 -51
  233. package/scripts/tfx-route.sh +41 -124
  234. package/scripts/tmp-cleanup.mjs +21 -7
  235. package/scripts/token-snapshot.mjs +204 -85
  236. package/skills/.omc/state/agent-replay-8f0e10a9-9693-4410-96f5-a6b07e8ed995.jsonl +1 -0
  237. package/skills/.omc/state/idle-notif-cooldown.json +3 -0
  238. package/skills/.omc/state/last-tool-error.json +7 -0
  239. package/skills/.omc/state/subagent-tracking.json +7 -0
  240. package/skills/_templates/base.md +1 -6
  241. package/skills/merge-worktree/SKILL.md.tmpl +144 -0
  242. package/skills/shared/telemetry-segment.md +6 -0
  243. package/skills/star-prompt/SKILL.md.tmpl +222 -0
  244. package/skills/tfx-analysis/SKILL.md.tmpl +107 -0
  245. package/skills/tfx-analysis/skill.json +1 -6
  246. package/skills/tfx-auto/SKILL.md +1 -0
  247. package/skills/tfx-auto-codex/SKILL.md.tmpl +106 -0
  248. package/skills/tfx-auto-codex/skill.json +1 -3
  249. package/skills/tfx-autopilot/SKILL.md.tmpl +116 -0
  250. package/skills/tfx-autopilot/skill.json +1 -5
  251. package/skills/tfx-autoresearch/SKILL.md.tmpl +136 -0
  252. package/skills/tfx-autoroute/SKILL.md.tmpl +189 -0
  253. package/skills/tfx-autoroute/skill.json +1 -7
  254. package/skills/tfx-codex/SKILL.md +1 -0
  255. package/skills/tfx-codex/skill.json +1 -3
  256. package/skills/tfx-codex-swarm/SKILL.md.tmpl +16 -0
  257. package/skills/tfx-codex-swarm/evals/evals.json +1 -1
  258. package/skills/tfx-codex-swarm/skill.json +1 -4
  259. package/skills/tfx-codex-swarm-workspace/iteration-1/benchmark.json +54 -12
  260. package/skills/tfx-codex-swarm-workspace/iteration-1/full-swarm-all-prds/with_skill/grading.json +35 -7
  261. package/skills/tfx-codex-swarm-workspace/iteration-1/full-swarm-all-prds/without_skill/grading.json +35 -7
  262. package/skills/tfx-codex-swarm-workspace/iteration-1/implicit-swarm-no-keywords/with_skill/grading.json +25 -5
  263. package/skills/tfx-codex-swarm-workspace/iteration-1/implicit-swarm-no-keywords/without_skill/grading.json +25 -5
  264. package/skills/tfx-codex-swarm-workspace/iteration-1/selective-spawn-with-override/with_skill/grading.json +20 -4
  265. package/skills/tfx-codex-swarm-workspace/iteration-1/selective-spawn-with-override/without_skill/grading.json +16 -4
  266. package/skills/tfx-consensus/SKILL.md.tmpl +146 -0
  267. package/skills/tfx-debate/SKILL.md.tmpl +192 -0
  268. package/skills/tfx-debate/skill.json +1 -7
  269. package/skills/tfx-deep-analysis/SKILL.md.tmpl +228 -0
  270. package/skills/tfx-deep-analysis/skill.json +1 -5
  271. package/skills/tfx-deep-interview/SKILL.md.tmpl +203 -0
  272. package/skills/tfx-deep-plan/SKILL.md.tmpl +282 -0
  273. package/skills/tfx-deep-qa/SKILL.md.tmpl +165 -0
  274. package/skills/tfx-deep-qa/skill.json +1 -6
  275. package/skills/tfx-deep-research/SKILL.md.tmpl +217 -0
  276. package/skills/tfx-deep-review/SKILL.md.tmpl +179 -0
  277. package/skills/tfx-doctor/SKILL.md +21 -0
  278. package/skills/tfx-doctor/SKILL.md.tmpl +172 -0
  279. package/skills/tfx-doctor/skill.json +1 -3
  280. package/skills/tfx-find/SKILL.md +1 -0
  281. package/skills/tfx-forge/SKILL.md.tmpl +187 -0
  282. package/skills/tfx-fullcycle/SKILL.md.tmpl +286 -0
  283. package/skills/tfx-fullcycle/skill.json +1 -6
  284. package/skills/tfx-gemini/SKILL.md.tmpl +91 -0
  285. package/skills/tfx-gemini/skill.json +1 -3
  286. package/skills/tfx-hooks/SKILL.md.tmpl +216 -0
  287. package/skills/tfx-hooks/skill.json +1 -3
  288. package/skills/tfx-hub/SKILL.md.tmpl +212 -0
  289. package/skills/tfx-hub/skill.json +1 -3
  290. package/skills/tfx-index/SKILL.md +1 -0
  291. package/skills/tfx-index/skill.json +1 -6
  292. package/skills/tfx-interview/SKILL.md.tmpl +285 -0
  293. package/skills/tfx-multi/SKILL.md.tmpl +183 -0
  294. package/skills/tfx-multi/skill.json +1 -3
  295. package/skills/tfx-panel/SKILL.md.tmpl +189 -0
  296. package/skills/tfx-panel/skill.json +1 -7
  297. package/skills/tfx-persist/SKILL.md.tmpl +270 -0
  298. package/skills/tfx-persist/skill.json +1 -7
  299. package/skills/tfx-plan/SKILL.md +1 -0
  300. package/skills/tfx-plan/skill.json +1 -6
  301. package/skills/tfx-profile/SKILL.md.tmpl +239 -0
  302. package/skills/tfx-profile/skill.json +1 -3
  303. package/skills/tfx-prune/SKILL.md.tmpl +200 -0
  304. package/skills/tfx-prune/skill.json +1 -7
  305. package/skills/tfx-psmux-rules/SKILL.md.tmpl +326 -0
  306. package/skills/tfx-psmux-rules/skill.json +1 -4
  307. package/skills/tfx-qa/SKILL.md +1 -0
  308. package/skills/tfx-qa/skill.json +1 -6
  309. package/skills/tfx-ralph/SKILL.md.tmpl +28 -0
  310. package/skills/tfx-ralph/skill.json +1 -4
  311. package/skills/tfx-remote-setup/SKILL.md.tmpl +576 -0
  312. package/skills/tfx-remote-setup/skill.json +1 -3
  313. package/skills/tfx-remote-spawn/SKILL.md.tmpl +263 -0
  314. package/skills/tfx-remote-spawn/references/hosts.json +16 -0
  315. package/skills/tfx-remote-spawn/skill.json +1 -4
  316. package/skills/tfx-research/SKILL.md +1 -0
  317. package/skills/tfx-review/SKILL.md +1 -0
  318. package/skills/tfx-review/skill.json +1 -6
  319. package/skills/tfx-setup/SKILL.md.tmpl +504 -0
  320. package/skills/tfx-setup/skill.json +1 -3
  321. package/skills/tfx-swarm/SKILL.md +22 -0
  322. package/skills/tfx-swarm/SKILL.md.tmpl +218 -0
  323. package/tui/codex-profile.mjs +88 -33
  324. package/tui/core.mjs +45 -15
  325. package/tui/doctor.mjs +75 -28
  326. package/tui/gemini-profile.mjs +74 -29
  327. package/tui/monitor-data.mjs +8 -4
  328. package/tui/monitor.mjs +71 -27
  329. package/tui/setup.mjs +133 -42
@@ -0,0 +1,217 @@
1
+ ---
2
+ internal: true
3
+ name: tfx-deep-research
4
+ description: "기술 비교, 아키텍처 조사, 경쟁사 분석 등 깊이 있는 리서치가 필요할 때 사용한다. '심층 조사', '자세히 알아봐', 'deep research', '전면 리서치', '비교 분석 보고서', '종합 리서치' 같은 요청에 반드시 사용. 단순 검색이 아닌 멀티소스 교차검증이 필요한 리서치에 적극 활용."
5
+ triggers:
6
+ - deep research
7
+ - 딥 리서치
8
+ - 심층 리서치
9
+ - deep-research
10
+ - thorough research
11
+ - 깊이 조사
12
+ - 전면 리서치
13
+ argument-hint: "[--depth quick|standard|deep] <리서치 주제>"
14
+ ---
15
+
16
+ # {{SKILL_NAME}} — Multi-Source Deep Research with Tri-CLI Consensus
17
+
18
+ > **ARGUMENTS 처리**: 이 스킬이 `ARGUMENTS: <값>`과 함께 호출되면, 해당 값을 사용자 입력으로 취급하여
19
+ > 워크플로우의 첫 단계 입력으로 사용한다. ARGUMENTS가 비어있거나 없으면 기존 절차대로 사용자에게 입력을 요청한다.
20
+
21
+
22
+ > **Light 버전**: tfx-research. 기본값. 깊이 수정자 없으면 Light 선택.
23
+ > 쿼리 분해 → 3-CLI 독립 병렬 검색 → 교차검증 → 합의 기반 종합 보고서.
24
+ > STORM(Stanford) perspective-guided + GPT-Researcher recursive tree + Tavily deep research pipeline 영감.
25
+
26
+ ## 용도
27
+
28
+ - 기술 선택 전 심층 조사
29
+ - 경쟁사/대안 분석
30
+ - 새 도메인 학습을 위한 종합 리서치
31
+ - 아키텍처 결정 근거 수집
32
+ - 학술/산업 동향 파악
33
+
34
+ ## HARD RULES
35
+
36
+ > headless-guard가 이 규칙 위반을 **자동 차단**한다. 우회 불가.
37
+
38
+ 1. **`codex exec` / `gemini -p` 직접 호출 절대 금지**
39
+ 2. Codex·Gemini → `Bash("tfx multi --teammate-mode headless --auto-attach --dashboard --assign 'cli:프롬프트:역할' --timeout 600")` **만** 사용
40
+ 3. Claude → `Agent(run_in_background=true)`
41
+ 4. Bash + Agent를 같은 메시지에서 동시 호출하여 병렬 실행
42
+
43
+ ## MODEL ROLES
44
+
45
+ | CLI | MCP | 관점 |
46
+ |-----|-----|------|
47
+ | Claude | Exa (neural semantic) | 학술/기술 깊이 (논문, 공식 문서, 벤치마크) |
48
+ | Codex | Brave Search | 실용/구현/산업 사례 중심 |
49
+ | Gemini | Tavily | 비용/운영/DX(개발자 경험) 중심 |
50
+
51
+ ## Depth 모드
52
+
53
+ | 모드 | 서브쿼리 | 소스/쿼리 | 라운드 | 토큰 | 시간 |
54
+ |------|---------|----------|--------|------|------|
55
+ | quick | 3개 | 2 | 1 | ~20K | 2-3분 |
56
+ | standard | 5개 | 3 | 1-2 | ~40K | 5-8분 |
57
+ | deep | 8-10개 | 5 | 2-3 | ~80K | 10-15분 |
58
+
59
+ 기본값: standard
60
+
61
+ ## EXECUTION STEPS
62
+
63
+ ### Pre-Phase: Depth 선택
64
+
65
+ `--depth` 플래그가 지정되지 않은 경우, AskUserQuestion으로 depth를 선택받아라:
66
+
67
+ ```
68
+ AskUserQuestion:
69
+ "리서치 깊이를 선택하세요:"
70
+ 1. quick (3 서브쿼리, ~20K 토큰, 2-3분)
71
+ 2. standard (5 서브쿼리, ~40K 토큰, 5-8분) [기본]
72
+ 3. deep (8-10 서브쿼리, ~80K 토큰, 10-15분)
73
+ ```
74
+
75
+ 사용자가 빈 응답을 보내면 기본값 `standard`를 적용하라.
76
+
77
+ ### Step 1: 주제 분석 및 쿼리 분해
78
+
79
+ Claude Opus로 주제를 분석하고 서브쿼리로 분해하라:
80
+
81
+ - depth에 따라 서브쿼리 수를 결정한다 (quick=3, standard=5, deep=8-10)
82
+ - 각 서브쿼리에 관점(학술/기술, 실용/산업, 비용/운영)을 매핑한다
83
+ - sub_queries 목록과 perspectives 목록을 내부적으로 보유한다
84
+
85
+ ### Step 2: 3-CLI 독립 병렬 검색 (Anti-Herding)
86
+
87
+ **아래 2개 도구를 반드시 같은 응답에서 동시에 호출하라.**
88
+
89
+ Claude Agent를 백그라운드로 실행하라:
90
+
91
+ ```
92
+ Agent(
93
+ subagent_type="claude",
94
+ model="opus",
95
+ run_in_background=true,
96
+ prompt="다음 서브쿼리를 Exa web_search_exa로 검색하라.
97
+ 서브쿼리 목록: {sub_queries}
98
+ 관점: 학술/기술 깊이 (논문, 공식 문서, 벤치마크)
99
+ 각 쿼리에서 category='research paper' 우선, highlights=true, numResults=5로 검색하라.
100
+ 각 결과의 제목, URL, 핵심 내용을 추출하여 구조화하여 반환하라."
101
+ )
102
+ ```
103
+
104
+ Codex와 Gemini를 headless dispatch로 동시에 실행하라:
105
+
106
+ ```
107
+ Bash("tfx multi --teammate-mode headless --auto-attach --dashboard \
108
+ --assign 'codex:다음 서브쿼리를 Brave Search로 검색하고 결과를 종합하라. 서브쿼리 목록: {sub_queries}. 관점: 실용/구현/산업 사례 중심. brave_web_search와 brave_news_search를 활용하고, freshness=pw로 최신 결과를 우선하라. 각 쿼리당 상위 5개 결과의 제목, URL, 핵심 내용을 구조화하여 반환하라.:researcher' \
109
+ --assign 'gemini:다음 서브쿼리를 Tavily로 검색하라. 서브쿼리 목록: {sub_queries}. 관점: 비용/운영/DX(개발자 경험) 중심. tavily_search를 search_depth=advanced, max_results=5, include_raw_content=false로 호출하라. 각 결과를 구조화하여 제목, URL, 핵심 내용을 반환하라.:researcher' \
110
+ --timeout 600")
111
+ ```
112
+
113
+ ### Step 3: 결과 수집 및 교차검증
114
+
115
+ 3개 CLI 결과가 모두 수집되면 다음 기준으로 교차검증하라:
116
+
117
+ 1. 사실 일치: 3개 소스가 동일 사실을 보고하는가
118
+ 2. 추천 일치: 동일 기술/접근법을 추천하는가
119
+ 3. 수치 일치: 벤치마크, 가격, 성능 수치가 일치하는가
120
+ 4. 리스크 일치: 동일 위험을 식별하는가
121
+
122
+ 소스 신뢰도를 다음 가중치로 평가하라:
123
+ - 공식 문서/벤치마크 → weight 1.0
124
+ - 학술 논문 → weight 0.9
125
+ - 신뢰 블로그 (engineering blog) → weight 0.7
126
+ - 일반 블로그/포럼 → weight 0.5
127
+ - 날짜 가중: 6개월 이내 ×1.0, 1년 이내 ×0.8, 2년 이내 ×0.5
128
+
129
+ ### Step 4: 합의 종합 보고서 생성
130
+
131
+ Claude Opus가 교차검증된 결과를 종합하여 다음 구조로 최종 보고서를 작성하라:
132
+
133
+ ```markdown
134
+ # Deep Research Report: {topic}
135
+ **Date**: {date} | **Depth**: {depth} | **Consensus Score**: {score}%
136
+ **Sources**: {total_sources}개 | **Sub-queries**: {count}개
137
+
138
+ ## Executive Summary
139
+ {3-5줄 핵심 요약}
140
+
141
+ ## 핵심 발견사항 (Consensus Items)
142
+ ### 1. {finding_1} — 합의도: {3/3 또는 2/3}
143
+ {상세 내용 + 근거 + 출처}
144
+
145
+ ### 2. {finding_2}
146
+ ...
147
+
148
+ ## 비교 분석
149
+ | 항목 | 옵션A | 옵션B | 옵션C |
150
+ |------|-------|-------|-------|
151
+ | 성능 | ... | ... | ... |
152
+ | 비용 | ... | ... | ... |
153
+ | 운영 | ... | ... | ... |
154
+
155
+ ## 미합의 사항 (Disputed Items)
156
+ - {항목}: Claude는 X, Codex는 Y, Gemini는 Z — 이유: ...
157
+
158
+ ## 추천
159
+ {교차검증된 최종 추천 + 조건부 판단 기준}
160
+
161
+ ## 소스 목록
162
+ 1. [{title}]({url}) — 신뢰도: {score} — 사용 MCP: {exa|brave|tavily}
163
+ ...
164
+ ```
165
+
166
+ ### Step 5: Recursive Depth (deep 모드 전용)
167
+
168
+ deep 모드에서 Phase 3 교차검증 중 중요 하위 주제가 발견되면 재귀적으로 Step 2-4를 반복하라:
169
+
170
+ - 최대 3개 하위 주제까지 재귀 실행한다
171
+ - 각 재귀 결과를 메인 보고서에 병합한다
172
+ - 재귀 실행도 반드시 Agent + Bash 동시 호출 패턴을 사용한다
173
+
174
+ ## ERROR RECOVERY
175
+
176
+ - Codex 또는 Gemini 결과가 없으면: 해당 CLI 없이 2개 소스로 교차검증을 진행하고 보고서에 누락 CLI를 명시하라
177
+ - tfx multi 명령이 실패하면: 오류 메시지를 그대로 출력하고 재시도 1회 후 실패를 사용자에게 보고하라
178
+ - Agent 결과가 없으면: Claude Exa 검색 없이 나머지 2개 소스로 진행하라
179
+
180
+ ## TOKEN BUDGET
181
+
182
+ | 단계 | quick | standard | deep |
183
+ |------|-------|----------|------|
184
+ | Step 1 (분해) | 1K | 2K | 3K |
185
+ | Step 2 (3x검색) | 9K | 18K | 30K |
186
+ | Step 3 (교차검증) | 3K | 5K | 8K |
187
+ | Step 4 (보고서) | 5K | 10K | 15K |
188
+ | Step 5 (재귀) | — | — | 24K |
189
+ | **총합** | **~18K** | **~35K** | **~80K** |
190
+
191
+ ## MCP 활용 전략 (Exa/Brave/Tavily 리버스엔지니어링 기반)
192
+
193
+ ### Exa 최적 활용
194
+ - `type: "auto"` — neural+keyword 하이브리드
195
+ - `category: "research paper"` — 학술 검색 시
196
+ - `highlights: true, text.maxCharacters: 300` — 토큰 효율 핵심
197
+ - `includeDomains` — 신뢰 도메인 필터링
198
+
199
+ ### Brave 최적 활용
200
+ - `brave_news_search` — 최신 동향/뉴스
201
+ - `freshness: "pw"` (past week) — 최신성 보장
202
+ - `result_filter: "web"` — 불필요한 결과 방지
203
+ - 독립 인덱스 → Google/Bing과 다른 결과
204
+
205
+ ### Tavily 최적 활용
206
+ - `tavily_search` — 빠른 범용 검색
207
+ - `include_raw_content: false` — 토큰 절약
208
+ - `max_results: 5` — 적정 결과 수
209
+ - `search_depth: "advanced"` — standard 모드 이상
210
+
211
+ ## 사용 예
212
+
213
+ ```
214
+ /tfx-deep-research "2026 실시간 데이터 파이프라인 아키텍처 비교"
215
+ /tfx-deep-research --depth deep "Claude Code vs Cursor vs Windsurf 멀티에이전트 지원 비교"
216
+ /tfx-deep-research --depth quick "pnpm vs bun vs npm 2026 벤치마크"
217
+ ```
@@ -0,0 +1,179 @@
1
+ ---
2
+ internal: true
3
+ name: tfx-deep-review
4
+ description: "철저한 코드 리뷰가 필요할 때 사용한다. '꼼꼼히 리뷰', 'deep review', '심층 리뷰', '보안까지 리뷰', '다각도 리뷰', '중요한 변경이라 제대로 봐줘' 같은 요청에 사용. 보안/성능/가독성 3관점 독립 검증이 필요한 중요 코드 변경에 적극 활용."
5
+ triggers:
6
+ - deep review
7
+ - 심층 리뷰
8
+ - multi review
9
+ - deep-review
10
+ - 철저한 리뷰
11
+ argument-hint: "[파일 경로 또는 변경 설명]"
12
+ ---
13
+
14
+ # {{SKILL_NAME}} — Tri-CLI Deep Code Review
15
+
16
+ > **ARGUMENTS 처리**: 이 스킬이 `ARGUMENTS: <값>`과 함께 호출되면, 해당 값을 사용자 입력으로 취급하여
17
+ > 워크플로우의 첫 단계 입력으로 사용한다. ARGUMENTS가 비어있거나 없으면 기존 절차대로 사용자에게 입력을 요청한다.
18
+
19
+
20
+ > **Light 버전**: tfx-review. 기본값. 깊이 수정자 없으면 Light 선택.
21
+ > 3-CLI 독립 리뷰 → 교차검증 → 2+ 합의 항목만 보고. Diffray + Calimero 영감.
22
+
23
+ ## 핵심 원리
24
+
25
+ **Anti-Herding**: Round 1에서 3개 CLI가 서로의 결과를 보지 않고 독립 리뷰.
26
+ **Consensus Only**: 2개 이상 CLI가 동일 이슈를 지적한 항목만 최종 보고 → false-positive 87% 감소.
27
+
28
+ ## 전제조건 프로브 및 Tier Degradation
29
+
30
+ > **진입 즉시 실행** — 10초 내 가시적 출력을 보장한다. 빈 stdout + exit 0 **금지**.
31
+
32
+ ### 환경 프로브
33
+
34
+ 워크플로우 진입 전, 아래 프로브를 실행하여 가용 환경을 감지한다:
35
+
36
+ ```bash
37
+ psmux --version 2>/dev/null && \
38
+ curl -sf http://127.0.0.1:27888/status >/dev/null && \
39
+ codex --version 2>/dev/null && \
40
+ gemini --version 2>/dev/null
41
+ ```
42
+
43
+ ### Tier 판정
44
+
45
+ | Tier | 조건 | 실행 방식 |
46
+ |------|------|----------|
47
+ | **Tier 1** | psmux + Hub + Codex + Gemini 전부 정상 | 기존 headless multi (변경 없음) |
48
+ | **Tier 2** | 일부 CLI만 가용 (Codex 또는 Gemini 중 하나) | 가용 CLI + Claude Agent 조합 |
49
+ | **Tier 3** | headless 불가 또는 `claude -p` one-shot | Claude Agent only |
50
+
51
+ ```
52
+ IF claude -p (one-shot 모드):
53
+ → Tier 3 즉시 fallback
54
+
55
+ IF psmux 없음 OR Hub 미응답:
56
+ → Tier 3
57
+
58
+ IF Codex 없음 AND Gemini 없음:
59
+ → Tier 3
60
+
61
+ IF Codex 없음 OR Gemini 없음:
62
+ → Tier 2
63
+
64
+ ELSE:
65
+ → Tier 1
66
+ ```
67
+
68
+ ### Tier 3 진입 시 필수 출력
69
+
70
+ ```
71
+ ⚠ [Tier 3] headless multi 환경 미충족 — single-model 모드로 실행합니다 (consensus 미적용)
72
+ 누락: {missing_components}
73
+ 권장: psmux, Hub, Codex CLI, Gemini CLI 설치 후 재실행
74
+ ```
75
+
76
+ Tier 3에서는 모든 headless dispatch(`tfx multi ...`)를 **Claude Agent**(subagent)로 대체한다.
77
+ Tier 2에서는 누락된 CLI만 Claude Agent로 대체한다.
78
+
79
+ ## HARD RULES
80
+
81
+ > headless-guard가 이 규칙 위반을 **자동 차단**한다. 우회 불가.
82
+
83
+ 1. **`codex exec` / `gemini -p` 직접 호출 절대 금지**
84
+ 2. Codex·Gemini → `Bash("tfx multi --teammate-mode headless --auto-attach --dashboard --assign 'cli:프롬프트:역할' --timeout 600")` **만** 사용
85
+ 3. Claude → `Agent(run_in_background=true)`
86
+ 4. Bash + Agent를 같은 메시지에서 동시 호출하여 병렬 실행
87
+
88
+ ## MODEL ROLES
89
+
90
+ | CLI | 역할 | 관점 |
91
+ |-----|------|------|
92
+ | Claude Opus | 로직+아키텍처 | 로직 결함, 아키텍처 위반, 설계 패턴 |
93
+ | Codex | 보안+성능 | OWASP Top 10, O(n²) 패턴, 누락된 에러 핸들링 |
94
+ | Gemini | 가독성+DX | 네이밍 컨벤션, 가독성, 주석 필요성, 타입 안전성 |
95
+
96
+ ## EXECUTION STEPS
97
+
98
+ ### Step 1: 리뷰 대상 수집
99
+
100
+ `git diff` (staged + unstaged) 또는 사용자 지정 파일을 수집한다.
101
+
102
+ ### Step 2: 3-CLI 독립 리뷰 — 아래 2개 도구를 반드시 같은 응답에서 동시에 호출하라.
103
+
104
+ **Claude Agent (로직+아키텍처):**
105
+ ```
106
+ Agent(
107
+ subagent_type="oh-my-claudecode:code-reviewer",
108
+ model="opus",
109
+ run_in_background=true,
110
+ name="review-logic",
111
+ description="로직 결함 및 아키텍처 위반 독립 리뷰",
112
+ prompt="코드 리뷰어로서 로직/아키텍처 관점에서 이 코드를 분석하라. 로직 결함, 아키텍처 위반, 설계 패턴 문제를 찾아라. JSON으로 응답하라: { findings: [{ id, file, line, severity, category, description, suggestion }] }"
113
+ )
114
+ ```
115
+
116
+ **Codex + Gemini headless dispatch (보안+성능+가독성):**
117
+ ```
118
+ Bash("tfx multi --teammate-mode headless --auto-attach --dashboard --assign 'codex:보안/성능 전문가로서 이 코드를 분석하라. OWASP Top 10 취약점을 확인하라. O(n²) 이상의 성능 병목을 찾아라. 누락된 에러 핸들링을 지적하라. JSON으로 응답하라: { findings: [{ id, file, line, severity, category, description, suggestion }] }:reviewer' --assign 'gemini:코드 품질 전문가로서 이 코드를 분석하라. 가독성과 네이밍 컨벤션을 평가하라. 주석이 필요한 복잡한 로직을 식별하라. 타입 안전성 문제를 찾아라. 개발자 경험(DX)을 저해하는 패턴을 지적하라. JSON으로 응답하라: { findings: [{ id, file, line, severity, category, description, suggestion }] }:reviewer' --timeout 600")
119
+ ```
120
+
121
+ ### Step 3: Consensus Scoring
122
+
123
+ 모든 findings를 수집하여 유사도를 비교한다:
124
+ - 동일 파일+라인±5 + 유사 카테고리 → 동일 이슈로 간주
125
+ - 3/3 합의 → severity 유지
126
+ - 2/3 합의 → severity 유지, 반대 의견 첨부
127
+ - 1/3만 지적 → UNVERIFIED 표시 (참고용, 별도 섹션)
128
+
129
+ `consensus_score = consensus_items / total_unique_items × 100`
130
+
131
+ ### Step 4: 종합 보고서 작성
132
+
133
+ 아래 형식으로 보고서를 출력한다:
134
+
135
+ ```markdown
136
+ ## Deep Code Review: {target}
137
+ **Consensus Score**: {score}% | **Reviewers**: Claude/Codex/Gemini
138
+
139
+ ### Critical (3/3 합의)
140
+ - [C1] `{file}:{line}` — {description}
141
+ - Claude: {detail} | Codex: {detail} | Gemini: {detail}
142
+ - **Fix**: {suggestion}
143
+
144
+ ### High (2/3 합의)
145
+ - [H1] `{file}:{line}` — {description}
146
+ - 합의: {agreers} | 반대: {dissenter}: "{reason}"
147
+
148
+ ### Verified Medium
149
+ - ...
150
+
151
+ ### Unverified (1/3만 지적, 참고용)
152
+ - [U1] `{file}:{line}` — {description} (by {single_cli})
153
+
154
+ ### 통계
155
+ | CLI | 발견 수 | 합의 기여율 |
156
+ |-----|---------|------------|
157
+ | Claude | {n} | {%} |
158
+ | Codex | {n} | {%} |
159
+ | Gemini | {n} | {%} |
160
+ ```
161
+
162
+ ## ERROR RECOVERY
163
+
164
+ | 오류 | 조치 |
165
+ |------|------|
166
+ | headless dispatch 타임아웃 | `--timeout` 값을 900으로 올려 재시도 |
167
+ | Agent 결과 미수신 | Step 2를 Agent만 단독 재실행 |
168
+ | consensus 0% | 대상 범위가 너무 넓음 — 파일 단위로 분할 후 재실행 |
169
+ | tfx multi 명령 실패 | `tfx status`로 teammate 연결 상태 확인 |
170
+
171
+ ## 토큰 예산
172
+
173
+ | 단계 | 토큰 |
174
+ |------|------|
175
+ | Step 1 (수집) | ~1K |
176
+ | Step 2 (3x 독립 리뷰) | ~15K |
177
+ | Step 3 (Consensus) | ~3K |
178
+ | Step 4 (보고) | ~3K |
179
+ | **총합** | **~22K** |
@@ -27,6 +27,8 @@ options:
27
27
  description: "읽기 전용 전체 검사 — 아무것도 수정하지 않음"
28
28
  - label: "수정 (Fix)"
29
29
  description: "파일 동기화 + 캐시 정리 후 진단 실행"
30
+ - label: "보안 감사 (Audit)"
31
+ description: "settings.json, CLAUDE.md, MCP, 훅 설정의 보안/성능 정적 분석"
30
32
  - label: "캐시 관리 (Cache)"
31
33
  description: "캐시 파일별 상태 조회, 선택적 삭제"
32
34
  - label: "전체 초기화 (Reset)"
@@ -66,6 +68,25 @@ options:
66
68
  description: "수정 없이 결과만 확인"
67
69
  ```
68
70
 
71
+ #### 보안 감사 모드
72
+
73
+ ```bash
74
+ Bash("triflux doctor --audit")
75
+ ```
76
+
77
+ 4개 카테고리를 정적 분석:
78
+
79
+ | 카테고리 | 검사 항목 |
80
+ |----------|-----------|
81
+ | settings | 권한 모드, env 시크릿 패턴, 훅 timeout |
82
+ | claude-md | 시크릿 노출, CLAUDE.md 크기 (>3000토큰 경고) |
83
+ | mcp | 서버 수 (>10), stdio 수, 위험 명령 패턴 |
84
+ | hooks | blocking 훅 수, 외부 훅, 위험 명령 패턴 |
85
+
86
+ 심각도: critical (즉시 수정), warn (검토 필요), info (참고)
87
+
88
+ JSON 출력: `Bash("triflux doctor --audit --json")`
89
+
69
90
  #### 수정 모드
70
91
 
71
92
  ```bash
@@ -0,0 +1,172 @@
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
+ # {{SKILL_NAME}} — 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
+ | .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 | 검색 엔진 상태 |
94
+
95
+ 존재하는 캐시 파일 목록과 크기를 테이블로 표시 후 AskUserQuestion:
96
+
97
+ ```
98
+ question: "어떻게 삭제하시겠습니까?"
99
+ header: "삭제"
100
+ options:
101
+ - label: "전체 삭제"
102
+ description: "모든 캐시 파일 삭제"
103
+ - label: "에러 캐시만 삭제"
104
+ description: "파싱 에러가 있는 파일만 삭제"
105
+ - label: "선택 삭제"
106
+ description: "파일 하나씩 선택하여 삭제"
107
+ - label: "취소"
108
+ description: "삭제하지 않음"
109
+ ```
110
+
111
+ "선택 삭제" 시 각 파일에 대해 AskUserQuestion으로 삭제 여부 확인.
112
+
113
+ #### 전체 초기화
114
+
115
+ 위험 확인:
116
+ ```
117
+ question: "전체 캐시를 초기화하시겠습니까? 다음 세션에서 재생성됩니다."
118
+ header: "확인"
119
+ options:
120
+ - label: "초기화 실행"
121
+ description: "모든 캐시 삭제 + MCP/사용량 캐시 재생성"
122
+ - label: "취소"
123
+ description: "아무것도 하지 않음"
124
+ ```
125
+
126
+ 확인 시:
127
+ ```bash
128
+ Bash("triflux doctor --reset")
129
+ ```
130
+
131
+ ### Step 3: 후속 조치
132
+
133
+ 실행 완료 후 AskUserQuestion:
134
+ ```
135
+ question: "다른 작업을 하시겠습니까?"
136
+ header: "계속"
137
+ options:
138
+ - label: "다른 모드 실행"
139
+ description: "진단/수정/캐시/초기화 메뉴로 돌아감"
140
+ - label: "종료"
141
+ description: "doctor 종료"
142
+ ```
143
+
144
+ ## 진단 항목
145
+
146
+ - tfx-route.sh 설치 상태
147
+ - HUD 설치 및 설정 상태
148
+ - Codex/Gemini/Claude CLI 경로 (크로스 셸)
149
+ - **psmux 버전 / capability preflight**
150
+ - `new-session`, `attach-session`, `kill-session`, `capture-pane`, `detach-client`
151
+ - 권장 버전 이상인지 여부
152
+ - Codex Profiles (필수 프로파일 존재 여부)
153
+ - 스킬 설치 상태
154
+ - 플러그인 등록 상태
155
+ - MCP 인벤토리 캐시
156
+ - Phase 1 웜업 캐시 무결성 (`node scripts/cache-doctor.mjs`)
157
+ - 잔존 팀(orphan teams) 감지
158
+ - **Docs 동기화** — `docs/design/`, `docs/research/` → `~/.claude/docs/` 레퍼런스 문서 동기화 상태
159
+ - **Gemini MCP 안전성** — `~/.gemini/settings.json`의 stdio MCP 감지 (spawn EPERM 방지)
160
+ - **Route Script 정합성** — 프로젝트 소스 `scripts/tfx-route.sh`와 `~/.claude/scripts/tfx-route.sh` 일치 여부
161
+
162
+ ## 에러 처리
163
+
164
+ | 상황 | 처리 |
165
+ |------|------|
166
+ | 캐시 디렉토리 없음 | 정상 — 삭제할 파일 없음 보고 |
167
+ | 파일 삭제 권한 없음 | 수동 삭제 안내 |
168
+ | --fix 후에도 이슈 남음 | Codex/Gemini 설치는 수동 필요 안내 |
169
+
170
+ ## standalone TUI
171
+
172
+ 터미널에서 직접 실행도 가능: `node tui/doctor.mjs` (arrow key 방식)
@@ -1,8 +1,6 @@
1
1
  {
2
2
  "name": "tfx-doctor",
3
3
  "description": "triflux 진단 및 수리 도구. AskUserQuestion 기반 인터랙티브 선택지로 CLI 미발견, HUD 미표시, 캐시 오류, 스킬 미설치 등을 진단하고 자동 수정합니다. Use when: not working, broken, error, 안 돼, 이상해, 에러, 캐시, reset, doctor",
4
- "triggers": [
5
- "tfx-doctor"
6
- ],
4
+ "triggers": ["tfx-doctor"],
7
5
  "argument_hint": "[--fix|--reset]"
8
6
  }
@@ -28,6 +28,7 @@ argument-hint: "<검색 패턴 또는 질문>"
28
28
  > - Errors: 실패 시 원인/복구/재시도 여부를 구조화해 기록한다.
29
29
 
30
30
 
31
+
31
32
  > OMC explore agent 오마주. Haiku의 속도 + Glob/Grep/Read의 정밀도.
32
33
  > "찾는 건 빠르게, 읽는 건 정확하게."
33
34