triflux 10.4.0 → 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 (391) hide show
  1. package/.claude-plugin/marketplace.json +34 -0
  2. package/.claude-plugin/plugin.json +22 -0
  3. package/bin/tfx-doctor-tui.mjs +1 -1
  4. package/bin/tfx-doctor.mjs +6 -1
  5. package/bin/tfx-profile.mjs +1 -1
  6. package/bin/tfx-setup-tui.mjs +1 -1
  7. package/bin/tfx-setup.mjs +6 -1
  8. package/bin/triflux.mjs +2396 -1140
  9. package/config/mcp-registry.json +29 -0
  10. package/hooks/agent-route-guard.mjs +12 -8
  11. package/hooks/cross-review-tracker.mjs +21 -8
  12. package/hooks/error-context.mjs +19 -7
  13. package/hooks/hook-adaptive-collector.mjs +18 -16
  14. package/hooks/hook-manager.mjs +93 -32
  15. package/hooks/hook-orchestrator.mjs +108 -24
  16. package/hooks/hook-registry.json +267 -256
  17. package/hooks/keyword-rules.json +6 -10
  18. package/hooks/lib/resolve-root.mjs +1 -1
  19. package/hooks/mcp-config-watcher.mjs +6 -2
  20. package/hooks/pipeline-stop.mjs +3 -6
  21. package/hooks/safety-guard.mjs +99 -28
  22. package/hooks/session-start-fast.mjs +143 -0
  23. package/hooks/subagent-verifier.mjs +5 -4
  24. package/hub/account-broker.mjs +256 -60
  25. package/hub/adaptive-diagnostic.mjs +75 -48
  26. package/hub/adaptive-inject.mjs +96 -58
  27. package/hub/adaptive-memory.mjs +156 -42
  28. package/hub/adaptive.mjs +60 -31
  29. package/hub/assign-callbacks.mjs +163 -126
  30. package/hub/bridge.mjs +0 -1
  31. package/hub/cli-adapter-base.mjs +200 -48
  32. package/hub/codex-adapter.mjs +76 -96
  33. package/hub/codex-compat.mjs +3 -3
  34. package/hub/codex-preflight.mjs +63 -37
  35. package/hub/delegator/contracts.mjs +19 -23
  36. package/hub/delegator/index.mjs +14 -14
  37. package/hub/delegator/service.mjs +88 -64
  38. package/hub/delegator/tool-definitions.mjs +35 -35
  39. package/hub/fullcycle.mjs +33 -17
  40. package/hub/gemini-adapter.mjs +69 -94
  41. package/hub/hitl.mjs +202 -143
  42. package/hub/intent.mjs +161 -38
  43. package/hub/lib/cache-guard.mjs +43 -17
  44. package/hub/lib/mcp-response-cache.mjs +66 -32
  45. package/hub/lib/memory-store.mjs +285 -111
  46. package/hub/lib/path-utils.mjs +35 -37
  47. package/hub/lib/process-utils.mjs +106 -37
  48. package/hub/lib/spawn-trace.mjs +527 -0
  49. package/hub/lib/ssh-command.mjs +34 -4
  50. package/hub/lib/ssh-retry.mjs +5 -1
  51. package/hub/lib/uuidv7.mjs +4 -3
  52. package/hub/memory-doctor.mjs +266 -106
  53. package/hub/middleware/request-logger.mjs +61 -34
  54. package/hub/paths.mjs +9 -9
  55. package/hub/pipeline/gates/confidence.mjs +34 -15
  56. package/hub/pipeline/gates/consensus.mjs +27 -15
  57. package/hub/pipeline/gates/index.mjs +7 -3
  58. package/hub/pipeline/gates/selfcheck.mjs +57 -19
  59. package/hub/pipeline/index.mjs +77 -42
  60. package/hub/pipeline/state.mjs +10 -10
  61. package/hub/pipeline/transitions.mjs +40 -23
  62. package/hub/platform.mjs +57 -48
  63. package/hub/promote-penalties.mjs +25 -7
  64. package/hub/quality/deslop.mjs +70 -49
  65. package/hub/research.mjs +32 -25
  66. package/hub/router.mjs +924 -791
  67. package/hub/routing/complexity.mjs +132 -29
  68. package/hub/routing/index.mjs +17 -12
  69. package/hub/routing/q-learning.mjs +76 -28
  70. package/hub/server.mjs +4 -4
  71. package/hub/session-fingerprint.mjs +127 -61
  72. package/hub/state.mjs +84 -43
  73. package/hub/store-adapter.mjs +59 -26
  74. package/hub/store.mjs +356 -153
  75. package/hub/team/agent-map.json +22 -7
  76. package/hub/team/ansi.mjs +186 -122
  77. package/hub/team/backend.mjs +28 -10
  78. package/hub/team/cli/commands/attach.mjs +57 -37
  79. package/hub/team/cli/commands/control.mjs +29 -8
  80. package/hub/team/cli/commands/debug.mjs +95 -74
  81. package/hub/team/cli/commands/focus.mjs +80 -53
  82. package/hub/team/cli/commands/interrupt.mjs +18 -6
  83. package/hub/team/cli/commands/kill.mjs +16 -5
  84. package/hub/team/cli/commands/list.mjs +31 -24
  85. package/hub/team/cli/commands/send.mjs +19 -6
  86. package/hub/team/cli/commands/start/index.mjs +154 -31
  87. package/hub/team/cli/commands/start/parse-args.mjs +38 -11
  88. package/hub/team/cli/commands/start/start-headless.mjs +112 -36
  89. package/hub/team/cli/commands/start/start-in-process.mjs +50 -40
  90. package/hub/team/cli/commands/start/start-mux.mjs +122 -73
  91. package/hub/team/cli/commands/start/start-wt.mjs +86 -69
  92. package/hub/team/cli/commands/status.mjs +43 -14
  93. package/hub/team/cli/commands/stop.mjs +11 -4
  94. package/hub/team/cli/commands/task.mjs +8 -3
  95. package/hub/team/cli/commands/tasks.mjs +13 -13
  96. package/hub/team/cli/index.mjs +2 -2
  97. package/hub/team/cli/manifest.mjs +38 -8
  98. package/hub/team/cli/render.mjs +52 -30
  99. package/hub/team/cli/services/attach-fallback.mjs +74 -54
  100. package/hub/team/cli/services/hub-client.mjs +42 -14
  101. package/hub/team/cli/services/member-selector.mjs +37 -30
  102. package/hub/team/cli/services/native-control.mjs +143 -116
  103. package/hub/team/cli/services/runtime-mode.mjs +2 -1
  104. package/hub/team/cli/services/state-store.mjs +25 -8
  105. package/hub/team/cli/services/task-model.mjs +40 -30
  106. package/hub/team/conductor-mesh-bridge.mjs +24 -23
  107. package/hub/team/conductor.mjs +8 -4
  108. package/hub/team/dashboard-anchor.mjs +4 -5
  109. package/hub/team/dashboard-layout.mjs +3 -1
  110. package/hub/team/dashboard-open.mjs +41 -21
  111. package/hub/team/dashboard.mjs +76 -28
  112. package/hub/team/event-log.mjs +18 -10
  113. package/hub/team/handoff.mjs +31 -15
  114. package/hub/team/headless.mjs +2 -1
  115. package/hub/team/health-probe.mjs +69 -54
  116. package/hub/team/launcher-template.mjs +16 -13
  117. package/hub/team/native-supervisor.mjs +65 -21
  118. package/hub/team/native.mjs +74 -35
  119. package/hub/team/nativeProxy.mjs +184 -113
  120. package/hub/team/notify.mjs +120 -77
  121. package/hub/team/orchestrator.mjs +166 -161
  122. package/hub/team/pane.mjs +12 -7
  123. package/hub/team/process-cleanup.mjs +25 -16
  124. package/hub/team/psmux.mjs +491 -201
  125. package/hub/team/remote-probe.mjs +68 -52
  126. package/hub/team/remote-session.mjs +117 -59
  127. package/hub/team/remote-watcher.mjs +61 -33
  128. package/hub/team/routing.mjs +51 -25
  129. package/hub/team/runtime-strategy.mjs +3 -1
  130. package/hub/team/session.mjs +675 -611
  131. package/hub/team/shared.mjs +13 -13
  132. package/hub/team/staleState.mjs +72 -30
  133. package/hub/team/swarm-locks.mjs +15 -13
  134. package/hub/team/swarm-planner.mjs +32 -21
  135. package/hub/team/swarm-reconciler.mjs +48 -23
  136. package/hub/team/tui-lite.mjs +266 -68
  137. package/hub/team/tui-remote-adapter.mjs +14 -10
  138. package/hub/team/tui-viewer.mjs +99 -43
  139. package/hub/team/tui.mjs +708 -271
  140. package/hub/team/worktree-lifecycle.mjs +152 -58
  141. package/hub/team/wt-manager.mjs +24 -14
  142. package/hub/token-mode.mjs +71 -71
  143. package/hub/tray.mjs +411 -368
  144. package/hub/workers/claude-worker.mjs +162 -118
  145. package/hub/workers/codex-mcp.mjs +558 -507
  146. package/hub/workers/delegator-mcp.mjs +507 -333
  147. package/hub/workers/factory.mjs +21 -21
  148. package/hub/workers/gemini-worker.mjs +115 -84
  149. package/hub/workers/interface.mjs +6 -1
  150. package/hub/workers/worker-utils.mjs +21 -14
  151. package/hud/colors.mjs +27 -9
  152. package/hud/constants.mjs +162 -26
  153. package/hud/context-monitor.mjs +82 -41
  154. package/hud/hud-qos-status.mjs +129 -49
  155. package/hud/mission-board.mjs +6 -3
  156. package/hud/providers/claude.mjs +226 -115
  157. package/hud/providers/codex.mjs +62 -22
  158. package/hud/providers/gemini.mjs +168 -56
  159. package/hud/renderers.mjs +384 -119
  160. package/hud/terminal.mjs +101 -31
  161. package/hud/utils.mjs +78 -38
  162. package/mesh/index.mjs +11 -5
  163. package/mesh/mesh-budget.mjs +18 -9
  164. package/mesh/mesh-heartbeat.mjs +1 -1
  165. package/mesh/mesh-queue.mjs +3 -5
  166. package/mesh/mesh-router.mjs +5 -4
  167. package/package.json +56 -21
  168. package/scripts/__tests__/gen-skill-docs.test.mjs +36 -7
  169. package/scripts/__tests__/keyword-detector.test.mjs +77 -28
  170. package/scripts/__tests__/mcp-guard-engine.test.mjs +58 -20
  171. package/scripts/__tests__/remote-spawn-transfer.test.mjs +30 -19
  172. package/scripts/__tests__/remote-spawn.test.mjs +10 -4
  173. package/scripts/__tests__/session-start-fast.test.mjs +36 -0
  174. package/scripts/__tests__/skill-template.test.mjs +98 -50
  175. package/scripts/__tests__/smoke.test.mjs +1 -1
  176. package/scripts/__tests__/spawn-trace.test.mjs +102 -0
  177. package/scripts/__tests__/tfx-doctor-diagnose.test.mjs +48 -0
  178. package/scripts/cache-doctor.mjs +11 -4
  179. package/scripts/cache-warmup.mjs +96 -37
  180. package/scripts/claudemd-sync.mjs +27 -17
  181. package/scripts/codex-gateway-preflight.mjs +52 -37
  182. package/scripts/codex-mcp-gateway-sync.mjs +59 -39
  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 +139 -120
  193. package/scripts/keyword-detector.mjs +293 -272
  194. package/scripts/keyword-rules-expander.mjs +538 -521
  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 +355 -118
  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 +669 -554
  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 +61 -57
  229. package/scripts/tfx-batch-stats.mjs +117 -96
  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/idle-notif-cooldown.json +1 -1
  237. package/skills/.omc/state/last-tool-error.json +1 -1
  238. package/skills/.omc/state/subagent-tracking.json +1 -1
  239. package/skills/_templates/base.md +1 -6
  240. package/skills/merge-worktree/SKILL.md.tmpl +144 -0
  241. package/skills/shared/telemetry-segment.md +6 -0
  242. package/skills/star-prompt/SKILL.md.tmpl +222 -0
  243. package/skills/tfx-analysis/SKILL.md.tmpl +107 -0
  244. package/skills/tfx-analysis/skill.json +1 -6
  245. package/skills/tfx-auto/SKILL.md +1 -0
  246. package/skills/{tfx-workspace/skill-snapshot/tfx-auto-codex/SKILL.md → tfx-auto-codex/SKILL.md.tmpl} +33 -4
  247. package/skills/tfx-auto-codex/skill.json +1 -3
  248. package/skills/tfx-autopilot/SKILL.md.tmpl +116 -0
  249. package/skills/tfx-autopilot/skill.json +1 -5
  250. package/skills/tfx-autoresearch/SKILL.md.tmpl +136 -0
  251. package/skills/tfx-autoroute/SKILL.md.tmpl +189 -0
  252. package/skills/tfx-autoroute/skill.json +1 -7
  253. package/skills/tfx-codex/SKILL.md +1 -0
  254. package/skills/tfx-codex/skill.json +1 -3
  255. package/skills/tfx-codex-swarm/SKILL.md.tmpl +16 -0
  256. package/skills/tfx-codex-swarm/evals/evals.json +1 -1
  257. package/skills/tfx-codex-swarm/skill.json +1 -4
  258. package/skills/tfx-codex-swarm-workspace/iteration-1/benchmark.json +54 -12
  259. package/skills/tfx-codex-swarm-workspace/iteration-1/full-swarm-all-prds/with_skill/grading.json +35 -7
  260. package/skills/tfx-codex-swarm-workspace/iteration-1/full-swarm-all-prds/without_skill/grading.json +35 -7
  261. package/skills/tfx-codex-swarm-workspace/iteration-1/implicit-swarm-no-keywords/with_skill/grading.json +25 -5
  262. package/skills/tfx-codex-swarm-workspace/iteration-1/implicit-swarm-no-keywords/without_skill/grading.json +25 -5
  263. package/skills/tfx-codex-swarm-workspace/iteration-1/selective-spawn-with-override/with_skill/grading.json +20 -4
  264. package/skills/tfx-codex-swarm-workspace/iteration-1/selective-spawn-with-override/without_skill/grading.json +16 -4
  265. package/skills/tfx-consensus/SKILL.md.tmpl +146 -0
  266. package/skills/tfx-debate/SKILL.md.tmpl +192 -0
  267. package/skills/tfx-debate/skill.json +1 -7
  268. package/skills/tfx-deep-analysis/SKILL.md.tmpl +228 -0
  269. package/skills/tfx-deep-analysis/skill.json +1 -5
  270. package/skills/tfx-deep-interview/SKILL.md.tmpl +203 -0
  271. package/skills/tfx-deep-plan/SKILL.md.tmpl +282 -0
  272. package/skills/tfx-deep-qa/SKILL.md.tmpl +165 -0
  273. package/skills/tfx-deep-qa/skill.json +1 -6
  274. package/skills/tfx-deep-research/SKILL.md.tmpl +217 -0
  275. package/skills/tfx-deep-review/SKILL.md.tmpl +179 -0
  276. package/skills/tfx-doctor/SKILL.md +21 -0
  277. package/skills/tfx-doctor/SKILL.md.tmpl +172 -0
  278. package/skills/tfx-doctor/skill.json +1 -3
  279. package/skills/tfx-find/SKILL.md +1 -0
  280. package/skills/tfx-forge/SKILL.md.tmpl +187 -0
  281. package/skills/tfx-fullcycle/SKILL.md.tmpl +286 -0
  282. package/skills/tfx-fullcycle/skill.json +1 -6
  283. package/skills/{tfx-workspace/skill-snapshot/tfx-gemini/SKILL.md → tfx-gemini/SKILL.md.tmpl} +16 -7
  284. package/skills/tfx-gemini/skill.json +1 -3
  285. package/skills/tfx-hooks/SKILL.md.tmpl +216 -0
  286. package/skills/tfx-hooks/skill.json +1 -3
  287. package/skills/tfx-hub/SKILL.md.tmpl +212 -0
  288. package/skills/tfx-hub/skill.json +1 -3
  289. package/skills/tfx-index/SKILL.md +1 -0
  290. package/skills/tfx-index/skill.json +1 -6
  291. package/skills/tfx-interview/SKILL.md.tmpl +285 -0
  292. package/skills/tfx-multi/SKILL.md.tmpl +183 -0
  293. package/skills/tfx-multi/skill.json +1 -3
  294. package/skills/tfx-panel/SKILL.md.tmpl +189 -0
  295. package/skills/tfx-panel/skill.json +1 -7
  296. package/skills/tfx-persist/SKILL.md.tmpl +270 -0
  297. package/skills/tfx-persist/skill.json +1 -7
  298. package/skills/tfx-plan/SKILL.md +1 -0
  299. package/skills/tfx-plan/skill.json +1 -6
  300. package/skills/tfx-profile/SKILL.md.tmpl +239 -0
  301. package/skills/tfx-profile/skill.json +1 -3
  302. package/skills/tfx-prune/SKILL.md.tmpl +200 -0
  303. package/skills/tfx-prune/skill.json +1 -7
  304. package/skills/tfx-psmux-rules/SKILL.md.tmpl +326 -0
  305. package/skills/tfx-psmux-rules/skill.json +1 -4
  306. package/skills/tfx-qa/SKILL.md +1 -0
  307. package/skills/tfx-qa/skill.json +1 -6
  308. package/skills/tfx-ralph/SKILL.md.tmpl +28 -0
  309. package/skills/tfx-ralph/skill.json +1 -4
  310. package/skills/tfx-remote-setup/SKILL.md.tmpl +576 -0
  311. package/skills/tfx-remote-setup/skill.json +1 -3
  312. package/skills/tfx-remote-spawn/SKILL.md.tmpl +263 -0
  313. package/skills/tfx-remote-spawn/references/hosts.json +16 -16
  314. package/skills/tfx-remote-spawn/skill.json +1 -4
  315. package/skills/tfx-research/SKILL.md +1 -0
  316. package/skills/tfx-review/SKILL.md +1 -0
  317. package/skills/tfx-review/skill.json +1 -6
  318. package/skills/tfx-setup/SKILL.md.tmpl +504 -0
  319. package/skills/tfx-setup/skill.json +1 -3
  320. package/skills/tfx-swarm/SKILL.md +22 -0
  321. package/skills/tfx-swarm/SKILL.md.tmpl +218 -0
  322. package/tui/codex-profile.mjs +457 -0
  323. package/tui/core.mjs +266 -0
  324. package/tui/doctor.mjs +375 -0
  325. package/tui/gemini-profile.mjs +299 -0
  326. package/tui/monitor-data.mjs +152 -0
  327. package/tui/monitor.mjs +339 -0
  328. package/tui/setup.mjs +533 -0
  329. package/CLAUDE.md +0 -193
  330. package/references/hosts.json +0 -33
  331. package/skills/tfx-workspace/async-tests/run-tests.sh +0 -203
  332. package/skills/tfx-workspace/evals/evals.json +0 -79
  333. package/skills/tfx-workspace/iteration-1/benchmark.json +0 -162
  334. package/skills/tfx-workspace/iteration-1/codex-gemini-remap/eval_metadata.json +0 -11
  335. package/skills/tfx-workspace/iteration-1/codex-gemini-remap/old_skill/grading.json +0 -9
  336. package/skills/tfx-workspace/iteration-1/codex-gemini-remap/old_skill/outputs/analysis.md +0 -154
  337. package/skills/tfx-workspace/iteration-1/codex-gemini-remap/old_skill/timing.json +0 -5
  338. package/skills/tfx-workspace/iteration-1/codex-gemini-remap/with_skill/grading.json +0 -9
  339. package/skills/tfx-workspace/iteration-1/codex-gemini-remap/with_skill/outputs/analysis.md +0 -126
  340. package/skills/tfx-workspace/iteration-1/codex-gemini-remap/with_skill/timing.json +0 -5
  341. package/skills/tfx-workspace/iteration-1/doctor-diagnosis/eval_metadata.json +0 -11
  342. package/skills/tfx-workspace/iteration-1/doctor-diagnosis/old_skill/grading.json +0 -9
  343. package/skills/tfx-workspace/iteration-1/doctor-diagnosis/old_skill/outputs/analysis.md +0 -119
  344. package/skills/tfx-workspace/iteration-1/doctor-diagnosis/old_skill/timing.json +0 -5
  345. package/skills/tfx-workspace/iteration-1/doctor-diagnosis/with_skill/grading.json +0 -9
  346. package/skills/tfx-workspace/iteration-1/doctor-diagnosis/with_skill/outputs/analysis.md +0 -115
  347. package/skills/tfx-workspace/iteration-1/doctor-diagnosis/with_skill/timing.json +0 -5
  348. package/skills/tfx-workspace/iteration-1/hub-start-sequence/eval_metadata.json +0 -10
  349. package/skills/tfx-workspace/iteration-1/hub-start-sequence/old_skill/grading.json +0 -8
  350. package/skills/tfx-workspace/iteration-1/hub-start-sequence/old_skill/outputs/analysis.md +0 -86
  351. package/skills/tfx-workspace/iteration-1/hub-start-sequence/old_skill/timing.json +0 -5
  352. package/skills/tfx-workspace/iteration-1/hub-start-sequence/with_skill/grading.json +0 -8
  353. package/skills/tfx-workspace/iteration-1/hub-start-sequence/with_skill/outputs/analysis.md +0 -81
  354. package/skills/tfx-workspace/iteration-1/hub-start-sequence/with_skill/timing.json +0 -5
  355. package/skills/tfx-workspace/iteration-1/multi-team-creation/eval_metadata.json +0 -12
  356. package/skills/tfx-workspace/iteration-1/multi-team-creation/old_skill/grading.json +0 -10
  357. package/skills/tfx-workspace/iteration-1/multi-team-creation/old_skill/outputs/analysis.md +0 -316
  358. package/skills/tfx-workspace/iteration-1/multi-team-creation/old_skill/timing.json +0 -5
  359. package/skills/tfx-workspace/iteration-1/multi-team-creation/with_skill/grading.json +0 -10
  360. package/skills/tfx-workspace/iteration-1/multi-team-creation/with_skill/outputs/analysis.md +0 -352
  361. package/skills/tfx-workspace/iteration-1/multi-team-creation/with_skill/timing.json +0 -5
  362. package/skills/tfx-workspace/iteration-1/review.html +0 -1325
  363. package/skills/tfx-workspace/iteration-1/routing-implement-shortcut/eval_metadata.json +0 -12
  364. package/skills/tfx-workspace/iteration-1/routing-implement-shortcut/old_skill/grading.json +0 -10
  365. package/skills/tfx-workspace/iteration-1/routing-implement-shortcut/old_skill/outputs/analysis.md +0 -97
  366. package/skills/tfx-workspace/iteration-1/routing-implement-shortcut/old_skill/timing.json +0 -5
  367. package/skills/tfx-workspace/iteration-1/routing-implement-shortcut/with_skill/grading.json +0 -10
  368. package/skills/tfx-workspace/iteration-1/routing-implement-shortcut/with_skill/outputs/analysis.md +0 -94
  369. package/skills/tfx-workspace/iteration-1/routing-implement-shortcut/with_skill/timing.json +0 -5
  370. package/skills/tfx-workspace/iteration-1/routing-multi-task-triage/eval_metadata.json +0 -12
  371. package/skills/tfx-workspace/iteration-1/routing-multi-task-triage/old_skill/grading.json +0 -10
  372. package/skills/tfx-workspace/iteration-1/routing-multi-task-triage/old_skill/outputs/analysis.md +0 -209
  373. package/skills/tfx-workspace/iteration-1/routing-multi-task-triage/old_skill/timing.json +0 -5
  374. package/skills/tfx-workspace/iteration-1/routing-multi-task-triage/with_skill/grading.json +0 -10
  375. package/skills/tfx-workspace/iteration-1/routing-multi-task-triage/with_skill/outputs/analysis.md +0 -193
  376. package/skills/tfx-workspace/iteration-1/routing-multi-task-triage/with_skill/timing.json +0 -5
  377. package/skills/tfx-workspace/iteration-2/benchmark.json +0 -62
  378. package/skills/tfx-workspace/iteration-2/multi-team-creation-refactored/eval_metadata.json +0 -13
  379. package/skills/tfx-workspace/iteration-2/multi-team-creation-refactored/old_skill/grading.json +0 -11
  380. package/skills/tfx-workspace/iteration-2/multi-team-creation-refactored/old_skill/outputs/analysis.md +0 -382
  381. package/skills/tfx-workspace/iteration-2/multi-team-creation-refactored/old_skill/timing.json +0 -5
  382. package/skills/tfx-workspace/iteration-2/multi-team-creation-refactored/with_skill/grading.json +0 -11
  383. package/skills/tfx-workspace/iteration-2/multi-team-creation-refactored/with_skill/outputs/analysis.md +0 -333
  384. package/skills/tfx-workspace/iteration-2/multi-team-creation-refactored/with_skill/timing.json +0 -5
  385. package/skills/tfx-workspace/iteration-2/review.html +0 -1325
  386. package/skills/tfx-workspace/skill-snapshot/tfx-auto/SKILL.md +0 -217
  387. package/skills/tfx-workspace/skill-snapshot/tfx-codex/SKILL.md +0 -65
  388. package/skills/tfx-workspace/skill-snapshot/tfx-doctor/SKILL.md +0 -94
  389. package/skills/tfx-workspace/skill-snapshot/tfx-hub/SKILL.md +0 -133
  390. package/skills/tfx-workspace/skill-snapshot/tfx-multi/SKILL.md +0 -426
  391. package/skills/tfx-workspace/skill-snapshot/tfx-setup/SKILL.md +0 -101
