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,212 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: tfx-hub
|
|
3
|
-
description: >
|
|
4
|
-
tfx-hub MCP 메시지 버스 관리. CLI 에이전트 간 실시간 통신 허브를 시작/중지/상태확인하고,
|
|
5
|
-
hub 도메인의 자유형 작업도 처리합니다.
|
|
6
|
-
Use when: hub, 허브, 메시지 버스, message bus, 브릿지, bridge, MCP 서버 관리, 에이전트 통신
|
|
7
|
-
triggers:
|
|
8
|
-
- tfx-hub
|
|
9
|
-
argument-hint: "<start|stop|status|자유형 작업 설명>"
|
|
10
|
-
---
|
|
11
|
-
|
|
12
|
-
# tfx-hub — MCP 메시지 버스 관리 + 개방형 작업
|
|
13
|
-
|
|
14
|
-
> **ARGUMENTS 처리**: 이 스킬이 `ARGUMENTS: <값>`과 함께 호출되면, 해당 값을 사용자 입력으로 취급하여
|
|
15
|
-
> 워크플로우의 첫 단계 입력으로 사용한다. ARGUMENTS가 비어있거나 없으면 기존 절차대로 사용자에게 입력을 요청한다.
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
> **인프라**: 다른 스킬이 내부적으로 사용. 직접 호출할 필요 없음.
|
|
19
|
-
> CLI 에이전트(Codex/Gemini/Claude) 간 실시간 메시지 허브를 관리합니다.
|
|
20
|
-
> **커맨드 매칭 + fallthrough**: start/stop/status에 매칭되면 즉시 실행,
|
|
21
|
-
> 매칭 안 되면 **hub 도메인 컨텍스트를 활용한 범용 작업**으로 처리합니다.
|
|
22
|
-
|
|
23
|
-
## 입력 해석 규칙
|
|
24
|
-
|
|
25
|
-
```
|
|
26
|
-
/tfx-hub start → 커맨드 매칭 → 허브 시작
|
|
27
|
-
/tfx-hub stop → 커맨드 매칭 → 허브 중지
|
|
28
|
-
/tfx-hub status → 커맨드 매칭 → 상태 확인
|
|
29
|
-
/tfx-hub 테스트해줘 → fallthrough → hub 관련 범용 작업으로 처리
|
|
30
|
-
/tfx-hub 문서 저장해 → fallthrough → hub 관련 범용 작업으로 처리
|
|
31
|
-
/tfx-hub 브릿지 분석해 → fallthrough → hub 관련 범용 작업으로 처리
|
|
32
|
-
```
|
|
33
|
-
|
|
34
|
-
**fallthrough 규칙**: 인자가 start/stop/status/--port 등 커맨드 키워드에 매칭되지 않으면,
|
|
35
|
-
사용자의 입력을 **hub/브릿지/메시지버스 도메인의 자유형 작업**으로 해석한다.
|
|
36
|
-
|
|
37
|
-
fallthrough 라우팅:
|
|
38
|
-
```bash
|
|
39
|
-
# tfx-route.sh 경유 (권장)
|
|
40
|
-
Bash("bash ~/.claude/scripts/tfx-route.sh {에이전트} '{hub 컨텍스트 + 작업}' {mcp_profile}")
|
|
41
|
-
|
|
42
|
-
# codex 직접 호출 시 — 반드시 exec 서브커맨드 포함
|
|
43
|
-
Bash("codex exec --dangerously-bypass-approvals-and-sandbox --skip-git-repo-check '{작업}'")
|
|
44
|
-
Bash("codex --profile gpt54_xhigh exec --dangerously-bypass-approvals-and-sandbox --skip-git-repo-check '{작업}'")
|
|
45
|
-
# ↑ --profile은 exec 앞에, --skip-git-repo-check은 exec 뒤에
|
|
46
|
-
|
|
47
|
-
# Claude 네이티브 (탐색/검증)
|
|
48
|
-
Agent(subagent_type="oh-my-claudecode:explore", prompt="{작업}")
|
|
49
|
-
```
|
|
50
|
-
|
|
51
|
-
## 커맨드
|
|
52
|
-
|
|
53
|
-
### start — 허브 시작
|
|
54
|
-
|
|
55
|
-
```bash
|
|
56
|
-
Bash("node hub/server.mjs", run_in_background=true)
|
|
57
|
-
```
|
|
58
|
-
|
|
59
|
-
- Streamable HTTP MCP 서버를 `http://127.0.0.1:27888/mcp` 에서 시작
|
|
60
|
-
- SQLite WAL DB: `~/.claude/cache/tfx-hub/state.db`
|
|
61
|
-
- PID 파일: `~/.claude/cache/tfx-hub/hub.pid`
|
|
62
|
-
- 환경변수: `TFX_HUB_PORT` (포트), `TFX_HUB_DB` (DB 경로)
|
|
63
|
-
|
|
64
|
-
### stop — 허브 중지
|
|
65
|
-
|
|
66
|
-
```bash
|
|
67
|
-
# PID 파일에서 프로세스 ID 읽어서 종료
|
|
68
|
-
Bash("node -e \"
|
|
69
|
-
const fs = require('fs');
|
|
70
|
-
const path = require('path');
|
|
71
|
-
const pidFile = path.join(require('os').homedir(), '.claude/cache/tfx-hub/hub.pid');
|
|
72
|
-
if (fs.existsSync(pidFile)) {
|
|
73
|
-
const info = JSON.parse(fs.readFileSync(pidFile, 'utf8'));
|
|
74
|
-
process.kill(info.pid, 'SIGTERM');
|
|
75
|
-
console.log('tfx-hub 종료 (PID ' + info.pid + ')');
|
|
76
|
-
} else {
|
|
77
|
-
console.log('tfx-hub 미실행');
|
|
78
|
-
}
|
|
79
|
-
\"")
|
|
80
|
-
```
|
|
81
|
-
|
|
82
|
-
### status — 상태 확인
|
|
83
|
-
|
|
84
|
-
```bash
|
|
85
|
-
# HTTP 상태 엔드포인트 조회
|
|
86
|
-
Bash("curl -s http://127.0.0.1:27888/status 2>/dev/null || echo '{\"error\":\"hub 미실행\"}'")
|
|
87
|
-
```
|
|
88
|
-
|
|
89
|
-
## 각 CLI 등록 방법
|
|
90
|
-
|
|
91
|
-
허브 시작 후 각 CLI에 MCP 서버로 등록:
|
|
92
|
-
|
|
93
|
-
```bash
|
|
94
|
-
# Codex (수동 opt-in 예시)
|
|
95
|
-
# triflux는 config.json을 자동 관리하며, standalone Codex 노이즈 방지를 위해
|
|
96
|
-
# 사전 등록은 disabled로 두고 `tfx hub start` 이후에만 enabled로 전환한다.
|
|
97
|
-
codex mcp add tfx-hub --url http://127.0.0.1:27888/mcp
|
|
98
|
-
|
|
99
|
-
# Gemini (settings.json)
|
|
100
|
-
# mcpServers.tfx-hub.url = "http://127.0.0.1:27888/mcp"
|
|
101
|
-
|
|
102
|
-
# Claude
|
|
103
|
-
claude mcp add --transport http tfx-hub http://127.0.0.1:27888/mcp
|
|
104
|
-
```
|
|
105
|
-
|
|
106
|
-
## MCP 도구 (20개)
|
|
107
|
-
|
|
108
|
-
### Core — 기본 통신
|
|
109
|
-
|
|
110
|
-
| 도구 | 설명 |
|
|
111
|
-
|------|------|
|
|
112
|
-
| `register` | 에이전트 등록 + lease 발급 |
|
|
113
|
-
| `status` | 허브/에이전트/큐/트레이스 상태 조회 |
|
|
114
|
-
| `publish` | 이벤트/응답 메시지 발행 (topic fanout 지원) |
|
|
115
|
-
| `ask` | 다른 에이전트에게 질문 (request/reply, await_response_ms 폴링 지원) |
|
|
116
|
-
| `handoff` | 작업 인계 (acceptance_criteria 지정 가능) |
|
|
117
|
-
| `poll_messages` | 수신함에서 메시지 폴링 **(Deprecated — Named Pipe 사용)** |
|
|
118
|
-
|
|
119
|
-
### Assign — 비차단 작업 할당
|
|
120
|
-
|
|
121
|
-
| 도구 | 설명 |
|
|
122
|
-
|------|------|
|
|
123
|
-
| `assign_async` | AWS CAO 스타일 비차단 job 생성 + 워커 실시간 전달 |
|
|
124
|
-
| `assign_result` | job 진행/완료 결과 보고 |
|
|
125
|
-
| `assign_status` | job 단건 상태 또는 목록 조회 |
|
|
126
|
-
|
|
127
|
-
### Team — Claude Native Teams 프록시
|
|
128
|
-
|
|
129
|
-
| 도구 | 설명 |
|
|
130
|
-
|------|------|
|
|
131
|
-
| `team_info` | Teams 메타/멤버/경로 정보 조회 |
|
|
132
|
-
| `team_task_list` | task 목록 조회 (owner/status 필터) |
|
|
133
|
-
| `team_task_update` | task claim/update |
|
|
134
|
-
| `team_send_message` | Teams inbox에 메시지 append |
|
|
135
|
-
|
|
136
|
-
### Pipeline — 파이프라인 관리
|
|
137
|
-
|
|
138
|
-
| 도구 | 설명 |
|
|
139
|
-
|------|------|
|
|
140
|
-
| `pipeline_init` | 새 파이프라인 초기화 |
|
|
141
|
-
| `pipeline_state` | 파이프라인 상태 조회 |
|
|
142
|
-
| `pipeline_advance` | 다음 단계로 전이 (전이 규칙 + fix loop 바운딩) |
|
|
143
|
-
| `pipeline_advance_gated` | HITL 승인 게이트 포함 전이 |
|
|
144
|
-
| `pipeline_list` | 활성 파이프라인 목록 조회 |
|
|
145
|
-
|
|
146
|
-
### HITL — Human-in-the-Loop
|
|
147
|
-
|
|
148
|
-
| 도구 | 설명 |
|
|
149
|
-
|------|------|
|
|
150
|
-
| `request_human_input` | 사용자 입력 요청 (CAPTCHA/승인/자격증명/선택/텍스트) |
|
|
151
|
-
| `submit_human_input` | 사용자 입력 응답 (accept/decline/cancel) |
|
|
152
|
-
|
|
153
|
-
## 브릿지 REST 엔드포인트 (4개)
|
|
154
|
-
|
|
155
|
-
| 엔드포인트 | 설명 |
|
|
156
|
-
|-----------|------|
|
|
157
|
-
| `POST /bridge/register` | 에이전트 등록 (프로세스 수명 기반 lease) |
|
|
158
|
-
| `POST /bridge/result` | 결과 발행 (topic fanout) |
|
|
159
|
-
| `POST /bridge/context` | 선행 컨텍스트 폴링 (auto_ack) |
|
|
160
|
-
| `POST /bridge/deregister` | 에이전트 offline 마킹 |
|
|
161
|
-
|
|
162
|
-
## 프로젝트 구조
|
|
163
|
-
|
|
164
|
-
```
|
|
165
|
-
hub/
|
|
166
|
-
├── server.mjs # MCP 서버 + REST 브릿지 엔드포인트
|
|
167
|
-
├── store.mjs # SQLite WAL 상태 저장소
|
|
168
|
-
├── router.mjs # Actor mailbox 라우터 + QoS
|
|
169
|
-
├── tools.mjs # MCP 도구 20개 정의
|
|
170
|
-
├── hitl.mjs # Human-in-the-Loop 매니저
|
|
171
|
-
├── bridge.mjs # tfx-route.sh ↔ hub 브릿지 CLI
|
|
172
|
-
├── schema.sql # DB 스키마
|
|
173
|
-
├── paths.mjs # 경로 상수 (PID 파일, DB 경로 등)
|
|
174
|
-
├── pipe.mjs # Named Pipe 서버 (push 구독 채널)
|
|
175
|
-
├── assign-callbacks.mjs # assign job 콜백 처리
|
|
176
|
-
├── intent.mjs # 인텐트 파싱
|
|
177
|
-
├── reflexion.mjs # reflexion 루프
|
|
178
|
-
├── research.mjs # 리서치 프록시
|
|
179
|
-
├── token-mode.mjs # 토큰 모드 관리
|
|
180
|
-
├── pipeline/ # 파이프라인 엔진
|
|
181
|
-
│ ├── index.mjs # createPipeline() 팩토리
|
|
182
|
-
│ ├── state.mjs # 파이프라인 상태 CRUD
|
|
183
|
-
│ ├── transitions.mjs # 전이 규칙
|
|
184
|
-
│ └── gates/ # HITL 게이트 (selfcheck, confidence)
|
|
185
|
-
├── delegator/ # 작업 위임 레이어
|
|
186
|
-
│ ├── index.mjs
|
|
187
|
-
│ ├── service.mjs
|
|
188
|
-
│ ├── contracts.mjs
|
|
189
|
-
│ └── tool-definitions.mjs
|
|
190
|
-
├── team/ # Claude Native Teams 통합
|
|
191
|
-
│ ├── nativeProxy.mjs # Teams MCP 프록시
|
|
192
|
-
│ ├── orchestrator.mjs # 팀 오케스트레이터
|
|
193
|
-
│ ├── session.mjs # 세션 관리
|
|
194
|
-
│ ├── dashboard.mjs # TUI 대시보드
|
|
195
|
-
│ ├── tui.mjs # TUI 렌더러
|
|
196
|
-
│ └── cli/ # tfx team CLI 커맨드
|
|
197
|
-
├── workers/ # CLI 워커 어댑터
|
|
198
|
-
│ ├── factory.mjs
|
|
199
|
-
│ ├── claude-worker.mjs
|
|
200
|
-
│ ├── codex-mcp.mjs
|
|
201
|
-
│ ├── gemini-worker.mjs
|
|
202
|
-
│ └── delegator-mcp.mjs
|
|
203
|
-
├── middleware/ # 요청 미들웨어
|
|
204
|
-
│ └── request-logger.mjs
|
|
205
|
-
├── quality/ # 품질 검사
|
|
206
|
-
│ └── deslop.mjs
|
|
207
|
-
└── public/ # 정적 자산 (대시보드 HTML, 트레이 아이콘)
|
|
208
|
-
```
|
|
209
|
-
|
|
210
|
-
## 상태
|
|
211
|
-
|
|
212
|
-
**dev 전용** — 로컬 테스트 목적. 프로덕션 배포 전 안정화 필요.
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "tfx-hub",
|
|
3
|
-
"description": "tfx-hub MCP 메시지 버스 관리. CLI 에이전트 간 실시간 통신 허브를 시작/중지/상태확인하고, hub 도메인의 자유형 작업도 처리합니다. Use when: hub, 허브, 메시지 버스, message bus, 브릿지, bridge, MCP 서버 관리, 에이전트 통신",
|
|
4
|
-
"triggers": [
|
|
5
|
-
"tfx-hub"
|
|
6
|
-
],
|
|
7
|
-
"argument_hint": "<start|stop|status|자유형 작업 설명>"
|
|
8
|
-
}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "tfx-index",
|
|
3
|
-
"description": "프로젝트 구조를 빠르게 파악하거나 토큰을 절약할 때 사용한다. '인덱싱', '프로젝트 구조', '인덱스 만들어', '코드베이스 맵', '프로젝트 개요' 같은 요청에 사용. 새 프로젝트 온보딩, 세션 시작 시 컨텍스트 효율화에 적극 활용.",
|
|
4
|
-
"triggers": [
|
|
5
|
-
"인덱싱",
|
|
6
|
-
"프로젝트 인덱스",
|
|
7
|
-
"인덱스",
|
|
8
|
-
"tfx-index"
|
|
9
|
-
],
|
|
10
|
-
"argument_hint": "[--update] [경로]"
|
|
11
|
-
}
|
|
@@ -1,284 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: tfx-interview
|
|
3
|
-
description: "요구사항이 모호하거나 구현 전 명확화가 필요할 때 사용한다. 'interview', '인터뷰', '요구사항 정리', '뭘 만들어야 하는지 모르겠어', '명확하게 해줘' 같은 요청에 반드시 사용. 구현 시작 전 스펙을 확정하고 싶을 때 적극 활용."
|
|
4
|
-
triggers:
|
|
5
|
-
- interview
|
|
6
|
-
- 인터뷰
|
|
7
|
-
- 요구사항 탐색
|
|
8
|
-
- tfx-interview
|
|
9
|
-
- 모호성 분석
|
|
10
|
-
argument-hint: "<구현할 주제 또는 요구사항>"
|
|
11
|
-
---
|
|
12
|
-
|
|
13
|
-
# tfx-interview — Quantified Socratic Requirements Exploration
|
|
14
|
-
|
|
15
|
-
> **ARGUMENTS 처리**: 이 스킬이 `ARGUMENTS: <값>`과 함께 호출되면, 해당 값을 사용자 입력으로 취급하여
|
|
16
|
-
> 워크플로우의 첫 단계 입력으로 사용한다. ARGUMENTS가 비어있거나 없으면 기존 절차대로 사용자에게 입력을 요청한다.
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
> OMC deep-interview + ouroboros 오마주. 모호성을 숫자로 측정하고 20% 미만까지 질문한다.
|
|
20
|
-
> "측정할 수 없으면 개선할 수 없다."
|
|
21
|
-
>
|
|
22
|
-
> **Gemini 위임**: 분석·점수 계산·산출물 초안은 Gemini CLI에 위임하여 Claude 토큰을 절약한다.
|
|
23
|
-
> 위임 패턴: `Bash("bash scripts/tfx-route.sh gemini exec '{prompt}'")`
|
|
24
|
-
|
|
25
|
-
## 위임 패턴
|
|
26
|
-
|
|
27
|
-
Claude와 Gemini의 역할을 분리하여 토큰을 최적화한다.
|
|
28
|
-
|
|
29
|
-
| 담당 | 작업 |
|
|
30
|
-
|------|------|
|
|
31
|
-
| **Claude** | AskUserQuestion (사용자 상호작용), 최종 파일 저장 |
|
|
32
|
-
| **Gemini** | 모호성 점수 계산, 질문 생성, 응답 분석, 산출물 초안 |
|
|
33
|
-
|
|
34
|
-
```bash
|
|
35
|
-
# 위임 호출 형태
|
|
36
|
-
Bash("bash scripts/tfx-route.sh gemini exec '{prompt}'")
|
|
37
|
-
```
|
|
38
|
-
|
|
39
|
-
Gemini 실패 시 Fallback: Claude Opus가 분석을 직접 처리한다.
|
|
40
|
-
|
|
41
|
-
## 용도
|
|
42
|
-
|
|
43
|
-
- 구현 전 요구사항 명확화
|
|
44
|
-
- 모호한 요청을 정량적으로 분석하여 실행 가능한 수준으로 구체화
|
|
45
|
-
- 빠진 제약 조건, 성공 기준, 경계 조건을 체계적으로 발견
|
|
46
|
-
- 과잉 구현/과소 구현 방지
|
|
47
|
-
|
|
48
|
-
## 핵심: 모호성 점수 (Ambiguity Score)
|
|
49
|
-
|
|
50
|
-
요구사항의 모호성을 수학적으로 측정한다:
|
|
51
|
-
|
|
52
|
-
```
|
|
53
|
-
ambiguity = 1 - (goal × 0.40 + constraints × 0.30 + criteria × 0.30)
|
|
54
|
-
|
|
55
|
-
각 요소 (0.0 ~ 1.0):
|
|
56
|
-
goal — 목표 명확도. "무엇을 달성하려는가?"가 명확한가?
|
|
57
|
-
constraints — 제약 조건 명확도. 범위, 기술 스택, 시간, 호환성 등
|
|
58
|
-
criteria — 성공 기준 명확도. "어떻게 되면 완료인가?"
|
|
59
|
-
|
|
60
|
-
예시:
|
|
61
|
-
입력: "인증 기능 추가해"
|
|
62
|
-
goal = 0.5 (인증이 무슨 인증? OAuth? JWT? 세션?)
|
|
63
|
-
constraints = 0.2 (기술 스택? 기존 시스템 연동?)
|
|
64
|
-
criteria = 0.1 (테스트? 성능? 보안 수준?)
|
|
65
|
-
ambiguity = 1 - (0.5×0.40 + 0.2×0.30 + 0.1×0.30) = 1 - 0.29 = 0.71 (71%)
|
|
66
|
-
|
|
67
|
-
목표: ambiguity < 0.20 (20% 미만)이 될 때까지 질문 반복.
|
|
68
|
-
```
|
|
69
|
-
|
|
70
|
-
## 워크플로우
|
|
71
|
-
|
|
72
|
-
### Step 1: 초기 모호성 평가
|
|
73
|
-
|
|
74
|
-
사용자 입력을 Gemini에 전달하여 초기 ambiguity score를 계산한다:
|
|
75
|
-
|
|
76
|
-
```bash
|
|
77
|
-
# Claude → Gemini 위임
|
|
78
|
-
Bash("bash scripts/tfx-route.sh gemini exec 'Analyze the following requirement and calculate ambiguity score. Return JSON: {goal, constraints, criteria, ambiguity, suggested_questions}: {user_input}'")
|
|
79
|
-
```
|
|
80
|
-
|
|
81
|
-
Gemini가 반환한 JSON에서 점수를 읽어 사용자에게 표시한다:
|
|
82
|
-
|
|
83
|
-
```
|
|
84
|
-
출력 예시:
|
|
85
|
-
"📊 현재 모호성: 71%
|
|
86
|
-
- 목표: 50% 명확 (어떤 인증 방식?)
|
|
87
|
-
- 제약: 20% 명확 (기술 스택 미정)
|
|
88
|
-
- 기준: 10% 명확 (완료 조건 없음)
|
|
89
|
-
→ Stage 1: Clarify부터 시작합니다."
|
|
90
|
-
```
|
|
91
|
-
|
|
92
|
-
### Step 2: 5단계 인터뷰 (모호성 < 20%까지)
|
|
93
|
-
|
|
94
|
-
각 단계에서 Claude가 AskUserQuestion으로 질문하고, 사용자 응답을 Gemini에 전달하여 분석 및 다음 질문을 생성한다.
|
|
95
|
-
|
|
96
|
-
흐름: `Claude(질문) → 사용자(응답) → Gemini(분석+재계산) → Claude(다음 질문 제시)`
|
|
97
|
-
|
|
98
|
-
#### Stage 1: Clarify (명확화) — goal 개선
|
|
99
|
-
|
|
100
|
-
```
|
|
101
|
-
질문 방향:
|
|
102
|
-
- "정확히 무엇을 달성하려는가?"
|
|
103
|
-
- "이 작업의 범위는 어디까지인가?"
|
|
104
|
-
- "완료 후 어떤 상태가 되어야 하는가?"
|
|
105
|
-
```
|
|
106
|
-
|
|
107
|
-
```bash
|
|
108
|
-
# 응답 수집 후 Gemini에 분석 위임
|
|
109
|
-
Bash("bash scripts/tfx-route.sh gemini exec 'Stage 1 response analysis. Previous context: {context}. User answer: {answer}. Calculate updated ambiguity score and generate next stage questions. Return JSON.'")
|
|
110
|
-
```
|
|
111
|
-
|
|
112
|
-
```
|
|
113
|
-
응답 후: Gemini JSON에서 goal 점수 읽기 → ambiguity 재계산 결과 사용자에게 표시
|
|
114
|
-
```
|
|
115
|
-
|
|
116
|
-
#### Stage 2: Decompose (분해) — constraints 개선
|
|
117
|
-
|
|
118
|
-
```
|
|
119
|
-
질문 방향:
|
|
120
|
-
- "이것을 어떤 하위 문제로 나눌 수 있는가?"
|
|
121
|
-
- "기술적 제약 조건은? (스택, 호환성, 성능)"
|
|
122
|
-
- "의존하는 외부 시스템이나 API는?"
|
|
123
|
-
```
|
|
124
|
-
|
|
125
|
-
```bash
|
|
126
|
-
# 응답 수집 후 Gemini에 분석 위임
|
|
127
|
-
Bash("bash scripts/tfx-route.sh gemini exec 'Stage 2 response analysis. Previous context: {context}. User answer: {answer}. Calculate updated ambiguity score and generate next stage questions. Return JSON.'")
|
|
128
|
-
```
|
|
129
|
-
|
|
130
|
-
```
|
|
131
|
-
응답 후: Gemini JSON에서 constraints 점수 읽기 → ambiguity 재계산 결과 사용자에게 표시
|
|
132
|
-
```
|
|
133
|
-
|
|
134
|
-
#### Stage 3: Challenge (반론) — 숨은 제약 발견
|
|
135
|
-
|
|
136
|
-
```
|
|
137
|
-
질문 방향:
|
|
138
|
-
- "이 접근의 약점은?"
|
|
139
|
-
- "실패할 수 있는 시나리오는?"
|
|
140
|
-
- "6개월 후 유지보수 관점에서 문제될 부분은?"
|
|
141
|
-
```
|
|
142
|
-
|
|
143
|
-
```bash
|
|
144
|
-
# 응답 수집 후 Gemini에 분석 위임
|
|
145
|
-
Bash("bash scripts/tfx-route.sh gemini exec 'Stage 3 response analysis. Previous context: {context}. User answer: {answer}. Calculate updated ambiguity score and generate next stage questions. Return JSON.'")
|
|
146
|
-
```
|
|
147
|
-
|
|
148
|
-
```
|
|
149
|
-
응답 후: Gemini JSON에서 constraints + criteria 점수 읽기 → ambiguity 재계산 결과 사용자에게 표시
|
|
150
|
-
```
|
|
151
|
-
|
|
152
|
-
#### Stage 4: Alternatives (대안) — criteria 정밀화
|
|
153
|
-
|
|
154
|
-
```
|
|
155
|
-
질문 방향:
|
|
156
|
-
- "다른 방법은 없는가?"
|
|
157
|
-
- "시간이 절반이라면 어떤 방식을 택하겠는가?"
|
|
158
|
-
- "각 대안의 trade-off는?"
|
|
159
|
-
```
|
|
160
|
-
|
|
161
|
-
```bash
|
|
162
|
-
# 응답 수집 후 Gemini에 분석 위임
|
|
163
|
-
Bash("bash scripts/tfx-route.sh gemini exec 'Stage 4 response analysis. Previous context: {context}. User answer: {answer}. Calculate updated ambiguity score and generate next stage questions. Return JSON.'")
|
|
164
|
-
```
|
|
165
|
-
|
|
166
|
-
```
|
|
167
|
-
응답 후: Gemini JSON에서 criteria 점수 읽기 → ambiguity 재계산 결과 사용자에게 표시
|
|
168
|
-
```
|
|
169
|
-
|
|
170
|
-
#### Stage 5: Synthesize (종합) — 최종 확인
|
|
171
|
-
|
|
172
|
-
```
|
|
173
|
-
질문 방향:
|
|
174
|
-
- "지금까지의 논의를 종합하면 최적 경로는?"
|
|
175
|
-
- "첫 번째로 실행할 단계는?"
|
|
176
|
-
- "이 결정에 대한 확신도는? (1-10)"
|
|
177
|
-
```
|
|
178
|
-
|
|
179
|
-
```bash
|
|
180
|
-
# 응답 수집 후 Gemini에 최종 분석 위임
|
|
181
|
-
Bash("bash scripts/tfx-route.sh gemini exec 'Stage 5 response analysis. Previous context: {context}. User answer: {answer}. Calculate updated ambiguity score and generate next stage questions. Return JSON.'")
|
|
182
|
-
```
|
|
183
|
-
|
|
184
|
-
```
|
|
185
|
-
응답 후: Gemini JSON에서 전체 점수 읽기 → 최종 ambiguity score 사용자에게 표시
|
|
186
|
-
```
|
|
187
|
-
|
|
188
|
-
### Step 3: 조기 종료 판단
|
|
189
|
-
|
|
190
|
-
매 질문 후 ambiguity를 재계산하고, < 20%이면 남은 단계를 건너뛰고 종합 단계로 이동한다:
|
|
191
|
-
|
|
192
|
-
```
|
|
193
|
-
질문 후 재계산:
|
|
194
|
-
if ambiguity < 0.20:
|
|
195
|
-
→ "📊 모호성 {score}% — 충분히 명확합니다. 종합 단계로 이동합니다."
|
|
196
|
-
→ Step 4로 직행
|
|
197
|
-
elif ambiguity < 0.40:
|
|
198
|
-
→ "📊 모호성 {score}% — 거의 명확합니다. 핵심 질문 1-2개만 더."
|
|
199
|
-
else:
|
|
200
|
-
→ 다음 단계 진행
|
|
201
|
-
```
|
|
202
|
-
|
|
203
|
-
### Step 4: 산출물 생성
|
|
204
|
-
|
|
205
|
-
Gemini가 인터뷰 전체 컨텍스트를 바탕으로 구조화된 문서 초안을 생성하고, Claude가 파일로 저장한다:
|
|
206
|
-
|
|
207
|
-
```bash
|
|
208
|
-
# Gemini에 산출물 초안 생성 위임
|
|
209
|
-
Bash("bash scripts/tfx-route.sh gemini exec 'Generate a structured interview output document based on the following interview context: {full_context}. Return the complete markdown document.'")
|
|
210
|
-
```
|
|
211
|
-
|
|
212
|
-
Claude는 Gemini가 반환한 마크다운을 Write 도구로 저장한다.
|
|
213
|
-
|
|
214
|
-
저장 위치: `.omc/plans/interview-{timestamp}.md`
|
|
215
|
-
|
|
216
|
-
산출물 형식:
|
|
217
|
-
|
|
218
|
-
```markdown
|
|
219
|
-
# Interview: {topic}
|
|
220
|
-
Date: {date} | Final Ambiguity: {score}%
|
|
221
|
-
|
|
222
|
-
## Ambiguity Breakdown
|
|
223
|
-
| 요소 | 초기 | 최종 | 개선 |
|
|
224
|
-
|------|------|------|------|
|
|
225
|
-
| Goal | {init}% | {final}% | +{delta}% |
|
|
226
|
-
| Constraints | {init}% | {final}% | +{delta}% |
|
|
227
|
-
| Criteria | {init}% | {final}% | +{delta}% |
|
|
228
|
-
|
|
229
|
-
## Goal
|
|
230
|
-
{1문장 목표}
|
|
231
|
-
|
|
232
|
-
## Constraints
|
|
233
|
-
{제약 조건 목록}
|
|
234
|
-
|
|
235
|
-
## Success Criteria
|
|
236
|
-
{성공 기준 목록}
|
|
237
|
-
|
|
238
|
-
## Risks & Challenges
|
|
239
|
-
{식별된 위험}
|
|
240
|
-
|
|
241
|
-
## Alternatives Considered
|
|
242
|
-
| 대안 | 장점 | 단점 | 채택 |
|
|
243
|
-
|------|------|------|------|
|
|
244
|
-
| ... | ... | ... | Y/N |
|
|
245
|
-
|
|
246
|
-
## Decision
|
|
247
|
-
{최종 결정 + 근거}
|
|
248
|
-
|
|
249
|
-
## Action Plan
|
|
250
|
-
1. {단계 1} → 검증: {check}
|
|
251
|
-
2. {단계 2} → 검증: {check}
|
|
252
|
-
3. ...
|
|
253
|
-
```
|
|
254
|
-
|
|
255
|
-
## 동작 규칙
|
|
256
|
-
|
|
257
|
-
1. 각 단계에서 반드시 사용자 응답을 수집한 후 다음으로 이동한다.
|
|
258
|
-
2. 매 응답 후 ambiguity score를 재계산하여 진행률을 표시한다.
|
|
259
|
-
3. ambiguity < 20%이면 남은 단계를 건너뛰어도 된다.
|
|
260
|
-
4. 5단계를 모두 거쳐도 ambiguity >= 20%이면 추가 질문 라운드를 진행한다 (최대 2회).
|
|
261
|
-
5. 인터뷰 시작 시 코드베이스를 탐색하여 관련 컨텍스트를 확보한다.
|
|
262
|
-
6. 이전 단계 답변을 다음 단계 질문에 반영한다 (대화형 연결).
|
|
263
|
-
|
|
264
|
-
## 토큰 예산
|
|
265
|
-
|
|
266
|
-
| 단계 | Claude | Gemini |
|
|
267
|
-
|------|--------|--------|
|
|
268
|
-
| 초기 평가 (모호성 분석) | ~0.2K | ~1K |
|
|
269
|
-
| 5단계 인터뷰 (질문 제시) | ~1K | ~10K |
|
|
270
|
-
| 산출물 초안 생성 | — | ~2K |
|
|
271
|
-
| 최종 파일 저장 | ~0.5K | — |
|
|
272
|
-
| 코드베이스 탐색 | ~0.3K | — |
|
|
273
|
-
| **총합** | **~2K** | **~13K** |
|
|
274
|
-
|
|
275
|
-
Fallback: Gemini 호출 실패 시 Claude Opus가 분석을 직접 처리한다 (총합 ~15K).
|
|
276
|
-
|
|
277
|
-
## 사용 예
|
|
278
|
-
|
|
279
|
-
```
|
|
280
|
-
/tfx-interview "인증 시스템 리팩터링"
|
|
281
|
-
/tfx-interview "실시간 알림 기능 추가"
|
|
282
|
-
/요구사항 분석 "데이터 파이프라인 설계"
|
|
283
|
-
/인터뷰 "레거시 API를 REST에서 GraphQL로 마이그레이션"
|
|
284
|
-
```
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "tfx-interview",
|
|
3
|
-
"description": "요구사항이 모호하거나 구현 전 명확화가 필요할 때 사용한다. 'interview', '인터뷰', '요구사항 정리', '뭘 만들어야 하는지 모르겠어', '명확하게 해줘' 같은 요청에 반드시 사용. 구현 시작 전 스펙을 확정하고 싶을 때 적극 활용.",
|
|
4
|
-
"triggers": [
|
|
5
|
-
"interview",
|
|
6
|
-
"인터뷰",
|
|
7
|
-
"요구사항 탐색",
|
|
8
|
-
"tfx-interview",
|
|
9
|
-
"모호성 분석"
|
|
10
|
-
],
|
|
11
|
-
"argument_hint": "<구현할 주제 또는 요구사항>"
|
|
12
|
-
}
|