triflux 10.0.0 → 10.0.2

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 (426) hide show
  1. package/CLAUDE.md +171 -0
  2. package/README.md +32 -15
  3. package/bin/triflux.mjs +62 -5
  4. package/hooks/agent-route-guard.mjs +109 -0
  5. package/hooks/cross-review-tracker.mjs +122 -0
  6. package/hooks/error-context.mjs +148 -0
  7. package/hooks/hook-adaptive-collector.mjs +86 -0
  8. package/hooks/hook-manager.mjs +365 -0
  9. package/hooks/hook-orchestrator.mjs +312 -0
  10. package/hooks/hook-registry.json +246 -0
  11. package/hooks/hooks.json +89 -0
  12. package/hooks/keyword-rules.json +574 -0
  13. package/hooks/lib/resolve-root.mjs +59 -0
  14. package/hooks/mcp-config-watcher.mjs +80 -0
  15. package/hooks/pipeline-stop.mjs +76 -0
  16. package/hooks/safety-guard.mjs +169 -0
  17. package/hooks/subagent-verifier.mjs +80 -0
  18. package/hub/account-broker.mjs +251 -0
  19. package/hub/adaptive-diagnostic.mjs +323 -0
  20. package/hub/adaptive-inject.mjs +186 -0
  21. package/hub/adaptive-memory.mjs +163 -0
  22. package/hub/adaptive.mjs +143 -0
  23. package/hub/assign-callbacks.mjs +133 -0
  24. package/hub/bridge.mjs +799 -0
  25. package/hub/cli-adapter-base.mjs +280 -0
  26. package/hub/codex-adapter.mjs +199 -0
  27. package/hub/codex-compat.mjs +11 -0
  28. package/hub/codex-preflight.mjs +166 -0
  29. package/hub/delegator/contracts.mjs +37 -0
  30. package/hub/delegator/index.mjs +14 -0
  31. package/hub/delegator/schema/delegator-tools.schema.json +250 -0
  32. package/hub/delegator/service.mjs +307 -0
  33. package/hub/delegator/tool-definitions.mjs +35 -0
  34. package/hub/fullcycle.mjs +96 -0
  35. package/hub/gemini-adapter.mjs +180 -0
  36. package/hub/hitl.mjs +143 -0
  37. package/hub/intent.mjs +193 -0
  38. package/hub/lib/cache-guard.mjs +114 -0
  39. package/hub/lib/known-errors.json +72 -0
  40. package/hub/lib/memory-store.mjs +748 -0
  41. package/hub/lib/process-utils.mjs +361 -0
  42. package/hub/lib/ssh-command.mjs +211 -0
  43. package/hub/lib/ssh-retry.mjs +59 -0
  44. package/hub/lib/uuidv7.mjs +44 -0
  45. package/hub/memory-doctor.mjs +480 -0
  46. package/hub/middleware/request-logger.mjs +161 -0
  47. package/hub/paths.mjs +30 -0
  48. package/hub/pipe.mjs +664 -0
  49. package/hub/pipeline/gates/confidence.mjs +56 -0
  50. package/hub/pipeline/gates/consensus.mjs +94 -0
  51. package/hub/pipeline/gates/index.mjs +5 -0
  52. package/hub/pipeline/gates/selfcheck.mjs +82 -0
  53. package/hub/pipeline/index.mjs +318 -0
  54. package/hub/pipeline/state.mjs +191 -0
  55. package/hub/pipeline/transitions.mjs +124 -0
  56. package/hub/platform.mjs +225 -0
  57. package/hub/public/dashboard.html +355 -0
  58. package/hub/public/tray-icon.ico +0 -0
  59. package/hub/public/tray-icon.png +0 -0
  60. package/hub/quality/deslop.mjs +253 -0
  61. package/hub/reflexion.mjs +372 -0
  62. package/hub/research.mjs +146 -0
  63. package/hub/router.mjs +791 -0
  64. package/hub/routing/complexity.mjs +166 -0
  65. package/hub/routing/index.mjs +117 -0
  66. package/hub/routing/q-learning.mjs +336 -0
  67. package/hub/schema.sql +148 -0
  68. package/hub/server.mjs +1264 -0
  69. package/hub/session-fingerprint.mjs +352 -0
  70. package/hub/state.mjs +258 -0
  71. package/hub/store-adapter.mjs +118 -0
  72. package/hub/store.mjs +857 -0
  73. package/hub/team/agent-map.json +11 -0
  74. package/hub/team/ansi.mjs +379 -0
  75. package/hub/team/backend.mjs +90 -0
  76. package/hub/team/cli/commands/attach.mjs +37 -0
  77. package/hub/team/cli/commands/control.mjs +43 -0
  78. package/hub/team/cli/commands/debug.mjs +74 -0
  79. package/hub/team/cli/commands/focus.mjs +53 -0
  80. package/hub/team/cli/commands/interrupt.mjs +36 -0
  81. package/hub/team/cli/commands/kill.mjs +37 -0
  82. package/hub/team/cli/commands/list.mjs +24 -0
  83. package/hub/team/cli/commands/send.mjs +37 -0
  84. package/hub/team/cli/commands/start/index.mjs +106 -0
  85. package/hub/team/cli/commands/start/parse-args.mjs +130 -0
  86. package/hub/team/cli/commands/start/start-headless.mjs +109 -0
  87. package/hub/team/cli/commands/start/start-in-process.mjs +40 -0
  88. package/hub/team/cli/commands/start/start-mux.mjs +73 -0
  89. package/hub/team/cli/commands/start/start-wt.mjs +69 -0
  90. package/hub/team/cli/commands/status.mjs +87 -0
  91. package/hub/team/cli/commands/stop.mjs +31 -0
  92. package/hub/team/cli/commands/task.mjs +30 -0
  93. package/hub/team/cli/commands/tasks.mjs +13 -0
  94. package/hub/team/cli/help.mjs +42 -0
  95. package/hub/team/cli/index.mjs +41 -0
  96. package/hub/team/cli/manifest.mjs +29 -0
  97. package/hub/team/cli/render.mjs +30 -0
  98. package/hub/team/cli/services/attach-fallback.mjs +54 -0
  99. package/hub/team/cli/services/hub-client.mjs +227 -0
  100. package/hub/team/cli/services/member-selector.mjs +30 -0
  101. package/hub/team/cli/services/native-control.mjs +117 -0
  102. package/hub/team/cli/services/runtime-mode.mjs +62 -0
  103. package/hub/team/cli/services/state-store.mjs +48 -0
  104. package/hub/team/cli/services/task-model.mjs +30 -0
  105. package/hub/team/conductor-mesh-bridge.mjs +121 -0
  106. package/hub/team/conductor.mjs +671 -0
  107. package/hub/team/dashboard-anchor.mjs +14 -0
  108. package/hub/team/dashboard-layout.mjs +33 -0
  109. package/hub/team/dashboard-open.mjs +153 -0
  110. package/hub/team/dashboard.mjs +274 -0
  111. package/hub/team/event-log.mjs +76 -0
  112. package/hub/team/handoff.mjs +303 -0
  113. package/hub/team/headless.mjs +1156 -0
  114. package/hub/team/health-probe.mjs +272 -0
  115. package/hub/team/launcher-template.mjs +95 -0
  116. package/hub/team/lead-control.mjs +104 -0
  117. package/hub/team/native-supervisor.mjs +392 -0
  118. package/hub/team/native.mjs +649 -0
  119. package/hub/team/nativeProxy.mjs +688 -0
  120. package/hub/team/notify.mjs +293 -0
  121. package/hub/team/orchestrator.mjs +161 -0
  122. package/hub/team/pane.mjs +153 -0
  123. package/hub/team/process-cleanup.mjs +342 -0
  124. package/hub/team/psmux.mjs +1354 -0
  125. package/hub/team/remote-probe.mjs +276 -0
  126. package/hub/team/remote-session.mjs +299 -0
  127. package/hub/team/remote-watcher.mjs +478 -0
  128. package/hub/team/routing.mjs +223 -0
  129. package/hub/team/session-sync.mjs +169 -0
  130. package/hub/team/session.mjs +611 -0
  131. package/hub/team/shared.mjs +13 -0
  132. package/hub/team/staleState.mjs +361 -0
  133. package/hub/team/swarm-hypervisor.mjs +589 -0
  134. package/hub/team/swarm-locks.mjs +204 -0
  135. package/hub/team/swarm-planner.mjs +260 -0
  136. package/hub/team/swarm-reconciler.mjs +137 -0
  137. package/hub/team/tui-lite.mjs +380 -0
  138. package/hub/team/tui-remote-adapter.mjs +393 -0
  139. package/hub/team/tui-viewer.mjs +463 -0
  140. package/hub/team/tui.mjs +1449 -0
  141. package/hub/team/worktree-lifecycle.mjs +193 -0
  142. package/hub/team/wt-manager.mjs +407 -0
  143. package/hub/team/wt-templates.json +43 -0
  144. package/hub/team-bridge.mjs +27 -0
  145. package/hub/token-mode.mjs +224 -0
  146. package/hub/tools.mjs +636 -0
  147. package/hub/tray.mjs +376 -0
  148. package/hub/workers/claude-worker.mjs +475 -0
  149. package/hub/workers/codex-mcp.mjs +507 -0
  150. package/hub/workers/delegator-mcp.mjs +1076 -0
  151. package/hub/workers/factory.mjs +21 -0
  152. package/hub/workers/gemini-worker.mjs +374 -0
  153. package/hub/workers/interface.mjs +52 -0
  154. package/hub/workers/worker-utils.mjs +104 -0
  155. package/hud/colors.mjs +88 -0
  156. package/hud/constants.mjs +88 -0
  157. package/hud/context-monitor.mjs +403 -0
  158. package/hud/hud-qos-status.mjs +210 -0
  159. package/hud/providers/claude.mjs +314 -0
  160. package/hud/providers/codex.mjs +151 -0
  161. package/hud/providers/gemini.mjs +320 -0
  162. package/hud/renderers.mjs +442 -0
  163. package/hud/terminal.mjs +140 -0
  164. package/hud/utils.mjs +313 -0
  165. package/mesh/index.mjs +63 -0
  166. package/mesh/mesh-budget.mjs +128 -0
  167. package/mesh/mesh-heartbeat.mjs +100 -0
  168. package/mesh/mesh-protocol.mjs +96 -0
  169. package/mesh/mesh-queue.mjs +165 -0
  170. package/mesh/mesh-registry.mjs +78 -0
  171. package/mesh/mesh-router.mjs +76 -0
  172. package/package.json +8 -1
  173. package/references/hosts.json +33 -0
  174. package/scripts/__tests__/gen-skill-docs.test.mjs +87 -0
  175. package/scripts/__tests__/keyword-detector.test.mjs +234 -0
  176. package/scripts/__tests__/mcp-guard-engine.test.mjs +118 -0
  177. package/scripts/__tests__/remote-spawn-transfer.test.mjs +117 -0
  178. package/scripts/__tests__/remote-spawn.test.mjs +92 -0
  179. package/scripts/__tests__/skill-template.test.mjs +193 -0
  180. package/scripts/__tests__/smoke.test.mjs +34 -0
  181. package/scripts/cache-buildup.mjs +30 -0
  182. package/scripts/cache-doctor.mjs +149 -0
  183. package/scripts/cache-warmup.mjs +557 -0
  184. package/scripts/claudemd-sync.mjs +148 -0
  185. package/scripts/cli-route.sh +3 -0
  186. package/scripts/completions/tfx.bash +47 -0
  187. package/scripts/completions/tfx.fish +44 -0
  188. package/scripts/completions/tfx.zsh +83 -0
  189. package/scripts/cross-review-gate.mjs +126 -0
  190. package/scripts/cross-review-tracker.mjs +238 -0
  191. package/scripts/gen-skill-docs.mjs +111 -0
  192. package/scripts/headless-guard-fast.sh +21 -0
  193. package/scripts/headless-guard.mjs +360 -0
  194. package/scripts/hub-ensure.mjs +120 -0
  195. package/scripts/keyword-detector.mjs +272 -0
  196. package/scripts/keyword-rules-expander.mjs +521 -0
  197. package/scripts/lib/claudemd-scanner.mjs +218 -0
  198. package/scripts/lib/context.mjs +67 -0
  199. package/scripts/lib/cross-review-utils.mjs +51 -0
  200. package/scripts/lib/env-probe.mjs +241 -0
  201. package/scripts/lib/gemini-profiles.mjs +85 -0
  202. package/scripts/lib/handoff.mjs +171 -0
  203. package/scripts/lib/hook-utils.mjs +14 -0
  204. package/scripts/lib/keyword-rules.mjs +166 -0
  205. package/scripts/lib/logger.mjs +105 -0
  206. package/scripts/lib/mcp-filter.mjs +739 -0
  207. package/scripts/lib/mcp-guard-engine.mjs +954 -0
  208. package/scripts/lib/mcp-manifest.mjs +79 -0
  209. package/scripts/lib/mcp-server-catalog.mjs +118 -0
  210. package/scripts/lib/psmux-info.mjs +119 -0
  211. package/scripts/lib/remote-spawn-transfer.mjs +196 -0
  212. package/scripts/lib/skill-template.mjs +326 -0
  213. package/scripts/mcp-check.mjs +237 -0
  214. package/scripts/mcp-cleanup.ps1 +17 -0
  215. package/scripts/mcp-gateway-config.mjs +207 -0
  216. package/scripts/mcp-gateway-ensure.mjs +85 -0
  217. package/scripts/mcp-gateway-integration-test.mjs +228 -0
  218. package/scripts/mcp-gateway-start.mjs +226 -0
  219. package/scripts/mcp-gateway-start.ps1 +141 -0
  220. package/scripts/mcp-gateway-verify.mjs +77 -0
  221. package/scripts/mcp-safety-guard.mjs +44 -0
  222. package/scripts/notion-read.mjs +556 -0
  223. package/scripts/pack.mjs +295 -0
  224. package/scripts/preflight-cache.mjs +69 -0
  225. package/scripts/preinstall.mjs +96 -0
  226. package/scripts/remote-spawn.mjs +1376 -0
  227. package/scripts/run.cjs +79 -0
  228. package/scripts/session-spawn-helper.mjs +185 -0
  229. package/scripts/setup.mjs +1178 -0
  230. package/scripts/test-lock.mjs +71 -0
  231. package/scripts/test-tfx-route-no-claude-native.mjs +57 -0
  232. package/scripts/tfx-batch-stats.mjs +96 -0
  233. package/scripts/tfx-gate-activate.mjs +89 -0
  234. package/scripts/tfx-route-post.mjs +505 -0
  235. package/scripts/tfx-route-worker.mjs +223 -0
  236. package/scripts/tfx-route.sh +2014 -0
  237. package/scripts/tmp-cleanup.mjs +103 -0
  238. package/scripts/token-snapshot.mjs +575 -0
  239. package/skills/tfx-auto/SKILL.md.tmpl +2 -3
  240. package/skills/tfx-autoresearch/SKILL.md +6 -5
  241. package/skills/tfx-codex/SKILL.md.tmpl +2 -3
  242. package/skills/tfx-codex-swarm-workspace/iteration-1/benchmark.json +33 -0
  243. package/skills/tfx-codex-swarm-workspace/iteration-1/full-swarm-all-prds/eval_metadata.json +42 -0
  244. package/skills/tfx-codex-swarm-workspace/iteration-1/full-swarm-all-prds/with_skill/grading.json +11 -0
  245. package/skills/tfx-codex-swarm-workspace/iteration-1/full-swarm-all-prds/with_skill/outputs/analysis.md +87 -0
  246. package/skills/tfx-codex-swarm-workspace/iteration-1/full-swarm-all-prds/with_skill/outputs/classification.md +35 -0
  247. package/skills/tfx-codex-swarm-workspace/iteration-1/full-swarm-all-prds/with_skill/outputs/commands.sh +275 -0
  248. package/skills/tfx-codex-swarm-workspace/iteration-1/full-swarm-all-prds/with_skill/outputs/routing.md +56 -0
  249. package/skills/tfx-codex-swarm-workspace/iteration-1/full-swarm-all-prds/with_skill/timing.json +5 -0
  250. package/skills/tfx-codex-swarm-workspace/iteration-1/full-swarm-all-prds/without_skill/grading.json +11 -0
  251. package/skills/tfx-codex-swarm-workspace/iteration-1/full-swarm-all-prds/without_skill/outputs/analysis.md +92 -0
  252. package/skills/tfx-codex-swarm-workspace/iteration-1/full-swarm-all-prds/without_skill/outputs/classification.md +71 -0
  253. package/skills/tfx-codex-swarm-workspace/iteration-1/full-swarm-all-prds/without_skill/outputs/commands.sh +264 -0
  254. package/skills/tfx-codex-swarm-workspace/iteration-1/full-swarm-all-prds/without_skill/outputs/routing.md +113 -0
  255. package/skills/tfx-codex-swarm-workspace/iteration-1/full-swarm-all-prds/without_skill/timing.json +5 -0
  256. package/skills/tfx-codex-swarm-workspace/iteration-1/implicit-swarm-no-keywords/eval_metadata.json +32 -0
  257. package/skills/tfx-codex-swarm-workspace/iteration-1/implicit-swarm-no-keywords/with_skill/grading.json +9 -0
  258. package/skills/tfx-codex-swarm-workspace/iteration-1/implicit-swarm-no-keywords/with_skill/outputs/analysis.md +96 -0
  259. package/skills/tfx-codex-swarm-workspace/iteration-1/implicit-swarm-no-keywords/with_skill/outputs/classification.md +38 -0
  260. package/skills/tfx-codex-swarm-workspace/iteration-1/implicit-swarm-no-keywords/with_skill/outputs/commands.sh +151 -0
  261. package/skills/tfx-codex-swarm-workspace/iteration-1/implicit-swarm-no-keywords/with_skill/outputs/routing.md +51 -0
  262. package/skills/tfx-codex-swarm-workspace/iteration-1/implicit-swarm-no-keywords/with_skill/timing.json +5 -0
  263. package/skills/tfx-codex-swarm-workspace/iteration-1/implicit-swarm-no-keywords/without_skill/grading.json +9 -0
  264. package/skills/tfx-codex-swarm-workspace/iteration-1/implicit-swarm-no-keywords/without_skill/outputs/analysis.md +127 -0
  265. package/skills/tfx-codex-swarm-workspace/iteration-1/implicit-swarm-no-keywords/without_skill/outputs/classification.md +57 -0
  266. package/skills/tfx-codex-swarm-workspace/iteration-1/implicit-swarm-no-keywords/without_skill/outputs/commands.sh +129 -0
  267. package/skills/tfx-codex-swarm-workspace/iteration-1/implicit-swarm-no-keywords/without_skill/outputs/routing.md +84 -0
  268. package/skills/tfx-codex-swarm-workspace/iteration-1/implicit-swarm-no-keywords/without_skill/timing.json +5 -0
  269. package/skills/tfx-codex-swarm-workspace/iteration-1/selective-spawn-with-override/eval_metadata.json +27 -0
  270. package/skills/tfx-codex-swarm-workspace/iteration-1/selective-spawn-with-override/with_skill/grading.json +8 -0
  271. package/skills/tfx-codex-swarm-workspace/iteration-1/selective-spawn-with-override/with_skill/outputs/analysis.md +98 -0
  272. package/skills/tfx-codex-swarm-workspace/iteration-1/selective-spawn-with-override/with_skill/outputs/classification.md +65 -0
  273. package/skills/tfx-codex-swarm-workspace/iteration-1/selective-spawn-with-override/with_skill/outputs/commands.sh +123 -0
  274. package/skills/tfx-codex-swarm-workspace/iteration-1/selective-spawn-with-override/with_skill/outputs/routing.md +66 -0
  275. package/skills/tfx-codex-swarm-workspace/iteration-1/selective-spawn-with-override/with_skill/timing.json +5 -0
  276. package/skills/tfx-codex-swarm-workspace/iteration-1/selective-spawn-with-override/without_skill/grading.json +8 -0
  277. package/skills/tfx-codex-swarm-workspace/iteration-1/selective-spawn-with-override/without_skill/outputs/analysis.md +88 -0
  278. package/skills/tfx-codex-swarm-workspace/iteration-1/selective-spawn-with-override/without_skill/outputs/classification.md +40 -0
  279. package/skills/tfx-codex-swarm-workspace/iteration-1/selective-spawn-with-override/without_skill/outputs/commands.sh +130 -0
  280. package/skills/tfx-codex-swarm-workspace/iteration-1/selective-spawn-with-override/without_skill/outputs/routing.md +61 -0
  281. package/skills/tfx-codex-swarm-workspace/iteration-1/selective-spawn-with-override/without_skill/timing.json +5 -0
  282. package/skills/tfx-deep-interview/SKILL.md +1 -2
  283. package/skills/tfx-plan/SKILL.md.tmpl +2 -3
  284. package/skills/tfx-psmux-rules/SKILL.md +11 -2
  285. package/skills/tfx-qa/SKILL.md.tmpl +2 -3
  286. package/skills/tfx-remote-spawn/SKILL.md +8 -11
  287. package/skills/tfx-research/SKILL.md.tmpl +2 -3
  288. package/skills/tfx-review/SKILL.md.tmpl +2 -3
  289. package/skills/tfx-workspace/async-tests/run-tests.sh +203 -0
  290. package/skills/tfx-workspace/evals/evals.json +79 -0
  291. package/skills/tfx-workspace/iteration-1/benchmark.json +162 -0
  292. package/skills/tfx-workspace/iteration-1/codex-gemini-remap/eval_metadata.json +11 -0
  293. package/skills/tfx-workspace/iteration-1/codex-gemini-remap/old_skill/grading.json +9 -0
  294. package/skills/tfx-workspace/iteration-1/codex-gemini-remap/old_skill/outputs/analysis.md +154 -0
  295. package/skills/tfx-workspace/iteration-1/codex-gemini-remap/old_skill/timing.json +5 -0
  296. package/skills/tfx-workspace/iteration-1/codex-gemini-remap/with_skill/grading.json +9 -0
  297. package/skills/tfx-workspace/iteration-1/codex-gemini-remap/with_skill/outputs/analysis.md +126 -0
  298. package/skills/tfx-workspace/iteration-1/codex-gemini-remap/with_skill/timing.json +5 -0
  299. package/skills/tfx-workspace/iteration-1/doctor-diagnosis/eval_metadata.json +11 -0
  300. package/skills/tfx-workspace/iteration-1/doctor-diagnosis/old_skill/grading.json +9 -0
  301. package/skills/tfx-workspace/iteration-1/doctor-diagnosis/old_skill/outputs/analysis.md +119 -0
  302. package/skills/tfx-workspace/iteration-1/doctor-diagnosis/old_skill/timing.json +5 -0
  303. package/skills/tfx-workspace/iteration-1/doctor-diagnosis/with_skill/grading.json +9 -0
  304. package/skills/tfx-workspace/iteration-1/doctor-diagnosis/with_skill/outputs/analysis.md +115 -0
  305. package/skills/tfx-workspace/iteration-1/doctor-diagnosis/with_skill/timing.json +5 -0
  306. package/skills/tfx-workspace/iteration-1/hub-start-sequence/eval_metadata.json +10 -0
  307. package/skills/tfx-workspace/iteration-1/hub-start-sequence/old_skill/grading.json +8 -0
  308. package/skills/tfx-workspace/iteration-1/hub-start-sequence/old_skill/outputs/analysis.md +86 -0
  309. package/skills/tfx-workspace/iteration-1/hub-start-sequence/old_skill/timing.json +5 -0
  310. package/skills/tfx-workspace/iteration-1/hub-start-sequence/with_skill/grading.json +8 -0
  311. package/skills/tfx-workspace/iteration-1/hub-start-sequence/with_skill/outputs/analysis.md +81 -0
  312. package/skills/tfx-workspace/iteration-1/hub-start-sequence/with_skill/timing.json +5 -0
  313. package/skills/tfx-workspace/iteration-1/multi-team-creation/eval_metadata.json +12 -0
  314. package/skills/tfx-workspace/iteration-1/multi-team-creation/old_skill/grading.json +10 -0
  315. package/skills/tfx-workspace/iteration-1/multi-team-creation/old_skill/outputs/analysis.md +316 -0
  316. package/skills/tfx-workspace/iteration-1/multi-team-creation/old_skill/timing.json +5 -0
  317. package/skills/tfx-workspace/iteration-1/multi-team-creation/with_skill/grading.json +10 -0
  318. package/skills/tfx-workspace/iteration-1/multi-team-creation/with_skill/outputs/analysis.md +352 -0
  319. package/skills/tfx-workspace/iteration-1/multi-team-creation/with_skill/timing.json +5 -0
  320. package/skills/tfx-workspace/iteration-1/review.html +1325 -0
  321. package/skills/tfx-workspace/iteration-1/routing-implement-shortcut/eval_metadata.json +12 -0
  322. package/skills/tfx-workspace/iteration-1/routing-implement-shortcut/old_skill/grading.json +10 -0
  323. package/skills/tfx-workspace/iteration-1/routing-implement-shortcut/old_skill/outputs/analysis.md +97 -0
  324. package/skills/tfx-workspace/iteration-1/routing-implement-shortcut/old_skill/timing.json +5 -0
  325. package/skills/tfx-workspace/iteration-1/routing-implement-shortcut/with_skill/grading.json +10 -0
  326. package/skills/tfx-workspace/iteration-1/routing-implement-shortcut/with_skill/outputs/analysis.md +94 -0
  327. package/skills/tfx-workspace/iteration-1/routing-implement-shortcut/with_skill/timing.json +5 -0
  328. package/skills/tfx-workspace/iteration-1/routing-multi-task-triage/eval_metadata.json +12 -0
  329. package/skills/tfx-workspace/iteration-1/routing-multi-task-triage/old_skill/grading.json +10 -0
  330. package/skills/tfx-workspace/iteration-1/routing-multi-task-triage/old_skill/outputs/analysis.md +209 -0
  331. package/skills/tfx-workspace/iteration-1/routing-multi-task-triage/old_skill/timing.json +5 -0
  332. package/skills/tfx-workspace/iteration-1/routing-multi-task-triage/with_skill/grading.json +10 -0
  333. package/skills/tfx-workspace/iteration-1/routing-multi-task-triage/with_skill/outputs/analysis.md +193 -0
  334. package/skills/tfx-workspace/iteration-1/routing-multi-task-triage/with_skill/timing.json +5 -0
  335. package/skills/tfx-workspace/iteration-2/benchmark.json +62 -0
  336. package/skills/tfx-workspace/iteration-2/multi-team-creation-refactored/eval_metadata.json +13 -0
  337. package/skills/tfx-workspace/iteration-2/multi-team-creation-refactored/old_skill/grading.json +11 -0
  338. package/skills/tfx-workspace/iteration-2/multi-team-creation-refactored/old_skill/outputs/analysis.md +382 -0
  339. package/skills/tfx-workspace/iteration-2/multi-team-creation-refactored/old_skill/timing.json +5 -0
  340. package/skills/tfx-workspace/iteration-2/multi-team-creation-refactored/with_skill/grading.json +11 -0
  341. package/skills/tfx-workspace/iteration-2/multi-team-creation-refactored/with_skill/outputs/analysis.md +333 -0
  342. package/skills/tfx-workspace/iteration-2/multi-team-creation-refactored/with_skill/timing.json +5 -0
  343. package/skills/tfx-workspace/iteration-2/review.html +1325 -0
  344. package/skills/tfx-workspace/skill-snapshot/tfx-auto/SKILL.md +217 -0
  345. package/skills/{tfx-auto-codex/SKILL.md.tmpl → tfx-workspace/skill-snapshot/tfx-auto-codex/SKILL.md} +3 -31
  346. package/skills/tfx-workspace/skill-snapshot/tfx-codex/SKILL.md +65 -0
  347. package/skills/tfx-workspace/skill-snapshot/tfx-doctor/SKILL.md +94 -0
  348. package/skills/{tfx-gemini/SKILL.md.tmpl → tfx-workspace/skill-snapshot/tfx-gemini/SKILL.md} +6 -14
  349. package/skills/tfx-workspace/skill-snapshot/tfx-hub/SKILL.md +133 -0
  350. package/skills/tfx-workspace/skill-snapshot/tfx-multi/SKILL.md +426 -0
  351. package/skills/tfx-workspace/skill-snapshot/tfx-setup/SKILL.md +101 -0
  352. package/skills/merge-worktree/SKILL.md.tmpl +0 -144
  353. package/skills/shared/arguments-processing.md +0 -2
  354. package/skills/shared/mandatory-rules.md +0 -6
  355. package/skills/shared/telemetry-segment.md +0 -6
  356. package/skills/star-prompt/SKILL.md.tmpl +0 -122
  357. package/skills/tfx-analysis/SKILL.md.tmpl +0 -106
  358. package/skills/tfx-analysis/skill.json +0 -11
  359. package/skills/tfx-auto/skill.json +0 -26
  360. package/skills/tfx-auto-codex/skill.json +0 -8
  361. package/skills/tfx-autopilot/SKILL.md.tmpl +0 -115
  362. package/skills/tfx-autopilot/skill.json +0 -10
  363. package/skills/tfx-autoresearch/SKILL.md.tmpl +0 -135
  364. package/skills/tfx-autoresearch/skill.json +0 -14
  365. package/skills/tfx-autoroute/SKILL.md.tmpl +0 -188
  366. package/skills/tfx-autoroute/skill.json +0 -12
  367. package/skills/tfx-codex/skill.json +0 -8
  368. package/skills/tfx-codex-swarm/SKILL.md.tmpl +0 -16
  369. package/skills/tfx-codex-swarm/skill.json +0 -5
  370. package/skills/tfx-consensus/SKILL.md.tmpl +0 -145
  371. package/skills/tfx-consensus/skill.json +0 -8
  372. package/skills/tfx-debate/SKILL.md.tmpl +0 -191
  373. package/skills/tfx-debate/skill.json +0 -12
  374. package/skills/tfx-deep-analysis/SKILL.md.tmpl +0 -227
  375. package/skills/tfx-deep-analysis/skill.json +0 -10
  376. package/skills/tfx-deep-interview/SKILL.md.tmpl +0 -203
  377. package/skills/tfx-deep-interview/skill.json +0 -12
  378. package/skills/tfx-deep-plan/SKILL.md.tmpl +0 -281
  379. package/skills/tfx-deep-plan/skill.json +0 -13
  380. package/skills/tfx-deep-qa/SKILL.md.tmpl +0 -164
  381. package/skills/tfx-deep-qa/skill.json +0 -11
  382. package/skills/tfx-deep-research/SKILL.md.tmpl +0 -216
  383. package/skills/tfx-deep-research/skill.json +0 -14
  384. package/skills/tfx-deep-review/SKILL.md.tmpl +0 -178
  385. package/skills/tfx-deep-review/skill.json +0 -12
  386. package/skills/tfx-doctor/SKILL.md.tmpl +0 -172
  387. package/skills/tfx-doctor/skill.json +0 -8
  388. package/skills/tfx-find/skill.json +0 -12
  389. package/skills/tfx-forge/SKILL.md.tmpl +0 -187
  390. package/skills/tfx-forge/skill.json +0 -12
  391. package/skills/tfx-fullcycle/SKILL.md.tmpl +0 -285
  392. package/skills/tfx-fullcycle/skill.json +0 -11
  393. package/skills/tfx-gemini/skill.json +0 -8
  394. package/skills/tfx-hooks/SKILL.md.tmpl +0 -216
  395. package/skills/tfx-hooks/skill.json +0 -8
  396. package/skills/tfx-hub/SKILL.md.tmpl +0 -212
  397. package/skills/tfx-hub/skill.json +0 -8
  398. package/skills/tfx-index/skill.json +0 -11
  399. package/skills/tfx-interview/SKILL.md.tmpl +0 -284
  400. package/skills/tfx-interview/skill.json +0 -12
  401. package/skills/tfx-multi/SKILL.md.tmpl +0 -183
  402. package/skills/tfx-multi/skill.json +0 -8
  403. package/skills/tfx-panel/SKILL.md.tmpl +0 -188
  404. package/skills/tfx-panel/skill.json +0 -12
  405. package/skills/tfx-persist/SKILL.md.tmpl +0 -269
  406. package/skills/tfx-persist/skill.json +0 -12
  407. package/skills/tfx-plan/skill.json +0 -11
  408. package/skills/tfx-profile/SKILL.md.tmpl +0 -239
  409. package/skills/tfx-profile/skill.json +0 -8
  410. package/skills/tfx-prune/SKILL.md.tmpl +0 -199
  411. package/skills/tfx-prune/skill.json +0 -12
  412. package/skills/tfx-psmux-rules/SKILL.md.tmpl +0 -317
  413. package/skills/tfx-psmux-rules/skill.json +0 -8
  414. package/skills/tfx-qa/skill.json +0 -11
  415. package/skills/tfx-ralph/SKILL.md.tmpl +0 -27
  416. package/skills/tfx-ralph/skill.json +0 -8
  417. package/skills/tfx-remote-setup/SKILL.md.tmpl +0 -576
  418. package/skills/tfx-remote-setup/skill.json +0 -8
  419. package/skills/tfx-remote-spawn/SKILL.md.tmpl +0 -263
  420. package/skills/tfx-remote-spawn/skill.json +0 -9
  421. package/skills/tfx-research/skill.json +0 -13
  422. package/skills/tfx-review/skill.json +0 -11
  423. package/skills/tfx-setup/SKILL.md.tmpl +0 -380
  424. package/skills/tfx-setup/skill.json +0 -8
  425. package/skills/tfx-swarm/SKILL.md.tmpl +0 -154
  426. package/skills/tfx-swarm/skill.json +0 -5