@@ -0,0 +1,270 @@
1
+ ---
2
+ internal: true
3
+ name: tfx-persist
4
+ description: "작업이 완전히 끝날 때까지 멈추지 않고 반복 실행해야 할 때 사용한다. 'ralph', '끝까지 해', '멈추지 마', 'don't stop', '완료될 때까지', '다 될 때까지 계속' 같은 요청에 반드시 사용. 여러 기준을 모두 충족해야 하는 복잡한 구현 작업에 적극 활용."
5
+ triggers:
6
+ - ralph
7
+ - don't stop
8
+ - 끝까지
9
+ - until done
10
+ - 멈추지 마
11
+ argument-hint: "<완료할 작업 설명>"
12
+ ---
13
+
14
+ # {{SKILL_NAME}} — Tri-Verified Persistence Loop
15
+
16
+ > **ARGUMENTS 처리**: 이 스킬이 `ARGUMENTS: <값>`과 함께 호출되면, 해당 값을 사용자 입력으로 취급하여
17
+ > 워크플로우의 첫 단계 입력으로 사용한다. ARGUMENTS가 비어있거나 없으면 기존 절차대로 사용자에게 입력을 요청한다.
18
+
19
+
20
+ > OMC ralph 오마주. 핵심 차별점: 검증자가 단일 agent가 아니라 **3-CLI consensus**.
21
+ > The boulder never stops — but it stops being wrong.
22
+
23
+ ## 전제조건 프로브 및 Tier Degradation
24
+
25
+ > **진입 즉시 실행** — 10초 내 가시적 출력을 보장한다. 빈 stdout + exit 0 **금지**.
26
+
27
+ ### 환경 프로브
28
+
29
+ 워크플로우 진입 전, 아래 프로브를 실행하여 가용 환경을 감지한다:
30
+
31
+ ```bash
32
+ psmux --version 2>/dev/null && \
33
+ curl -sf http://127.0.0.1:27888/status >/dev/null && \
34
+ codex --version 2>/dev/null && \
35
+ gemini --version 2>/dev/null
36
+ ```
37
+
38
+ ### Tier 판정
39
+
40
+ | Tier | 조건 | 실행 방식 |
41
+ |------|------|----------|
42
+ | **Tier 1** | psmux + Hub + Codex + Gemini 전부 정상 | 기존 headless multi (변경 없음) |
43
+ | **Tier 2** | 일부 CLI만 가용 (Codex 또는 Gemini 중 하나) | 가용 CLI + Claude Agent 조합 |
44
+ | **Tier 3** | headless 불가 또는 `claude -p` one-shot | Claude Agent only |
45
+
46
+ ```
47
+ IF claude -p (one-shot 모드):
48
+ → Tier 3 즉시 fallback
49
+
50
+ IF psmux 없음 OR Hub 미응답:
51
+ → Tier 3
52
+
53
+ IF Codex 없음 AND Gemini 없음:
54
+ → Tier 3
55
+
56
+ IF Codex 없음 OR Gemini 없음:
57
+ → Tier 2
58
+
59
+ ELSE:
60
+ → Tier 1
61
+ ```
62
+
63
+ ### Tier 3 진입 시 필수 출력
64
+
65
+ ```
66
+ ⚠ [Tier 3] headless multi 환경 미충족 — single-model 모드로 실행합니다 (consensus 미적용)
67
+ 누락: {missing_components}
68
+ 권장: psmux, Hub, Codex CLI, Gemini CLI 설치 후 재실행
69
+ ```
70
+
71
+ Tier 3에서는 모든 headless dispatch(`tfx multi ...`)를 **Claude Agent**(subagent)로 대체한다.
72
+ Tier 2에서는 누락된 CLI만 Claude Agent로 대체한다.
73
+
74
+ ## HARD RULES
75
+
76
+ > headless-guard가 이 규칙 위반을 **자동 차단**한다. 우회 불가.
77
+
78
+ 1. **`codex exec` / `gemini -p` 직접 호출 절대 금지**
79
+ 2. Codex·Gemini 검증자 → `Bash("tfx multi --teammate-mode headless --auto-attach --dashboard --assign 'cli:프롬프트:역할' --timeout 600")` **만** 사용
80
+ 3. Claude 검증자 → `Agent(run_in_background=true)`
81
+ 4. Bash + Agent를 같은 메시지에서 동시 호출하여 병렬 실행
82
+ 5. 루프 종료 조건: 모든 criteria 3자 검증 통과 + 통합 검증 Consensus >= 70
83
+
84
+ ## MODEL ROLES
85
+
86
+ | 단계 | 역할 | 담당 |
87
+ |------|------|------|
88
+ | Goal Definition | 완료 기준 추출 및 사용자 확인 | Claude (직접 실행) |
89
+ | 구현 (단순) | 코드 작성, 파일 수정, 테스트 | Codex (tfx headless) |
90
+ | 구현 (복잡) | 태스크 분해 후 병렬 실행 | Codex + Gemini (tfx headless) |
91
+ | 기준별 검증 — Claude | 코드 읽기 + 논리 검증 | Claude (Agent, background) |
92
+ | 기준별 검증 — Codex | 코드 실행 + 테스트 검증 | Codex (tfx headless) |
93
+ | 기준별 검증 — Gemini | 코드 리뷰 + 품질 검증 | Gemini (tfx headless) |
94
+ | 통합 검증 | 전체 criteria 최종 합의 | Claude + Codex + Gemini (동시) |
95
+ | Deslop Pass | 슬롭 감지 및 제거 | Codex + Gemini (tfx headless) |
96
+
97
+ ## EXECUTION STEPS
98
+
99
+ ### Step 1: Goal Definition
100
+
101
+ Claude가 직접 실행한다.
102
+
103
+ 1. 사용자 요청에서 완료 기준(acceptance criteria)을 추출한다.
104
+ 2. AskUserQuestion으로 추출된 기준을 사용자에게 확인받는다:
105
+ - "맞습니다 — 진행" → Step 2로 이동
106
+ - "수정 필요" → 해당 기준 번호와 내용 입력 받아 반영 후 재확인
107
+ - "추가 필요" → 추가 기준 입력 받아 반영 후 재확인
108
+ 3. 확정된 `{criteria_list}`를 루프 전체에서 사용한다.
109
+
110
+ ### Step 2: Execution Loop
111
+
112
+ **모든 criteria가 검증 통과할 때까지 반복한다.**
113
+
114
+ #### 2a. 현재 상태 평가
115
+
116
+ 미완료 criteria를 식별하고 다음 구현 작업을 결정한다.
117
+
118
+ #### 2b. 구현 실행
119
+
120
+ 단순 작업 (파일 수정, 단일 모듈):
121
+ ```
122
+ Bash("tfx multi --teammate-mode headless --auto-attach --dashboard \
123
+ --assign 'codex:{미완료_criterion}을 충족하도록 구현하라. 구체적 작업: {task_description}. TDD 필요 시 테스트 먼저 작성(RED) → 구현(GREEN) 순서로 진행하라.:implementer' \
124
+ --timeout 600")
125
+ ```
126
+
127
+ 복잡 작업 (여러 파일, 연동 모듈):
128
+ ```
129
+ Bash("tfx multi --teammate-mode headless --auto-attach --dashboard \
130
+ --assign 'codex:{서브태스크_A} 구현하라. 세부사항: {spec_A}:implementer' \
131
+ --assign 'codex:{서브태스크_B} 구현하라. 세부사항: {spec_B}:implementer' \
132
+ --assign 'gemini:{문서/UI_항목} 작성하라. 세부사항: {spec_C}:writer' \
133
+ --timeout 600")
134
+ ```
135
+
136
+ #### 2c. 3자 독립 검증
137
+
138
+ **구현 완료 후, 아래 2개 도구를 반드시 같은 응답에서 동시에 호출하라.**
139
+
140
+ **Claude 검증 (Agent):**
141
+ ```
142
+ Agent(
143
+ subagent_type="oh-my-claudecode:verifier",
144
+ model="sonnet",
145
+ run_in_background=true,
146
+ prompt="다음 기준이 충족되었는지 코드를 직접 읽고 판단하라.
147
+ 기준: {current_criterion}
148
+ 코드를 읽고 논리적으로 충족 여부를 판단하라.
149
+ 결과: PASS 또는 FAIL + 근거 1문장"
150
+ )
151
+ ```
152
+
153
+ **Codex + Gemini 검증 (Bash — 동시에 위 Agent와 같은 응답에서 호출):**
154
+ ```
155
+ Bash("tfx multi --teammate-mode headless --auto-attach --dashboard \
156
+ --assign 'codex:다음 기준 충족 여부를 코드 실행/테스트로 검증하라. 기준: {current_criterion}. 실제 테스트를 실행하여 결과를 확인하라. 결과: PASS 또는 FAIL + 근거 1문장:verifier' \
157
+ --assign 'gemini:다음 기준 충족 여부를 코드 리뷰로 판단하라. 기준: {current_criterion}. 코드 품질, 엣지 케이스, 완전성을 확인하라. 결과: PASS 또는 FAIL + 근거 1문장:verifier' \
158
+ --timeout 600")
159
+ ```
160
+
161
+ **검증 판정:**
162
+ - 2/3 이상 PASS → 해당 기준 확정, 다음 기준으로 이동
163
+ - 1/3만 PASS → 재작업 필요, 실패 근거를 구현 프롬프트에 포함하여 2b 재실행
164
+ - 0/3 PASS → 즉시 재작업, 실패 근거 전달
165
+
166
+ #### 2d. 진행 보고
167
+
168
+ 각 기준 검증 후 보고한다:
169
+ ```
170
+ [tfx-persist] {완료수}/{전체수} 기준 충족.
171
+ 완료: {완료된_criteria_목록}
172
+ 현재: {작업_중인_criterion}
173
+ 다음: {예정_criterion}
174
+ ```
175
+
176
+ ### Step 3: Final Verification
177
+
178
+ 모든 기준이 개별 검증을 통과한 후, 전체 통합 검증을 실행한다.
179
+
180
+ **아래 2개 도구를 반드시 같은 응답에서 동시에 호출하라.**
181
+
182
+ **Claude 통합 검증 (Agent):**
183
+ ```
184
+ Agent(
185
+ subagent_type="oh-my-claudecode:verifier",
186
+ model="opus",
187
+ run_in_background=true,
188
+ prompt="모든 acceptance criteria가 충족되었는지 전체적으로 검증하라.
189
+ 기준 목록: {criteria_list}
190
+ 코드를 직접 읽고, 회귀 여부를 확인하고, 기준 간 상호 의존성을 검증하라.
191
+ JSON 형식: { criteria_results: [{criterion, pass, reason}], regression_check, overall_pass }"
192
+ )
193
+ ```
194
+
195
+ **Codex + Gemini 통합 검증 (Bash — 동시에 위 Agent와 같은 응답에서 호출):**
196
+ ```
197
+ Bash("tfx multi --teammate-mode headless --auto-attach --dashboard \
198
+ --assign 'codex:모든 acceptance criteria 충족 여부를 테스트 실행으로 통합 검증하라. 기준 목록: {criteria_list}. 전체 테스트 스위트를 실행하고 회귀 여부를 확인하라. JSON 형식: { criteria_results, test_results, overall_pass }:verifier' \
199
+ --assign 'gemini:모든 acceptance criteria 충족 여부를 코드 리뷰로 통합 검증하라. 기준 목록: {criteria_list}. 전체 변경사항을 검토하고 누락, 불완전한 구현, 엣지 케이스를 확인하라. JSON 형식: { criteria_results, edge_cases, overall_pass }:verifier' \
200
+ --timeout 600")
201
+ ```
202
+
203
+ **통합 판정:**
204
+ - Consensus Score >= 70 → Step 4(Deslop) 또는 Step 5(완료) 진행
205
+ - Consensus Score < 70 → 미달 항목을 추출하여 Step 2 루프 재진입
206
+
207
+ ### Step 4: Deslop Pass (선택적)
208
+
209
+ 검증 통과 후 변경된 파일에 슬롭이 있으면 제거한다.
210
+
211
+ ```
212
+ Bash("tfx multi --teammate-mode headless --auto-attach --dashboard \
213
+ --assign 'codex:다음 파일에서 AI가 생성한 불필요 코드(슬롭)를 감지하라. 파일: {changed_files}. 중복 코드, 불필요 추상화, 과잉 에러 핸들링, 사용되지 않는 임포트를 보고하라. 수정하지 말고 목록만 반환하라.:critic' \
214
+ --assign 'gemini:다음 파일에서 AI가 생성한 불필요 코드(슬롭)를 감지하라. 파일: {changed_files}. 중복 코드, 불필요 추상화, 과잉 에러 핸들링, 사용되지 않는 임포트를 보고하라. 수정하지 말고 목록만 반환하라.:critic' \
215
+ --timeout 600")
216
+ ```
217
+
218
+ 2/3 이상 동의한 슬롭만 Codex로 제거하고, 제거 후 회귀 검증을 실행한다.
219
+
220
+ ### Step 5: 완료
221
+
222
+ 모든 기준 3자 검증 통과 + 통합 검증 통과 시 완료를 보고한다.
223
+
224
+ ```
225
+ [tfx-persist 완료] {전체}/{전체} 기준 충족
226
+ Consensus Score: {score}%
227
+ 변경 파일: {count}개
228
+ 테스트: {pass}/{total} 통과
229
+ 검증: Claude PASS | Codex PASS | Gemini PASS
230
+ ```
231
+
232
+ ## ANTI-STUCK 메커니즘
233
+
234
+ 같은 기준에서 3회 연속 검증 실패 시 즉시 실행한다:
235
+
236
+ 1. 접근법을 변경하여 재시도한다 (다른 구현 전략 선택).
237
+ 2. 변경 후에도 실패하면 AskUserQuestion으로 사용자 도움을 요청한다:
238
+ - 실패한 기준, 3회 시도 내역, 각 실패 이유를 제시한다.
239
+ 3. 사용자 지시를 받은 후 재시도한다.
240
+
241
+ 같은 전체 루프가 5회 반복 시:
242
+ - 강제로 진행 상황을 보고하고 AskUserQuestion으로 사용자 판단을 요청한다.
243
+
244
+ ## ERROR RECOVERY
245
+
246
+ | 상황 | 대응 |
247
+ |------|------|
248
+ | tfx headless 타임아웃 | `--timeout` 900으로 올려 재시도 |
249
+ | 검증 결과 불일치 (2자 PASS, 1자 FAIL) | FAIL 근거를 구현 프롬프트에 포함하여 재작업 |
250
+ | 빌드 실패 | Codex에 빌드 로그 전달하여 수정 지시 |
251
+ | 무한 루프 감지 (5회 이상) | 강제 보고 + AskUserQuestion |
252
+
253
+ ## TOKEN BUDGET
254
+
255
+ | 항목 | 토큰 |
256
+ |------|------|
257
+ | 기준당 구현 | ~3K |
258
+ | 기준당 3자 검증 | ~5K |
259
+ | 기준당 합계 | ~8K |
260
+ | 통합 검증 (Step 3) | ~15K |
261
+ | Deslop Pass (선택) | ~5K |
262
+ | **예시: 5개 기준** | **~55K** |
263
+
264
+ ## 사용 예
265
+
266
+ ```
267
+ /tfx-persist "JWT 인증 미들웨어 구현. 로그인, 토큰 발급/검증, 리프레시, 테스트 80%+"
268
+ /tfx-persist "이 버그 수정해. PR #42의 모든 코멘트 해결될 때까지"
269
+ /tfx-persist "데이터베이스 마이그레이션 완료. 기존 데이터 무손실, 롤백 가능"
270
+ ```
@@ -1,13 +1,7 @@
1
1
  {
2
2
  "name": "tfx-persist",
3
3
  "description": "작업이 완전히 끝날 때까지 멈추지 않고 반복 실행해야 할 때 사용한다. 'ralph', '끝까지 해', '멈추지 마', 'don't stop', '완료될 때까지', '다 될 때까지 계속' 같은 요청에 반드시 사용. 여러 기준을 모두 충족해야 하는 복잡한 구현 작업에 적극 활용.",
4
- "triggers": [
5
- "ralph",
6
- "don't stop",
7
- "끝까지",
8
- "until done",
9
- "멈추지 마"
10
- ],
4
+ "triggers": ["ralph", "don't stop", "끝까지", "until done", "멈추지 마"],
11
5
  "argument_hint": "<완료할 작업 설명>",
12
6
  "internal": true
13
7
  }
