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.
- package/CLAUDE.md +171 -0
- package/README.md +32 -15
- package/bin/triflux.mjs +62 -5
- package/hooks/agent-route-guard.mjs +109 -0
- package/hooks/cross-review-tracker.mjs +122 -0
- package/hooks/error-context.mjs +148 -0
- package/hooks/hook-adaptive-collector.mjs +86 -0
- package/hooks/hook-manager.mjs +365 -0
- package/hooks/hook-orchestrator.mjs +312 -0
- package/hooks/hook-registry.json +246 -0
- package/hooks/hooks.json +89 -0
- package/hooks/keyword-rules.json +574 -0
- package/hooks/lib/resolve-root.mjs +59 -0
- package/hooks/mcp-config-watcher.mjs +80 -0
- package/hooks/pipeline-stop.mjs +76 -0
- package/hooks/safety-guard.mjs +169 -0
- package/hooks/subagent-verifier.mjs +80 -0
- package/hub/account-broker.mjs +251 -0
- package/hub/adaptive-diagnostic.mjs +323 -0
- package/hub/adaptive-inject.mjs +186 -0
- package/hub/adaptive-memory.mjs +163 -0
- package/hub/adaptive.mjs +143 -0
- package/hub/assign-callbacks.mjs +133 -0
- package/hub/bridge.mjs +799 -0
- package/hub/cli-adapter-base.mjs +280 -0
- package/hub/codex-adapter.mjs +199 -0
- package/hub/codex-compat.mjs +11 -0
- package/hub/codex-preflight.mjs +166 -0
- package/hub/delegator/contracts.mjs +37 -0
- package/hub/delegator/index.mjs +14 -0
- package/hub/delegator/schema/delegator-tools.schema.json +250 -0
- package/hub/delegator/service.mjs +307 -0
- package/hub/delegator/tool-definitions.mjs +35 -0
- package/hub/fullcycle.mjs +96 -0
- package/hub/gemini-adapter.mjs +180 -0
- package/hub/hitl.mjs +143 -0
- package/hub/intent.mjs +193 -0
- package/hub/lib/cache-guard.mjs +114 -0
- package/hub/lib/known-errors.json +72 -0
- package/hub/lib/memory-store.mjs +748 -0
- package/hub/lib/process-utils.mjs +361 -0
- package/hub/lib/ssh-command.mjs +211 -0
- package/hub/lib/ssh-retry.mjs +59 -0
- package/hub/lib/uuidv7.mjs +44 -0
- package/hub/memory-doctor.mjs +480 -0
- package/hub/middleware/request-logger.mjs +161 -0
- package/hub/paths.mjs +30 -0
- package/hub/pipe.mjs +664 -0
- package/hub/pipeline/gates/confidence.mjs +56 -0
- package/hub/pipeline/gates/consensus.mjs +94 -0
- package/hub/pipeline/gates/index.mjs +5 -0
- package/hub/pipeline/gates/selfcheck.mjs +82 -0
- package/hub/pipeline/index.mjs +318 -0
- package/hub/pipeline/state.mjs +191 -0
- package/hub/pipeline/transitions.mjs +124 -0
- package/hub/platform.mjs +225 -0
- package/hub/public/dashboard.html +355 -0
- package/hub/public/tray-icon.ico +0 -0
- package/hub/public/tray-icon.png +0 -0
- package/hub/quality/deslop.mjs +253 -0
- package/hub/reflexion.mjs +372 -0
- package/hub/research.mjs +146 -0
- package/hub/router.mjs +791 -0
- package/hub/routing/complexity.mjs +166 -0
- package/hub/routing/index.mjs +117 -0
- package/hub/routing/q-learning.mjs +336 -0
- package/hub/schema.sql +148 -0
- package/hub/server.mjs +1264 -0
- package/hub/session-fingerprint.mjs +352 -0
- package/hub/state.mjs +258 -0
- package/hub/store-adapter.mjs +118 -0
- package/hub/store.mjs +857 -0
- package/hub/team/agent-map.json +11 -0
- package/hub/team/ansi.mjs +379 -0
- package/hub/team/backend.mjs +90 -0
- package/hub/team/cli/commands/attach.mjs +37 -0
- package/hub/team/cli/commands/control.mjs +43 -0
- package/hub/team/cli/commands/debug.mjs +74 -0
- package/hub/team/cli/commands/focus.mjs +53 -0
- package/hub/team/cli/commands/interrupt.mjs +36 -0
- package/hub/team/cli/commands/kill.mjs +37 -0
- package/hub/team/cli/commands/list.mjs +24 -0
- package/hub/team/cli/commands/send.mjs +37 -0
- package/hub/team/cli/commands/start/index.mjs +106 -0
- package/hub/team/cli/commands/start/parse-args.mjs +130 -0
- package/hub/team/cli/commands/start/start-headless.mjs +109 -0
- package/hub/team/cli/commands/start/start-in-process.mjs +40 -0
- package/hub/team/cli/commands/start/start-mux.mjs +73 -0
- package/hub/team/cli/commands/start/start-wt.mjs +69 -0
- package/hub/team/cli/commands/status.mjs +87 -0
- package/hub/team/cli/commands/stop.mjs +31 -0
- package/hub/team/cli/commands/task.mjs +30 -0
- package/hub/team/cli/commands/tasks.mjs +13 -0
- package/hub/team/cli/help.mjs +42 -0
- package/hub/team/cli/index.mjs +41 -0
- package/hub/team/cli/manifest.mjs +29 -0
- package/hub/team/cli/render.mjs +30 -0
- package/hub/team/cli/services/attach-fallback.mjs +54 -0
- package/hub/team/cli/services/hub-client.mjs +227 -0
- package/hub/team/cli/services/member-selector.mjs +30 -0
- package/hub/team/cli/services/native-control.mjs +117 -0
- package/hub/team/cli/services/runtime-mode.mjs +62 -0
- package/hub/team/cli/services/state-store.mjs +48 -0
- package/hub/team/cli/services/task-model.mjs +30 -0
- package/hub/team/conductor-mesh-bridge.mjs +121 -0
- package/hub/team/conductor.mjs +671 -0
- package/hub/team/dashboard-anchor.mjs +14 -0
- package/hub/team/dashboard-layout.mjs +33 -0
- package/hub/team/dashboard-open.mjs +153 -0
- package/hub/team/dashboard.mjs +274 -0
- package/hub/team/event-log.mjs +76 -0
- package/hub/team/handoff.mjs +303 -0
- package/hub/team/headless.mjs +1156 -0
- package/hub/team/health-probe.mjs +272 -0
- package/hub/team/launcher-template.mjs +95 -0
- package/hub/team/lead-control.mjs +104 -0
- package/hub/team/native-supervisor.mjs +392 -0
- package/hub/team/native.mjs +649 -0
- package/hub/team/nativeProxy.mjs +688 -0
- package/hub/team/notify.mjs +293 -0
- package/hub/team/orchestrator.mjs +161 -0
- package/hub/team/pane.mjs +153 -0
- package/hub/team/process-cleanup.mjs +342 -0
- package/hub/team/psmux.mjs +1354 -0
- package/hub/team/remote-probe.mjs +276 -0
- package/hub/team/remote-session.mjs +299 -0
- package/hub/team/remote-watcher.mjs +478 -0
- package/hub/team/routing.mjs +223 -0
- package/hub/team/session-sync.mjs +169 -0
- package/hub/team/session.mjs +611 -0
- package/hub/team/shared.mjs +13 -0
- package/hub/team/staleState.mjs +361 -0
- package/hub/team/swarm-hypervisor.mjs +589 -0
- package/hub/team/swarm-locks.mjs +204 -0
- package/hub/team/swarm-planner.mjs +260 -0
- package/hub/team/swarm-reconciler.mjs +137 -0
- package/hub/team/tui-lite.mjs +380 -0
- package/hub/team/tui-remote-adapter.mjs +393 -0
- package/hub/team/tui-viewer.mjs +463 -0
- package/hub/team/tui.mjs +1449 -0
- package/hub/team/worktree-lifecycle.mjs +193 -0
- package/hub/team/wt-manager.mjs +407 -0
- package/hub/team/wt-templates.json +43 -0
- package/hub/team-bridge.mjs +27 -0
- package/hub/token-mode.mjs +224 -0
- package/hub/tools.mjs +636 -0
- package/hub/tray.mjs +376 -0
- package/hub/workers/claude-worker.mjs +475 -0
- package/hub/workers/codex-mcp.mjs +507 -0
- package/hub/workers/delegator-mcp.mjs +1076 -0
- package/hub/workers/factory.mjs +21 -0
- package/hub/workers/gemini-worker.mjs +374 -0
- package/hub/workers/interface.mjs +52 -0
- package/hub/workers/worker-utils.mjs +104 -0
- package/hud/colors.mjs +88 -0
- package/hud/constants.mjs +88 -0
- package/hud/context-monitor.mjs +403 -0
- package/hud/hud-qos-status.mjs +210 -0
- package/hud/providers/claude.mjs +314 -0
- package/hud/providers/codex.mjs +151 -0
- package/hud/providers/gemini.mjs +320 -0
- package/hud/renderers.mjs +442 -0
- package/hud/terminal.mjs +140 -0
- package/hud/utils.mjs +313 -0
- package/mesh/index.mjs +63 -0
- package/mesh/mesh-budget.mjs +128 -0
- package/mesh/mesh-heartbeat.mjs +100 -0
- package/mesh/mesh-protocol.mjs +96 -0
- package/mesh/mesh-queue.mjs +165 -0
- package/mesh/mesh-registry.mjs +78 -0
- package/mesh/mesh-router.mjs +76 -0
- package/package.json +8 -1
- package/references/hosts.json +33 -0
- package/scripts/__tests__/gen-skill-docs.test.mjs +87 -0
- package/scripts/__tests__/keyword-detector.test.mjs +234 -0
- package/scripts/__tests__/mcp-guard-engine.test.mjs +118 -0
- package/scripts/__tests__/remote-spawn-transfer.test.mjs +117 -0
- package/scripts/__tests__/remote-spawn.test.mjs +92 -0
- package/scripts/__tests__/skill-template.test.mjs +193 -0
- package/scripts/__tests__/smoke.test.mjs +34 -0
- package/scripts/cache-buildup.mjs +30 -0
- package/scripts/cache-doctor.mjs +149 -0
- package/scripts/cache-warmup.mjs +557 -0
- package/scripts/claudemd-sync.mjs +148 -0
- package/scripts/cli-route.sh +3 -0
- package/scripts/completions/tfx.bash +47 -0
- package/scripts/completions/tfx.fish +44 -0
- package/scripts/completions/tfx.zsh +83 -0
- package/scripts/cross-review-gate.mjs +126 -0
- package/scripts/cross-review-tracker.mjs +238 -0
- package/scripts/gen-skill-docs.mjs +111 -0
- package/scripts/headless-guard-fast.sh +21 -0
- package/scripts/headless-guard.mjs +360 -0
- package/scripts/hub-ensure.mjs +120 -0
- package/scripts/keyword-detector.mjs +272 -0
- package/scripts/keyword-rules-expander.mjs +521 -0
- package/scripts/lib/claudemd-scanner.mjs +218 -0
- package/scripts/lib/context.mjs +67 -0
- package/scripts/lib/cross-review-utils.mjs +51 -0
- package/scripts/lib/env-probe.mjs +241 -0
- package/scripts/lib/gemini-profiles.mjs +85 -0
- package/scripts/lib/handoff.mjs +171 -0
- package/scripts/lib/hook-utils.mjs +14 -0
- package/scripts/lib/keyword-rules.mjs +166 -0
- package/scripts/lib/logger.mjs +105 -0
- package/scripts/lib/mcp-filter.mjs +739 -0
- package/scripts/lib/mcp-guard-engine.mjs +954 -0
- package/scripts/lib/mcp-manifest.mjs +79 -0
- package/scripts/lib/mcp-server-catalog.mjs +118 -0
- package/scripts/lib/psmux-info.mjs +119 -0
- package/scripts/lib/remote-spawn-transfer.mjs +196 -0
- package/scripts/lib/skill-template.mjs +326 -0
- package/scripts/mcp-check.mjs +237 -0
- package/scripts/mcp-cleanup.ps1 +17 -0
- package/scripts/mcp-gateway-config.mjs +207 -0
- package/scripts/mcp-gateway-ensure.mjs +85 -0
- package/scripts/mcp-gateway-integration-test.mjs +228 -0
- package/scripts/mcp-gateway-start.mjs +226 -0
- package/scripts/mcp-gateway-start.ps1 +141 -0
- package/scripts/mcp-gateway-verify.mjs +77 -0
- package/scripts/mcp-safety-guard.mjs +44 -0
- package/scripts/notion-read.mjs +556 -0
- package/scripts/pack.mjs +295 -0
- package/scripts/preflight-cache.mjs +69 -0
- package/scripts/preinstall.mjs +96 -0
- package/scripts/remote-spawn.mjs +1376 -0
- package/scripts/run.cjs +79 -0
- package/scripts/session-spawn-helper.mjs +185 -0
- package/scripts/setup.mjs +1178 -0
- package/scripts/test-lock.mjs +71 -0
- package/scripts/test-tfx-route-no-claude-native.mjs +57 -0
- package/scripts/tfx-batch-stats.mjs +96 -0
- package/scripts/tfx-gate-activate.mjs +89 -0
- package/scripts/tfx-route-post.mjs +505 -0
- package/scripts/tfx-route-worker.mjs +223 -0
- package/scripts/tfx-route.sh +2014 -0
- package/scripts/tmp-cleanup.mjs +103 -0
- package/scripts/token-snapshot.mjs +575 -0
- package/skills/tfx-auto/SKILL.md.tmpl +2 -3
- package/skills/tfx-autoresearch/SKILL.md +6 -5
- package/skills/tfx-codex/SKILL.md.tmpl +2 -3
- package/skills/tfx-codex-swarm-workspace/iteration-1/benchmark.json +33 -0
- package/skills/tfx-codex-swarm-workspace/iteration-1/full-swarm-all-prds/eval_metadata.json +42 -0
- package/skills/tfx-codex-swarm-workspace/iteration-1/full-swarm-all-prds/with_skill/grading.json +11 -0
- package/skills/tfx-codex-swarm-workspace/iteration-1/full-swarm-all-prds/with_skill/outputs/analysis.md +87 -0
- package/skills/tfx-codex-swarm-workspace/iteration-1/full-swarm-all-prds/with_skill/outputs/classification.md +35 -0
- package/skills/tfx-codex-swarm-workspace/iteration-1/full-swarm-all-prds/with_skill/outputs/commands.sh +275 -0
- package/skills/tfx-codex-swarm-workspace/iteration-1/full-swarm-all-prds/with_skill/outputs/routing.md +56 -0
- package/skills/tfx-codex-swarm-workspace/iteration-1/full-swarm-all-prds/with_skill/timing.json +5 -0
- package/skills/tfx-codex-swarm-workspace/iteration-1/full-swarm-all-prds/without_skill/grading.json +11 -0
- package/skills/tfx-codex-swarm-workspace/iteration-1/full-swarm-all-prds/without_skill/outputs/analysis.md +92 -0
- package/skills/tfx-codex-swarm-workspace/iteration-1/full-swarm-all-prds/without_skill/outputs/classification.md +71 -0
- package/skills/tfx-codex-swarm-workspace/iteration-1/full-swarm-all-prds/without_skill/outputs/commands.sh +264 -0
- package/skills/tfx-codex-swarm-workspace/iteration-1/full-swarm-all-prds/without_skill/outputs/routing.md +113 -0
- package/skills/tfx-codex-swarm-workspace/iteration-1/full-swarm-all-prds/without_skill/timing.json +5 -0
- package/skills/tfx-codex-swarm-workspace/iteration-1/implicit-swarm-no-keywords/eval_metadata.json +32 -0
- package/skills/tfx-codex-swarm-workspace/iteration-1/implicit-swarm-no-keywords/with_skill/grading.json +9 -0
- package/skills/tfx-codex-swarm-workspace/iteration-1/implicit-swarm-no-keywords/with_skill/outputs/analysis.md +96 -0
- package/skills/tfx-codex-swarm-workspace/iteration-1/implicit-swarm-no-keywords/with_skill/outputs/classification.md +38 -0
- package/skills/tfx-codex-swarm-workspace/iteration-1/implicit-swarm-no-keywords/with_skill/outputs/commands.sh +151 -0
- package/skills/tfx-codex-swarm-workspace/iteration-1/implicit-swarm-no-keywords/with_skill/outputs/routing.md +51 -0
- package/skills/tfx-codex-swarm-workspace/iteration-1/implicit-swarm-no-keywords/with_skill/timing.json +5 -0
- package/skills/tfx-codex-swarm-workspace/iteration-1/implicit-swarm-no-keywords/without_skill/grading.json +9 -0
- package/skills/tfx-codex-swarm-workspace/iteration-1/implicit-swarm-no-keywords/without_skill/outputs/analysis.md +127 -0
- package/skills/tfx-codex-swarm-workspace/iteration-1/implicit-swarm-no-keywords/without_skill/outputs/classification.md +57 -0
- package/skills/tfx-codex-swarm-workspace/iteration-1/implicit-swarm-no-keywords/without_skill/outputs/commands.sh +129 -0
- package/skills/tfx-codex-swarm-workspace/iteration-1/implicit-swarm-no-keywords/without_skill/outputs/routing.md +84 -0
- package/skills/tfx-codex-swarm-workspace/iteration-1/implicit-swarm-no-keywords/without_skill/timing.json +5 -0
- package/skills/tfx-codex-swarm-workspace/iteration-1/selective-spawn-with-override/eval_metadata.json +27 -0
- package/skills/tfx-codex-swarm-workspace/iteration-1/selective-spawn-with-override/with_skill/grading.json +8 -0
- package/skills/tfx-codex-swarm-workspace/iteration-1/selective-spawn-with-override/with_skill/outputs/analysis.md +98 -0
- package/skills/tfx-codex-swarm-workspace/iteration-1/selective-spawn-with-override/with_skill/outputs/classification.md +65 -0
- package/skills/tfx-codex-swarm-workspace/iteration-1/selective-spawn-with-override/with_skill/outputs/commands.sh +123 -0
- package/skills/tfx-codex-swarm-workspace/iteration-1/selective-spawn-with-override/with_skill/outputs/routing.md +66 -0
- package/skills/tfx-codex-swarm-workspace/iteration-1/selective-spawn-with-override/with_skill/timing.json +5 -0
- package/skills/tfx-codex-swarm-workspace/iteration-1/selective-spawn-with-override/without_skill/grading.json +8 -0
- package/skills/tfx-codex-swarm-workspace/iteration-1/selective-spawn-with-override/without_skill/outputs/analysis.md +88 -0
- package/skills/tfx-codex-swarm-workspace/iteration-1/selective-spawn-with-override/without_skill/outputs/classification.md +40 -0
- package/skills/tfx-codex-swarm-workspace/iteration-1/selective-spawn-with-override/without_skill/outputs/commands.sh +130 -0
- package/skills/tfx-codex-swarm-workspace/iteration-1/selective-spawn-with-override/without_skill/outputs/routing.md +61 -0
- package/skills/tfx-codex-swarm-workspace/iteration-1/selective-spawn-with-override/without_skill/timing.json +5 -0
- package/skills/tfx-deep-interview/SKILL.md +1 -2
- package/skills/tfx-plan/SKILL.md.tmpl +2 -3
- package/skills/tfx-psmux-rules/SKILL.md +11 -2
- package/skills/tfx-qa/SKILL.md.tmpl +2 -3
- package/skills/tfx-remote-spawn/SKILL.md +8 -11
- package/skills/tfx-research/SKILL.md.tmpl +2 -3
- package/skills/tfx-review/SKILL.md.tmpl +2 -3
- package/skills/tfx-workspace/async-tests/run-tests.sh +203 -0
- package/skills/tfx-workspace/evals/evals.json +79 -0
- package/skills/tfx-workspace/iteration-1/benchmark.json +162 -0
- package/skills/tfx-workspace/iteration-1/codex-gemini-remap/eval_metadata.json +11 -0
- package/skills/tfx-workspace/iteration-1/codex-gemini-remap/old_skill/grading.json +9 -0
- package/skills/tfx-workspace/iteration-1/codex-gemini-remap/old_skill/outputs/analysis.md +154 -0
- package/skills/tfx-workspace/iteration-1/codex-gemini-remap/old_skill/timing.json +5 -0
- package/skills/tfx-workspace/iteration-1/codex-gemini-remap/with_skill/grading.json +9 -0
- package/skills/tfx-workspace/iteration-1/codex-gemini-remap/with_skill/outputs/analysis.md +126 -0
- package/skills/tfx-workspace/iteration-1/codex-gemini-remap/with_skill/timing.json +5 -0
- package/skills/tfx-workspace/iteration-1/doctor-diagnosis/eval_metadata.json +11 -0
- package/skills/tfx-workspace/iteration-1/doctor-diagnosis/old_skill/grading.json +9 -0
- package/skills/tfx-workspace/iteration-1/doctor-diagnosis/old_skill/outputs/analysis.md +119 -0
- package/skills/tfx-workspace/iteration-1/doctor-diagnosis/old_skill/timing.json +5 -0
- package/skills/tfx-workspace/iteration-1/doctor-diagnosis/with_skill/grading.json +9 -0
- package/skills/tfx-workspace/iteration-1/doctor-diagnosis/with_skill/outputs/analysis.md +115 -0
- package/skills/tfx-workspace/iteration-1/doctor-diagnosis/with_skill/timing.json +5 -0
- package/skills/tfx-workspace/iteration-1/hub-start-sequence/eval_metadata.json +10 -0
- package/skills/tfx-workspace/iteration-1/hub-start-sequence/old_skill/grading.json +8 -0
- package/skills/tfx-workspace/iteration-1/hub-start-sequence/old_skill/outputs/analysis.md +86 -0
- package/skills/tfx-workspace/iteration-1/hub-start-sequence/old_skill/timing.json +5 -0
- package/skills/tfx-workspace/iteration-1/hub-start-sequence/with_skill/grading.json +8 -0
- package/skills/tfx-workspace/iteration-1/hub-start-sequence/with_skill/outputs/analysis.md +81 -0
- package/skills/tfx-workspace/iteration-1/hub-start-sequence/with_skill/timing.json +5 -0
- package/skills/tfx-workspace/iteration-1/multi-team-creation/eval_metadata.json +12 -0
- package/skills/tfx-workspace/iteration-1/multi-team-creation/old_skill/grading.json +10 -0
- package/skills/tfx-workspace/iteration-1/multi-team-creation/old_skill/outputs/analysis.md +316 -0
- package/skills/tfx-workspace/iteration-1/multi-team-creation/old_skill/timing.json +5 -0
- package/skills/tfx-workspace/iteration-1/multi-team-creation/with_skill/grading.json +10 -0
- package/skills/tfx-workspace/iteration-1/multi-team-creation/with_skill/outputs/analysis.md +352 -0
- package/skills/tfx-workspace/iteration-1/multi-team-creation/with_skill/timing.json +5 -0
- package/skills/tfx-workspace/iteration-1/review.html +1325 -0
- package/skills/tfx-workspace/iteration-1/routing-implement-shortcut/eval_metadata.json +12 -0
- package/skills/tfx-workspace/iteration-1/routing-implement-shortcut/old_skill/grading.json +10 -0
- package/skills/tfx-workspace/iteration-1/routing-implement-shortcut/old_skill/outputs/analysis.md +97 -0
- package/skills/tfx-workspace/iteration-1/routing-implement-shortcut/old_skill/timing.json +5 -0
- package/skills/tfx-workspace/iteration-1/routing-implement-shortcut/with_skill/grading.json +10 -0
- package/skills/tfx-workspace/iteration-1/routing-implement-shortcut/with_skill/outputs/analysis.md +94 -0
- package/skills/tfx-workspace/iteration-1/routing-implement-shortcut/with_skill/timing.json +5 -0
- package/skills/tfx-workspace/iteration-1/routing-multi-task-triage/eval_metadata.json +12 -0
- package/skills/tfx-workspace/iteration-1/routing-multi-task-triage/old_skill/grading.json +10 -0
- package/skills/tfx-workspace/iteration-1/routing-multi-task-triage/old_skill/outputs/analysis.md +209 -0
- package/skills/tfx-workspace/iteration-1/routing-multi-task-triage/old_skill/timing.json +5 -0
- package/skills/tfx-workspace/iteration-1/routing-multi-task-triage/with_skill/grading.json +10 -0
- package/skills/tfx-workspace/iteration-1/routing-multi-task-triage/with_skill/outputs/analysis.md +193 -0
- package/skills/tfx-workspace/iteration-1/routing-multi-task-triage/with_skill/timing.json +5 -0
- package/skills/tfx-workspace/iteration-2/benchmark.json +62 -0
- package/skills/tfx-workspace/iteration-2/multi-team-creation-refactored/eval_metadata.json +13 -0
- package/skills/tfx-workspace/iteration-2/multi-team-creation-refactored/old_skill/grading.json +11 -0
- package/skills/tfx-workspace/iteration-2/multi-team-creation-refactored/old_skill/outputs/analysis.md +382 -0
- package/skills/tfx-workspace/iteration-2/multi-team-creation-refactored/old_skill/timing.json +5 -0
- package/skills/tfx-workspace/iteration-2/multi-team-creation-refactored/with_skill/grading.json +11 -0
- package/skills/tfx-workspace/iteration-2/multi-team-creation-refactored/with_skill/outputs/analysis.md +333 -0
- package/skills/tfx-workspace/iteration-2/multi-team-creation-refactored/with_skill/timing.json +5 -0
- package/skills/tfx-workspace/iteration-2/review.html +1325 -0
- package/skills/tfx-workspace/skill-snapshot/tfx-auto/SKILL.md +217 -0
- package/skills/{tfx-auto-codex/SKILL.md.tmpl → tfx-workspace/skill-snapshot/tfx-auto-codex/SKILL.md} +3 -31
- package/skills/tfx-workspace/skill-snapshot/tfx-codex/SKILL.md +65 -0
- package/skills/tfx-workspace/skill-snapshot/tfx-doctor/SKILL.md +94 -0
- package/skills/{tfx-gemini/SKILL.md.tmpl → tfx-workspace/skill-snapshot/tfx-gemini/SKILL.md} +6 -14
- package/skills/tfx-workspace/skill-snapshot/tfx-hub/SKILL.md +133 -0
- package/skills/tfx-workspace/skill-snapshot/tfx-multi/SKILL.md +426 -0
- package/skills/tfx-workspace/skill-snapshot/tfx-setup/SKILL.md +101 -0
- package/skills/merge-worktree/SKILL.md.tmpl +0 -144
- package/skills/shared/arguments-processing.md +0 -2
- package/skills/shared/mandatory-rules.md +0 -6
- package/skills/shared/telemetry-segment.md +0 -6
- package/skills/star-prompt/SKILL.md.tmpl +0 -122
- package/skills/tfx-analysis/SKILL.md.tmpl +0 -106
- package/skills/tfx-analysis/skill.json +0 -11
- package/skills/tfx-auto/skill.json +0 -26
- package/skills/tfx-auto-codex/skill.json +0 -8
- package/skills/tfx-autopilot/SKILL.md.tmpl +0 -115
- package/skills/tfx-autopilot/skill.json +0 -10
- package/skills/tfx-autoresearch/SKILL.md.tmpl +0 -135
- package/skills/tfx-autoresearch/skill.json +0 -14
- package/skills/tfx-autoroute/SKILL.md.tmpl +0 -188
- package/skills/tfx-autoroute/skill.json +0 -12
- package/skills/tfx-codex/skill.json +0 -8
- package/skills/tfx-codex-swarm/SKILL.md.tmpl +0 -16
- package/skills/tfx-codex-swarm/skill.json +0 -5
- package/skills/tfx-consensus/SKILL.md.tmpl +0 -145
- package/skills/tfx-consensus/skill.json +0 -8
- package/skills/tfx-debate/SKILL.md.tmpl +0 -191
- package/skills/tfx-debate/skill.json +0 -12
- package/skills/tfx-deep-analysis/SKILL.md.tmpl +0 -227
- package/skills/tfx-deep-analysis/skill.json +0 -10
- package/skills/tfx-deep-interview/SKILL.md.tmpl +0 -203
- package/skills/tfx-deep-interview/skill.json +0 -12
- package/skills/tfx-deep-plan/SKILL.md.tmpl +0 -281
- package/skills/tfx-deep-plan/skill.json +0 -13
- package/skills/tfx-deep-qa/SKILL.md.tmpl +0 -164
- package/skills/tfx-deep-qa/skill.json +0 -11
- package/skills/tfx-deep-research/SKILL.md.tmpl +0 -216
- package/skills/tfx-deep-research/skill.json +0 -14
- package/skills/tfx-deep-review/SKILL.md.tmpl +0 -178
- package/skills/tfx-deep-review/skill.json +0 -12
- package/skills/tfx-doctor/SKILL.md.tmpl +0 -172
- package/skills/tfx-doctor/skill.json +0 -8
- package/skills/tfx-find/skill.json +0 -12
- package/skills/tfx-forge/SKILL.md.tmpl +0 -187
- package/skills/tfx-forge/skill.json +0 -12
- package/skills/tfx-fullcycle/SKILL.md.tmpl +0 -285
- package/skills/tfx-fullcycle/skill.json +0 -11
- package/skills/tfx-gemini/skill.json +0 -8
- package/skills/tfx-hooks/SKILL.md.tmpl +0 -216
- package/skills/tfx-hooks/skill.json +0 -8
- package/skills/tfx-hub/SKILL.md.tmpl +0 -212
- package/skills/tfx-hub/skill.json +0 -8
- package/skills/tfx-index/skill.json +0 -11
- package/skills/tfx-interview/SKILL.md.tmpl +0 -284
- package/skills/tfx-interview/skill.json +0 -12
- package/skills/tfx-multi/SKILL.md.tmpl +0 -183
- package/skills/tfx-multi/skill.json +0 -8
- package/skills/tfx-panel/SKILL.md.tmpl +0 -188
- package/skills/tfx-panel/skill.json +0 -12
- package/skills/tfx-persist/SKILL.md.tmpl +0 -269
- package/skills/tfx-persist/skill.json +0 -12
- package/skills/tfx-plan/skill.json +0 -11
- package/skills/tfx-profile/SKILL.md.tmpl +0 -239
- package/skills/tfx-profile/skill.json +0 -8
- package/skills/tfx-prune/SKILL.md.tmpl +0 -199
- package/skills/tfx-prune/skill.json +0 -12
- package/skills/tfx-psmux-rules/SKILL.md.tmpl +0 -317
- package/skills/tfx-psmux-rules/skill.json +0 -8
- package/skills/tfx-qa/skill.json +0 -11
- package/skills/tfx-ralph/SKILL.md.tmpl +0 -27
- package/skills/tfx-ralph/skill.json +0 -8
- package/skills/tfx-remote-setup/SKILL.md.tmpl +0 -576
- package/skills/tfx-remote-setup/skill.json +0 -8
- package/skills/tfx-remote-spawn/SKILL.md.tmpl +0 -263
- package/skills/tfx-remote-spawn/skill.json +0 -9
- package/skills/tfx-research/skill.json +0 -13
- package/skills/tfx-review/skill.json +0 -11
- package/skills/tfx-setup/SKILL.md.tmpl +0 -380
- package/skills/tfx-setup/skill.json +0 -8
- package/skills/tfx-swarm/SKILL.md.tmpl +0 -154
- package/skills/tfx-swarm/skill.json +0 -5
|
@@ -1,188 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: tfx-autoroute
|
|
3
|
-
description: "작업 유형에 따라 최적 모델을 자동 선택하여 실행해야 할 때 사용한다. 'sisyphus', '시지프스', 'auto-route', '알아서 라우팅', '최적 모델로' 같은 요청에 사용. 어떤 CLI를 쓸지 모르겠을 때, 또는 실패 시 자동 모델 승격이 필요할 때 적극 활용."
|
|
4
|
-
triggers:
|
|
5
|
-
- sisyphus
|
|
6
|
-
- 끝없이
|
|
7
|
-
- never stop
|
|
8
|
-
- 시지프스
|
|
9
|
-
- auto-route
|
|
10
|
-
argument-hint: "<작업 설명>"
|
|
11
|
-
---
|
|
12
|
-
|
|
13
|
-
# tfx-autoroute — Auto-Routing Autonomous Executor
|
|
14
|
-
|
|
15
|
-
> **ARGUMENTS 처리**: 이 스킬이 `ARGUMENTS: <값>`과 함께 호출되면, 해당 값을 사용자 입력으로 취급하여
|
|
16
|
-
> 워크플로우의 첫 단계 입력으로 사용한다. ARGUMENTS가 비어있거나 없으면 기존 절차대로 사용자에게 입력을 요청한다.
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
> oh-my-openagent Sisyphus agent 오마주. 바위는 멈추지 않는다 — 그리고 올바른 산을 고른다.
|
|
20
|
-
> "실패하면 더 강한 모델로. 성공할 때까지."
|
|
21
|
-
|
|
22
|
-
## 용도
|
|
23
|
-
|
|
24
|
-
- 작업 유형을 모르겠을 때 자동으로 최적 CLI 선택
|
|
25
|
-
- 실패 허용 없이 끝까지 완수해야 할 때
|
|
26
|
-
- Haiku로 충분한 작업에 Opus를 낭비하지 않을 때
|
|
27
|
-
- 비용 최적화 + 완수율 극대화
|
|
28
|
-
|
|
29
|
-
## 핵심 원리
|
|
30
|
-
|
|
31
|
-
```
|
|
32
|
-
1. IntentGate로 작업 유형 분류
|
|
33
|
-
2. 유형에 맞는 최적 CLI/모델에 라우팅
|
|
34
|
-
3. 실패 시 자동 승격 (Haiku → Sonnet → Opus, Codex normal → xhigh)
|
|
35
|
-
4. 최종 실패 시에만 사용자에게 보고
|
|
36
|
-
```
|
|
37
|
-
|
|
38
|
-
## 워크플로우
|
|
39
|
-
|
|
40
|
-
### Step 0: 라우팅 전략 선택
|
|
41
|
-
|
|
42
|
-
실행 전에 AskUserQuestion으로 모델 라우팅 전략을 선택받는다:
|
|
43
|
-
|
|
44
|
-
```
|
|
45
|
-
AskUserQuestion:
|
|
46
|
-
"기본 라우팅 전략을 선택하세요:"
|
|
47
|
-
1. 자동 (IntentGate 판단) [기본]
|
|
48
|
-
2. 성능 우선 (Codex 위주)
|
|
49
|
-
3. 비용 절약 (Haiku 위주)
|
|
50
|
-
4. 정확도 우선 (Opus 위주)
|
|
51
|
-
```
|
|
52
|
-
|
|
53
|
-
- 1번 선택 → Step 1의 IntentGate 분류를 정상 수행
|
|
54
|
-
- 2번 선택 → primary_cli를 Codex(xhigh)로 고정, 실패 시에만 Opus fallback
|
|
55
|
-
- 3번 선택 → primary_cli를 Claude Haiku로 고정, 실패 시 Sonnet → Codex 순 승격
|
|
56
|
-
- 4번 선택 → primary_cli를 Claude Opus로 고정, fallback 없음
|
|
57
|
-
|
|
58
|
-
사용자가 빈 응답을 보내면 기본값 1번(자동)을 적용한다.
|
|
59
|
-
|
|
60
|
-
### Step 1: IntentGate 분류
|
|
61
|
-
|
|
62
|
-
사용자 입력을 분석하여 작업 카테고리와 복잡도를 판단한다:
|
|
63
|
-
|
|
64
|
-
```
|
|
65
|
-
분류 결과:
|
|
66
|
-
{
|
|
67
|
-
"category": "visual | deep | quick | code | research | review",
|
|
68
|
-
"complexity": "trivial | simple | moderate | complex | extreme",
|
|
69
|
-
"estimated_tokens": N,
|
|
70
|
-
"routing": {
|
|
71
|
-
"primary_cli": "gemini | codex | claude",
|
|
72
|
-
"primary_model": "flash | normal | haiku",
|
|
73
|
-
"fallback_chain": ["sonnet", "opus"]
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
```
|
|
77
|
-
|
|
78
|
-
### Step 2: 카테고리 라우팅
|
|
79
|
-
|
|
80
|
-
| 카테고리 | Primary CLI | Primary 모델 | 이유 |
|
|
81
|
-
|----------|-------------|-------------|------|
|
|
82
|
-
| visual (UI/디자인/멀티모달) | Gemini | flash | 시각적 처리 최적 |
|
|
83
|
-
| deep (아키텍처/설계/분석) | Codex | xhigh | 깊은 추론 필요 |
|
|
84
|
-
| quick (간단한 수정/질문) | Claude | haiku | 최소 비용 |
|
|
85
|
-
| code (구현/디버깅/리팩터링) | Codex | normal | 코드 작성 최적 |
|
|
86
|
-
| research (검색/문서/조사) | Codex | normal | MCP 접근 |
|
|
87
|
-
| review (리뷰/검증/QA) | Codex | thorough | 꼼꼼한 검토 |
|
|
88
|
-
|
|
89
|
-
### Step 3: 실행
|
|
90
|
-
|
|
91
|
-
라우팅 결과에 따라 실행한다:
|
|
92
|
-
|
|
93
|
-
```
|
|
94
|
-
if primary_cli == "codex":
|
|
95
|
-
Bash("bash ~/.claude/scripts/tfx-route.sh codex '{prompt}' implement")
|
|
96
|
-
|
|
97
|
-
elif primary_cli == "gemini":
|
|
98
|
-
Bash("bash ~/.claude/scripts/tfx-route.sh gemini '{prompt}' implement")
|
|
99
|
-
|
|
100
|
-
elif primary_cli == "claude":
|
|
101
|
-
if primary_model == "haiku":
|
|
102
|
-
Agent(model="haiku", prompt="{prompt}")
|
|
103
|
-
else:
|
|
104
|
-
Agent(model="sonnet", prompt="{prompt}")
|
|
105
|
-
```
|
|
106
|
-
|
|
107
|
-
### Step 4: 실패 감지 및 자동 승격
|
|
108
|
-
|
|
109
|
-
실행 결과를 평가하고, 실패 시 fallback chain을 따라 승격한다:
|
|
110
|
-
|
|
111
|
-
```
|
|
112
|
-
실패 판단 기준:
|
|
113
|
-
- exit_code != 0
|
|
114
|
-
- 출력에 "error", "failed", "unable to" 포함
|
|
115
|
-
- 출력이 비어 있음
|
|
116
|
-
- 출력이 프롬프트를 반복하기만 함 (hallucination)
|
|
117
|
-
|
|
118
|
-
승격 체인:
|
|
119
|
-
Level 0: primary (최소 비용)
|
|
120
|
-
↓ 실패
|
|
121
|
-
Level 1: 동일 CLI, 모델 한 단계 승격
|
|
122
|
-
예: haiku → sonnet, codex normal → codex xhigh
|
|
123
|
-
↓ 실패
|
|
124
|
-
Level 2: CLI 전환 + 강한 모델
|
|
125
|
-
예: gemini → codex xhigh, codex → claude opus
|
|
126
|
-
↓ 실패
|
|
127
|
-
Level 3: Claude Opus 직접 실행 (최후 수단)
|
|
128
|
-
↓ 실패
|
|
129
|
-
Level 4: 사용자에게 보고 + 도움 요청 (AskUserQuestion)
|
|
130
|
-
```
|
|
131
|
-
|
|
132
|
-
### Step 5: 결과 보고
|
|
133
|
-
|
|
134
|
-
```markdown
|
|
135
|
-
## Sisyphus 완료
|
|
136
|
-
|
|
137
|
-
**작업**: {task_description}
|
|
138
|
-
**분류**: {category} / {complexity}
|
|
139
|
-
**라우팅**: {primary_cli} ({primary_model})
|
|
140
|
-
**승격 횟수**: {escalation_count}
|
|
141
|
-
**최종 실행**: {final_cli} ({final_model})
|
|
142
|
-
|
|
143
|
-
### 실행 경로
|
|
144
|
-
| 시도 | CLI | 모델 | 결과 | 토큰 |
|
|
145
|
-
|------|-----|------|------|------|
|
|
146
|
-
| 1 | Haiku | haiku | 실패 (불완전) | ~1K |
|
|
147
|
-
| 2 | Codex | normal | 성공 | ~3K |
|
|
148
|
-
|
|
149
|
-
### 결과
|
|
150
|
-
{output}
|
|
151
|
-
|
|
152
|
-
### 비용 절감
|
|
153
|
-
Primary Opus였다면: ~{opus_cost}K tokens
|
|
154
|
-
실제 사용: ~{actual_cost}K tokens
|
|
155
|
-
절감: {savings}%
|
|
156
|
-
```
|
|
157
|
-
|
|
158
|
-
## Anti-Stuck 메커니즘
|
|
159
|
-
|
|
160
|
-
```
|
|
161
|
-
같은 에러로 2회 연속 실패 시:
|
|
162
|
-
→ 에러 메시지를 다음 프롬프트에 포함하여 우회 시도
|
|
163
|
-
|
|
164
|
-
승격 체인 전체 소진 시 (Level 4):
|
|
165
|
-
→ AskUserQuestion: "다음 작업이 모든 모델에서 실패했습니다.
|
|
166
|
-
에러: {error}. 접근 방식을 변경하시겠습니까?"
|
|
167
|
-
```
|
|
168
|
-
|
|
169
|
-
## 토큰 예산
|
|
170
|
-
|
|
171
|
-
가변. 최소 비용 라우팅이 핵심이므로 고정 예산 없음.
|
|
172
|
-
|
|
173
|
-
| 시나리오 | 예상 토큰 |
|
|
174
|
-
|----------|----------|
|
|
175
|
-
| 1회 성공 (haiku) | ~2K |
|
|
176
|
-
| 1회 성공 (codex) | ~5K |
|
|
177
|
-
| 1회 승격 후 성공 | ~8K |
|
|
178
|
-
| 2회 승격 후 성공 | ~15K |
|
|
179
|
-
| 전체 체인 소진 | ~25K |
|
|
180
|
-
|
|
181
|
-
## 사용 예
|
|
182
|
-
|
|
183
|
-
```
|
|
184
|
-
/tfx-autoroute "이 함수의 타입 에러 수정해"
|
|
185
|
-
/tfx-autoroute "프로젝트 구조 분석해서 아키텍처 다이어그램 만들어"
|
|
186
|
-
/tfx-autoroute "README.md 한국어로 번역"
|
|
187
|
-
/시지프스 "테스트 커버리지 80%까지 올려"
|
|
188
|
-
```
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "tfx-autoroute",
|
|
3
|
-
"description": "작업 유형에 따라 최적 모델을 자동 선택하여 실행해야 할 때 사용한다. 'sisyphus', '시지프스', 'auto-route', '알아서 라우팅', '최적 모델로' 같은 요청에 사용. 어떤 CLI를 쓸지 모르겠을 때, 또는 실패 시 자동 모델 승격이 필요할 때 적극 활용.",
|
|
4
|
-
"triggers": [
|
|
5
|
-
"sisyphus",
|
|
6
|
-
"끝없이",
|
|
7
|
-
"never stop",
|
|
8
|
-
"시지프스",
|
|
9
|
-
"auto-route"
|
|
10
|
-
],
|
|
11
|
-
"argument_hint": "<작업 설명>"
|
|
12
|
-
}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: tfx-codex-swarm
|
|
3
|
-
deprecated: true
|
|
4
|
-
superseded-by: tfx-swarm
|
|
5
|
-
description: "DEPRECATED — tfx-swarm으로 통합됨. 'codex swarm', '코덱스 스웜' 요청은 tfx-swarm이 처리."
|
|
6
|
-
triggers:
|
|
7
|
-
- codex-swarm
|
|
8
|
-
- 코덱스 스웜
|
|
9
|
-
---
|
|
10
|
-
|
|
11
|
-
# tfx-codex-swarm — DEPRECATED
|
|
12
|
-
|
|
13
|
-
> **DEPRECATED:** 이 스킬은 `tfx-swarm`으로 통합되었습니다. `/tfx-swarm`을 사용하세요.
|
|
14
|
-
> swarm-planner + swarm-hypervisor 파이프라인이 worktree/psmux/codex/원격 실행을 통합 관리합니다.
|
|
15
|
-
|
|
16
|
-
이 스킬이 호출되면 자동으로 `/tfx-swarm`을 호출합니다.
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "tfx-codex-swarm",
|
|
3
|
-
"description": "OMX 스킬을 활용하는 Codex 다중 세션 스폰 오케스트레이터. PRD/태스크 파일을 스캔하여 각각 독립 git worktree + psmux 세션���로 Codex를 full-auto 실행한다. 'codex swarm', 'codex 다중', '코덱스 스웜', '코덱스 다중 실행', 'PRD 일괄 실행', 'codex spawn', '코덱스 스폰', '다중 코덱스', 'swarm codex', 'omx swarm', '새 창에서 진행', '새 창에서 prd', 'prd 부터', 'prd 실행', 'prd 돌려', '병렬로 돌려', 'worktree로 실행' 같은 요청에 반드시 사용. PRD가 여러 개이거나 병렬 Codex 실행이 필요한 모든 상황에 적극 활용.",
|
|
4
|
-
"triggers": []
|
|
5
|
-
}
|
|
@@ -1,145 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: tfx-consensus
|
|
3
|
-
description: >
|
|
4
|
-
3자 합의 엔진 — 모든 Deep 스킬의 핵심 인프라. Claude/Codex/Gemini 독립 분석 결과를 교차검증하여 편향 없는 합의를 도출한다.
|
|
5
|
-
독립 실행도 가능: '합의로 분석해', '3자 합의', 'consensus' 같은 요청 시 직접 호출 가능.
|
|
6
|
-
triggers: [consensus, 합의]
|
|
7
|
-
argument-hint: "<분석 주제 또는 컨텍스트> (Deep 스킬 내부 자동 호출 또는 직접 사용 가능)"
|
|
8
|
-
---
|
|
9
|
-
|
|
10
|
-
# tfx-consensus — Tri-CLI Consensus Engine
|
|
11
|
-
|
|
12
|
-
> **ARGUMENTS 처리**: 이 스킬이 `ARGUMENTS: <값>`과 함께 호출되면, 해당 값을 사용자 입력으로 취급하여
|
|
13
|
-
> 워크플로우의 첫 단계 입력으로 사용한다. ARGUMENTS가 비어있거나 없으면 기존 절차대로 사용자에게 입력을 요청한다.
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
> **인프라**: 다른 스킬이 내부적으로 사용. 직접 호출할 필요 없음.
|
|
17
|
-
> 모든 Deep 스킬의 공통 기반. 3개 CLI의 독립 결과를 교차검증하여 합의 도출.
|
|
18
|
-
|
|
19
|
-
## HARD RULES
|
|
20
|
-
|
|
21
|
-
> headless-guard가 이 규칙 위반을 **자동 차단**한다. 우회 불가.
|
|
22
|
-
|
|
23
|
-
1. **`codex exec` / `gemini -p` 직접 호출 절대 금지**
|
|
24
|
-
2. Codex·Gemini → `Bash("tfx multi --teammate-mode headless --auto-attach --dashboard --assign 'cli:프롬프트:역할' --timeout 600")` **만** 사용
|
|
25
|
-
3. Claude → `Agent(run_in_background=true)`
|
|
26
|
-
4. Bash + Agent를 같은 메시지에서 동시 호출하여 병렬 실행
|
|
27
|
-
|
|
28
|
-
이 스킬은 직접 호출하지 않는다. `tfx-deep-*` 스킬이 내부적으로 사용한다.
|
|
29
|
-
|
|
30
|
-
## MODEL ROLES
|
|
31
|
-
|
|
32
|
-
| Model | Profile | 역할 | 강점 |
|
|
33
|
-
|-------|---------|------|------|
|
|
34
|
-
| Claude Opus | architect | 합의 통합 및 교차검증 조율 | 논리 분석, 불일치 해소 |
|
|
35
|
-
| Codex | analyst | 구현/보안 관점 독립 분석 | 코드 품질, 취약점 탐지 |
|
|
36
|
-
| Gemini | analyst | UX/문서화 관점 독립 분석 | DX, 접근성, 가독성 |
|
|
37
|
-
|
|
38
|
-
## EXECUTION STEPS
|
|
39
|
-
|
|
40
|
-
### Step 1: 독립 분석 dispatch (Anti-Herding)
|
|
41
|
-
|
|
42
|
-
3개 CLI가 **동시에, 상호 결과를 보지 않고** 독립 분석한다. 한 CLI의 결과가 다른 CLI에 영향을 주면 편향이 발생한다.
|
|
43
|
-
|
|
44
|
-
**아래 2개 도구를 반드시 같은 응답에서 동시에 호출하라.**
|
|
45
|
-
|
|
46
|
-
**도구 1 — Claude (Opus/Sonnet) 독립 분석:**
|
|
47
|
-
```
|
|
48
|
-
Agent(
|
|
49
|
-
subagent_type="oh-my-claudecode:architect",
|
|
50
|
-
model="opus",
|
|
51
|
-
run_in_background=true,
|
|
52
|
-
name="consensus-claude",
|
|
53
|
-
description="독립 분석 — Claude 관점",
|
|
54
|
-
prompt="{analysis_prompt} 출력 형식을 JSON으로 강제: { findings: [{ id: 'F1', category: '...', severity: 'critical|high|medium|low', description: '...', evidence: '...' }], summary: '...', confidence: 0.0-1.0 }"
|
|
55
|
-
)
|
|
56
|
-
```
|
|
57
|
-
|
|
58
|
-
**도구 2 — Codex+Gemini 독립 분석 headless dispatch:**
|
|
59
|
-
```
|
|
60
|
-
Bash("tfx multi --teammate-mode headless --auto-attach --dashboard --assign 'codex:{analysis_prompt} 출력 형식을 JSON으로 강제: { findings: [{ id: string, category: string, severity: critical|high|medium|low, description: string, evidence: string }], summary: string, confidence: 0.0-1.0 }:analyst' --assign 'gemini:{analysis_prompt} 출력 형식을 JSON으로 강제: { findings: [{ id: string, category: string, severity: critical|high|medium|low, description: string, evidence: string }], summary: string, confidence: 0.0-1.0 }:analyst' --timeout 600")
|
|
61
|
-
```
|
|
62
|
-
|
|
63
|
-
### Step 2: 교차검증 (Cross-Validation)
|
|
64
|
-
|
|
65
|
-
3개 결과(`result_claude`, `result_codex`, `result_gemini`)를 수집한 후 Claude가 통합 교차검증을 수행한다.
|
|
66
|
-
|
|
67
|
-
합의 분류 알고리즘:
|
|
68
|
-
- 각 finding에 대해 동의한 CLI 수를 집계
|
|
69
|
-
- `agreement_count >= 2` → **CONSENSUS** (합의됨)
|
|
70
|
-
- `agreement_count == 1` → **DISPUTED** (미합의 — 추가 검증 필요)
|
|
71
|
-
- `consensus_score = len(CONSENSUS) / len(ALL_UNIQUE) * 100`
|
|
72
|
-
|
|
73
|
-
`consensus_score >= 70`이면 Step 4로 직행. 미만이면 Step 3 진행.
|
|
74
|
-
|
|
75
|
-
### Step 3: Resolution (consensus_score < 70일 때만)
|
|
76
|
-
|
|
77
|
-
미합의 항목에 대해 2차 라운드를 진행한다.
|
|
78
|
-
|
|
79
|
-
**아래 2개 도구를 반드시 같은 응답에서 동시에 호출하라.**
|
|
80
|
-
|
|
81
|
-
**도구 1 — Claude 재검토:**
|
|
82
|
-
```
|
|
83
|
-
Agent(
|
|
84
|
-
subagent_type="oh-my-claudecode:architect",
|
|
85
|
-
model="opus",
|
|
86
|
-
run_in_background=true,
|
|
87
|
-
name="consensus-resolve-claude",
|
|
88
|
-
description="미합의 항목 2차 검토",
|
|
89
|
-
prompt="미합의 항목 목록: {disputed_items}. 다른 두 CLI의 반대 논거: Codex — {codex_rebuttal}, Gemini — {gemini_rebuttal}. 각 항목에 대해 수용(accept) 또는 반박(rebut)으로 응답하라. 수용 시 근거 필수."
|
|
90
|
-
)
|
|
91
|
-
```
|
|
92
|
-
|
|
93
|
-
**도구 2 — Codex+Gemini 재검토:**
|
|
94
|
-
```
|
|
95
|
-
Bash("tfx multi --teammate-mode headless --auto-attach --dashboard --assign 'codex:미합의 항목 목록: {disputed_items}. 다른 두 CLI의 반대 논거: Claude — {claude_rebuttal}, Gemini — {gemini_rebuttal}. 각 항목에 대해 수용(accept) 또는 반박(rebut)으로 응답하라. 수용 시 근거 필수.:analyst' --assign 'gemini:미합의 항목 목록: {disputed_items}. 다른 두 CLI의 반대 논거: Claude — {claude_rebuttal}, Codex — {codex_rebuttal}. 각 항목에 대해 수용(accept) 또는 반박(rebut)으로 응답하라. 수용 시 근거 필수.:analyst' --timeout 600")
|
|
96
|
-
```
|
|
97
|
-
|
|
98
|
-
Resolution 결과 처리:
|
|
99
|
-
- 수용 2개 이상 → CONSENSUS로 승격
|
|
100
|
-
- 여전히 미합의 → 사용자에게 판단 요청 (AskUserQuestion)
|
|
101
|
-
|
|
102
|
-
### Step 4: 최종 합의 결과 반환
|
|
103
|
-
|
|
104
|
-
Learned Weights를 `.omc/state/consensus-weights.json`에서 읽어 가중 투표에 적용한다:
|
|
105
|
-
|
|
106
|
-
```json
|
|
107
|
-
{
|
|
108
|
-
"claude": { "accuracy": 0.85, "total": 100, "correct": 85 },
|
|
109
|
-
"codex": { "accuracy": 0.82, "total": 100, "correct": 82 },
|
|
110
|
-
"gemini": { "accuracy": 0.78, "total": 100, "correct": 78 }
|
|
111
|
-
}
|
|
112
|
-
```
|
|
113
|
-
|
|
114
|
-
가중 투표:
|
|
115
|
-
`weighted_score = (claude_vote * 0.85 + codex_vote * 0.82 + gemini_vote * 0.78) / (0.85 + 0.82 + 0.78)`
|
|
116
|
-
|
|
117
|
-
최종 결과를 호출 스킬에 반환한다:
|
|
118
|
-
|
|
119
|
-
```json
|
|
120
|
-
{
|
|
121
|
-
"consensus_score": 85,
|
|
122
|
-
"consensus_items": [...],
|
|
123
|
-
"disputed_items": [...],
|
|
124
|
-
"resolved_items": [...],
|
|
125
|
-
"user_decision_needed": [...],
|
|
126
|
-
"cli_weights": { "claude": 0.85, "codex": 0.82, "gemini": 0.78 }
|
|
127
|
-
}
|
|
128
|
-
```
|
|
129
|
-
|
|
130
|
-
## ERROR RECOVERY
|
|
131
|
-
|
|
132
|
-
| 상황 | 대응 |
|
|
133
|
-
|------|------|
|
|
134
|
-
| headless timeout (600s) | Claude Agent로 해당 역할 대체 실행 |
|
|
135
|
-
| Codex 워커 실패 | Agent(oh-my-claudecode:architect, model="opus") 대체 |
|
|
136
|
-
| Gemini 워커 실패 | Agent(oh-my-claudecode:critic, model="sonnet") 대체 |
|
|
137
|
-
|
|
138
|
-
## 토큰 예산
|
|
139
|
-
|
|
140
|
-
| Phase | 토큰 |
|
|
141
|
-
|-------|------|
|
|
142
|
-
| Phase 1 (3x 독립분석) | ~15K (각 5K) |
|
|
143
|
-
| Phase 2 (교차검증) | ~3K |
|
|
144
|
-
| Phase 3 (Resolution, 필요 시) | ~8K |
|
|
145
|
-
| **총합** | **18-26K** |
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "tfx-consensus",
|
|
3
|
-
"description": "3자 합의 엔진 — 모든 Deep 스킬의 핵심 인프라. Claude/Codex/Gemini 독립 분석 결과를 교차검증하여 편향 없는 합의를 도출한다. 독립 실행도 가능: '합의로 분석해', '3자 합의', 'consensus' 같은 요청 시 직접 호출 가능.",
|
|
4
|
-
"triggers": [
|
|
5
|
-
"[consensus, 합의]"
|
|
6
|
-
],
|
|
7
|
-
"argument_hint": "<분석 주제 또는 컨텍스트> (Deep 스킬 내부 자동 호출 또는 직접 사용 가능)"
|
|
8
|
-
}
|
|
@@ -1,191 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: tfx-debate
|
|
3
|
-
description: "기술 선택, 아키텍처 비교, 설계 결정에서 3-CLI 구조화 토론으로 최적 답을 도출한다. 'A vs B', '뭐가 나을까', '비교해줘', '어떤 걸 쓸까', '장단점', 'tradeoff' 같은 비교/선택 요청에 반드시 사용한다. 단순 질문이 아닌 여러 옵션 사이의 결정이 필요할 때 적극 활용."
|
|
4
|
-
triggers:
|
|
5
|
-
- debate
|
|
6
|
-
- 토론
|
|
7
|
-
- 3자 토론
|
|
8
|
-
- tri-debate
|
|
9
|
-
- 멀티모델 토론
|
|
10
|
-
argument-hint: "<토론 주제 또는 질문>"
|
|
11
|
-
---
|
|
12
|
-
|
|
13
|
-
# tfx-debate — Tri-CLI Structured Debate
|
|
14
|
-
|
|
15
|
-
> **ARGUMENTS 처리**: 이 스킬이 `ARGUMENTS: <값>`과 함께 호출되면, 해당 값을 사용자 입력으로 취급하여
|
|
16
|
-
> 워크플로우의 첫 단계 입력으로 사용한다. ARGUMENTS가 비어있거나 없으면 기존 절차대로 사용자에게 입력을 요청한다.
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
> 3개 CLI가 독립 분석 → 교차검증 → 합의 도출. Anti-herding으로 편향 없는 결론.
|
|
20
|
-
|
|
21
|
-
## 용도
|
|
22
|
-
|
|
23
|
-
- 설계 결정에서 최적 방향을 찾을 때
|
|
24
|
-
- 코드 아키텍처 선택지 비교
|
|
25
|
-
- 기술 선택 (프레임워크, 라이브러리, 접근법)
|
|
26
|
-
- 요구사항 해석이 모호할 때
|
|
27
|
-
- 어떤 주제든 다관점 분석이 필요할 때
|
|
28
|
-
|
|
29
|
-
## HARD RULES
|
|
30
|
-
|
|
31
|
-
> headless-guard가 이 규칙 위반을 **자동 차단**한다. 우회 불가.
|
|
32
|
-
|
|
33
|
-
1. **`codex exec` / `gemini -p` 직접 호출 절대 금지**
|
|
34
|
-
2. Codex·Gemini → `Bash("tfx multi --teammate-mode headless --auto-attach --dashboard --assign 'cli:프롬프트:역할' --timeout 600")` **만** 사용
|
|
35
|
-
3. Claude → `Agent(run_in_background=true)`
|
|
36
|
-
4. Bash + Agent를 같은 메시지에서 동시 호출하여 병렬 실행
|
|
37
|
-
|
|
38
|
-
## MODEL ROLES
|
|
39
|
-
|
|
40
|
-
| CLI | 역할 |
|
|
41
|
-
|-----|------|
|
|
42
|
-
| Claude | 소프트웨어 아키텍트 — 시스템 설계 관점 |
|
|
43
|
-
| Codex | 시니어 백엔드 엔지니어 — 구현/기술적 트레이드오프 관점 |
|
|
44
|
-
| Gemini | DevOps/인프라 엔지니어 + DX 전문가 — 운영/개발자경험 관점 |
|
|
45
|
-
|
|
46
|
-
## EXECUTION STEPS
|
|
47
|
-
|
|
48
|
-
### Step 1: 주제 파싱 및 명확화
|
|
49
|
-
|
|
50
|
-
사용자 입력에서 토론 주제를 추출하라. 주제가 모호하거나 비교 대상이 불명확하면 AskUserQuestion으로 명확화하라:
|
|
51
|
-
|
|
52
|
-
```
|
|
53
|
-
AskUserQuestion:
|
|
54
|
-
"토론 주제를 더 구체적으로 선택해주세요:"
|
|
55
|
-
1. {옵션A} vs {옵션B} 기술 비교
|
|
56
|
-
2. {주제} 아키텍처 접근법 비교
|
|
57
|
-
3. 직접 입력
|
|
58
|
-
```
|
|
59
|
-
|
|
60
|
-
주제가 명확한 경우 (예: "REST vs GraphQL") 이 단계를 건너뛰어라.
|
|
61
|
-
|
|
62
|
-
파싱 결과를 내부적으로 보유하라:
|
|
63
|
-
- topic: 토론 주제
|
|
64
|
-
- context: 프로젝트 컨텍스트 (자동 추출)
|
|
65
|
-
- options: 비교 대상 목록
|
|
66
|
-
- criteria: 평가 기준 목록
|
|
67
|
-
|
|
68
|
-
### Step 2: 독립 분석 (Anti-Herding)
|
|
69
|
-
|
|
70
|
-
**아래 2개 도구를 반드시 같은 응답에서 동시에 호출하라.**
|
|
71
|
-
|
|
72
|
-
Claude Agent를 백그라운드로 실행하라:
|
|
73
|
-
|
|
74
|
-
```
|
|
75
|
-
Agent(
|
|
76
|
-
subagent_type="claude",
|
|
77
|
-
model="opus",
|
|
78
|
-
run_in_background=true,
|
|
79
|
-
prompt="당신은 소프트웨어 아키텍트입니다. {topic}에 대해 분석하세요.
|
|
80
|
-
프로젝트 컨텍스트: {context}
|
|
81
|
-
각 옵션의 장점, 단점, 리스크를 구조화하세요.
|
|
82
|
-
최종 추천과 근거를 제시하세요.
|
|
83
|
-
JSON 형식으로 출력하세요: { recommendation, reasoning, pros, cons, risks, confidence }"
|
|
84
|
-
)
|
|
85
|
-
```
|
|
86
|
-
|
|
87
|
-
Codex와 Gemini를 headless dispatch로 동시에 실행하라:
|
|
88
|
-
|
|
89
|
-
```
|
|
90
|
-
Bash("tfx multi --teammate-mode headless --auto-attach --dashboard \
|
|
91
|
-
--assign 'codex:당신은 시니어 백엔드 엔지니어입니다. {topic}에 대해 구현 관점에서 분석하세요. 프로젝트 컨텍스트: {context}. 각 옵션의 기술적 트레이드오프를 평가하고 구현 난이도, 성능, 확장성을 중심으로 분석하세요. JSON 형식으로 출력하세요: { recommendation, reasoning, pros, cons, risks, confidence }:analyst' \
|
|
92
|
-
--assign 'gemini:당신은 DevOps/인프라 엔지니어이자 DX 전문가입니다. {topic}에 대해 운영+개발자경험 관점에서 분석하세요. 프로젝트 컨텍스트: {context}. 배포 복잡도, 모니터링, 온보딩 난이도, 개발자 생산성을 중심으로 분석하세요. JSON 형식으로 출력하세요: { recommendation, reasoning, pros, cons, risks, confidence }:analyst' \
|
|
93
|
-
--timeout 600")
|
|
94
|
-
```
|
|
95
|
-
|
|
96
|
-
### Step 3: 결과 수집 및 교차검증
|
|
97
|
-
|
|
98
|
-
3개 결과가 모두 수집되면 다음 기준으로 교차검증하라:
|
|
99
|
-
|
|
100
|
-
합의 수준을 판정하라:
|
|
101
|
-
- 3/3 동일 추천 → "만장일치" (Strong Consensus) → Step 5로 바로 진행
|
|
102
|
-
- 2/3 동일 추천 → "다수 합의" (Majority Consensus) → Step 5로 진행
|
|
103
|
-
- 3개 모두 다름 → "불일치" (Disputed) → Step 4 토론 라운드 실행
|
|
104
|
-
|
|
105
|
-
항목별 교차검증을 수행하라:
|
|
106
|
-
- 2개 이상 CLI가 동일 장점/단점 지적 → 확정
|
|
107
|
-
- 1개 CLI만 지적 → "미검증" 표시
|
|
108
|
-
|
|
109
|
-
### Step 4: 토론 라운드 (불일치 시에만 실행)
|
|
110
|
-
|
|
111
|
-
불일치 항목이 있으면 각 CLI에게 다음 프롬프트로 2차 라운드를 실행하라.
|
|
112
|
-
|
|
113
|
-
**아래 2개 도구를 반드시 같은 응답에서 동시에 호출하라.**
|
|
114
|
-
|
|
115
|
-
Claude Agent를 백그라운드로 실행하라:
|
|
116
|
-
|
|
117
|
-
```
|
|
118
|
-
Agent(
|
|
119
|
-
subagent_type="claude",
|
|
120
|
-
model="opus",
|
|
121
|
-
run_in_background=true,
|
|
122
|
-
prompt="다음은 다른 두 분석가의 결론입니다.
|
|
123
|
-
분석가 A (백엔드 엔지니어): {codex_recommendation} — 근거: {codex_reasoning}
|
|
124
|
-
분석가 B (DevOps/DX): {gemini_recommendation} — 근거: {gemini_reasoning}
|
|
125
|
-
|
|
126
|
-
당신의 원래 입장: {claude_recommendation}
|
|
127
|
-
|
|
128
|
-
다른 분석가의 논거를 검토한 후:
|
|
129
|
-
1. 수용할 점이 있으면 입장을 수정하세요
|
|
130
|
-
2. 반박할 점이 있으면 근거를 제시하세요
|
|
131
|
-
3. 최종 추천을 JSON으로 다시 제출하세요: { recommendation, reasoning, confidence, changed }"
|
|
132
|
-
)
|
|
133
|
-
```
|
|
134
|
-
|
|
135
|
-
Codex와 Gemini 2차 라운드를 headless dispatch로 동시에 실행하라:
|
|
136
|
-
|
|
137
|
-
```
|
|
138
|
-
Bash("tfx multi --teammate-mode headless --auto-attach --dashboard \
|
|
139
|
-
--assign 'codex:다음은 다른 두 분석가의 결론입니다. 분석가 A (아키텍트): {claude_recommendation} — 근거: {claude_reasoning}. 분석가 B (DevOps/DX): {gemini_recommendation} — 근거: {gemini_reasoning}. 당신의 원래 입장: {codex_recommendation}. 다른 분석가의 논거를 검토한 후 수용할 점은 반영하고 반박할 점은 근거를 제시하세요. JSON으로 최종 추천을 제출하세요: { recommendation, reasoning, confidence, changed }:analyst' \
|
|
140
|
-
--assign 'gemini:다음은 다른 두 분석가의 결론입니다. 분석가 A (아키텍트): {claude_recommendation} — 근거: {claude_reasoning}. 분석가 B (백엔드 엔지니어): {codex_recommendation} — 근거: {codex_reasoning}. 당신의 원래 입장: {gemini_recommendation}. 다른 분석가의 논거를 검토한 후 수용할 점은 반영하고 반박할 점은 근거를 제시하세요. JSON으로 최종 추천을 제출하세요: { recommendation, reasoning, confidence, changed }:analyst' \
|
|
141
|
-
--timeout 600")
|
|
142
|
-
```
|
|
143
|
-
|
|
144
|
-
### Step 5: 최종 종합
|
|
145
|
-
|
|
146
|
-
Claude Opus가 전체 토론을 종합하여 다음 구조로 최종 보고서를 작성하라:
|
|
147
|
-
|
|
148
|
-
```markdown
|
|
149
|
-
## 토론 결과: {topic}
|
|
150
|
-
|
|
151
|
-
### 합의 사항 (Consensus Score: {score}%)
|
|
152
|
-
- [항목 1] — 3/3 합의
|
|
153
|
-
- [항목 2] — 2/3 합의 (반대: {dissenter} — 근거: {reason})
|
|
154
|
-
|
|
155
|
-
### 최종 추천
|
|
156
|
-
{recommendation}
|
|
157
|
-
|
|
158
|
-
### 근거 (3자 종합)
|
|
159
|
-
{synthesized_reasoning}
|
|
160
|
-
|
|
161
|
-
### 리스크 및 완화 방안
|
|
162
|
-
{risks_and_mitigations}
|
|
163
|
-
|
|
164
|
-
### 불일치 (해소되지 않은 항목)
|
|
165
|
-
{unresolved_disputes — if any}
|
|
166
|
-
```
|
|
167
|
-
|
|
168
|
-
## ERROR RECOVERY
|
|
169
|
-
|
|
170
|
-
- Codex 또는 Gemini 결과가 없으면: 2개 소스로 교차검증을 진행하고 보고서에 누락 CLI를 명시하라
|
|
171
|
-
- tfx multi 명령이 실패하면: 오류 메시지를 출력하고 재시도 1회 후 실패를 사용자에게 보고하라
|
|
172
|
-
- Agent 결과가 없으면: Claude 관점 없이 나머지 2개 소스로 진행하라
|
|
173
|
-
- Round 2 후에도 불일치가 지속되면: 해소되지 않은 항목으로 보고서에 명시하고 최종 추천은 다수결로 결정하라
|
|
174
|
-
|
|
175
|
-
## TOKEN BUDGET
|
|
176
|
-
|
|
177
|
-
| 단계 | 토큰 |
|
|
178
|
-
|------|------|
|
|
179
|
-
| Step 2 (3x 독립) | ~15K |
|
|
180
|
-
| Step 3 (교차검증) | ~2K |
|
|
181
|
-
| Step 4 (토론, 불일치 시) | ~8K |
|
|
182
|
-
| Step 5 (종합) | ~3K |
|
|
183
|
-
| **총합** | **20-28K** |
|
|
184
|
-
|
|
185
|
-
## 사용 예
|
|
186
|
-
|
|
187
|
-
```
|
|
188
|
-
/tfx-debate "우리 서비스에 Redis vs PostgreSQL LISTEN/NOTIFY for real-time events"
|
|
189
|
-
/tfx-debate "모노레포 vs 멀티레포 for our 3-service architecture"
|
|
190
|
-
/tfx-debate "이 함수를 리팩터링할 때 Strategy 패턴 vs 단순 switch-case"
|
|
191
|
-
```
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "tfx-debate",
|
|
3
|
-
"description": "기술 선택, 아키텍처 비교, 설계 결정에서 3-CLI 구조화 토론으로 최적 답을 도출한다. 'A vs B', '뭐가 나을까', '비교해줘', '어떤 걸 쓸까', '장단점', 'tradeoff' 같은 비교/선택 요청에 반드시 사용한다. 단순 질문이 아닌 여러 옵션 사이의 결정이 필요할 때 적극 활용.",
|
|
4
|
-
"triggers": [
|
|
5
|
-
"debate",
|
|
6
|
-
"토론",
|
|
7
|
-
"3자 토론",
|
|
8
|
-
"tri-debate",
|
|
9
|
-
"멀티모델 토론"
|
|
10
|
-
],
|
|
11
|
-
"argument_hint": "<토론 주제 또는 질문>"
|
|
12
|
-
}
|