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,281 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: tfx-deep-plan
|
|
3
|
-
description: "중요한 기능의 구현 계획을 3자 합의로 수립할 때 사용한다. 'deep plan', '합의 계획', 'ralplan', '철저한 계획', '제대로 설계하고 시작하자' 같은 요청에 사용. 마이크로서비스 도입, 대규모 리팩터링 등 리스크가 큰 작업의 사전 계획에 적극 활용."
|
|
4
|
-
triggers:
|
|
5
|
-
- deep plan
|
|
6
|
-
- 합의 계획
|
|
7
|
-
- consensus plan
|
|
8
|
-
- deep-plan
|
|
9
|
-
- 철저한 계획
|
|
10
|
-
- ralplan
|
|
11
|
-
argument-hint: "<구현할 기능 설명>"
|
|
12
|
-
---
|
|
13
|
-
|
|
14
|
-
# tfx-deep-plan — Tri-Model Consensus Planning
|
|
15
|
-
|
|
16
|
-
> **ARGUMENTS 처리**: 이 스킬이 `ARGUMENTS: <값>`과 함께 호출되면, 해당 값을 사용자 입력으로 취급하여
|
|
17
|
-
> 워크플로우의 첫 단계 입력으로 사용한다. ARGUMENTS가 비어있거나 없으면 기존 절차대로 사용자에게 입력을 요청한다.
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
> **Light 버전**: tfx-plan. 기본값. 깊이 수정자 없으면 Light 선택.
|
|
21
|
-
3개 모델(Opus 4.6 · GPT 5.4 · Gemini)이 독립 설계 후 교차검증하여 합의된 계획을 도출한다.
|
|
22
|
-
|
|
23
|
-
---
|
|
24
|
-
|
|
25
|
-
## 전제조건 프로브 및 Tier Degradation
|
|
26
|
-
|
|
27
|
-
> **진입 즉시 실행** — 10초 내 가시적 출력을 보장한다. 빈 stdout + exit 0 **금지**.
|
|
28
|
-
|
|
29
|
-
### 환경 프로브
|
|
30
|
-
|
|
31
|
-
워크플로우 진입 전, 아래 프로브를 실행하여 가용 환경을 감지한다:
|
|
32
|
-
|
|
33
|
-
```bash
|
|
34
|
-
psmux --version 2>/dev/null && \
|
|
35
|
-
curl -sf http://127.0.0.1:27888/status >/dev/null && \
|
|
36
|
-
codex --version 2>/dev/null && \
|
|
37
|
-
gemini --version 2>/dev/null
|
|
38
|
-
```
|
|
39
|
-
|
|
40
|
-
### Tier 판정
|
|
41
|
-
|
|
42
|
-
| Tier | 조건 | 실행 방식 |
|
|
43
|
-
|------|------|----------|
|
|
44
|
-
| **Tier 1** | psmux + Hub + Codex + Gemini 전부 정상 | 기존 headless multi (변경 없음) |
|
|
45
|
-
| **Tier 2** | 일부 CLI만 가용 (Codex 또는 Gemini 중 하나) | 가용 CLI + Claude Agent 조합 |
|
|
46
|
-
| **Tier 3** | headless 불가 또는 `claude -p` one-shot | Claude Agent only |
|
|
47
|
-
|
|
48
|
-
```
|
|
49
|
-
IF claude -p (one-shot 모드):
|
|
50
|
-
→ Tier 3 즉시 fallback
|
|
51
|
-
|
|
52
|
-
IF psmux 없음 OR Hub 미응답:
|
|
53
|
-
→ Tier 3
|
|
54
|
-
|
|
55
|
-
IF Codex 없음 AND Gemini 없음:
|
|
56
|
-
→ Tier 3
|
|
57
|
-
|
|
58
|
-
IF Codex 없음 OR Gemini 없음:
|
|
59
|
-
→ Tier 2
|
|
60
|
-
|
|
61
|
-
ELSE:
|
|
62
|
-
→ Tier 1
|
|
63
|
-
```
|
|
64
|
-
|
|
65
|
-
### Tier 3 진입 시 필수 출력
|
|
66
|
-
|
|
67
|
-
```
|
|
68
|
-
⚠ [Tier 3] headless multi 환경 미충족 — single-model 모드로 실행합니다 (consensus 미적용)
|
|
69
|
-
누락: {missing_components}
|
|
70
|
-
권장: psmux, Hub, Codex CLI, Gemini CLI 설치 후 재실행
|
|
71
|
-
```
|
|
72
|
-
|
|
73
|
-
Tier 3에서는 모든 headless dispatch(`tfx multi ...`)를 **Claude Agent**(subagent)로 대체한다.
|
|
74
|
-
Tier 2에서는 누락된 CLI만 Claude Agent로 대체한다.
|
|
75
|
-
|
|
76
|
-
## HARD RULES
|
|
77
|
-
|
|
78
|
-
> headless-guard가 이 규칙 위반을 **자동 차단**한다. 우회 불가.
|
|
79
|
-
|
|
80
|
-
1. **`codex exec` / `gemini -p` 직접 호출 절대 금지**
|
|
81
|
-
2. Codex·Gemini 작업은 반드시 아래 형식으로만 실행:
|
|
82
|
-
`Bash("tfx multi --teammate-mode headless --auto-attach --dashboard --assign 'cli:프롬프트:역할' --timeout 600")`
|
|
83
|
-
3. Claude 작업은 `Agent(run_in_background=true)`
|
|
84
|
-
4. Step 2, Step 4에서 **Bash + Agent를 같은 메시지에서 동시 호출**하여 3개 모델 병렬 실행
|
|
85
|
-
|
|
86
|
-
## MODEL ROLES
|
|
87
|
-
|
|
88
|
-
| Model | Profile | 역할 | 강점 |
|
|
89
|
-
|-------|---------|------|------|
|
|
90
|
-
| **Claude Opus 4.6** | Agent(model="opus") | Planner | 전략적 아키텍처 비전, 리스크 통합 판단 |
|
|
91
|
-
| **Codex GPT 5.4** | `--assign 'codex:...:architect'` (gpt54_xhigh) | Architect | 구현 설계, API 인터페이스, 파일 구조 |
|
|
92
|
-
| **Gemini** | `--assign 'gemini:...:critic'` | Critic | 엣지케이스, 보안 위협, 테스트 전략 |
|
|
93
|
-
|
|
94
|
-
---
|
|
95
|
-
|
|
96
|
-
## EXECUTION — 아래 Step을 순서대로 실행하라
|
|
97
|
-
|
|
98
|
-
사용자 입력을 `TASK`로 참조한다.
|
|
99
|
-
|
|
100
|
-
### Step 1: 코드베이스 정찰
|
|
101
|
-
|
|
102
|
-
TASK와 관련된 코드베이스를 파악한다. 결과를 `RECON`으로 기억한다.
|
|
103
|
-
|
|
104
|
-
도구 호출:
|
|
105
|
-
```
|
|
106
|
-
Agent(
|
|
107
|
-
subagent_type="Explore",
|
|
108
|
-
model="haiku",
|
|
109
|
-
description="codebase recon",
|
|
110
|
-
prompt="다음 기능과 관련된 코드베이스를 탐색하라: [TASK 삽입]
|
|
111
|
-
보고할 것: (1) 관련 파일/디렉토리 (2) 기존 아키텍처 패턴 (3) 주요 의존성/인터페이스. bullet point로 간결하게."
|
|
112
|
-
)
|
|
113
|
-
```
|
|
114
|
-
|
|
115
|
-
### Step 2: Round 1 — 독립 설계 (Anti-Herding)
|
|
116
|
-
|
|
117
|
-
3개 모델이 서로의 결과를 **보지 않고** 동시에 독립 분석한다.
|
|
118
|
-
**아래 2개 도구를 반드시 같은 응답에서 동시에 호출하라.**
|
|
119
|
-
|
|
120
|
-
#### 2a. Claude Opus — Planner (Agent, background)
|
|
121
|
-
|
|
122
|
-
```
|
|
123
|
-
Agent(
|
|
124
|
-
subagent_type="oh-my-claudecode:architect",
|
|
125
|
-
model="opus",
|
|
126
|
-
run_in_background=true,
|
|
127
|
-
name="planner-r1",
|
|
128
|
-
description="deep-plan R1 Planner",
|
|
129
|
-
prompt="소프트웨어 아키텍트로서 구현 계획을 수립하라.
|
|
130
|
-
|
|
131
|
-
기능: [TASK 삽입]
|
|
132
|
-
코드베이스: [RECON 삽입]
|
|
133
|
-
|
|
134
|
-
아래 JSON으로 응답하라:
|
|
135
|
-
{
|
|
136
|
-
\"vision\": \"설계 방향 1-2문장\",
|
|
137
|
-
\"tasks\": [{\"id\": \"T1\", \"title\": \"...\", \"desc\": \"...\", \"deps\": [], \"complexity\": \"low|med|high\"}],
|
|
138
|
-
\"order\": [\"T1\", \"T2\"],
|
|
139
|
-
\"risks\": [{\"id\": \"R1\", \"desc\": \"...\", \"severity\": \"critical|high|med|low\", \"mitigation\": \"...\"}],
|
|
140
|
-
\"files\": [{\"path\": \"...\", \"action\": \"create|modify|delete\", \"reason\": \"...\"}],
|
|
141
|
-
\"confidence\": 0.85,
|
|
142
|
-
\"reasoning\": \"핵심 결정 이유\"
|
|
143
|
-
}"
|
|
144
|
-
)
|
|
145
|
-
```
|
|
146
|
-
|
|
147
|
-
#### 2b. Codex + Gemini — Architect + Critic (headless)
|
|
148
|
-
|
|
149
|
-
`TASK`와 `RECON`을 프롬프트에 삽입하여 아래 Bash를 호출한다.
|
|
150
|
-
프롬프트 안의 작은따옴표는 `'\''`로 이스케이프한다.
|
|
151
|
-
|
|
152
|
-
```
|
|
153
|
-
Bash("tfx multi --teammate-mode headless --auto-attach --dashboard \
|
|
154
|
-
--assign 'codex:시니어 엔지니어로서 기술적 설계를 작성하라. 기능: [TASK]. 코드베이스: [RECON]. JSON 응답: {\"architecture\": \"패턴+이유\", \"components\": [{\"name\": \"\", \"responsibility\": \"\", \"interfaces\": []}], \"data_models\": [{\"name\": \"\", \"fields\": [], \"relations\": []}], \"api\": [{\"endpoint\": \"\", \"method\": \"\", \"desc\": \"\"}], \"files\": [{\"path\": \"\", \"purpose\": \"\"}], \"impl_notes\": [], \"confidence\": 0.85}:architect' \
|
|
155
|
-
--assign 'gemini:QA 보안 전문가로서 구현 리스크를 분석하라. 기능: [TASK]. 코드베이스: [RECON]. JSON 응답: {\"edge_cases\": [{\"id\": \"E1\", \"scenario\": \"\", \"impact\": \"\", \"fix\": \"\"}], \"security\": [{\"id\": \"S1\", \"threat\": \"\", \"severity\": \"critical|high|med|low\", \"mitigation\": \"\"}], \"performance\": [{\"id\": \"P1\", \"bottleneck\": \"\", \"optimization\": \"\"}], \"test_strategy\": {\"unit\": [], \"integration\": [], \"edge_case\": []}, \"missing_reqs\": [], \"risk_level\": \"low|med|high|critical\", \"confidence\": 0.85}:critic' \
|
|
156
|
-
--timeout 600")
|
|
157
|
-
```
|
|
158
|
-
|
|
159
|
-
### Step 3: 결과 수집
|
|
160
|
-
|
|
161
|
-
- `RESULT_PLANNER`: planner-r1 Agent 결과 (SendMessage로 수신 또는 완료 알림 대기)
|
|
162
|
-
- `RESULT_ARCHITECT` + `RESULT_CRITIC`: headless stdout JSON에서 각 워커 출력 추출
|
|
163
|
-
|
|
164
|
-
**실패 워커 처리**: 워커가 실패하면 Claude Agent로 해당 역할을 대체 실행한다.
|
|
165
|
-
|
|
166
|
-
### Step 4: Round 2 — 교차 검토
|
|
167
|
-
|
|
168
|
-
각 모델에게 다른 두 모델의 Round 1 결과를 제시하고 수용/수정/반박을 요청한다.
|
|
169
|
-
**아래 2개 도구를 반드시 같은 응답에서 동시에 호출하라.**
|
|
170
|
-
|
|
171
|
-
#### 4a. Claude Opus — 계획 수정 (Agent, background)
|
|
172
|
-
|
|
173
|
-
```
|
|
174
|
-
Agent(
|
|
175
|
-
subagent_type="oh-my-claudecode:critic",
|
|
176
|
-
model="opus",
|
|
177
|
-
run_in_background=true,
|
|
178
|
-
name="planner-r2",
|
|
179
|
-
description="deep-plan R2 cross-review",
|
|
180
|
-
prompt="Round 1 결과를 교차 검토하고 계획을 수정하라.
|
|
181
|
-
|
|
182
|
-
네 계획: [RESULT_PLANNER 삽입]
|
|
183
|
-
Architect(Codex) 설계: [RESULT_ARCHITECT 삽입]
|
|
184
|
-
Critic(Gemini) 분석: [RESULT_CRITIC 삽입]
|
|
185
|
-
|
|
186
|
-
각 항목에 대해:
|
|
187
|
-
- ACCEPT: 수용 (이유)
|
|
188
|
-
- MODIFY: 부분 수정 (원안→수정안, 이유)
|
|
189
|
-
- REJECT: 반박 (근거)
|
|
190
|
-
|
|
191
|
-
JSON: {\"revisions\": [{\"source\": \"codex|gemini\", \"item\": \"...\", \"action\": \"accept|modify|reject\", \"reason\": \"...\"}], \"updated_plan\": {같은 스키마}}"
|
|
192
|
-
)
|
|
193
|
-
```
|
|
194
|
-
|
|
195
|
-
#### 4b. Codex + Gemini — 교차 검토 (headless)
|
|
196
|
-
|
|
197
|
-
3개 Round 1 결과를 각 프롬프트에 삽입한다. 결과가 길면 핵심만 요약하여 삽입.
|
|
198
|
-
|
|
199
|
-
```
|
|
200
|
-
Bash("tfx multi --teammate-mode headless --auto-attach --dashboard \
|
|
201
|
-
--assign 'codex:교차 검토하라. Planner 계획: [RESULT_PLANNER 요약]. 네 설계: [RESULT_ARCHITECT 요약]. Critic 분석: [RESULT_CRITIC 요약]. 각 항목 ACCEPT/MODIFY/REJECT + 이유. JSON: {\"revisions\": [...], \"updated_design\": {같은 스키마}}:architect' \
|
|
202
|
-
--assign 'gemini:교차 검토하라. Planner 계획: [RESULT_PLANNER 요약]. Architect 설계: [RESULT_ARCHITECT 요약]. 네 분석: [RESULT_CRITIC 요약]. 우려 해소 여부 판단. JSON: {\"resolved\": [...], \"still_concerned\": [...], \"new_concerns\": [...], \"updated_test_strategy\": {...}}:critic' \
|
|
203
|
-
--timeout 600")
|
|
204
|
-
```
|
|
205
|
-
|
|
206
|
-
### Step 5: 합의 점수 산출
|
|
207
|
-
|
|
208
|
-
Round 2 결과를 모아 Claude가 직접 계산한다 (Agent 불필요):
|
|
209
|
-
|
|
210
|
-
```
|
|
211
|
-
모든 고유 항목에 대해:
|
|
212
|
-
동의 수 = 해당 항목에 동의한 모델 수 (ACCEPT 또는 유사 제안)
|
|
213
|
-
|
|
214
|
-
>= 2 동의 → CONSENSUS (합의)
|
|
215
|
-
== 1 동의 → DISPUTED (미합의)
|
|
216
|
-
|
|
217
|
-
consensus_score = CONSENSUS / 전체_고유_항목 * 100
|
|
218
|
-
|
|
219
|
-
분기:
|
|
220
|
-
>= 80% → Step 6 확정
|
|
221
|
-
60-79% → Round 3 진행 (미합의 항목만 재토론, 같은 headless 패턴)
|
|
222
|
-
< 60% → AskUserQuestion으로 핵심 불일치 제시, 사용자 판단 요청
|
|
223
|
-
```
|
|
224
|
-
|
|
225
|
-
### Step 6: 합의된 계획 출력
|
|
226
|
-
|
|
227
|
-
아래 형식으로 최종 결과를 출력한다:
|
|
228
|
-
|
|
229
|
-
```markdown
|
|
230
|
-
## 합의된 구현 계획: [TASK]
|
|
231
|
-
|
|
232
|
-
**Consensus**: {score}% | **Rounds**: {count} | **Models**: Opus 4.6 + GPT 5.4 + Gemini
|
|
233
|
-
|
|
234
|
-
### 설계 방향
|
|
235
|
-
{3자 합의된 아키텍처 결정}
|
|
236
|
-
|
|
237
|
-
### 태스크
|
|
238
|
-
| # | 태스크 | 복잡도 | 합의 | 비고 |
|
|
239
|
-
|---|--------|--------|------|------|
|
|
240
|
-
| T1 | {title} | {complexity} | P:✓ A:✓ C:✓ | {notes} |
|
|
241
|
-
|
|
242
|
-
### 파일 변경
|
|
243
|
-
| 파일 | 작업 | 이유 |
|
|
244
|
-
|------|------|------|
|
|
245
|
-
| {path} | {action} | {reason} |
|
|
246
|
-
|
|
247
|
-
### 리스크 & 완화
|
|
248
|
-
| 리스크 | 심각도 | 완화 | 합의 |
|
|
249
|
-
|--------|--------|------|------|
|
|
250
|
-
| {risk} | {severity} | {mitigation} | {n}/3 |
|
|
251
|
-
|
|
252
|
-
### 테스트 전략 (Critic 주도)
|
|
253
|
-
{Gemini가 제안하고 나머지가 합의한 테스트 계획}
|
|
254
|
-
|
|
255
|
-
### 미합의 사항
|
|
256
|
-
| 항목 | Planner(Opus) | Architect(GPT5.4) | Critic(Gemini) |
|
|
257
|
-
|------|---------------|---------------------|----------------|
|
|
258
|
-
| {item} | {position} | {position} | {position} |
|
|
259
|
-
```
|
|
260
|
-
|
|
261
|
-
---
|
|
262
|
-
|
|
263
|
-
## ERROR RECOVERY
|
|
264
|
-
|
|
265
|
-
| 상황 | 대응 |
|
|
266
|
-
|------|------|
|
|
267
|
-
| headless timeout (600s) | Claude Agent로 해당 역할 대체 실행 |
|
|
268
|
-
| Codex 워커 실패 | `Agent(subagent_type="oh-my-claudecode:architect", model="opus")` 대체 |
|
|
269
|
-
| Gemini 워커 실패 | `Agent(subagent_type="oh-my-claudecode:critic", model="sonnet")` 대체 |
|
|
270
|
-
| consensus < 60% | AskUserQuestion → 사용자 방향 결정 후 해당 방향으로 확정 |
|
|
271
|
-
| 프롬프트 quoting 오류 | 작은따옴표 → `'\''` 이스케이프. 줄바꿈 → 공백 치환 |
|
|
272
|
-
|
|
273
|
-
## TOKEN BUDGET
|
|
274
|
-
|
|
275
|
-
| Phase | Tokens |
|
|
276
|
-
|-------|--------|
|
|
277
|
-
| Step 1: Recon (Haiku) | ~2K |
|
|
278
|
-
| Step 2: Round 1 (3 parallel) | ~15K |
|
|
279
|
-
| Step 4: Round 2 (3 parallel) | ~12K |
|
|
280
|
-
| Step 5-6: Consensus + Output | ~3K |
|
|
281
|
-
| **Total** | **~25-32K** |
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "tfx-deep-plan",
|
|
3
|
-
"description": "중요한 기능의 구현 계획을 3자 합의로 수립할 때 사용한다. 'deep plan', '합의 계획', 'ralplan', '철저한 계획', '제대로 설계하고 시작하자' 같은 요청에 사용. 마이크로서비스 도입, 대규모 리팩터링 등 리스크가 큰 작업의 사전 계획에 적극 활용.",
|
|
4
|
-
"triggers": [
|
|
5
|
-
"deep plan",
|
|
6
|
-
"합의 계획",
|
|
7
|
-
"consensus plan",
|
|
8
|
-
"deep-plan",
|
|
9
|
-
"철저한 계획",
|
|
10
|
-
"ralplan"
|
|
11
|
-
],
|
|
12
|
-
"argument_hint": "<구현할 기능 설명>"
|
|
13
|
-
}
|
|
@@ -1,164 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: tfx-deep-qa
|
|
3
|
-
description: "보안, 성능, 접근성까지 포함한 철저한 검증이 필요할 때 사용한다. 'deep qa', '심층 검증', '철저히 테스트', '보안까지 확인', '전방위 검증' 같은 요청에 사용. 프로덕션 배포 전 다각도 품질 검증에 적극 활용."
|
|
4
|
-
triggers:
|
|
5
|
-
- deep qa
|
|
6
|
-
- 심층 검증
|
|
7
|
-
- thorough test
|
|
8
|
-
- deep-qa
|
|
9
|
-
argument-hint: "[테스트 대상 경로 또는 기능 설명]"
|
|
10
|
-
---
|
|
11
|
-
|
|
12
|
-
# tfx-deep-qa — Tri-CLI Deep Verification
|
|
13
|
-
|
|
14
|
-
> **ARGUMENTS 처리**: 이 스킬이 `ARGUMENTS: <값>`과 함께 호출되면, 해당 값을 사용자 입력으로 취급하여
|
|
15
|
-
> 워크플로우의 첫 단계 입력으로 사용한다. ARGUMENTS가 비어있거나 없으면 기존 절차대로 사용자에게 입력을 요청한다.
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
> **Light 버전**: tfx-qa. 기본값. 깊이 수정자 없으면 Light 선택.
|
|
19
|
-
> 3-CLI 독립 검증 → 교차검증 → 2+ 합의 항목만 보고. false-positive 87% 감소.
|
|
20
|
-
|
|
21
|
-
## 핵심 원리
|
|
22
|
-
|
|
23
|
-
**Anti-Herding**: 3개 CLI가 서로의 결과를 보지 않고 독립 검증.
|
|
24
|
-
**Consensus Only**: 2개 이상 CLI가 동일 이슈를 지적한 항목만 최종 보고.
|
|
25
|
-
|
|
26
|
-
## 용도
|
|
27
|
-
|
|
28
|
-
- 릴리스 전 전면 검증
|
|
29
|
-
- 보안/성능/접근성을 동시에 다각도 점검
|
|
30
|
-
- 단일 CLI 검증으로는 놓치는 교차 영역 결함 탐지
|
|
31
|
-
- false-positive 최소화가 필요한 QA 게이트
|
|
32
|
-
|
|
33
|
-
## HARD RULES
|
|
34
|
-
|
|
35
|
-
> headless-guard가 이 규칙 위반을 **자동 차단**한다. 우회 불가.
|
|
36
|
-
|
|
37
|
-
1. **`codex exec` / `gemini -p` 직접 호출 절대 금지**
|
|
38
|
-
2. Codex·Gemini → `Bash("tfx multi --teammate-mode headless --auto-attach --dashboard --assign 'cli:프롬프트:역할' --timeout 600")` **만** 사용
|
|
39
|
-
3. Claude → `Agent(run_in_background=true)`
|
|
40
|
-
4. Bash + Agent를 같은 메시지에서 동시 호출하여 병렬 실행
|
|
41
|
-
|
|
42
|
-
## MODEL ROLES
|
|
43
|
-
|
|
44
|
-
| CLI | 역할 | 관점 |
|
|
45
|
-
|-----|------|------|
|
|
46
|
-
| Claude Opus | 기능검증 | 기능 정확성, 엣지케이스, 누락 테스트 |
|
|
47
|
-
| Codex | 보안+성능 | OWASP Top 10, O(n²) 복잡도, 메모리 누수, 입력 검증 |
|
|
48
|
-
| Gemini | UX+접근성 | API 응답 일관성, 에러 메시지, WCAG 2.1 AA |
|
|
49
|
-
|
|
50
|
-
## EXECUTION STEPS
|
|
51
|
-
|
|
52
|
-
### Step 1: 검증 대상 수집
|
|
53
|
-
|
|
54
|
-
대상을 다음 우선순위로 결정한다:
|
|
55
|
-
1. 사용자 지정 파일/경로 → 해당 범위
|
|
56
|
-
2. `git diff` (staged + unstaged) → 변경된 파일
|
|
57
|
-
3. 지정 없음 → 프로젝트 전체 테스트
|
|
58
|
-
|
|
59
|
-
수집 항목: 변경 파일 목록 + diff, 관련 테스트 파일, 영향 받는 모듈/의존성
|
|
60
|
-
|
|
61
|
-
### Step 2: 3-CLI 독립 검증 — 아래 2개 도구를 반드시 같은 응답에서 동시에 호출하라.
|
|
62
|
-
|
|
63
|
-
**Claude Agent (기능검증):**
|
|
64
|
-
```
|
|
65
|
-
Agent(
|
|
66
|
-
subagent_type="oh-my-claudecode:verifier",
|
|
67
|
-
model="opus",
|
|
68
|
-
run_in_background=true,
|
|
69
|
-
name="qa-functional",
|
|
70
|
-
description="기능 정확성 및 엣지케이스 검증",
|
|
71
|
-
prompt="QA 엔지니어로서 다음 코드의 기능 정확성을 검증하라. 테스트를 실행하고 결과를 보고하라. 누락된 엣지 케이스를 식별하라 (null, 빈 입력, 경계값, 동시성). 누락된 테스트 케이스를 제안하라. JSON으로 응답하라: { test_result: {pass, fail, skip}, findings: [{id, file, line, category, severity, description, test_scenario}], edge_case_tests: [...], overall_verdict: 'pass'|'fail' }"
|
|
72
|
-
)
|
|
73
|
-
```
|
|
74
|
-
|
|
75
|
-
**Codex + Gemini headless dispatch (보안+성능+UX):**
|
|
76
|
-
```
|
|
77
|
-
Bash("tfx multi --teammate-mode headless --auto-attach --dashboard --assign 'codex:보안/성능 전문가로서 이 코드를 검증하라. OWASP Top 10을 체크하라. O(n²) 이상 복잡도를 탐지하라. 메모리 누수 패턴을 찾아라. 입력 검증 누락을 확인하라. JSON으로 응답하라: { findings: [{id, file, line, category, severity, description, fix}], overall_verdict: \"pass\"|\"fail\" }:verifier' --assign 'gemini:UX/접근성 전문가로서 이 코드를 검증하라. API 응답 형식 일관성을 확인하라. 에러 메시지의 사용자 친화성을 평가하라. WCAG 2.1 AA 준수를 검토하라 (UI 관련 시). 문서와 실제 동작 일치 여부를 확인하라. JSON으로 응답하라: { findings: [{id, file, line, category, severity, description, suggestion}], overall_verdict: \"pass\"|\"fail\" }:verifier' --timeout 600")
|
|
78
|
-
```
|
|
79
|
-
|
|
80
|
-
### Step 3: Consensus Scoring
|
|
81
|
-
|
|
82
|
-
모든 findings를 수집하여 유사도를 비교한다:
|
|
83
|
-
- 동일 파일+라인±5 + 유사 카테고리 → 동일 이슈로 간주
|
|
84
|
-
- 3/3 합의 → CONFIRMED (severity 유지)
|
|
85
|
-
- 2/3 합의 → LIKELY (severity 유지, 반대 의견 첨부)
|
|
86
|
-
- 1/3만 지적 → UNVERIFIED (참고용, 별도 섹션)
|
|
87
|
-
|
|
88
|
-
`consensus_score = consensus_items / total_unique_items × 100`
|
|
89
|
-
|
|
90
|
-
### Step 4: 실패 수정 — 합의된 Critical/High 항목에 대해서만 실행
|
|
91
|
-
|
|
92
|
-
```
|
|
93
|
-
Bash("tfx multi --teammate-mode headless --auto-attach --dashboard --assign 'codex:다음 합의된 이슈들을 수정하라. 각 이슈에 대해 최소한의 변경으로 수정하고 수정 후 테스트를 재실행하여 통과 여부를 확인하라. 이슈 목록: {consensus_findings}:fixer' --timeout 300")
|
|
94
|
-
```
|
|
95
|
-
|
|
96
|
-
### Step 5: 종합 보고서 작성
|
|
97
|
-
|
|
98
|
-
아래 형식으로 보고서를 출력한다:
|
|
99
|
-
|
|
100
|
-
```markdown
|
|
101
|
-
## Deep QA Report: {target}
|
|
102
|
-
**Consensus Score**: {score}% | **Verifiers**: Claude/Codex/Gemini
|
|
103
|
-
**Verdict**: PASS / CONDITIONAL PASS / FAIL
|
|
104
|
-
|
|
105
|
-
### Critical (3/3 합의)
|
|
106
|
-
- [C1] `{file}:{line}` — {description}
|
|
107
|
-
- Claude: {detail} | Codex: {detail} | Gemini: {detail}
|
|
108
|
-
- **Fix**: {applied_fix}
|
|
109
|
-
|
|
110
|
-
### High (2/3 합의)
|
|
111
|
-
- [H1] `{file}:{line}` — {description}
|
|
112
|
-
- 합의: {agreers} | 반대: {dissenter}: "{reason}"
|
|
113
|
-
|
|
114
|
-
### Verified Medium
|
|
115
|
-
- ...
|
|
116
|
-
|
|
117
|
-
### 엣지 케이스 테스트 제안
|
|
118
|
-
| 시나리오 | 입력 | 기대 결과 | 제안자 |
|
|
119
|
-
|---------|------|----------|--------|
|
|
120
|
-
| {scenario} | {input} | {expected} | Claude |
|
|
121
|
-
|
|
122
|
-
### Unverified (1/3만 지적, 참고용)
|
|
123
|
-
- [U1] `{file}:{line}` — {description} (by {single_cli})
|
|
124
|
-
|
|
125
|
-
### 수정 요약
|
|
126
|
-
- 수정된 파일: {list}
|
|
127
|
-
- 테스트 재실행 결과: {pass}/{total}
|
|
128
|
-
|
|
129
|
-
### 검증 통계
|
|
130
|
-
| CLI | 영역 | 발견 수 | 합의 기여율 |
|
|
131
|
-
|-----|------|---------|------------|
|
|
132
|
-
| Claude | 기능/엣지케이스 | {n} | {%} |
|
|
133
|
-
| Codex | 보안/성능 | {n} | {%} |
|
|
134
|
-
| Gemini | UX/접근성 | {n} | {%} |
|
|
135
|
-
```
|
|
136
|
-
|
|
137
|
-
## ERROR RECOVERY
|
|
138
|
-
|
|
139
|
-
| 오류 | 조치 |
|
|
140
|
-
|------|------|
|
|
141
|
-
| headless dispatch 타임아웃 | `--timeout` 값을 900으로 올려 재시도 |
|
|
142
|
-
| Agent 결과 미수신 | Step 2를 Agent만 단독 재실행 |
|
|
143
|
-
| consensus 0% | 대상 범위가 너무 넓음 — 파일 단위로 분할 후 재실행 |
|
|
144
|
-
| tfx multi 명령 실패 | `tfx status`로 teammate 연결 상태 확인 |
|
|
145
|
-
|
|
146
|
-
## 토큰 예산
|
|
147
|
-
|
|
148
|
-
| 단계 | 토큰 |
|
|
149
|
-
|------|------|
|
|
150
|
-
| Step 1 (수집) | ~1K |
|
|
151
|
-
| Step 2 (3x 독립 검증) | ~15K |
|
|
152
|
-
| Step 3 (Consensus) | ~3K |
|
|
153
|
-
| Step 4 (수정) | ~3K |
|
|
154
|
-
| Step 5 (보고) | ~3K |
|
|
155
|
-
| **총합** | **~25K** |
|
|
156
|
-
|
|
157
|
-
## 사용 예
|
|
158
|
-
|
|
159
|
-
```
|
|
160
|
-
/tfx-deep-qa
|
|
161
|
-
/tfx-deep-qa "src/auth/ 디렉토리 전체"
|
|
162
|
-
/tfx-deep-qa "최근 커밋 변경사항 심층 검증"
|
|
163
|
-
/tfx-deep-qa "결제 모듈 배포 전 최종 검증"
|
|
164
|
-
```
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "tfx-deep-qa",
|
|
3
|
-
"description": "보안, 성능, 접근성까지 포함한 철저한 검증이 필요할 때 사용한다. 'deep qa', '심층 검증', '철저히 테스트', '보안까지 확인', '전방위 검증' 같은 요청에 사용. 프로덕션 배포 전 다각도 품질 검증에 적극 활용.",
|
|
4
|
-
"triggers": [
|
|
5
|
-
"deep qa",
|
|
6
|
-
"심층 검증",
|
|
7
|
-
"thorough test",
|
|
8
|
-
"deep-qa"
|
|
9
|
-
],
|
|
10
|
-
"argument_hint": "[테스트 대상 경로 또는 기능 설명]"
|
|
11
|
-
}
|
|
@@ -1,216 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: tfx-deep-research
|
|
3
|
-
description: "기술 비교, 아키텍처 조사, 경쟁사 분석 등 깊이 있는 리서치가 필요할 때 사용한다. '심층 조사', '자세히 알아봐', 'deep research', '전면 리서치', '비교 분석 보고서', '종합 리서치' 같은 요청에 반드시 사용. 단순 검색이 아닌 멀티소스 교차검증이 필요한 리서치에 적극 활용."
|
|
4
|
-
triggers:
|
|
5
|
-
- deep research
|
|
6
|
-
- 딥 리서치
|
|
7
|
-
- 심층 리서치
|
|
8
|
-
- deep-research
|
|
9
|
-
- thorough research
|
|
10
|
-
- 깊이 조사
|
|
11
|
-
- 전면 리서치
|
|
12
|
-
argument-hint: "[--depth quick|standard|deep] <리서치 주제>"
|
|
13
|
-
---
|
|
14
|
-
|
|
15
|
-
# tfx-deep-research — Multi-Source Deep Research with Tri-CLI Consensus
|
|
16
|
-
|
|
17
|
-
> **ARGUMENTS 처리**: 이 스킬이 `ARGUMENTS: <값>`과 함께 호출되면, 해당 값을 사용자 입력으로 취급하여
|
|
18
|
-
> 워크플로우의 첫 단계 입력으로 사용한다. ARGUMENTS가 비어있거나 없으면 기존 절차대로 사용자에게 입력을 요청한다.
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
> **Light 버전**: tfx-research. 기본값. 깊이 수정자 없으면 Light 선택.
|
|
22
|
-
> 쿼리 분해 → 3-CLI 독립 병렬 검색 → 교차검증 → 합의 기반 종합 보고서.
|
|
23
|
-
> STORM(Stanford) perspective-guided + GPT-Researcher recursive tree + Tavily deep research pipeline 영감.
|
|
24
|
-
|
|
25
|
-
## 용도
|
|
26
|
-
|
|
27
|
-
- 기술 선택 전 심층 조사
|
|
28
|
-
- 경쟁사/대안 분석
|
|
29
|
-
- 새 도메인 학습을 위한 종합 리서치
|
|
30
|
-
- 아키텍처 결정 근거 수집
|
|
31
|
-
- 학술/산업 동향 파악
|
|
32
|
-
|
|
33
|
-
## HARD RULES
|
|
34
|
-
|
|
35
|
-
> headless-guard가 이 규칙 위반을 **자동 차단**한다. 우회 불가.
|
|
36
|
-
|
|
37
|
-
1. **`codex exec` / `gemini -p` 직접 호출 절대 금지**
|
|
38
|
-
2. Codex·Gemini → `Bash("tfx multi --teammate-mode headless --auto-attach --dashboard --assign 'cli:프롬프트:역할' --timeout 600")` **만** 사용
|
|
39
|
-
3. Claude → `Agent(run_in_background=true)`
|
|
40
|
-
4. Bash + Agent를 같은 메시지에서 동시 호출하여 병렬 실행
|
|
41
|
-
|
|
42
|
-
## MODEL ROLES
|
|
43
|
-
|
|
44
|
-
| CLI | MCP | 관점 |
|
|
45
|
-
|-----|-----|------|
|
|
46
|
-
| Claude | Exa (neural semantic) | 학술/기술 깊이 (논문, 공식 문서, 벤치마크) |
|
|
47
|
-
| Codex | Brave Search | 실용/구현/산업 사례 중심 |
|
|
48
|
-
| Gemini | Tavily | 비용/운영/DX(개발자 경험) 중심 |
|
|
49
|
-
|
|
50
|
-
## Depth 모드
|
|
51
|
-
|
|
52
|
-
| 모드 | 서브쿼리 | 소스/쿼리 | 라운드 | 토큰 | 시간 |
|
|
53
|
-
|------|---------|----------|--------|------|------|
|
|
54
|
-
| quick | 3개 | 2 | 1 | ~20K | 2-3분 |
|
|
55
|
-
| standard | 5개 | 3 | 1-2 | ~40K | 5-8분 |
|
|
56
|
-
| deep | 8-10개 | 5 | 2-3 | ~80K | 10-15분 |
|
|
57
|
-
|
|
58
|
-
기본값: standard
|
|
59
|
-
|
|
60
|
-
## EXECUTION STEPS
|
|
61
|
-
|
|
62
|
-
### Pre-Phase: Depth 선택
|
|
63
|
-
|
|
64
|
-
`--depth` 플래그가 지정되지 않은 경우, AskUserQuestion으로 depth를 선택받아라:
|
|
65
|
-
|
|
66
|
-
```
|
|
67
|
-
AskUserQuestion:
|
|
68
|
-
"리서치 깊이를 선택하세요:"
|
|
69
|
-
1. quick (3 서브쿼리, ~20K 토큰, 2-3분)
|
|
70
|
-
2. standard (5 서브쿼리, ~40K 토큰, 5-8분) [기본]
|
|
71
|
-
3. deep (8-10 서브쿼리, ~80K 토큰, 10-15분)
|
|
72
|
-
```
|
|
73
|
-
|
|
74
|
-
사용자가 빈 응답을 보내면 기본값 `standard`를 적용하라.
|
|
75
|
-
|
|
76
|
-
### Step 1: 주제 분석 및 쿼리 분해
|
|
77
|
-
|
|
78
|
-
Claude Opus로 주제를 분석하고 서브쿼리로 분해하라:
|
|
79
|
-
|
|
80
|
-
- depth에 따라 서브쿼리 수를 결정한다 (quick=3, standard=5, deep=8-10)
|
|
81
|
-
- 각 서브쿼리에 관점(학술/기술, 실용/산업, 비용/운영)을 매핑한다
|
|
82
|
-
- sub_queries 목록과 perspectives 목록을 내부적으로 보유한다
|
|
83
|
-
|
|
84
|
-
### Step 2: 3-CLI 독립 병렬 검색 (Anti-Herding)
|
|
85
|
-
|
|
86
|
-
**아래 2개 도구를 반드시 같은 응답에서 동시에 호출하라.**
|
|
87
|
-
|
|
88
|
-
Claude Agent를 백그라운드로 실행하라:
|
|
89
|
-
|
|
90
|
-
```
|
|
91
|
-
Agent(
|
|
92
|
-
subagent_type="claude",
|
|
93
|
-
model="opus",
|
|
94
|
-
run_in_background=true,
|
|
95
|
-
prompt="다음 서브쿼리를 Exa web_search_exa로 검색하라.
|
|
96
|
-
서브쿼리 목록: {sub_queries}
|
|
97
|
-
관점: 학술/기술 깊이 (논문, 공식 문서, 벤치마크)
|
|
98
|
-
각 쿼리에서 category='research paper' 우선, highlights=true, numResults=5로 검색하라.
|
|
99
|
-
각 결과의 제목, URL, 핵심 내용을 추출하여 구조화하여 반환하라."
|
|
100
|
-
)
|
|
101
|
-
```
|
|
102
|
-
|
|
103
|
-
Codex와 Gemini를 headless dispatch로 동시에 실행하라:
|
|
104
|
-
|
|
105
|
-
```
|
|
106
|
-
Bash("tfx multi --teammate-mode headless --auto-attach --dashboard \
|
|
107
|
-
--assign 'codex:다음 서브쿼리를 Brave Search로 검색하고 결과를 종합하라. 서브쿼리 목록: {sub_queries}. 관점: 실용/구현/산업 사례 중심. brave_web_search와 brave_news_search를 활용하고, freshness=pw로 최신 결과를 우선하라. 각 쿼리당 상위 5개 결과의 제목, URL, 핵심 내용을 구조화하여 반환하라.:researcher' \
|
|
108
|
-
--assign 'gemini:다음 서브쿼리를 Tavily로 검색하라. 서브쿼리 목록: {sub_queries}. 관점: 비용/운영/DX(개발자 경험) 중심. tavily_search를 search_depth=advanced, max_results=5, include_raw_content=false로 호출하라. 각 결과를 구조화하여 제목, URL, 핵심 내용을 반환하라.:researcher' \
|
|
109
|
-
--timeout 600")
|
|
110
|
-
```
|
|
111
|
-
|
|
112
|
-
### Step 3: 결과 수집 및 교차검증
|
|
113
|
-
|
|
114
|
-
3개 CLI 결과가 모두 수집되면 다음 기준으로 교차검증하라:
|
|
115
|
-
|
|
116
|
-
1. 사실 일치: 3개 소스가 동일 사실을 보고하는가
|
|
117
|
-
2. 추천 일치: 동일 기술/접근법을 추천하는가
|
|
118
|
-
3. 수치 일치: 벤치마크, 가격, 성능 수치가 일치하는가
|
|
119
|
-
4. 리스크 일치: 동일 위험을 식별하는가
|
|
120
|
-
|
|
121
|
-
소스 신뢰도를 다음 가중치로 평가하라:
|
|
122
|
-
- 공식 문서/벤치마크 → weight 1.0
|
|
123
|
-
- 학술 논문 → weight 0.9
|
|
124
|
-
- 신뢰 블로그 (engineering blog) → weight 0.7
|
|
125
|
-
- 일반 블로그/포럼 → weight 0.5
|
|
126
|
-
- 날짜 가중: 6개월 이내 ×1.0, 1년 이내 ×0.8, 2년 이내 ×0.5
|
|
127
|
-
|
|
128
|
-
### Step 4: 합의 종합 보고서 생성
|
|
129
|
-
|
|
130
|
-
Claude Opus가 교차검증된 결과를 종합하여 다음 구조로 최종 보고서를 작성하라:
|
|
131
|
-
|
|
132
|
-
```markdown
|
|
133
|
-
# Deep Research Report: {topic}
|
|
134
|
-
**Date**: {date} | **Depth**: {depth} | **Consensus Score**: {score}%
|
|
135
|
-
**Sources**: {total_sources}개 | **Sub-queries**: {count}개
|
|
136
|
-
|
|
137
|
-
## Executive Summary
|
|
138
|
-
{3-5줄 핵심 요약}
|
|
139
|
-
|
|
140
|
-
## 핵심 발견사항 (Consensus Items)
|
|
141
|
-
### 1. {finding_1} — 합의도: {3/3 또는 2/3}
|
|
142
|
-
{상세 내용 + 근거 + 출처}
|
|
143
|
-
|
|
144
|
-
### 2. {finding_2}
|
|
145
|
-
...
|
|
146
|
-
|
|
147
|
-
## 비교 분석
|
|
148
|
-
| 항목 | 옵션A | 옵션B | 옵션C |
|
|
149
|
-
|------|-------|-------|-------|
|
|
150
|
-
| 성능 | ... | ... | ... |
|
|
151
|
-
| 비용 | ... | ... | ... |
|
|
152
|
-
| 운영 | ... | ... | ... |
|
|
153
|
-
|
|
154
|
-
## 미합의 사항 (Disputed Items)
|
|
155
|
-
- {항목}: Claude는 X, Codex는 Y, Gemini는 Z — 이유: ...
|
|
156
|
-
|
|
157
|
-
## 추천
|
|
158
|
-
{교차검증된 최종 추천 + 조건부 판단 기준}
|
|
159
|
-
|
|
160
|
-
## 소스 목록
|
|
161
|
-
1. [{title}]({url}) — 신뢰도: {score} — 사용 MCP: {exa|brave|tavily}
|
|
162
|
-
...
|
|
163
|
-
```
|
|
164
|
-
|
|
165
|
-
### Step 5: Recursive Depth (deep 모드 전용)
|
|
166
|
-
|
|
167
|
-
deep 모드에서 Phase 3 교차검증 중 중요 하위 주제가 발견되면 재귀적으로 Step 2-4를 반복하라:
|
|
168
|
-
|
|
169
|
-
- 최대 3개 하위 주제까지 재귀 실행한다
|
|
170
|
-
- 각 재귀 결과를 메인 보고서에 병합한다
|
|
171
|
-
- 재귀 실행도 반드시 Agent + Bash 동시 호출 패턴을 사용한다
|
|
172
|
-
|
|
173
|
-
## ERROR RECOVERY
|
|
174
|
-
|
|
175
|
-
- Codex 또는 Gemini 결과가 없으면: 해당 CLI 없이 2개 소스로 교차검증을 진행하고 보고서에 누락 CLI를 명시하라
|
|
176
|
-
- tfx multi 명령이 실패하면: 오류 메시지를 그대로 출력하고 재시도 1회 후 실패를 사용자에게 보고하라
|
|
177
|
-
- Agent 결과가 없으면: Claude Exa 검색 없이 나머지 2개 소스로 진행하라
|
|
178
|
-
|
|
179
|
-
## TOKEN BUDGET
|
|
180
|
-
|
|
181
|
-
| 단계 | quick | standard | deep |
|
|
182
|
-
|------|-------|----------|------|
|
|
183
|
-
| Step 1 (분해) | 1K | 2K | 3K |
|
|
184
|
-
| Step 2 (3x검색) | 9K | 18K | 30K |
|
|
185
|
-
| Step 3 (교차검증) | 3K | 5K | 8K |
|
|
186
|
-
| Step 4 (보고서) | 5K | 10K | 15K |
|
|
187
|
-
| Step 5 (재귀) | — | — | 24K |
|
|
188
|
-
| **총합** | **~18K** | **~35K** | **~80K** |
|
|
189
|
-
|
|
190
|
-
## MCP 활용 전략 (Exa/Brave/Tavily 리버스엔지니어링 기반)
|
|
191
|
-
|
|
192
|
-
### Exa 최적 활용
|
|
193
|
-
- `type: "auto"` — neural+keyword 하이브리드
|
|
194
|
-
- `category: "research paper"` — 학술 검색 시
|
|
195
|
-
- `highlights: true, text.maxCharacters: 300` — 토큰 효율 핵심
|
|
196
|
-
- `includeDomains` — 신뢰 도메인 필터링
|
|
197
|
-
|
|
198
|
-
### Brave 최적 활용
|
|
199
|
-
- `brave_news_search` — 최신 동향/뉴스
|
|
200
|
-
- `freshness: "pw"` (past week) — 최신성 보장
|
|
201
|
-
- `result_filter: "web"` — 불필요한 결과 방지
|
|
202
|
-
- 독립 인덱스 → Google/Bing과 다른 결과
|
|
203
|
-
|
|
204
|
-
### Tavily 최적 활용
|
|
205
|
-
- `tavily_search` — 빠른 범용 검색
|
|
206
|
-
- `include_raw_content: false` — 토큰 절약
|
|
207
|
-
- `max_results: 5` — 적정 결과 수
|
|
208
|
-
- `search_depth: "advanced"` — standard 모드 이상
|
|
209
|
-
|
|
210
|
-
## 사용 예
|
|
211
|
-
|
|
212
|
-
```
|
|
213
|
-
/tfx-deep-research "2026 실시간 데이터 파이프라인 아키텍처 비교"
|
|
214
|
-
/tfx-deep-research --depth deep "Claude Code vs Cursor vs Windsurf 멀티에이전트 지원 비교"
|
|
215
|
-
/tfx-deep-research --depth quick "pnpm vs bun vs npm 2026 벤치마크"
|
|
216
|
-
```
|