@@ -24,6 +24,7 @@ argument-hint: "<구현할 기능 설명>"
24
24
 
25
25
 
26
26
 
27
+
27
28
  > **Deep 버전**: tfx-deep-plan. "제대로/꼼꼼히" 수정자로 자동 에스컬레이션.
28
29
  > Gemini 위임 빠른 계획 — Claude는 컨텍스트 수집·출력 포맷만, 핵심 계획 수립은 Gemini에 위임.
29
30
 
@@ -1,12 +1,7 @@
1
1
  {
2
2
  "name": "tfx-plan",
3
3
  "description": "구현 계획이 필요할 때 사용한다. '계획 세워줘', 'plan', '플랜', '어떻게 구현하지', '태스크 분해', '작업 순서' 같은 요청에 반드시 사용. 기능 구현 전 영향 범위 파악과 태스크 분해가 필요할 때 적극 활용. 작업 분해, 순서 정리, '어떤 순서로', '먼저 뭐 해야', 'breakdown', 'decompose', 'task list' 같은 요청에도 적극 활용. 단순 계획은 이 스킬, 3자 합의 계획은 tfx-deep-plan을 사용.",
4
- "triggers": [
5
- "plan",
6
- "계획",
7
- "플랜",
8
- "설계"
9
- ],
4
+ "triggers": ["plan", "계획", "플랜", "설계"],
10
5
  "argument_hint": "<구현할 기능 설명>",
11
6
  "internal": true
12
7
  }
