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,285 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: tfx-fullcycle
|
|
3
|
-
description: "여러 파일/모듈에 걸친 복잡한 기능을 처음부터 끝까지 자율 개발할 때 사용한다. 설계→계획→구현→QA→검증 전체 파이프라인이 필요한 작업, '처음부터 끝까지', '전체', '완전히', '풀 오토', 'full auto', '전체 파이프라인으로' 같은 수식어가 있을 때 사용. 단순 단일 작업은 tfx-autopilot이 더 빠릅니다."
|
|
4
|
-
triggers:
|
|
5
|
-
- deep autopilot
|
|
6
|
-
- 풀 오토
|
|
7
|
-
- 처음부터 끝까지
|
|
8
|
-
- full auto
|
|
9
|
-
argument-hint: "<구현할 기능 전체 설명>"
|
|
10
|
-
---
|
|
11
|
-
|
|
12
|
-
# tfx-fullcycle — Full Development Pipeline with Tri-CLI Consensus
|
|
13
|
-
|
|
14
|
-
> **ARGUMENTS 처리**: 이 스킬이 `ARGUMENTS: <값>`과 함께 호출되면, 해당 값을 사용자 입력으로 취급하여
|
|
15
|
-
> 워크플로우의 첫 단계 입력으로 사용한다. ARGUMENTS가 비어있거나 없으면 기존 절차대로 사용자에게 입력을 요청한다.
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
> 5-Phase 파이프라인: Expansion → Planning → Execution → QA → Validation.
|
|
19
|
-
> OMC autopilot + Superpowers TDD + MetaGPT SOP 영감. 처음부터 끝까지 자율 실행.
|
|
20
|
-
> 실행 전 컨텍스트 grounding, deep-interview 산출물 재사용, phase-state/resume 계약을 포함한다.
|
|
21
|
-
|
|
22
|
-
## PRE-CONTEXT GATE
|
|
23
|
-
|
|
24
|
-
Phase 1 시작 전 아래 intake를 먼저 수행한다.
|
|
25
|
-
|
|
26
|
-
1. task slug를 생성한다.
|
|
27
|
-
2. 최근 관련 컨텍스트/산출물을 탐색한다.
|
|
28
|
-
3. 현재 작업용 스냅샷을 생성한다.
|
|
29
|
-
4. ambiguity가 높으면 `/deep-interview` 또는 기존 인터뷰 산출물 재사용을 우선 고려한다.
|
|
30
|
-
|
|
31
|
-
**필수 스냅샷 필드**
|
|
32
|
-
- task statement
|
|
33
|
-
- desired outcome
|
|
34
|
-
- known facts / evidence
|
|
35
|
-
- constraints
|
|
36
|
-
- unknowns / open questions
|
|
37
|
-
- likely codebase touchpoints
|
|
38
|
-
|
|
39
|
-
**권장 저장 경로**
|
|
40
|
-
- `.tfx/fullcycle/{run-id}/context-snapshot.md`
|
|
41
|
-
|
|
42
|
-
## STATE & ARTIFACT CONTRACT
|
|
43
|
-
|
|
44
|
-
`tfx-fullcycle`은 phase별로 산출물과 상태를 남긴다.
|
|
45
|
-
|
|
46
|
-
**기본 아티팩트 디렉토리**
|
|
47
|
-
- `.tfx/fullcycle/{run-id}/`
|
|
48
|
-
|
|
49
|
-
**최소 산출물**
|
|
50
|
-
- `context-snapshot.md`
|
|
51
|
-
- `expanded-spec.md`
|
|
52
|
-
- `implementation-plan.md`
|
|
53
|
-
- `execution-summary.md`
|
|
54
|
-
- `qa-findings.md`
|
|
55
|
-
- `validation-decision.md`
|
|
56
|
-
- `state.json`
|
|
57
|
-
|
|
58
|
-
**phase-state 필드**
|
|
59
|
-
- current phase
|
|
60
|
-
- started_at
|
|
61
|
-
- last_successful_phase
|
|
62
|
-
- retry_count
|
|
63
|
-
- failure_reason
|
|
64
|
-
|
|
65
|
-
**resume 규칙**
|
|
66
|
-
- 재실행 시 전체를 처음부터 다시 돌리지 않는다.
|
|
67
|
-
- `state.json`을 읽고 마지막 미완료 phase부터 resume한다.
|
|
68
|
-
- QA / Validation 재시도는 해당 phase만 다시 실행한다.
|
|
69
|
-
|
|
70
|
-
## HARD RULES
|
|
71
|
-
|
|
72
|
-
> headless-guard가 이 규칙 위반을 **자동 차단**한다. 우회 불가.
|
|
73
|
-
|
|
74
|
-
1. **`codex exec` / `gemini -p` 직접 호출 절대 금지**
|
|
75
|
-
2. Codex·Gemini 워커 → `Bash("tfx multi --teammate-mode headless --auto-attach --dashboard --assign 'cli:프롬프트:역할' --timeout 600")` **만** 사용
|
|
76
|
-
3. Claude 워커 → `Agent(run_in_background=true)`
|
|
77
|
-
4. Bash + Agent를 같은 메시지에서 동시 호출하여 병렬 실행
|
|
78
|
-
|
|
79
|
-
## MODEL ROLES
|
|
80
|
-
|
|
81
|
-
| Phase | 역할 | 담당 |
|
|
82
|
-
|-------|------|------|
|
|
83
|
-
| Phase 1: Expansion | 아키텍트 — 요구사항 분석, acceptance criteria 도출 | Claude Opus (Agent) |
|
|
84
|
-
| Phase 2: Planning | 플래너 — 태스크 분해, TDD 전략 | Claude Opus (Agent, background) |
|
|
85
|
-
| Phase 2: Planning | 아키텍트 — 기술 설계, 파일 구조, API 인터페이스 | Codex (tfx headless) |
|
|
86
|
-
| Phase 2: Planning | 크리틱 — 리스크 분석, 엣지 케이스, 보안 | Gemini (tfx headless) |
|
|
87
|
-
| Phase 3: Execution | 구현자 — 코드 작성, TDD RED→GREEN→REFACTOR | Codex (tfx headless) |
|
|
88
|
-
| Phase 3: Execution | 문서/UI 작성자 | Gemini (tfx headless) |
|
|
89
|
-
| Phase 4: QA | 기능 검증자 — acceptance criteria 충족 여부 | Claude (Agent, background) |
|
|
90
|
-
| Phase 4: QA | 보안/성능 검증자 — OWASP, 병목, 에러 핸들링 | Codex (tfx headless) |
|
|
91
|
-
| Phase 4: QA | UX/접근성 검증자 — 반응형, DX, 문서화 | Gemini (tfx headless) |
|
|
92
|
-
| Phase 5: Validation | 합의 판정 — Consensus Score 계산 및 완료 결정 | Claude (직접 판단) |
|
|
93
|
-
|
|
94
|
-
## EXECUTION STEPS
|
|
95
|
-
|
|
96
|
-
### Phase 1: Expansion
|
|
97
|
-
|
|
98
|
-
**Claude가 직접 실행한다.** Agent 호출 없이 Claude 자신이 아키텍트 역할을 수행한다.
|
|
99
|
-
|
|
100
|
-
1. `.tfx/plans/interview-*.md` 산출물이 있으면 관련 문서를 먼저 탐색한다.
|
|
101
|
-
2. 인터뷰 산출물이 충분히 명확하면 raw prompt에서 다시 시작하지 말고 해당 문서를 Expansion 입력으로 재사용한다.
|
|
102
|
-
3. 인터뷰 산출물이 없거나 부족하면 사용자 요청에서 구현 범위, 영향 파일, 엣지 케이스, 암묵적 요구사항을 분석한다.
|
|
103
|
-
4. 검증 가능한 acceptance criteria 목록을 도출한다.
|
|
104
|
-
5. 모호한 점이 남아 있으면 AskUserQuestion 또는 `/deep-interview`로 명확화한다.
|
|
105
|
-
6. 출력: `{expanded_requirements}`, `{acceptance_criteria}`
|
|
106
|
-
7. 산출물 저장: `.tfx/fullcycle/{run-id}/expanded-spec.md`
|
|
107
|
-
|
|
108
|
-
### Phase 2: Planning
|
|
109
|
-
|
|
110
|
-
**아래 2개 도구를 반드시 같은 응답에서 동시에 호출하라.**
|
|
111
|
-
|
|
112
|
-
**Step 2-A: Claude Planner (Agent)**
|
|
113
|
-
```
|
|
114
|
-
Agent(
|
|
115
|
-
subagent_type="oh-my-claudecode:planner",
|
|
116
|
-
model="opus",
|
|
117
|
-
run_in_background=true,
|
|
118
|
-
prompt="다음 기능의 구현 계획을 수립하라.
|
|
119
|
-
기능: {expanded_requirements}
|
|
120
|
-
태스크 분해, 실행 순서, 의존성, TDD 전략을 포함하라.
|
|
121
|
-
JSON 형식으로 출력하라: { tasks, order, dependencies, tdd_strategy, risks }"
|
|
122
|
-
)
|
|
123
|
-
```
|
|
124
|
-
|
|
125
|
-
**Step 2-B: Codex Architect + Gemini Critic (Bash — 동시에 위 Agent와 같은 응답에서 호출)**
|
|
126
|
-
```
|
|
127
|
-
Bash("tfx multi --teammate-mode headless --auto-attach --dashboard \
|
|
128
|
-
--assign 'codex:시니어 엔지니어로서 다음 기능의 기술적 설계를 작성하라. 기능: {expanded_requirements}. 파일 구조, API 인터페이스, 데이터 모델을 포함하라. JSON 형식: { design, file_changes, interfaces, test_plan }:architect' \
|
|
129
|
-
--assign 'gemini:QA 전문가로서 다음 기능 구현의 리스크를 분석하라. 기능: {expanded_requirements}. 엣지 케이스, 보안, 성능, 접근성 우려를 포함하라. JSON 형식: { edge_cases, security_risks, performance, accessibility, test_cases }:critic' \
|
|
130
|
-
--timeout 600")
|
|
131
|
-
```
|
|
132
|
-
|
|
133
|
-
**합의 판정:**
|
|
134
|
-
- Consensus Score >= 70 → Phase 3 진행
|
|
135
|
-
- Consensus Score < 70 → 3자 결과를 교차 공유 후 Round 2 재합의
|
|
136
|
-
- Round 2 후에도 < 60 → AskUserQuestion으로 불일치 항목 제시 + 방향 결정 요청
|
|
137
|
-
|
|
138
|
-
**산출물 저장**
|
|
139
|
-
- `.tfx/fullcycle/{run-id}/implementation-plan.md`
|
|
140
|
-
|
|
141
|
-
### Phase 3: Execution
|
|
142
|
-
|
|
143
|
-
태스크를 라우팅 규칙에 따라 병렬 실행한다. 독립 태스크는 같은 응답에서 동시 호출한다.
|
|
144
|
-
|
|
145
|
-
**라우팅 규칙:**
|
|
146
|
-
- 코드 구현/수정/테스트 작성 → Codex (tfx headless)
|
|
147
|
-
- UI/문서 → Gemini (tfx headless)
|
|
148
|
-
|
|
149
|
-
**TDD 실행 순서 (Codex에 전달하는 프롬프트에 명시):**
|
|
150
|
-
1. 테스트 먼저 작성 (RED)
|
|
151
|
-
2. 테스트 실행하여 실패 확인
|
|
152
|
-
3. 구현 코드 작성 (GREEN)
|
|
153
|
-
4. 테스트 통과 확인
|
|
154
|
-
5. 리팩터링 (REFACTOR)
|
|
155
|
-
|
|
156
|
-
**병렬 실행 예시 (독립 태스크 A + B + 문서 동시 실행):**
|
|
157
|
-
|
|
158
|
-
**아래 2개 도구를 반드시 같은 응답에서 동시에 호출하라.**
|
|
159
|
-
|
|
160
|
-
```
|
|
161
|
-
Bash("tfx multi --teammate-mode headless --auto-attach --dashboard \
|
|
162
|
-
--assign 'codex:TDD로 {모듈_A}를 구현하라. 테스트 먼저 작성(RED), 구현(GREEN), 리팩터링(REFACTOR) 순서로 진행하라. 계획: {task_A_spec}:implementer' \
|
|
163
|
-
--assign 'codex:TDD로 {모듈_B}를 구현하라. 테스트 먼저 작성(RED), 구현(GREEN), 리팩터링(REFACTOR) 순서로 진행하라. 계획: {task_B_spec}:implementer' \
|
|
164
|
-
--assign 'gemini:{문서_항목}을 작성하라. 변경된 API 인터페이스: {interfaces}:writer' \
|
|
165
|
-
--timeout 600")
|
|
166
|
-
```
|
|
167
|
-
|
|
168
|
-
각 태스크 완료 시 테스트 통과 여부를 확인하고 다음 태스크로 진행한다.
|
|
169
|
-
|
|
170
|
-
**산출물 저장**
|
|
171
|
-
- 변경 파일 목록과 태스크별 결과를 `.tfx/fullcycle/{run-id}/execution-summary.md`에 기록한다.
|
|
172
|
-
|
|
173
|
-
### Phase 4: QA
|
|
174
|
-
|
|
175
|
-
**아래 2개 도구를 반드시 같은 응답에서 동시에 호출하라.**
|
|
176
|
-
|
|
177
|
-
**Step 4-A: Claude 기능 검증 (Agent)**
|
|
178
|
-
```
|
|
179
|
-
Agent(
|
|
180
|
-
subagent_type="oh-my-claudecode:verifier",
|
|
181
|
-
model="opus",
|
|
182
|
-
run_in_background=true,
|
|
183
|
-
prompt="다음 변경사항이 acceptance criteria를 충족하는지 검증하라.
|
|
184
|
-
criteria: {acceptance_criteria}
|
|
185
|
-
변경 파일: {changed_files}
|
|
186
|
-
각 criterion별 PASS/FAIL과 근거를 제시하라.
|
|
187
|
-
엣지 케이스 테스트 시나리오를 제안하라.
|
|
188
|
-
JSON 형식: { criteria_results, edge_case_findings, overall_pass }"
|
|
189
|
-
)
|
|
190
|
-
```
|
|
191
|
-
|
|
192
|
-
**Step 4-B: Codex 보안/성능 + Gemini UX/접근성 (Bash — 동시에 위 Agent와 같은 응답에서 호출)**
|
|
193
|
-
```
|
|
194
|
-
Bash("tfx multi --teammate-mode headless --auto-attach --dashboard \
|
|
195
|
-
--assign 'codex:보안/성능 관점에서 다음 변경사항을 리뷰하라. OWASP Top 10, 성능 병목, 에러 핸들링, 리소스 누수를 확인하라. 변경 파일: {changed_files}. JSON 형식: { security_findings, performance_findings, overall_pass }:verifier' \
|
|
196
|
-
--assign 'gemini:UX/접근성 관점에서 다음 변경사항을 리뷰하라. UI 변경: 접근성, 반응형, 사용성. API 변경: DX, 문서화, 일관성. 변경 파일: {changed_files}. JSON 형식: { ux_findings, accessibility_findings, overall_pass }:verifier' \
|
|
197
|
-
--timeout 600")
|
|
198
|
-
```
|
|
199
|
-
|
|
200
|
-
**QA 반복 규칙**
|
|
201
|
-
- 동일한 실패 / 동일한 에러가 3회 반복되면 무한 루프를 중단한다.
|
|
202
|
-
- 이 경우 `.tfx/fullcycle/{run-id}/qa-findings.md`에 근본 이슈 보고서를 남기고 사용자 판단을 요청한다.
|
|
203
|
-
|
|
204
|
-
**산출물 저장**
|
|
205
|
-
- `.tfx/fullcycle/{run-id}/qa-findings.md`
|
|
206
|
-
|
|
207
|
-
### Phase 5: Validation
|
|
208
|
-
|
|
209
|
-
Phase 4의 3자 결과에 Consensus 프로토콜을 적용한다.
|
|
210
|
-
|
|
211
|
-
- Score >= 70 + Critical 0건 → 완료 확정
|
|
212
|
-
- Score >= 70 + Critical 존재 → Critical만 수정 후 Phase 4 재실행
|
|
213
|
-
- Score < 70 → 미합의 항목 수정 → Phase 4 재실행 (최대 2회)
|
|
214
|
-
- 2회 재실행 후에도 < 70 → AskUserQuestion으로 현황 보고 + 사용자 판단 요청
|
|
215
|
-
|
|
216
|
-
**산출물 저장**
|
|
217
|
-
- `.tfx/fullcycle/{run-id}/validation-decision.md`
|
|
218
|
-
|
|
219
|
-
### Final: 완료 보고
|
|
220
|
-
|
|
221
|
-
```markdown
|
|
222
|
-
# Deep Autopilot 완료: {feature}
|
|
223
|
-
|
|
224
|
-
## Pipeline Summary
|
|
225
|
-
| Phase | 상태 | 결과 |
|
|
226
|
-
|-------|------|------|
|
|
227
|
-
| Expansion | 완료 | {criteria_count}개 기준 도출 |
|
|
228
|
-
| Planning | 완료 | Consensus {score}% (Round {n}) |
|
|
229
|
-
| Execution | 완료 | {task_count}개 태스크, {file_count}개 파일 변경 |
|
|
230
|
-
| QA | 완료 | 3자 독립 리뷰 완료 |
|
|
231
|
-
| Validation | 완료 | Consensus {score}%, Critical 0건 |
|
|
232
|
-
|
|
233
|
-
## 변경 사항
|
|
234
|
-
| 파일 | 작업 | 설명 |
|
|
235
|
-
|------|------|------|
|
|
236
|
-
| {file} | 생성/수정 | {summary} |
|
|
237
|
-
|
|
238
|
-
## Acceptance Criteria
|
|
239
|
-
- [x] {criterion1} — 3/3 PASS
|
|
240
|
-
- [x] {criterion2} — 2/3 PASS (Gemini: 조건부)
|
|
241
|
-
|
|
242
|
-
## QA 결과
|
|
243
|
-
- 보안: {findings_count}건 (모두 해결)
|
|
244
|
-
- 성능: {findings_count}건 (모두 해결)
|
|
245
|
-
- 테스트: {pass}/{total} 통과
|
|
246
|
-
|
|
247
|
-
## 미합의 사항 (있으면)
|
|
248
|
-
- {항목}: {각 CLI 입장}
|
|
249
|
-
```
|
|
250
|
-
|
|
251
|
-
## CLEANUP & CANCEL RULES
|
|
252
|
-
|
|
253
|
-
- 성공 시 `state.json`을 complete 상태로 기록하고 orphan state가 남지 않도록 정리한다.
|
|
254
|
-
- 취소/비정상 종료 시에도 마지막 phase, failure_reason, 재개 힌트를 남겨 다음 실행에서 resume 가능해야 한다.
|
|
255
|
-
- cleanup은 상태를 무조건 삭제하는 것이 아니라, 성공/취소 여부가 판별되도록 메타데이터를 남긴 뒤 정리한다.
|
|
256
|
-
|
|
257
|
-
## ERROR RECOVERY
|
|
258
|
-
|
|
259
|
-
| 상황 | 대응 |
|
|
260
|
-
|------|------|
|
|
261
|
-
| tfx headless 타임아웃 | `--timeout` 값을 900으로 올려 재시도 |
|
|
262
|
-
| Consensus 2회 연속 실패 | AskUserQuestion으로 미합의 항목 제시 + 사용자 판단 요청 |
|
|
263
|
-
| 특정 Phase 결과 누락 | 해당 Phase만 단독 재실행 |
|
|
264
|
-
| 빌드/테스트 실패 | Codex에 실패 로그 전달하여 수정 지시 |
|
|
265
|
-
| 동일 QA 에러 3회 반복 | 루프 중단 + 근본 이슈 보고서 작성 + 사용자 판단 요청 |
|
|
266
|
-
|
|
267
|
-
## TOKEN BUDGET
|
|
268
|
-
|
|
269
|
-
| Phase | 토큰 |
|
|
270
|
-
|-------|------|
|
|
271
|
-
| Phase 1 (Expansion) | ~5K |
|
|
272
|
-
| Phase 2 (Planning, 3자) | ~20K |
|
|
273
|
-
| Phase 3 (Execution) | ~25K |
|
|
274
|
-
| Phase 4 (QA, 3자) | ~18K |
|
|
275
|
-
| Phase 5 (Validation) | ~5K |
|
|
276
|
-
| 재시도 (필요 시) | +15K |
|
|
277
|
-
| **총합** | **~73-88K** |
|
|
278
|
-
|
|
279
|
-
## 사용 예
|
|
280
|
-
|
|
281
|
-
```
|
|
282
|
-
/tfx-fullcycle "JWT 인증 시스템 전체 구현. 로그인/로그아웃/리프레시/미들웨어/테스트"
|
|
283
|
-
/tfx-fullcycle "풀 오토 — 결제 모듈을 Stripe에서 Toss Payments로 마이그레이션"
|
|
284
|
-
/tfx-fullcycle "처음부터 끝까지 — REST API를 GraphQL로 점진적 전환, 기존 클라이언트 호환 유지"
|
|
285
|
-
```
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "tfx-fullcycle",
|
|
3
|
-
"description": "여러 파일/모듈에 걸친 복잡한 기능을 처음부터 끝까지 자율 개발할 때 사용한다. 설계→계획→구현→QA→검증 전체 파이프라인이 필요한 작업, '처음부터 끝까지', '전체', '완전히', '풀 오토', 'full auto', '전체 파이프라인으로' 같은 수식어가 있을 때 사용. 단순 단일 작업은 tfx-autopilot이 더 빠릅니다.",
|
|
4
|
-
"triggers": [
|
|
5
|
-
"deep autopilot",
|
|
6
|
-
"풀 오토",
|
|
7
|
-
"처음부터 끝까지",
|
|
8
|
-
"full auto"
|
|
9
|
-
],
|
|
10
|
-
"argument_hint": "<구현할 기능 전체 설명>"
|
|
11
|
-
}
|
|
@@ -1,216 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: tfx-hooks
|
|
3
|
-
description: >
|
|
4
|
-
Claude Code 훅 우선순위 관리자. AskUserQuestion 기반 인터랙티브 UI로
|
|
5
|
-
훅 스캔, 우선순위 조정, 오케스트레이터 적용/복원, 개별 훅 토글을 수행합니다.
|
|
6
|
-
사용자가 훅, hooks, 훅 관리, hook priority, 훅 우선순위, 오케스트레이터,
|
|
7
|
-
orchestrator, 훅 설정, hook 설정, 훅 순서, hook order를 언급할 때마다
|
|
8
|
-
반드시 이 스킬을 사용하세요.
|
|
9
|
-
Use when: hooks, 훅, hook priority, 훅 관리, orchestrator, 오케스트레이터, 훅 설정, 훅 순서
|
|
10
|
-
triggers:
|
|
11
|
-
- tfx-hooks
|
|
12
|
-
argument-hint: "[scan|apply|restore]"
|
|
13
|
-
---
|
|
14
|
-
|
|
15
|
-
# tfx-hooks — 훅 우선순위 관리자
|
|
16
|
-
|
|
17
|
-
> Claude Code 훅의 실행 순서를 관리합니다. triflux 훅이 항상 최우선 실행되도록 보장합니다.
|
|
18
|
-
|
|
19
|
-
## 핵심 개념
|
|
20
|
-
|
|
21
|
-
Claude Code는 같은 이벤트에 매칭된 훅을 **병렬 실행**합니다. 순서 보장이 불가능합니다.
|
|
22
|
-
triflux의 **hook-orchestrator**는 이벤트당 하나의 진입점을 두고, 내부에서 **우선순위대로 순차 실행**합니다.
|
|
23
|
-
|
|
24
|
-
```
|
|
25
|
-
settings.json → hook-orchestrator.mjs (단일 진입점)
|
|
26
|
-
↓ hook-registry.json 읽기
|
|
27
|
-
↓ priority 순 정렬
|
|
28
|
-
1. triflux 훅 (priority=0)
|
|
29
|
-
2. OMC 훅 (priority=50)
|
|
30
|
-
3. 외부 훅 (priority=100)
|
|
31
|
-
```
|
|
32
|
-
|
|
33
|
-
## 워크플로우
|
|
34
|
-
|
|
35
|
-
### Step 1: 현재 상태 확인
|
|
36
|
-
|
|
37
|
-
```bash
|
|
38
|
-
Bash("node hooks/hook-manager.mjs status")
|
|
39
|
-
```
|
|
40
|
-
|
|
41
|
-
결과 JSON에서 `orchestrated` 필드로 적용 여부를 판단한다.
|
|
42
|
-
|
|
43
|
-
### Step 2: 메인 메뉴 (AskUserQuestion)
|
|
44
|
-
|
|
45
|
-
```
|
|
46
|
-
question: "훅 관리 — 어떤 작업을 수행하시겠습니까?"
|
|
47
|
-
header: "Hook Manager"
|
|
48
|
-
options:
|
|
49
|
-
- label: "현재 상태 보기"
|
|
50
|
-
description: "settings.json 훅 스캔 + 오케스트레이터 적용 상태"
|
|
51
|
-
- label: "오케스트레이터 적용"
|
|
52
|
-
description: "모든 훅을 통합 — triflux 최우선 실행 보장"
|
|
53
|
-
- label: "변경점 미리보기 (diff)"
|
|
54
|
-
description: "적용 시 어떻게 바뀌는지 확인"
|
|
55
|
-
- label: "원래대로 복원"
|
|
56
|
-
description: "오케스트레이터 제거, 원래 settings.json 훅으로 복원"
|
|
57
|
-
- label: "개별 훅 관리"
|
|
58
|
-
description: "특정 훅 활성/비활성, 우선순위 변경"
|
|
59
|
-
```
|
|
60
|
-
|
|
61
|
-
### Step 3: 선택에 따른 분기
|
|
62
|
-
|
|
63
|
-
#### "현재 상태 보기"
|
|
64
|
-
|
|
65
|
-
```bash
|
|
66
|
-
Bash("node hooks/hook-manager.mjs scan")
|
|
67
|
-
```
|
|
68
|
-
|
|
69
|
-
결과 JSON을 파싱하여 테이블로 표시:
|
|
70
|
-
|
|
71
|
-
```markdown
|
|
72
|
-
## 현재 훅 상태
|
|
73
|
-
|
|
74
|
-
| 이벤트 | 훅 수 | 소스 |
|
|
75
|
-
|--------|-------|------|
|
|
76
|
-
| SessionStart | 4 | triflux(3), session-vault(1) |
|
|
77
|
-
| PreToolUse | 3 | triflux(1), omc(2) |
|
|
78
|
-
| ... | ... | ... |
|
|
79
|
-
|
|
80
|
-
오케스트레이터: ❌ 미적용 / ✅ 적용됨 (N개 이벤트)
|
|
81
|
-
```
|
|
82
|
-
|
|
83
|
-
#### "오케스트레이터 적용"
|
|
84
|
-
|
|
85
|
-
먼저 diff를 보여준 후 확인:
|
|
86
|
-
|
|
87
|
-
```bash
|
|
88
|
-
Bash("node hooks/hook-manager.mjs diff")
|
|
89
|
-
```
|
|
90
|
-
|
|
91
|
-
결과를 표시한 뒤 AskUserQuestion:
|
|
92
|
-
```
|
|
93
|
-
question: "위 변경을 적용하시겠습니까?"
|
|
94
|
-
header: "확인"
|
|
95
|
-
options:
|
|
96
|
-
- label: "적용"
|
|
97
|
-
description: "settings.json 백업 후 오케스트레이터 적용"
|
|
98
|
-
- label: "취소"
|
|
99
|
-
description: "변경 없이 돌아가기"
|
|
100
|
-
```
|
|
101
|
-
|
|
102
|
-
"적용" 선택 시:
|
|
103
|
-
```bash
|
|
104
|
-
Bash("node hooks/hook-manager.mjs apply")
|
|
105
|
-
```
|
|
106
|
-
|
|
107
|
-
적용 결과 표시:
|
|
108
|
-
```
|
|
109
|
-
✅ 오케스트레이터 적용 완료
|
|
110
|
-
N개 이벤트 → 1개 오케스트레이터로 통합
|
|
111
|
-
실행 순서: triflux(0) → OMC(50) → external(100)
|
|
112
|
-
복원: /tfx-hooks → 원래대로 복원
|
|
113
|
-
또는: triflux hooks restore
|
|
114
|
-
```
|
|
115
|
-
|
|
116
|
-
#### "변경점 미리보기 (diff)"
|
|
117
|
-
|
|
118
|
-
```bash
|
|
119
|
-
Bash("node hooks/hook-manager.mjs diff")
|
|
120
|
-
```
|
|
121
|
-
|
|
122
|
-
결과를 테이블로 표시:
|
|
123
|
-
```markdown
|
|
124
|
-
| 이벤트 | 현재 | 적용 후 | 변경 |
|
|
125
|
-
|--------|------|---------|------|
|
|
126
|
-
| PreToolUse | 2개 개별 | 1개 오케스트레이터 (내부 4개) | 교체 |
|
|
127
|
-
| PostToolUse | 없음 | 1개 오케스트레이터 (내부 1개) | 신규 |
|
|
128
|
-
| ... | ... | ... | ... |
|
|
129
|
-
```
|
|
130
|
-
|
|
131
|
-
#### "원래대로 복원"
|
|
132
|
-
|
|
133
|
-
```bash
|
|
134
|
-
Bash("node hooks/hook-manager.mjs restore")
|
|
135
|
-
```
|
|
136
|
-
|
|
137
|
-
결과에서 status를 확인:
|
|
138
|
-
- `"restored"` → "✅ 원래 훅 설정이 복원되었습니다."
|
|
139
|
-
- `"no_backup"` → "⚠️ 백업이 없습니다. 오케스트레이터를 적용한 적이 없습니다."
|
|
140
|
-
|
|
141
|
-
#### "개별 훅 관리"
|
|
142
|
-
|
|
143
|
-
레지스트리에서 전체 훅 목록을 읽어 표시:
|
|
144
|
-
|
|
145
|
-
```bash
|
|
146
|
-
Bash("node -e \"const r=JSON.parse(require('fs').readFileSync('hooks/hook-registry.json','utf8')); const all=[]; for(const [e,hs] of Object.entries(r.events)) hs.forEach(h=>all.push({event:e,...h})); console.log(JSON.stringify(all))\"")
|
|
147
|
-
```
|
|
148
|
-
|
|
149
|
-
결과를 테이블로 표시 후 AskUserQuestion:
|
|
150
|
-
```
|
|
151
|
-
question: "어떤 훅을 관리하시겠습니까?"
|
|
152
|
-
header: "훅 선택"
|
|
153
|
-
options:
|
|
154
|
-
(레지스트리의 각 훅을 옵션으로 나열)
|
|
155
|
-
- label: "tfx-safety-guard"
|
|
156
|
-
description: "[PreToolUse:Bash] 위험 명령 차단 — priority:0, 활성"
|
|
157
|
-
- label: "tfx-agent-route-guard"
|
|
158
|
-
description: "[PreToolUse:Agent] 에이전트 라우팅 — priority:0, 활성"
|
|
159
|
-
- label: "omc-headless-guard"
|
|
160
|
-
description: "[PreToolUse:Bash|Agent] headless 가드 — priority:50, 활성"
|
|
161
|
-
...
|
|
162
|
-
```
|
|
163
|
-
|
|
164
|
-
훅 선택 후 AskUserQuestion:
|
|
165
|
-
```
|
|
166
|
-
question: "{hookId} — 어떤 조작을 하시겠습니까?"
|
|
167
|
-
header: "훅 조작"
|
|
168
|
-
options:
|
|
169
|
-
- label: "활성/비활성 토글"
|
|
170
|
-
description: "현재: 활성 → 비활성으로 전환"
|
|
171
|
-
- label: "우선순위 변경"
|
|
172
|
-
description: "현재: 0 — 숫자가 낮을수록 먼저 실행"
|
|
173
|
-
- label: "뒤로"
|
|
174
|
-
description: "훅 목록으로 돌아가기"
|
|
175
|
-
```
|
|
176
|
-
|
|
177
|
-
"활성/비활성 토글":
|
|
178
|
-
```bash
|
|
179
|
-
Bash("node hooks/hook-manager.mjs toggle {hookId}")
|
|
180
|
-
```
|
|
181
|
-
|
|
182
|
-
"우선순위 변경":
|
|
183
|
-
AskUserQuestion으로 새 우선순위 입력:
|
|
184
|
-
```
|
|
185
|
-
question: "새 우선순위를 입력하세요 (0=최우선, 50=중간, 100=후순위)"
|
|
186
|
-
header: "Priority"
|
|
187
|
-
```
|
|
188
|
-
```bash
|
|
189
|
-
Bash("node hooks/hook-manager.mjs set-priority {hookId} {newPriority}")
|
|
190
|
-
```
|
|
191
|
-
|
|
192
|
-
변경 후 오케스트레이터가 적용된 상태라면 재적용 안내:
|
|
193
|
-
```
|
|
194
|
-
💡 레지스트리가 변경되었습니다. 오케스트레이터는 실시간으로 레지스트리를 읽으므로 재적용 불필요합니다.
|
|
195
|
-
```
|
|
196
|
-
|
|
197
|
-
## CLI 대응
|
|
198
|
-
|
|
199
|
-
| 스킬 UI | CLI 명령 |
|
|
200
|
-
|---------|---------|
|
|
201
|
-
| 현재 상태 보기 | `triflux hooks scan` |
|
|
202
|
-
| 오케스트레이터 적용 | `triflux hooks apply` |
|
|
203
|
-
| 변경점 미리보기 | `triflux hooks diff` |
|
|
204
|
-
| 원래대로 복원 | `triflux hooks restore` |
|
|
205
|
-
| 상태 확인 | `triflux hooks status` |
|
|
206
|
-
| 훅 토글 | `triflux hooks toggle <hookId>` |
|
|
207
|
-
| 우선순위 변경 | `triflux hooks set-priority <hookId> <priority>` |
|
|
208
|
-
|
|
209
|
-
## 에러 처리
|
|
210
|
-
|
|
211
|
-
| 상황 | 처리 |
|
|
212
|
-
|------|------|
|
|
213
|
-
| hook-registry.json 없음 | "레지스트리가 없습니다. triflux hooks 디렉토리를 확인하세요." |
|
|
214
|
-
| settings.json 파싱 실패 | "settings.json이 손상되었습니다. 수동 확인이 필요합니다." |
|
|
215
|
-
| 백업 없이 복원 시도 | "오케스트레이터를 적용한 적이 없어 복원할 수 없습니다." |
|
|
216
|
-
| hook-manager.mjs 실행 실패 | "hook-manager를 실행할 수 없습니다. node hooks/hook-manager.mjs를 직접 실행해 보세요." |
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "tfx-hooks",
|
|
3
|
-
"description": "Claude Code 훅 우선순위 관리자. AskUserQuestion 기반 인터랙티브 UI로 훅 스캔, 우선순위 조정, 오케스트레이터 적용/복원, 개별 훅 토글을 수행합니다. 사용자가 훅, hooks, 훅 관리, hook priority, 훅 우선순위, 오케스트레이터, orchestrator, 훅 설정, hook 설정, 훅 순서, hook order를 언급할 때마다 반드시 이 스킬을 사용하세요. Use when: hooks, 훅, hook priority, 훅 관리, orchestrator, 오케스트레이터, 훅 설정, 훅 순서",
|
|
4
|
-
"triggers": [
|
|
5
|
-
"tfx-hooks"
|
|
6
|
-
],
|
|
7
|
-
"argument_hint": "[scan|apply|restore]"
|
|
8
|
-
}
|