@@ -2,16 +2,17 @@
2
2
  name: tfx-autoresearch
3
3
  description: >
4
4
  자율 웹 리서치 → 실행 가능 계획 도출.
5
- 주제를 받아 웹 검색 → 정보 수집 → 분석 → 구조화된 리서치 보고서 + 실행 계획 생성.
6
- '자율 리서치', 'autoresearch', '검색하고 정리해', 'research and plan' 같은 요청에 사용.
7
- 단순 검색은 tfx-research, 자율 리서치+계획 도출은 스킬.
5
+ 주제를 받아 웹 검색 → 정보 수집 → 분석 → 구조화된 리서치 보고서 생성.
6
+ '알아봐', '조사해', '리서치해줘', '검색하고 정리해', 'research and plan' 같은 요청에 반드시 사용.
7
+ 검색 실행 가능한 계획까지 도출이 필요할 때 적극 활용.
8
8
  triggers:
9
9
  - autoresearch
10
10
  - 자율 리서치
11
11
  - 자동 리서치
12
12
  - 웹 리서치
13
- - research and plan
14
- - 검색하고 정리해
13
+ - 조사해
14
+ - 알아봐
15
+ - research this
15
16
  argument-hint: "<topic>"
16
17
  source: GAP 분석 P2 #8
17
18
  ---