@@ -0,0 +1,239 @@
1
+ ---
2
+ name: tfx-profile
3
+ description: >
4
+ Codex/Gemini CLI 프로파일·모델 관리 인터랙티브 UI. tfx-route가 사용하는
5
+ 프로파일 목록 조회, 모델 변경, effort 조정, 추가/삭제를 AskUserQuestion 기반
6
+ 인터랙티브 선택지로 수행합니다.
7
+ Use when: codex profile, codex model, gemini profile, gemini model,
8
+ 프로파일 변경, 모델 변경, effort 변경, codex 설정, gemini 설정,
9
+ profile manager, 프로파일 관리, 어떤 모델, tfx profile
10
+ triggers:
11
+ - tfx-profile
12
+ argument-hint: "[--list] [--codex | --gemini]"
13
+ ---
14
+
15
+ # {{SKILL_NAME}} — Codex/Gemini 프로파일 매니저
16
+
17
+ > CLI 프로파일의 모델/effort를 AskUserQuestion 선택지로 관리합니다.
18
+ > Codex(`~/.codex/config.toml`)와 Gemini(`~/.gemini/triflux-profiles.json`) 모두 지원.
19
+
20
+ ## 워크플로우
21
+
22
+ ### Step 0: CLI 선택
23
+
24
+ 인자에 `--codex` 또는 `--gemini`가 있으면 해당 CLI로 직행.
25
+ 없으면 AskUserQuestion으로 선택:
26
+
27
+ ```
28
+ question: "어느 CLI의 프로파일을 관리하시겠습니까?"
29
+ header: "CLI"
30
+ options:
31
+ - label: "Codex"
32
+ description: "~/.codex/config.toml (TOML)"
33
+ - label: "Gemini"
34
+ description: "~/.gemini/triflux-profiles.json (JSON)"
35
+ ```
36
+
37
+ ---
38
+
39
+ ## Codex 워크플로우
40
+
41
+ ### Step 1: config.toml 읽기 + 현재 상태 표시
42
+
43
+ `~/.codex/config.toml`을 Read 도구로 읽고 프로파일 테이블을 마크다운으로 출력한다:
44
+
45
+ ```
46
+ | 프로파일 | 모델 | Effort |
47
+ |----------|------|--------|
48
+ | fast | gpt-5.3-codex | low |
49
+ | ... | ... | ... |
50
+ ```
51
+
52
+ 기본 모델(top-level `model`)과 기본 effort도 함께 표시.
53
+
54
+ ### Step 2: 작업 선택 (AskUserQuestion)
55
+
56
+ ```
57
+ question: "어떤 작업을 하시겠습니까?"
58
+ header: "작업"
59
+ options:
60
+ - label: "프로파일 모델 변경"
61
+ description: "기존 프로파일의 모델/effort를 수정"
62
+ - label: "기본 모델 변경"
63
+ description: "top-level default 모델/effort 수정"
64
+ - label: "프로파일 추가"
65
+ description: "새 프로파일 생성"
66
+ - label: "프로파일 삭제"
67
+ description: "기존 프로파일 제거"
68
+ ```
69
+
70
+ ### Step 3: 선택에 따른 세부 플로우
71
+
72
+ #### 프로파일 모델 변경
73
+
74
+ 1. AskUserQuestion으로 프로파일 선택
75
+ 2. AskUserQuestion으로 모델 선택:
76
+ ```
77
+ options:
78
+ - label: "gpt-5.4" → 최신 플래그십
79
+ - label: "gpt-5.3-codex" → 코딩 특화 (Recommended)
80
+ - label: "gpt-5.1-codex-mini" → 경량 Spark
81
+ - label: "o3" → 추론 특화
82
+ - label: "o4-mini" → 추론 경량
83
+ ```
84
+ 3. AskUserQuestion으로 effort 선택: `low | medium | high | xhigh`
85
+ 4. Edit 도구로 config.toml 수정
86
+
87
+ #### 기본 모델 변경
88
+
89
+ 위와 동일한 모델/effort 선택 후 top-level `model`, `model_reasoning_effort` 수정.
90
+
91
+ #### 프로파일 추가/삭제
92
+
93
+ 추가: 이름 → 모델 → effort → `[profiles.name]` 섹션 추가
94
+ 삭제: 선택 → 확인 → 섹션 제거
95
+
96
+ ### Step 4: 결과 확인
97
+
98
+ 변경된 config.toml을 다시 읽어 업데이트된 테이블 표시.
99
+
100
+ ---
101
+
102
+ ## Gemini 워크플로우
103
+
104
+ ### Step 1: triflux-profiles.json 읽기 + 현재 상태 표시
105
+
106
+ `~/.gemini/triflux-profiles.json`을 Read 도구로 읽고 프로필 테이블을 마크다운으로 출력한다:
107
+
108
+ ```
109
+ | 프로필 | 모델 | 설명 |
110
+ |--------|------|------|
111
+ | pro31 | gemini-3.1-pro-preview | 3.1 Pro — 플래그십 |
112
+ | flash3 | gemini-3-flash-preview | 3.0 Flash — 빠른 응답 |
113
+ | ... | ... | ... |
114
+ ```
115
+
116
+ 기본 모델(top-level `model`)도 함께 표시.
117
+
118
+ ### Step 2: 작업 선택 (AskUserQuestion)
119
+
120
+ ```
121
+ question: "어떤 작업을 하시겠습니까?"
122
+ header: "작업"
123
+ options:
124
+ - label: "프로필 모델 변경"
125
+ description: "기존 프로필의 모델을 수정"
126
+ - label: "기본 모델 변경"
127
+ description: "top-level default 모델 수정"
128
+ - label: "프로필 추가"
129
+ description: "새 프로필 생성"
130
+ - label: "프로필 삭제"
131
+ description: "기존 프로필 제거"
132
+ ```
133
+
134
+ ### Step 3: 선택에 따른 세부 플로우
135
+
136
+ #### 프로필 모델 변경
137
+
138
+ 1. AskUserQuestion으로 프로필 선택
139
+ 2. AskUserQuestion으로 모델 선택:
140
+ ```
141
+ options:
142
+ - label: "gemini-3.1-pro-preview" → 3.1 Pro — 플래그십
143
+ - label: "gemini-3-flash-preview" → 3.0 Flash — 빠른 응답
144
+ - label: "gemini-2.5-pro" → 2.5 Pro — 안정
145
+ - label: "gemini-2.5-flash" → 2.5 Flash — 경량
146
+ - label: "gemini-2.5-flash-lite" → 2.5 Flash Lite — 최경량
147
+ ```
148
+ 3. Edit 도구로 triflux-profiles.json 수정
149
+
150
+ #### 기본 모델 변경
151
+
152
+ 모델 선택 후 top-level `model` 수정.
153
+
154
+ #### 프로필 추가/삭제
155
+
156
+ 추가: 이름 → 모델 → 설명 → profiles에 추가
157
+ 삭제: 선택 → 확인 → profiles에서 제거
158
+
159
+ ### Step 4: 결과 확인
160
+
161
+ 변경된 JSON을 다시 읽어 업데이트된 테이블 표시.
162
+
163
+ ---
164
+
165
+ ## 수정 규칙
166
+
167
+ ### Codex (config.toml)
168
+
169
+ - **백업 필수**: 수정 전 원본 기억
170
+ - **프로파일 섹션 형식**: `[profiles.name]\nmodel = "..."\nmodel_reasoning_effort = "..."`
171
+ - **다른 섹션 건드리지 않기**: `[notice]`, `[features]`, `[mcp_servers.*]` 등 절대 수정 금지
172
+ - **Edit 도구 사용**: old_string → new_string으로 정확한 섹션만 치환
173
+
174
+ ### Gemini (triflux-profiles.json)
175
+
176
+ - **백업 필수**: `.bak` 자동 생성
177
+ - **JSON 형식 유지**: `profiles.{name}.model`, `profiles.{name}.hint`
178
+ - **Edit 도구 사용**: old_string → new_string으로 해당 프로필만 치환
179
+
180
+ ## 참조
181
+
182
+ ### Codex 모델
183
+
184
+ | 모델 | 용도 |
185
+ |------|------|
186
+ | gpt-5.4 | 최신 플래그십 |
187
+ | gpt-5.3-codex | 코딩 특화 |
188
+ | gpt-5.1-codex-mini | 경량 Spark |
189
+ | o3 | 추론 특화 |
190
+ | o4-mini | 추론 경량 |
191
+
192
+ ### Codex Effort 레벨
193
+
194
+ | 레벨 | 설명 |
195
+ |------|------|
196
+ | low | 빠른 응답, 최소 추론 |
197
+ | medium | 균형 잡힌 추론 |
198
+ | high | 깊은 추론 |
199
+ | xhigh | 최대 추론 (느림) |
200
+
201
+ ### Gemini 모델
202
+
203
+ | 모델 | 용도 |
204
+ |------|------|
205
+ | gemini-3.1-pro-preview | 3.1 Pro — 플래그십 (1M ctx) |
206
+ | gemini-3-flash-preview | 3.0 Flash — 빠른 응답, 비용 효율 |
207
+ | gemini-2.5-pro | 2.5 Pro — 안정 (추론 강화) |
208
+ | gemini-2.5-flash | 2.5 Flash — 경량 범용 |
209
+ | gemini-2.5-flash-lite | 2.5 Flash Lite — 최경량 |
210
+
211
+ ### Gemini → 에이전트 배치 (벤치마크 기반)
212
+
213
+ | 프로필 | 모델 | 에이전트 |
214
+ |--------|------|----------|
215
+ | pro31 | gemini-3.1-pro-preview | executor, debugger, deep-executor, architect, planner, critic, analyst, code-reviewer, security-reviewer, quality-reviewer, scientist-deep, designer |
216
+ | flash3 | gemini-3-flash-preview | writer, build-fixer, spark, 기본 폴백 |
217
+ | pro25 | gemini-2.5-pro | (예비 — 3.1 불안정 시 폴백) |
218
+ | flash25 | gemini-2.5-flash | (예비 — 대량 배치) |
219
+ | lite25 | gemini-2.5-flash-lite | (예비 — 최경량) |
220
+
221
+ ### 설정 파일 경로
222
+
223
+ - Codex: `~/.codex/config.toml`
224
+ - Gemini: `~/.gemini/triflux-profiles.json`
225
+
226
+ ## 에러 처리
227
+
228
+ | 상황 | 처리 |
229
+ |------|------|
230
+ | config.toml 미존재 | `/tfx-setup` 안내 |
231
+ | triflux-profiles.json 미존재 | 기본값으로 자동 생성 |
232
+ | 파싱 실패 | 백업 후 수동 수정 안내 |
233
+ | 중복 프로파일명 | 이미 존재함 알림, 기존 편집으로 전환 |
234
+
235
+ ## standalone TUI
236
+
237
+ 터미널에서 직접 실행:
238
+ - Codex: `node tui/codex-profile.mjs`
239
+ - Gemini: `node tui/gemini-profile.mjs`
@@ -1,8 +1,6 @@
1
1
  {
2
2
  "name": "tfx-profile",
3
3
  "description": "Codex/Gemini CLI 프로파일·모델 관리 인터랙티브 UI. tfx-route가 사용하는 프로파일 목록 조회, 모델 변경, effort 조정, 추가/삭제를 AskUserQuestion 기반 인터랙티브 선택지로 수행합니다. Use when: codex profile, codex model, gemini profile, gemini model, 프로파일 변경, 모델 변경, effort 변경, codex 설정, gemini 설정, profile manager, 프로파일 관리, 어떤 모델, tfx profile",
4
- "triggers": [
5
- "tfx-profile"
6
- ],
4
+ "triggers": ["tfx-profile"],
7
5
  "argument_hint": "[--list] [--codex | --gemini]"
8
6
  }