@@ -8,10 +8,9 @@ triggers:
8
8
  argument-hint: "\"작업 설명\" | N:codex \"작업 설명\""
9
9
  ---
10
10
 
11
- # tfx-codex — Codex-Only 오케스트레이터
11
+ # {{SKILL_NAME}} — Codex-Only 오케스트레이터
12
12
 
13
- > **ARGUMENTS 처리**: 이 스킬이 `ARGUMENTS: <값>`과 함께 호출되면, 해당 값을 사용자 입력으로 취급하여
14
- > 워크플로우의 첫 단계 입력으로 사용한다. ARGUMENTS가 비어있거나 없으면 기존 절차대로 사용자에게 입력을 요청한다.
13
+ {{> base}}
15
14
 
16
15
 
17
16
  > **래퍼**: tfx-auto의 Codex 전용 바로가기. TFX_CLI_MODE=codex.
@@ -0,0 +1,33 @@
1
+ {
2
+ "skill_name": "tfx-codex-swarm",
3
+ "iteration": 1,
4
+ "configurations": [
5
+ {
6
+ "name": "with_skill",
7
+ "pass_rate": {"mean": 1.0, "stddev": 0.0},
8
+ "total_tokens": {"mean": 30953, "stddev": 6089},
9
+ "duration_seconds": {"mean": 166.8, "stddev": 10.2},
10
+ "per_eval": [
11
+ {"eval_name": "full-swarm-all-prds", "pass_rate": 1.0, "assertions_passed": 7, "assertions_total": 7, "tokens": 37789, "duration_s": 178.4},
12
+ {"eval_name": "selective-spawn-with-override", "pass_rate": 1.0, "assertions_passed": 4, "assertions_total": 4, "tokens": 29085, "duration_s": 163.1},
13
+ {"eval_name": "implicit-swarm-no-keywords", "pass_rate": 1.0, "assertions_passed": 5, "assertions_total": 5, "tokens": 25984, "duration_s": 158.8}
14
+ ]
15
+ },
16
+ {
17
+ "name": "without_skill",
18
+ "pass_rate": {"mean": 0.875, "stddev": 0.144},
19
+ "total_tokens": {"mean": 53786, "stddev": 10873},
20
+ "duration_seconds": {"mean": 264.4, "stddev": 49.3},
21
+ "per_eval": [
22
+ {"eval_name": "full-swarm-all-prds", "pass_rate": 1.0, "assertions_passed": 7, "assertions_total": 7, "tokens": 50555, "duration_s": 218.2},
23
+ {"eval_name": "selective-spawn-with-override", "pass_rate": 1.0, "assertions_passed": 4, "assertions_total": 4, "tokens": 65928, "duration_s": 259.5},
24
+ {"eval_name": "implicit-swarm-no-keywords", "pass_rate": 0.6, "assertions_passed": 3, "assertions_total": 5, "tokens": 44875, "duration_s": 315.5}
25
+ ]
26
+ }
27
+ ],
28
+ "delta": {
29
+ "pass_rate": "+0.125 (87.5% → 100%)",
30
+ "tokens": "-42.5% (53.8K → 31.0K avg)",
31
+ "duration": "-36.9% (264s → 167s avg)"
32
+ }
33
+ }
@@ -0,0 +1,42 @@
1
+ {
2
+ "eval_id": 1,
3
+ "eval_name": "full-swarm-all-prds",
4
+ "prompt": ".omx/plans/ 에 PRD 7개 있는데 전부 codex swarm으로 돌려줘. 구현은 autopilot, 조사는 plan만 쓰고. 하나의 WT에 탭으로 넣어줘",
5
+ "assertions": [
6
+ {
7
+ "name": "all-7-prds-found",
8
+ "description": "7개 PRD 파일 모두 스캔 및 나열",
9
+ "check": "classification.md에 issue 24~30 모든 PRD가 언급되어야 함"
10
+ },
11
+ {
12
+ "name": "correct-type-classification",
13
+ "description": "구현(24,26,27,28,29) vs 조사(25,30) 정확히 분류",
14
+ "check": "issue 25, 30은 조사/investigation으로, 나머지는 구현/implement로 분류"
15
+ },
16
+ {
17
+ "name": "profile-routing-varies",
18
+ "description": "조사 태스크에 gpt54, 구현에 codex53 프로파일 적용",
19
+ "check": "routing.md에서 조사=gpt54_*, 구현=codex53_* 매핑"
20
+ },
21
+ {
22
+ "name": "worktree-per-task",
23
+ "description": "7개 독립 git worktree 생성 명령 존재",
24
+ "check": "commands.sh에 git worktree add 명령이 7개"
25
+ },
26
+ {
27
+ "name": "psmux-sessions",
28
+ "description": "7개 psmux 세션 생성 + codex 실행 명령",
29
+ "check": "commands.sh에 psmux new-session이 7개, send-keys에 codex 명령 포함"
30
+ },
31
+ {
32
+ "name": "single-wt-window",
33
+ "description": "하나의 WT 윈도우에 7탭 attach",
34
+ "check": "commands.sh에 wt-new-window 1회 + wt-tab 6회 (또는 wt.exe -w new + new-tab)"
35
+ },
36
+ {
37
+ "name": "omx-skill-mapping",
38
+ "description": "구현=$autopilot, 조사=$plan 매핑",
39
+ "check": "classification.md 또는 commands.sh에서 구현 태스크에 $autopilot, 조사에 $plan"
40
+ }
41
+ ]
42
+ }
@@ -0,0 +1,11 @@
1
+ {
2
+ "expectations": [
3
+ {"text": "all-7-prds-found", "passed": true, "evidence": "classification.md에 issue 24~30 모두 나열됨"},
4
+ {"text": "correct-type-classification", "passed": true, "evidence": "25,30=investigate, 24,26,27,28,29=implement 정확"},
5
+ {"text": "profile-routing-varies", "passed": true, "evidence": "implement→codex53_high, investigate→gpt54_high"},
6
+ {"text": "worktree-per-task", "passed": true, "evidence": "commands.sh에 git worktree add 7개 확인"},
7
+ {"text": "psmux-sessions", "passed": true, "evidence": "7개 psmux new-session + send-keys with codex"},
8
+ {"text": "single-wt-window", "passed": true, "evidence": "wt-new-window 1회 + wt-tab 6회"},
9
+ {"text": "omx-skill-mapping", "passed": true, "evidence": "implement=$plan→$autopilot, investigate=$plan"}
10
+ ]
11
+ }
@@ -0,0 +1,87 @@
1
+ # Codex Swarm - Summary Analysis
2
+
3
+ > Generated: 2026-03-30
4
+ > Skill: `tfx-codex-swarm` (SKILL.md)
5
+ > Input: `.omx/plans/prd-issue-{24..30}.md` (7 PRDs)
6
+ > User request: "전부 codex swarm으로 돌려줘. 구현은 autopilot, 조사는 plan만 쓰고. 하나의 WT에 탭으로 넣어줘"
7
+
8
+ ## Scan Result (Step 1)
9
+
10
+ `.omx/plans/` contains 20 files total. Among them, 7 are PRD files matching `prd-issue-*.md`:
11
+
12
+ | # | File | Lines |
13
+ |---|------|-------|
14
+ | 24 | `prd-issue-24-remote-spawn-file-transfer.md` | 73 |
15
+ | 25 | `prd-issue-25-remote-spawn-resize-blank-screen.md` | 76 |
16
+ | 26 | `prd-issue-26-remote-spawn-session-cleanup.md` | 70 |
17
+ | 27 | `prd-issue-27-hud-dashboard-anchor.md` | 73 |
18
+ | 28 | `prd-issue-28-headless-guard-spawn-deadlock.md` | 69 |
19
+ | 29 | `prd-issue-29-headless-cwd-propagation.md` | 70 |
20
+ | 30 | `prd-issue-30-remote-spawn-terminal-minimize.md` | 70 |
21
+
22
+ The remaining 13 files are plans (`plan-issue-*`), autopilot specs/impls, and an issue-validity report -- not PRDs.
23
+
24
+ ## Selection (Step 2)
25
+
26
+ User said "전부" (all) -- skipped interactive selection. All 7 PRDs selected.
27
+
28
+ ## Classification (Step 3)
29
+
30
+ | Type | Count | Issues | OMX Skill |
31
+ |------|-------|--------|-----------|
32
+ | **implement** | 5 | 24, 26, 27, 28, 29 | `$plan` -> `$autopilot` |
33
+ | **investigate** | 2 | 25, 30 | `$plan` only |
34
+
35
+ User explicitly overrode default skill assignment:
36
+ - Implement tasks use `$autopilot` (not the default `$plan -> $autopilot` vs `$plan -> $ralph` choice)
37
+ - Investigate tasks use `$plan` only (no execution phase)
38
+
39
+ ## Routing (Step 4)
40
+
41
+ All 7 PRDs are size **L** (40-80 lines, 3-5 affected files, 0 high-cost keywords).
42
+
43
+ | Profile | Model | Effort | Count | Issues |
44
+ |---------|-------|--------|-------|--------|
45
+ | `codex53_high` | gpt-5.3-codex | high | 5 | 24, 26, 27, 28, 29 |
46
+ | `gpt54_high` | gpt-5.4 | high | 2 | 25, 30 |
47
+
48
+ Investigation tasks use `gpt-5.4` (better for analysis/reasoning) instead of `gpt-5.3-codex` (optimized for code generation).
49
+
50
+ ## Infrastructure (Steps 5-8)
51
+
52
+ ### Worktrees (Step 5)
53
+ - 7 independent git worktrees under `.codex-swarm/wt-issue-{24..30}`
54
+ - Each branched as `codex/issue-{N}` from current HEAD
55
+
56
+ ### Prompts (Step 6)
57
+ - 7 prompt files at `.codex-swarm/prompts/prompt-{24..30}.md`
58
+ - Implement prompts: read PRD -> `$plan` -> `$autopilot`
59
+ - Investigate prompts: read PRD -> `$plan` -> stop (no implementation)
60
+
61
+ ### Sessions (Step 7)
62
+ - 7 psmux sessions: `codex-swarm-{24..30}`
63
+ - Each runs `codex` with profile-specific flags + `--full-auto`
64
+
65
+ ### WT Layout (Step 8)
66
+ - Single WT window with 7 tabs
67
+ - First session opens new window, remaining 6 attach as tabs
68
+ - Fallback `wt.exe` command included for non-psmux-attach environments
69
+
70
+ ## Final Status Table (Step 9)
71
+
72
+ | # | Task | Type | OMX Skill | Profile | Worktree | Session |
73
+ |---|------|------|-----------|---------|----------|---------|
74
+ | 24 | file-transfer | implement | `$plan` -> `$autopilot` | `codex53_high` | `wt-issue-24` | `codex-swarm-24` |
75
+ | 25 | resize-blank | investigate | `$plan` | `gpt54_high` | `wt-issue-25` | `codex-swarm-25` |
76
+ | 26 | session-cleanup | implement | `$plan` -> `$autopilot` | `codex53_high` | `wt-issue-26` | `codex-swarm-26` |
77
+ | 27 | hud-dashboard-anchor | implement | `$plan` -> `$autopilot` | `codex53_high` | `wt-issue-27` | `codex-swarm-27` |
78
+ | 28 | guard-deadlock | implement | `$plan` -> `$autopilot` | `codex53_high` | `wt-issue-28` | `codex-swarm-28` |
79
+ | 29 | cwd-propagation | implement | `$plan` -> `$autopilot` | `codex53_high` | `wt-issue-29` | `codex-swarm-29` |
80
+ | 30 | terminal-minimize | investigate | `$plan` | `gpt54_high` | `wt-issue-30` | `codex-swarm-30` |
81
+
82
+ ## Notes
83
+
84
+ - **Dry run only** -- no commands were executed. All generated commands are in `commands.sh`.
85
+ - The investigate tasks (25, 30) will produce plans but not code changes, as the user requested.
86
+ - All 7 sessions share the same WT window via tabs, per user request.
87
+ - Cleanup after completion: `psmux kill-session --name "codex-swarm-*"` + `git worktree prune` + `rm -rf .codex-swarm/`
@@ -0,0 +1,35 @@
1
+ # Codex Swarm - PRD Classification Table
2
+
3
+ > Generated: 2026-03-30
4
+ > Source: `.omx/plans/prd-issue-{24..30}.md` (7 PRDs)
5
+ > User directive: "구현은 autopilot, 조사는 plan만 쓰고"
6
+
7
+ ## Classification
8
+
9
+ | # | PRD File | Type | Keywords Found | User Override | OMX Skill |
10
+ |---|----------|------|----------------|---------------|-----------|
11
+ | 24 | `prd-issue-24-remote-spawn-file-transfer.md` | **implement** (구현) | "추가", "변경" | autopilot | `$plan` -> `$autopilot` |
12
+ | 25 | `prd-issue-25-remote-spawn-resize-blank-screen.md` | **investigate** (조사) | "조사", "investigation", "재현", "reproduce" | plan only | `$plan` |
13
+ | 26 | `prd-issue-26-remote-spawn-session-cleanup.md` | **implement** (구현) | "추가", "변경" | autopilot | `$plan` -> `$autopilot` |
14
+ | 27 | `prd-issue-27-hud-dashboard-anchor.md` | **implement** (구현) | "변경", "개선" | autopilot | `$plan` -> `$autopilot` |
15
+ | 28 | `prd-issue-28-headless-guard-spawn-deadlock.md` | **implement** (구현) | "변경", "fix" | autopilot | `$plan` -> `$autopilot` |
16
+ | 29 | `prd-issue-29-headless-cwd-propagation.md` | **implement** (구현) | "변경" | autopilot | `$plan` -> `$autopilot` |
17
+ | 30 | `prd-issue-30-remote-spawn-terminal-minimize.md` | **investigate** (조사) | "조사", "investigation", "재현", "reproduce" | plan only | `$plan` |
18
+
19
+ ## Classification Logic
20
+
21
+ Per SKILL.md Step 3:
22
+
23
+ - **implement**: PRD content contains "구현", "implement", "추가", "변경", "fix"
24
+ - **investigate**: PRD content contains "조사", "investigation", "재현", "reproduce"
25
+ - **refactor**: PRD content contains "리팩터", "refactor", "정리", "개선"
26
+
27
+ User explicitly overrode skill assignment:
28
+ - All **implement** tasks -> `$plan` -> `$autopilot` (not `$ralph`)
29
+ - All **investigate** tasks -> `$plan` only (no follow-up execution)
30
+
31
+ ## Summary
32
+
33
+ - **5 implement** tasks: issues 24, 26, 27, 28, 29
34
+ - **2 investigate** tasks: issues 25, 30
35
+ - **0 refactor** tasks
@@ -0,0 +1,275 @@
1
+ #!/usr/bin/env bash
2
+ # =============================================================================
3
+ # Codex Swarm — Full Swarm: 7 PRDs (Issues 24-30)
4
+ # Generated: 2026-03-30
5
+ # User directive: 구현=autopilot, 조사=plan만, 하나의 WT에 탭으로
6
+ # =============================================================================
7
+ # DO NOT EXECUTE — this is a dry-run generation for review.
8
+ # =============================================================================
9
+
10
+ set -euo pipefail
11
+
12
+ PROJECT_ROOT="C:/Users/SSAFY/Desktop/Projects/cli/triflux"
13
+ SWARM_DIR="$PROJECT_ROOT/.codex-swarm"
14
+ WT_DIR="$SWARM_DIR/wt-issue"
15
+ PROMPT_DIR="$SWARM_DIR/prompts"
16
+ BASH_EXE='C:\Program Files\Git\bin\bash.exe'
17
+
18
+ # =============================================================================
19
+ # Step 5: Create git worktrees
20
+ # =============================================================================
21
+
22
+ echo "=== Step 5: Creating git worktrees ==="
23
+
24
+ git worktree add "$SWARM_DIR/wt-issue-24" -b codex/issue-24 2>/dev/null || \
25
+ git worktree add "$SWARM_DIR/wt-issue-24" codex/issue-24
26
+
27
+ git worktree add "$SWARM_DIR/wt-issue-25" -b codex/issue-25 2>/dev/null || \
28
+ git worktree add "$SWARM_DIR/wt-issue-25" codex/issue-25
29
+
30
+ git worktree add "$SWARM_DIR/wt-issue-26" -b codex/issue-26 2>/dev/null || \
31
+ git worktree add "$SWARM_DIR/wt-issue-26" codex/issue-26
32
+
33
+ git worktree add "$SWARM_DIR/wt-issue-27" -b codex/issue-27 2>/dev/null || \
34
+ git worktree add "$SWARM_DIR/wt-issue-27" codex/issue-27
35
+
36
+ git worktree add "$SWARM_DIR/wt-issue-28" -b codex/issue-28 2>/dev/null || \
37
+ git worktree add "$SWARM_DIR/wt-issue-28" codex/issue-28
38
+
39
+ git worktree add "$SWARM_DIR/wt-issue-29" -b codex/issue-29 2>/dev/null || \
40
+ git worktree add "$SWARM_DIR/wt-issue-29" codex/issue-29
41
+
42
+ git worktree add "$SWARM_DIR/wt-issue-30" -b codex/issue-30 2>/dev/null || \
43
+ git worktree add "$SWARM_DIR/wt-issue-30" codex/issue-30
44
+
45
+ # =============================================================================
46
+ # Step 6: Generate prompts + copy PRD files into worktrees
47
+ # =============================================================================
48
+
49
+ echo "=== Step 6: Generating prompts ==="
50
+
51
+ mkdir -p "$PROMPT_DIR"
52
+
53
+ # --- Issue 24: implement -> $plan -> $autopilot ---
54
+ cp "$PROJECT_ROOT/.omx/plans/prd-issue-24-remote-spawn-file-transfer.md" \
55
+ "$SWARM_DIR/wt-issue-24/.omx/plans/prd-issue-24-remote-spawn-file-transfer.md" 2>/dev/null || \
56
+ { mkdir -p "$SWARM_DIR/wt-issue-24/.omx/plans" && \
57
+ cp "$PROJECT_ROOT/.omx/plans/prd-issue-24-remote-spawn-file-transfer.md" \
58
+ "$SWARM_DIR/wt-issue-24/.omx/plans/prd-issue-24-remote-spawn-file-transfer.md"; }
59
+
60
+ cat > "$PROMPT_DIR/prompt-24.md" << 'PROMPT_EOF'
61
+ triflux 프로젝트의 태스크를 구현해야 합니다.
62
+
63
+ 태스크 파일을 먼저 읽으세요: .omx/plans/prd-issue-24-remote-spawn-file-transfer.md
64
+
65
+ 작업 순서:
66
+ 1. 태스크 파일을 읽고 요구사항을 파악하세요
67
+ 2. $plan 스킬로 구현 계획을 수립하세요
68
+ 3. 계획이 완료되면 $autopilot 스킬로 자율 구현을 시작하세요
69
+
70
+ 프로젝트 정보:
71
+ - triflux: Claude Code용 멀티모델 CLI 오케스트레이터
72
+ - 언어: JavaScript/ESM (Node.js), 테스트: npm test
73
+ PROMPT_EOF
74
+
75
+ # --- Issue 25: investigate -> $plan only ---
76
+ cp "$PROJECT_ROOT/.omx/plans/prd-issue-25-remote-spawn-resize-blank-screen.md" \
77
+ "$SWARM_DIR/wt-issue-25/.omx/plans/prd-issue-25-remote-spawn-resize-blank-screen.md" 2>/dev/null || \
78
+ { mkdir -p "$SWARM_DIR/wt-issue-25/.omx/plans" && \
79
+ cp "$PROJECT_ROOT/.omx/plans/prd-issue-25-remote-spawn-resize-blank-screen.md" \
80
+ "$SWARM_DIR/wt-issue-25/.omx/plans/prd-issue-25-remote-spawn-resize-blank-screen.md"; }
81
+
82
+ cat > "$PROMPT_DIR/prompt-25.md" << 'PROMPT_EOF'
83
+ triflux 프로젝트의 태스크를 조사해야 합니다.
84
+
85
+ 태스크 파일을 먼저 읽으세요: .omx/plans/prd-issue-25-remote-spawn-resize-blank-screen.md
86
+
87
+ 작업 순서:
88
+ 1. 태스크 파일을 읽고 요구사항을 파악하세요
89
+ 2. $plan 스킬로 조사 계획을 수립하세요
90
+ 3. 계획 수립까지만 진행하세요 (구현하지 마세요)
91
+
92
+ 프로젝트 정보:
93
+ - triflux: Claude Code용 멀티모델 CLI 오케스트레이터
94
+ - 언어: JavaScript/ESM (Node.js), 테스트: npm test
95
+ PROMPT_EOF
96
+
97
+ # --- Issue 26: implement -> $plan -> $autopilot ---
98
+ cp "$PROJECT_ROOT/.omx/plans/prd-issue-26-remote-spawn-session-cleanup.md" \
99
+ "$SWARM_DIR/wt-issue-26/.omx/plans/prd-issue-26-remote-spawn-session-cleanup.md" 2>/dev/null || \
100
+ { mkdir -p "$SWARM_DIR/wt-issue-26/.omx/plans" && \
101
+ cp "$PROJECT_ROOT/.omx/plans/prd-issue-26-remote-spawn-session-cleanup.md" \
102
+ "$SWARM_DIR/wt-issue-26/.omx/plans/prd-issue-26-remote-spawn-session-cleanup.md"; }
103
+
104
+ cat > "$PROMPT_DIR/prompt-26.md" << 'PROMPT_EOF'
105
+ triflux 프로젝트의 태스크를 구현해야 합니다.
106
+
107
+ 태스크 파일을 먼저 읽으세요: .omx/plans/prd-issue-26-remote-spawn-session-cleanup.md
108
+
109
+ 작업 순서:
110
+ 1. 태스크 파일을 읽고 요구사항을 파악하세요
111
+ 2. $plan 스킬로 구현 계획을 수립하세요
112
+ 3. 계획이 완료되면 $autopilot 스킬로 자율 구현을 시작하세요
113
+
114
+ 프로젝트 정보:
115
+ - triflux: Claude Code용 멀티모델 CLI 오케스트레이터
116
+ - 언어: JavaScript/ESM (Node.js), 테스트: npm test
117
+ PROMPT_EOF
118
+
119
+ # --- Issue 27: implement -> $plan -> $autopilot ---
120
+ cp "$PROJECT_ROOT/.omx/plans/prd-issue-27-hud-dashboard-anchor.md" \
121
+ "$SWARM_DIR/wt-issue-27/.omx/plans/prd-issue-27-hud-dashboard-anchor.md" 2>/dev/null || \
122
+ { mkdir -p "$SWARM_DIR/wt-issue-27/.omx/plans" && \
123
+ cp "$PROJECT_ROOT/.omx/plans/prd-issue-27-hud-dashboard-anchor.md" \
124
+ "$SWARM_DIR/wt-issue-27/.omx/plans/prd-issue-27-hud-dashboard-anchor.md"; }
125
+
126
+ cat > "$PROMPT_DIR/prompt-27.md" << 'PROMPT_EOF'
127
+ triflux 프로젝트의 태스크를 구현해야 합니다.
128
+
129
+ 태스크 파일을 먼저 읽으세요: .omx/plans/prd-issue-27-hud-dashboard-anchor.md
130
+
131
+ 작업 순서:
132
+ 1. 태스크 파일을 읽고 요구사항을 파악하세요
133
+ 2. $plan 스킬로 구현 계획을 수립하세요
134
+ 3. 계획이 완료되면 $autopilot 스킬로 자율 구현을 시작하세요
135
+
136
+ 프로젝트 정보:
137
+ - triflux: Claude Code용 멀티모델 CLI 오케스트레이터
138
+ - 언어: JavaScript/ESM (Node.js), 테스트: npm test
139
+ PROMPT_EOF
140
+
141
+ # --- Issue 28: implement -> $plan -> $autopilot ---
142
+ cp "$PROJECT_ROOT/.omx/plans/prd-issue-28-headless-guard-spawn-deadlock.md" \
143
+ "$SWARM_DIR/wt-issue-28/.omx/plans/prd-issue-28-headless-guard-spawn-deadlock.md" 2>/dev/null || \
144
+ { mkdir -p "$SWARM_DIR/wt-issue-28/.omx/plans" && \
145
+ cp "$PROJECT_ROOT/.omx/plans/prd-issue-28-headless-guard-spawn-deadlock.md" \
146
+ "$SWARM_DIR/wt-issue-28/.omx/plans/prd-issue-28-headless-guard-spawn-deadlock.md"; }
147
+
148
+ cat > "$PROMPT_DIR/prompt-28.md" << 'PROMPT_EOF'
149
+ triflux 프로젝트의 태스크를 구현해야 합니다.
150
+
151
+ 태스크 파일을 먼저 읽으세요: .omx/plans/prd-issue-28-headless-guard-spawn-deadlock.md
152
+
153
+ 작업 순서:
154
+ 1. 태스크 파일을 읽고 요구사항을 파악하세요
155
+ 2. $plan 스킬로 구현 계획을 수립하세요
156
+ 3. 계획이 완료되면 $autopilot 스킬로 자율 구현을 시작하세요
157
+
158
+ 프로젝트 정보:
159
+ - triflux: Claude Code용 멀티모델 CLI 오케스트레이터
160
+ - 언어: JavaScript/ESM (Node.js), 테스트: npm test
161
+ PROMPT_EOF
162
+
163
+ # --- Issue 29: implement -> $plan -> $autopilot ---
164
+ cp "$PROJECT_ROOT/.omx/plans/prd-issue-29-headless-cwd-propagation.md" \
165
+ "$SWARM_DIR/wt-issue-29/.omx/plans/prd-issue-29-headless-cwd-propagation.md" 2>/dev/null || \
166
+ { mkdir -p "$SWARM_DIR/wt-issue-29/.omx/plans" && \
167
+ cp "$PROJECT_ROOT/.omx/plans/prd-issue-29-headless-cwd-propagation.md" \
168
+ "$SWARM_DIR/wt-issue-29/.omx/plans/prd-issue-29-headless-cwd-propagation.md"; }
169
+
170
+ cat > "$PROMPT_DIR/prompt-29.md" << 'PROMPT_EOF'
171
+ triflux 프로젝트의 태스크를 구현해야 합니다.
172
+
173
+ 태스크 파일을 먼저 읽으세요: .omx/plans/prd-issue-29-headless-cwd-propagation.md
174
+
175
+ 작업 순서:
176
+ 1. 태스크 파일을 읽고 요구사항을 파악하세요
177
+ 2. $plan 스킬로 구현 계획을 수립하세요
178
+ 3. 계획이 완료되면 $autopilot 스킬로 자율 구현을 시작하세요
179
+
180
+ 프로젝트 정보:
181
+ - triflux: Claude Code용 멀티모델 CLI 오케스트레이터
182
+ - 언어: JavaScript/ESM (Node.js), 테스트: npm test
183
+ PROMPT_EOF
184
+
185
+ # --- Issue 30: investigate -> $plan only ---
186
+ cp "$PROJECT_ROOT/.omx/plans/prd-issue-30-remote-spawn-terminal-minimize.md" \
187
+ "$SWARM_DIR/wt-issue-30/.omx/plans/prd-issue-30-remote-spawn-terminal-minimize.md" 2>/dev/null || \
188
+ { mkdir -p "$SWARM_DIR/wt-issue-30/.omx/plans" && \
189
+ cp "$PROJECT_ROOT/.omx/plans/prd-issue-30-remote-spawn-terminal-minimize.md" \
190
+ "$SWARM_DIR/wt-issue-30/.omx/plans/prd-issue-30-remote-spawn-terminal-minimize.md"; }
191
+
192
+ cat > "$PROMPT_DIR/prompt-30.md" << 'PROMPT_EOF'
193
+ triflux 프로젝트의 태스크를 조사해야 합니다.
194
+
195
+ 태스크 파일을 먼저 읽으세요: .omx/plans/prd-issue-30-remote-spawn-terminal-minimize.md
196
+
197
+ 작업 순서:
198
+ 1. 태스크 파일을 읽고 요구사항을 파악하세요
199
+ 2. $plan 스킬로 조사 계획을 수립하세요
200
+ 3. 계획 수립까지만 진행하세요 (구현하지 마세요)
201
+
202
+ 프로젝트 정보:
203
+ - triflux: Claude Code용 멀티모델 CLI 오케스트레이터
204
+ - 언어: JavaScript/ESM (Node.js), 테스트: npm test
205
+ PROMPT_EOF
206
+
207
+ # =============================================================================
208
+ # Step 7: Create psmux sessions + launch Codex
209
+ # =============================================================================
210
+
211
+ echo "=== Step 7: Creating psmux sessions and launching Codex ==="
212
+
213
+ # --- Issue 24: implement | codex53_high ---
214
+ psmux new-session --name "codex-swarm-24" --dir "$SWARM_DIR/wt-issue-24"
215
+ psmux send-keys --target "codex-swarm-24:0" \
216
+ "codex -c 'model=\"gpt-5.3-codex\"' -c 'model_reasoning_effort=\"high\"' --full-auto \"\$(cat $PROMPT_DIR/prompt-24.md)\"" Enter
217
+
218
+ # --- Issue 25: investigate | gpt54_high ---
219
+ psmux new-session --name "codex-swarm-25" --dir "$SWARM_DIR/wt-issue-25"
220
+ psmux send-keys --target "codex-swarm-25:0" \
221
+ "codex -c 'model=\"gpt-5.4\"' -c 'model_reasoning_effort=\"high\"' --full-auto \"\$(cat $PROMPT_DIR/prompt-25.md)\"" Enter
222
+
223
+ # --- Issue 26: implement | codex53_high ---
224
+ psmux new-session --name "codex-swarm-26" --dir "$SWARM_DIR/wt-issue-26"
225
+ psmux send-keys --target "codex-swarm-26:0" \
226
+ "codex -c 'model=\"gpt-5.3-codex\"' -c 'model_reasoning_effort=\"high\"' --full-auto \"\$(cat $PROMPT_DIR/prompt-26.md)\"" Enter
227
+
228
+ # --- Issue 27: implement | codex53_high ---
229
+ psmux new-session --name "codex-swarm-27" --dir "$SWARM_DIR/wt-issue-27"
230
+ psmux send-keys --target "codex-swarm-27:0" \
231
+ "codex -c 'model=\"gpt-5.3-codex\"' -c 'model_reasoning_effort=\"high\"' --full-auto \"\$(cat $PROMPT_DIR/prompt-27.md)\"" Enter
232
+
233
+ # --- Issue 28: implement | codex53_high ---
234
+ psmux new-session --name "codex-swarm-28" --dir "$SWARM_DIR/wt-issue-28"
235
+ psmux send-keys --target "codex-swarm-28:0" \
236
+ "codex -c 'model=\"gpt-5.3-codex\"' -c 'model_reasoning_effort=\"high\"' --full-auto \"\$(cat $PROMPT_DIR/prompt-28.md)\"" Enter
237
+
238
+ # --- Issue 29: implement | codex53_high ---
239
+ psmux new-session --name "codex-swarm-29" --dir "$SWARM_DIR/wt-issue-29"
240
+ psmux send-keys --target "codex-swarm-29:0" \
241
+ "codex -c 'model=\"gpt-5.3-codex\"' -c 'model_reasoning_effort=\"high\"' --full-auto \"\$(cat $PROMPT_DIR/prompt-29.md)\"" Enter
242
+
243
+ # --- Issue 30: investigate | gpt54_high ---
244
+ psmux new-session --name "codex-swarm-30" --dir "$SWARM_DIR/wt-issue-30"
245
+ psmux send-keys --target "codex-swarm-30:0" \
246
+ "codex -c 'model=\"gpt-5.4\"' -c 'model_reasoning_effort=\"high\"' --full-auto \"\$(cat $PROMPT_DIR/prompt-30.md)\"" Enter
247
+
248
+ # =============================================================================
249
+ # Step 8: WT tab attach — all sessions in one window
250
+ # =============================================================================
251
+
252
+ echo "=== Step 8: Attaching all sessions to one WT window ==="
253
+
254
+ # First session: new WT window
255
+ psmux attach --session "codex-swarm-24" --wt-new-window
256
+
257
+ # Remaining sessions: tabs in same window
258
+ psmux attach --session "codex-swarm-25" --wt-tab
259
+ psmux attach --session "codex-swarm-26" --wt-tab
260
+ psmux attach --session "codex-swarm-27" --wt-tab
261
+ psmux attach --session "codex-swarm-28" --wt-tab
262
+ psmux attach --session "codex-swarm-29" --wt-tab
263
+ psmux attach --session "codex-swarm-30" --wt-tab
264
+
265
+ # --- Fallback: wt.exe direct (if psmux attach unavailable) ---
266
+ # wt.exe -w new \
267
+ # --title "issue-24 file-transfer" -d "$SWARM_DIR/wt-issue-24" "$BASH_EXE" -c "psmux attach codex-swarm-24" \; \
268
+ # new-tab --title "issue-25 resize-blank" -d "$SWARM_DIR/wt-issue-25" "$BASH_EXE" -c "psmux attach codex-swarm-25" \; \
269
+ # new-tab --title "issue-26 session-cleanup" -d "$SWARM_DIR/wt-issue-26" "$BASH_EXE" -c "psmux attach codex-swarm-26" \; \
270
+ # new-tab --title "issue-27 hud-dashboard" -d "$SWARM_DIR/wt-issue-27" "$BASH_EXE" -c "psmux attach codex-swarm-27" \; \
271
+ # new-tab --title "issue-28 guard-deadlock" -d "$SWARM_DIR/wt-issue-28" "$BASH_EXE" -c "psmux attach codex-swarm-28" \; \
272
+ # new-tab --title "issue-29 cwd-propagation" -d "$SWARM_DIR/wt-issue-29" "$BASH_EXE" -c "psmux attach codex-swarm-29" \; \
273
+ # new-tab --title "issue-30 terminal-minimize" -d "$SWARM_DIR/wt-issue-30" "$BASH_EXE" -c "psmux attach codex-swarm-30"
274
+
275
+ echo "=== Swarm spawned: 7 sessions in 1 WT window (7 tabs) ==="
@@ -0,0 +1,56 @@
1
+ # Codex Swarm - Profile Routing Table
2
+
3
+ > Generated: 2026-03-30
4
+
5
+ ## Size Assessment (Step 4-1)
6
+
7
+ | # | PRD File | Lines | Affected Files | High-cost Keywords | Dependencies | Size |
8
+ |---|----------|-------|----------------|-------------------|--------------|------|
9
+ | 24 | prd-issue-24 | 73 | 4 (`remote-spawn.mjs`, handoff, scp, staging) | 0 | none | **L** |
10
+ | 25 | prd-issue-25 | 76 | 4 (`psmux`, SSH PTY, Claude TUI, WT) | 0 | none | **L** |
11
+ | 26 | prd-issue-26 | 70 | 3 (`remote-spawn`, `psmux`, hub stale cleanup) | 0 | none | **L** |
12
+ | 27 | prd-issue-27 | 73 | 4 (`wt.exe` attach, dashboard viewer, headless, config) | 0 | none | **L** |
13
+ | 28 | prd-issue-28 | 69 | 4 (`headless-guard.mjs`, `hub/team/psmux.mjs`, codex, gemini) | 0 | none | **L** |
14
+ | 29 | prd-issue-29 | 70 | 5 (`tfx-route.sh`, `parse-args.mjs`, `start-headless.mjs`, `headless.mjs`, `buildHeadlessCommand`) | 0 | none | **L** |
15
+ | 30 | prd-issue-30 | 70 | 3 (`remote-spawn.mjs`, `headless.mjs`, WT) | 0 | none | **L** |
16
+
17
+ ### Size Thresholds (from SKILL.md)
18
+
19
+ | Size | PRD Lines | Affected Files | High-cost Keywords |
20
+ |------|-----------|----------------|-------------------|
21
+ | XL | 80+ | 6+ | 2+ |
22
+ | L | 40-80 | 3-5 | 0-1 |
23
+ | M | 20-40 | 1-2 | 0 |
24
+ | S | <20 | 1 | 0 |
25
+
26
+ All 7 PRDs fall in the **L (standard)** range: 69-76 lines, 3-5 affected files, 0 high-cost keywords.
27
+
28
+ ## Profile Routing (Step 4-2)
29
+
30
+ Per routing table: Type x Size -> Profile
31
+
32
+ | Type \ Size | XL | L | M | S |
33
+ |-------------|-----|-----|-----|-----|
34
+ | **implement** | codex53_xhigh | **codex53_high** | codex53_med | codex53_low |
35
+ | **investigate** | gpt54_high | **gpt54_high** | gpt54_low | mini54_med |
36
+
37
+ ## Final Routing
38
+
39
+ | # | Task | Size | Type | Profile | Codex Flags |
40
+ |---|------|------|------|---------|-------------|
41
+ | 24 | file-transfer | L | implement | `codex53_high` | `-c 'model="gpt-5.3-codex"' -c 'model_reasoning_effort="high"'` |
42
+ | 25 | resize-blank | L | investigate | `gpt54_high` | `-c 'model="gpt-5.4"' -c 'model_reasoning_effort="high"'` |
43
+ | 26 | session-cleanup | L | implement | `codex53_high` | `-c 'model="gpt-5.3-codex"' -c 'model_reasoning_effort="high"'` |
44
+ | 27 | hud-dashboard-anchor | L | implement | `codex53_high` | `-c 'model="gpt-5.3-codex"' -c 'model_reasoning_effort="high"'` |
45
+ | 28 | guard-deadlock | L | implement | `codex53_high` | `-c 'model="gpt-5.3-codex"' -c 'model_reasoning_effort="high"'` |
46
+ | 29 | cwd-propagation | L | implement | `codex53_high` | `-c 'model="gpt-5.3-codex"' -c 'model_reasoning_effort="high"'` |
47
+ | 30 | terminal-minimize | L | investigate | `gpt54_high` | `-c 'model="gpt-5.4"' -c 'model_reasoning_effort="high"'` |
48
+
49
+ ## Execution Defaults
50
+
51
+ | Setting | Value | Note |
52
+ |---------|-------|------|
53
+ | Mode | `--full-auto` | Sandbox auto-approve |
54
+ | Worktree | enabled | Per-session independent worktree |
55
+ | psmux | enabled | Session management |
56
+ | WT | tabs in single window | User requested: "하나의 WT에 탭으로 넣어줘" |
@@ -0,0 +1,5 @@
1
+ {
2
+ "total_tokens": 37789,
3
+ "duration_ms": 178352,
4
+ "total_duration_seconds": 178.4
5
+ }
@@ -0,0 +1,11 @@
1
+ {
2
+ "expectations": [
3
+ {"text": "all-7-prds-found", "passed": true, "evidence": "7개 PRD 모두 발견 및 나열"},
4
+ {"text": "correct-type-classification", "passed": true, "evidence": "5 implement + 2 investigate 정확"},
5
+ {"text": "profile-routing-varies", "passed": true, "evidence": "codex53_high/gpt54_high 분리 적용"},
6
+ {"text": "worktree-per-task", "passed": true, "evidence": "7개 worktree 생성 명령 존재"},
7
+ {"text": "psmux-sessions", "passed": true, "evidence": "7개 psmux 세션 생성됨"},
8
+ {"text": "single-wt-window", "passed": true, "evidence": "WT 탭 attach 포함"},
9
+ {"text": "omx-skill-mapping", "passed": true, "evidence": "autopilot/plan 매핑 존재"}
10
+ ]
11
+ }