triflux 10.3.4 → 10.7.0
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/LICENSE +21 -21
- package/bin/tfx-doctor-tui.mjs +1 -1
- package/bin/tfx-doctor.mjs +6 -1
- package/bin/tfx-profile.mjs +1 -1
- package/bin/tfx-setup-tui.mjs +1 -1
- package/bin/tfx-setup.mjs +6 -1
- package/bin/triflux.mjs +2396 -1140
- package/hooks/agent-route-guard.mjs +12 -8
- package/hooks/cross-review-tracker.mjs +21 -8
- package/hooks/error-context.mjs +19 -7
- package/hooks/hook-adaptive-collector.mjs +18 -16
- package/hooks/hook-manager.mjs +93 -32
- package/hooks/hook-orchestrator.mjs +108 -24
- package/hooks/hook-registry.json +11 -0
- package/hooks/keyword-rules.json +6 -10
- package/hooks/lib/resolve-root.mjs +1 -1
- package/hooks/mcp-config-watcher.mjs +6 -2
- package/hooks/pipeline-stop.mjs +3 -6
- package/hooks/safety-guard.mjs +99 -28
- package/hooks/session-start-fast.mjs +143 -0
- package/hooks/subagent-verifier.mjs +5 -4
- package/hub/account-broker.mjs +256 -60
- package/hub/adaptive-diagnostic.mjs +75 -48
- package/hub/adaptive-inject.mjs +95 -57
- package/hub/adaptive-memory.mjs +156 -42
- package/hub/adaptive.mjs +60 -31
- package/hub/assign-callbacks.mjs +67 -30
- package/hub/bridge.mjs +0 -1
- package/hub/cli-adapter-base.mjs +200 -48
- package/hub/codex-adapter.mjs +76 -96
- package/hub/codex-compat.mjs +3 -3
- package/hub/codex-preflight.mjs +63 -37
- package/hub/delegator/contracts.mjs +19 -23
- package/hub/delegator/index.mjs +3 -3
- package/hub/delegator/service.mjs +88 -64
- package/hub/delegator/tool-definitions.mjs +5 -5
- package/hub/fullcycle.mjs +33 -17
- package/hub/gemini-adapter.mjs +69 -94
- package/hub/hitl.mjs +89 -30
- package/hub/intent.mjs +161 -38
- package/hub/lib/cache-guard.mjs +43 -17
- package/hub/lib/mcp-response-cache.mjs +66 -32
- package/hub/lib/memory-store.mjs +285 -111
- package/hub/lib/path-utils.mjs +35 -37
- package/hub/lib/process-utils.mjs +106 -37
- package/hub/lib/spawn-trace.mjs +527 -0
- package/hub/lib/ssh-command.mjs +34 -4
- package/hub/lib/ssh-retry.mjs +5 -1
- package/hub/lib/uuidv7.mjs +4 -3
- package/hub/memory-doctor.mjs +266 -106
- package/hub/middleware/request-logger.mjs +61 -34
- package/hub/paths.mjs +9 -9
- package/hub/pipeline/gates/confidence.mjs +34 -15
- package/hub/pipeline/gates/consensus.mjs +27 -15
- package/hub/pipeline/gates/index.mjs +7 -3
- package/hub/pipeline/gates/selfcheck.mjs +57 -19
- package/hub/pipeline/index.mjs +77 -42
- package/hub/pipeline/state.mjs +10 -10
- package/hub/pipeline/transitions.mjs +40 -23
- package/hub/platform.mjs +57 -48
- package/hub/promote-penalties.mjs +25 -7
- package/hub/quality/deslop.mjs +70 -49
- package/hub/research.mjs +32 -25
- package/hub/router.mjs +240 -107
- package/hub/routing/complexity.mjs +132 -29
- package/hub/routing/index.mjs +17 -12
- package/hub/routing/q-learning.mjs +76 -28
- package/hub/server.mjs +4 -4
- package/hub/session-fingerprint.mjs +126 -60
- package/hub/state.mjs +84 -43
- package/hub/store-adapter.mjs +59 -26
- package/hub/store.mjs +356 -153
- package/hub/team/agent-map.json +22 -7
- package/hub/team/ansi.mjs +186 -122
- package/hub/team/backend.mjs +28 -10
- package/hub/team/cli/commands/attach.mjs +29 -9
- package/hub/team/cli/commands/control.mjs +29 -8
- package/hub/team/cli/commands/debug.mjs +32 -11
- package/hub/team/cli/commands/focus.mjs +38 -11
- package/hub/team/cli/commands/interrupt.mjs +18 -6
- package/hub/team/cli/commands/kill.mjs +16 -5
- package/hub/team/cli/commands/list.mjs +11 -4
- package/hub/team/cli/commands/send.mjs +19 -6
- package/hub/team/cli/commands/start/index.mjs +154 -31
- package/hub/team/cli/commands/start/parse-args.mjs +38 -11
- package/hub/team/cli/commands/start/start-headless.mjs +112 -36
- package/hub/team/cli/commands/start/start-in-process.mjs +12 -2
- package/hub/team/cli/commands/start/start-mux.mjs +70 -21
- package/hub/team/cli/commands/start/start-wt.mjs +29 -12
- package/hub/team/cli/commands/status.mjs +43 -14
- package/hub/team/cli/commands/stop.mjs +11 -4
- package/hub/team/cli/commands/task.mjs +8 -3
- package/hub/team/cli/commands/tasks.mjs +1 -1
- package/hub/team/cli/index.mjs +2 -2
- package/hub/team/cli/manifest.mjs +38 -8
- package/hub/team/cli/render.mjs +30 -8
- package/hub/team/cli/services/attach-fallback.mjs +31 -11
- package/hub/team/cli/services/hub-client.mjs +42 -14
- package/hub/team/cli/services/member-selector.mjs +11 -4
- package/hub/team/cli/services/native-control.mjs +48 -21
- package/hub/team/cli/services/runtime-mode.mjs +2 -1
- package/hub/team/cli/services/state-store.mjs +25 -8
- package/hub/team/cli/services/task-model.mjs +16 -6
- package/hub/team/conductor-mesh-bridge.mjs +24 -23
- package/hub/team/conductor.mjs +8 -4
- package/hub/team/dashboard-anchor.mjs +4 -5
- package/hub/team/dashboard-layout.mjs +3 -1
- package/hub/team/dashboard-open.mjs +41 -21
- package/hub/team/dashboard.mjs +76 -28
- package/hub/team/event-log.mjs +18 -10
- package/hub/team/handoff.mjs +31 -15
- package/hub/team/headless.mjs +2 -1
- package/hub/team/health-probe.mjs +69 -54
- package/hub/team/launcher-template.mjs +16 -13
- package/hub/team/native-supervisor.mjs +65 -21
- package/hub/team/native.mjs +74 -35
- package/hub/team/nativeProxy.mjs +184 -113
- package/hub/team/notify.mjs +119 -76
- package/hub/team/orchestrator.mjs +9 -4
- package/hub/team/pane.mjs +12 -7
- package/hub/team/process-cleanup.mjs +25 -16
- package/hub/team/psmux.mjs +491 -201
- package/hub/team/remote-probe.mjs +68 -52
- package/hub/team/remote-session.mjs +117 -59
- package/hub/team/remote-watcher.mjs +61 -33
- package/hub/team/routing.mjs +51 -25
- package/hub/team/runtime-strategy.mjs +3 -1
- package/hub/team/session.mjs +98 -34
- package/hub/team/staleState.mjs +72 -30
- package/hub/team/swarm-locks.mjs +15 -13
- package/hub/team/swarm-planner.mjs +32 -21
- package/hub/team/swarm-reconciler.mjs +48 -23
- package/hub/team/tui-lite.mjs +266 -68
- package/hub/team/tui-remote-adapter.mjs +14 -10
- package/hub/team/tui-viewer.mjs +99 -43
- package/hub/team/tui.mjs +708 -271
- package/hub/team/worktree-lifecycle.mjs +152 -58
- package/hub/team/wt-manager.mjs +24 -14
- package/hub/token-mode.mjs +71 -71
- package/hub/tray.mjs +66 -23
- package/hub/workers/claude-worker.mjs +162 -118
- package/hub/workers/codex-mcp.mjs +192 -141
- package/hub/workers/delegator-mcp.mjs +507 -333
- package/hub/workers/factory.mjs +8 -8
- package/hub/workers/gemini-worker.mjs +115 -84
- package/hub/workers/interface.mjs +6 -1
- package/hub/workers/worker-utils.mjs +21 -14
- package/hud/colors.mjs +27 -9
- package/hud/constants.mjs +162 -26
- package/hud/context-monitor.mjs +82 -41
- package/hud/hud-qos-status.mjs +129 -49
- package/hud/mission-board.mjs +6 -3
- package/hud/providers/claude.mjs +226 -115
- package/hud/providers/codex.mjs +62 -22
- package/hud/providers/gemini.mjs +168 -56
- package/hud/renderers.mjs +384 -119
- package/hud/terminal.mjs +101 -31
- package/hud/utils.mjs +78 -38
- package/mesh/index.mjs +11 -5
- package/mesh/mesh-budget.mjs +18 -9
- package/mesh/mesh-heartbeat.mjs +1 -1
- package/mesh/mesh-queue.mjs +3 -5
- package/mesh/mesh-router.mjs +5 -4
- package/package.json +2 -1
- package/scripts/__tests__/gen-skill-docs.test.mjs +36 -7
- package/scripts/__tests__/keyword-detector.test.mjs +77 -28
- package/scripts/__tests__/mcp-guard-engine.test.mjs +58 -20
- package/scripts/__tests__/remote-spawn-transfer.test.mjs +30 -19
- package/scripts/__tests__/remote-spawn.test.mjs +10 -4
- package/scripts/__tests__/session-start-fast.test.mjs +36 -0
- package/scripts/__tests__/skill-template.test.mjs +98 -50
- package/scripts/__tests__/smoke.test.mjs +1 -1
- package/scripts/__tests__/spawn-trace.test.mjs +102 -0
- package/scripts/__tests__/tfx-doctor-diagnose.test.mjs +48 -0
- package/scripts/cache-doctor.mjs +11 -4
- package/scripts/cache-warmup.mjs +96 -37
- package/scripts/claudemd-sync.mjs +27 -17
- package/scripts/codex-gateway-preflight.mjs +52 -37
- package/scripts/codex-mcp-gateway-sync.mjs +59 -39
- package/scripts/completions/tfx.bash +47 -47
- package/scripts/completions/tfx.fish +44 -44
- package/scripts/completions/tfx.zsh +83 -83
- package/scripts/config-audit.mjs +232 -0
- package/scripts/convert-to-tmpl.mjs +54 -0
- package/scripts/cross-review-gate.mjs +35 -12
- package/scripts/cross-review-tracker.mjs +21 -8
- package/scripts/demo.mjs +35 -17
- package/scripts/doctor-diagnose.mjs +284 -0
- package/scripts/gen-skill-docs.mjs +7 -2
- package/scripts/gen-skill-manifest.mjs +2 -1
- package/scripts/headless-guard.mjs +86 -48
- package/scripts/hub-ensure.mjs +45 -26
- package/scripts/keyword-detector.mjs +41 -20
- package/scripts/keyword-rules-expander.mjs +47 -30
- package/scripts/lib/claudemd-scanner.mjs +6 -1
- package/scripts/lib/context.mjs +3 -3
- package/scripts/lib/cross-review-utils.mjs +6 -3
- package/scripts/lib/env-probe.mjs +47 -28
- package/scripts/lib/gemini-profiles.mjs +44 -10
- package/scripts/lib/handoff.mjs +33 -17
- package/scripts/lib/hook-utils.mjs +8 -6
- package/scripts/lib/keyword-rules.mjs +43 -19
- package/scripts/lib/logger.mjs +24 -24
- package/scripts/lib/mcp-filter.mjs +377 -239
- package/scripts/lib/mcp-guard-engine.mjs +194 -79
- package/scripts/lib/mcp-manifest.mjs +23 -13
- package/scripts/lib/mcp-server-catalog.mjs +300 -63
- package/scripts/lib/psmux-info.mjs +11 -6
- package/scripts/lib/remote-spawn-transfer.mjs +44 -14
- package/scripts/lib/skill-template.mjs +30 -7
- package/scripts/mcp-check.mjs +58 -39
- package/scripts/mcp-gateway-config.mjs +83 -39
- package/scripts/mcp-gateway-ensure.mjs +43 -35
- package/scripts/mcp-gateway-integration-test.mjs +70 -58
- package/scripts/mcp-gateway-start.mjs +126 -60
- package/scripts/mcp-gateway-verify.mjs +24 -22
- package/scripts/mcp-safety-guard.mjs +44 -11
- package/scripts/notion-read.mjs +199 -84
- package/scripts/pack.mjs +94 -89
- package/scripts/preflight-cache.mjs +27 -10
- package/scripts/preinstall.mjs +42 -13
- package/scripts/remote-spawn.mjs +309 -94
- package/scripts/run.cjs +8 -5
- package/scripts/session-spawn-helper.mjs +130 -39
- package/scripts/session-stale-cleanup.mjs +123 -0
- package/scripts/setup.mjs +941 -492
- package/scripts/test-lock.mjs +20 -7
- package/scripts/test-tfx-route-no-claude-native.mjs +16 -12
- package/scripts/tfx-batch-stats.mjs +32 -11
- package/scripts/tfx-gate-activate.mjs +11 -4
- package/scripts/tfx-route-post.mjs +87 -20
- package/scripts/tfx-route-worker.mjs +57 -51
- package/scripts/tfx-route.sh +41 -124
- package/scripts/tmp-cleanup.mjs +21 -7
- package/scripts/token-snapshot.mjs +204 -85
- package/skills/.omc/state/agent-replay-8f0e10a9-9693-4410-96f5-a6b07e8ed995.jsonl +1 -0
- package/skills/.omc/state/idle-notif-cooldown.json +3 -0
- package/skills/.omc/state/last-tool-error.json +7 -0
- package/skills/.omc/state/subagent-tracking.json +7 -0
- package/skills/_templates/base.md +1 -6
- package/skills/merge-worktree/SKILL.md.tmpl +144 -0
- package/skills/shared/telemetry-segment.md +6 -0
- package/skills/star-prompt/SKILL.md.tmpl +222 -0
- package/skills/tfx-analysis/SKILL.md.tmpl +107 -0
- package/skills/tfx-analysis/skill.json +1 -6
- package/skills/tfx-auto/SKILL.md +1 -0
- package/skills/tfx-auto-codex/SKILL.md.tmpl +106 -0
- package/skills/tfx-auto-codex/skill.json +1 -3
- package/skills/tfx-autopilot/SKILL.md.tmpl +116 -0
- package/skills/tfx-autopilot/skill.json +1 -5
- package/skills/tfx-autoresearch/SKILL.md.tmpl +136 -0
- package/skills/tfx-autoroute/SKILL.md.tmpl +189 -0
- package/skills/tfx-autoroute/skill.json +1 -7
- package/skills/tfx-codex/SKILL.md +1 -0
- package/skills/tfx-codex/skill.json +1 -3
- package/skills/tfx-codex-swarm/SKILL.md.tmpl +16 -0
- package/skills/tfx-codex-swarm/evals/evals.json +1 -1
- package/skills/tfx-codex-swarm/skill.json +1 -4
- package/skills/tfx-codex-swarm-workspace/iteration-1/benchmark.json +54 -12
- package/skills/tfx-codex-swarm-workspace/iteration-1/full-swarm-all-prds/with_skill/grading.json +35 -7
- package/skills/tfx-codex-swarm-workspace/iteration-1/full-swarm-all-prds/without_skill/grading.json +35 -7
- package/skills/tfx-codex-swarm-workspace/iteration-1/implicit-swarm-no-keywords/with_skill/grading.json +25 -5
- package/skills/tfx-codex-swarm-workspace/iteration-1/implicit-swarm-no-keywords/without_skill/grading.json +25 -5
- package/skills/tfx-codex-swarm-workspace/iteration-1/selective-spawn-with-override/with_skill/grading.json +20 -4
- package/skills/tfx-codex-swarm-workspace/iteration-1/selective-spawn-with-override/without_skill/grading.json +16 -4
- package/skills/tfx-consensus/SKILL.md.tmpl +146 -0
- package/skills/tfx-debate/SKILL.md.tmpl +192 -0
- package/skills/tfx-debate/skill.json +1 -7
- package/skills/tfx-deep-analysis/SKILL.md.tmpl +228 -0
- package/skills/tfx-deep-analysis/skill.json +1 -5
- package/skills/tfx-deep-interview/SKILL.md.tmpl +203 -0
- package/skills/tfx-deep-plan/SKILL.md.tmpl +282 -0
- package/skills/tfx-deep-qa/SKILL.md.tmpl +165 -0
- package/skills/tfx-deep-qa/skill.json +1 -6
- package/skills/tfx-deep-research/SKILL.md.tmpl +217 -0
- package/skills/tfx-deep-review/SKILL.md.tmpl +179 -0
- package/skills/tfx-doctor/SKILL.md +21 -0
- package/skills/tfx-doctor/SKILL.md.tmpl +172 -0
- package/skills/tfx-doctor/skill.json +1 -3
- package/skills/tfx-find/SKILL.md +1 -0
- package/skills/tfx-forge/SKILL.md.tmpl +187 -0
- package/skills/tfx-fullcycle/SKILL.md.tmpl +286 -0
- package/skills/tfx-fullcycle/skill.json +1 -6
- package/skills/tfx-gemini/SKILL.md.tmpl +91 -0
- package/skills/tfx-gemini/skill.json +1 -3
- package/skills/tfx-hooks/SKILL.md.tmpl +216 -0
- package/skills/tfx-hooks/skill.json +1 -3
- package/skills/tfx-hub/SKILL.md.tmpl +212 -0
- package/skills/tfx-hub/skill.json +1 -3
- package/skills/tfx-index/SKILL.md +1 -0
- package/skills/tfx-index/skill.json +1 -6
- package/skills/tfx-interview/SKILL.md.tmpl +285 -0
- package/skills/tfx-multi/SKILL.md.tmpl +183 -0
- package/skills/tfx-multi/skill.json +1 -3
- package/skills/tfx-panel/SKILL.md.tmpl +189 -0
- package/skills/tfx-panel/skill.json +1 -7
- package/skills/tfx-persist/SKILL.md.tmpl +270 -0
- package/skills/tfx-persist/skill.json +1 -7
- package/skills/tfx-plan/SKILL.md +1 -0
- package/skills/tfx-plan/skill.json +1 -6
- package/skills/tfx-profile/SKILL.md.tmpl +239 -0
- package/skills/tfx-profile/skill.json +1 -3
- package/skills/tfx-prune/SKILL.md.tmpl +200 -0
- package/skills/tfx-prune/skill.json +1 -7
- package/skills/tfx-psmux-rules/SKILL.md.tmpl +326 -0
- package/skills/tfx-psmux-rules/skill.json +1 -4
- package/skills/tfx-qa/SKILL.md +1 -0
- package/skills/tfx-qa/skill.json +1 -6
- package/skills/tfx-ralph/SKILL.md.tmpl +28 -0
- package/skills/tfx-ralph/skill.json +1 -4
- package/skills/tfx-remote-setup/SKILL.md.tmpl +576 -0
- package/skills/tfx-remote-setup/skill.json +1 -3
- package/skills/tfx-remote-spawn/SKILL.md.tmpl +263 -0
- package/skills/tfx-remote-spawn/references/hosts.json +16 -0
- package/skills/tfx-remote-spawn/skill.json +1 -4
- package/skills/tfx-research/SKILL.md +1 -0
- package/skills/tfx-review/SKILL.md +1 -0
- package/skills/tfx-review/skill.json +1 -6
- package/skills/tfx-setup/SKILL.md.tmpl +504 -0
- package/skills/tfx-setup/skill.json +1 -3
- package/skills/tfx-swarm/SKILL.md +22 -0
- package/skills/tfx-swarm/SKILL.md.tmpl +218 -0
- package/tui/codex-profile.mjs +88 -33
- package/tui/core.mjs +45 -15
- package/tui/doctor.mjs +75 -28
- package/tui/gemini-profile.mjs +74 -29
- package/tui/monitor-data.mjs +8 -4
- package/tui/monitor.mjs +71 -27
- package/tui/setup.mjs +133 -42
|
@@ -0,0 +1,216 @@
|
|
|
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
|
+
# {{SKILL_NAME}} — 훅 우선순위 관리자
|
|
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 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "tfx-hooks",
|
|
3
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
|
-
],
|
|
4
|
+
"triggers": ["tfx-hooks"],
|
|
7
5
|
"argument_hint": "[scan|apply|restore]"
|
|
8
6
|
}
|
|
@@ -0,0 +1,212 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: tfx-hub
|
|
3
|
+
description: >
|
|
4
|
+
tfx-hub MCP 메시지 버스 관리. CLI 에이전트 간 실시간 통신 허브를 시작/중지/상태확인하고,
|
|
5
|
+
hub 도메인의 자유형 작업도 처리합니다.
|
|
6
|
+
Use when: hub, 허브, 메시지 버스, message bus, 브릿지, bridge, MCP 서버 관리, 에이전트 통신
|
|
7
|
+
triggers:
|
|
8
|
+
- tfx-hub
|
|
9
|
+
argument-hint: "<start|stop|status|자유형 작업 설명>"
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# {{SKILL_NAME}} — MCP 메시지 버스 관리 + 개방형 작업
|
|
13
|
+
|
|
14
|
+
> **ARGUMENTS 처리**: 이 스킬이 `ARGUMENTS: <값>`과 함께 호출되면, 해당 값을 사용자 입력으로 취급하여
|
|
15
|
+
> 워크플로우의 첫 단계 입력으로 사용한다. ARGUMENTS가 비어있거나 없으면 기존 절차대로 사용자에게 입력을 요청한다.
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
> **인프라**: 다른 스킬이 내부적으로 사용. 직접 호출할 필요 없음.
|
|
19
|
+
> CLI 에이전트(Codex/Gemini/Claude) 간 실시간 메시지 허브를 관리합니다.
|
|
20
|
+
> **커맨드 매칭 + fallthrough**: start/stop/status에 매칭되면 즉시 실행,
|
|
21
|
+
> 매칭 안 되면 **hub 도메인 컨텍스트를 활용한 범용 작업**으로 처리합니다.
|
|
22
|
+
|
|
23
|
+
## 입력 해석 규칙
|
|
24
|
+
|
|
25
|
+
```
|
|
26
|
+
/tfx-hub start → 커맨드 매칭 → 허브 시작
|
|
27
|
+
/tfx-hub stop → 커맨드 매칭 → 허브 중지
|
|
28
|
+
/tfx-hub status → 커맨드 매칭 → 상태 확인
|
|
29
|
+
/tfx-hub 테스트해줘 → fallthrough → hub 관련 범용 작업으로 처리
|
|
30
|
+
/tfx-hub 문서 저장해 → fallthrough → hub 관련 범용 작업으로 처리
|
|
31
|
+
/tfx-hub 브릿지 분석해 → fallthrough → hub 관련 범용 작업으로 처리
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
**fallthrough 규칙**: 인자가 start/stop/status/--port 등 커맨드 키워드에 매칭되지 않으면,
|
|
35
|
+
사용자의 입력을 **hub/브릿지/메시지버스 도메인의 자유형 작업**으로 해석한다.
|
|
36
|
+
|
|
37
|
+
fallthrough 라우팅:
|
|
38
|
+
```bash
|
|
39
|
+
# tfx-route.sh 경유 (권장)
|
|
40
|
+
Bash("bash ~/.claude/scripts/tfx-route.sh {에이전트} '{hub 컨텍스트 + 작업}' {mcp_profile}")
|
|
41
|
+
|
|
42
|
+
# codex 직접 호출 시 — 반드시 exec 서브커맨드 포함
|
|
43
|
+
Bash("codex exec --dangerously-bypass-approvals-and-sandbox --skip-git-repo-check '{작업}'")
|
|
44
|
+
Bash("codex --profile gpt54_xhigh exec --dangerously-bypass-approvals-and-sandbox --skip-git-repo-check '{작업}'")
|
|
45
|
+
# ↑ --profile은 exec 앞에, --skip-git-repo-check은 exec 뒤에
|
|
46
|
+
|
|
47
|
+
# Claude 네이티브 (탐색/검증)
|
|
48
|
+
Agent(subagent_type="oh-my-claudecode:explore", prompt="{작업}")
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
## 커맨드
|
|
52
|
+
|
|
53
|
+
### start — 허브 시작
|
|
54
|
+
|
|
55
|
+
```bash
|
|
56
|
+
Bash("node hub/server.mjs", run_in_background=true)
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
- Streamable HTTP MCP 서버를 `http://127.0.0.1:27888/mcp` 에서 시작
|
|
60
|
+
- SQLite WAL DB: `~/.claude/cache/tfx-hub/state.db`
|
|
61
|
+
- PID 파일: `~/.claude/cache/tfx-hub/hub.pid`
|
|
62
|
+
- 환경변수: `TFX_HUB_PORT` (포트), `TFX_HUB_DB` (DB 경로)
|
|
63
|
+
|
|
64
|
+
### stop — 허브 중지
|
|
65
|
+
|
|
66
|
+
```bash
|
|
67
|
+
# PID 파일에서 프로세스 ID 읽어서 종료
|
|
68
|
+
Bash("node -e \"
|
|
69
|
+
const fs = require('fs');
|
|
70
|
+
const path = require('path');
|
|
71
|
+
const pidFile = path.join(require('os').homedir(), '.claude/cache/tfx-hub/hub.pid');
|
|
72
|
+
if (fs.existsSync(pidFile)) {
|
|
73
|
+
const info = JSON.parse(fs.readFileSync(pidFile, 'utf8'));
|
|
74
|
+
process.kill(info.pid, 'SIGTERM');
|
|
75
|
+
console.log('tfx-hub 종료 (PID ' + info.pid + ')');
|
|
76
|
+
} else {
|
|
77
|
+
console.log('tfx-hub 미실행');
|
|
78
|
+
}
|
|
79
|
+
\"")
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
### status — 상태 확인
|
|
83
|
+
|
|
84
|
+
```bash
|
|
85
|
+
# HTTP 상태 엔드포인트 조회
|
|
86
|
+
Bash("curl -s http://127.0.0.1:27888/status 2>/dev/null || echo '{\"error\":\"hub 미실행\"}'")
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
## 각 CLI 등록 방법
|
|
90
|
+
|
|
91
|
+
허브 시작 후 각 CLI에 MCP 서버로 등록:
|
|
92
|
+
|
|
93
|
+
```bash
|
|
94
|
+
# Codex (수동 opt-in 예시)
|
|
95
|
+
# triflux는 config.json을 자동 관리하며, standalone Codex 노이즈 방지를 위해
|
|
96
|
+
# 사전 등록은 disabled로 두고 `tfx hub start` 이후에만 enabled로 전환한다.
|
|
97
|
+
codex mcp add tfx-hub --url http://127.0.0.1:27888/mcp
|
|
98
|
+
|
|
99
|
+
# Gemini (settings.json)
|
|
100
|
+
# mcpServers.tfx-hub.url = "http://127.0.0.1:27888/mcp"
|
|
101
|
+
|
|
102
|
+
# Claude
|
|
103
|
+
claude mcp add --transport http tfx-hub http://127.0.0.1:27888/mcp
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
## MCP 도구 (20개)
|
|
107
|
+
|
|
108
|
+
### Core — 기본 통신
|
|
109
|
+
|
|
110
|
+
| 도구 | 설명 |
|
|
111
|
+
|------|------|
|
|
112
|
+
| `register` | 에이전트 등록 + lease 발급 |
|
|
113
|
+
| `status` | 허브/에이전트/큐/트레이스 상태 조회 |
|
|
114
|
+
| `publish` | 이벤트/응답 메시지 발행 (topic fanout 지원) |
|
|
115
|
+
| `ask` | 다른 에이전트에게 질문 (request/reply, await_response_ms 폴링 지원) |
|
|
116
|
+
| `handoff` | 작업 인계 (acceptance_criteria 지정 가능) |
|
|
117
|
+
| `poll_messages` | 수신함에서 메시지 폴링 **(Deprecated — Named Pipe 사용)** |
|
|
118
|
+
|
|
119
|
+
### Assign — 비차단 작업 할당
|
|
120
|
+
|
|
121
|
+
| 도구 | 설명 |
|
|
122
|
+
|------|------|
|
|
123
|
+
| `assign_async` | AWS CAO 스타일 비차단 job 생성 + 워커 실시간 전달 |
|
|
124
|
+
| `assign_result` | job 진행/완료 결과 보고 |
|
|
125
|
+
| `assign_status` | job 단건 상태 또는 목록 조회 |
|
|
126
|
+
|
|
127
|
+
### Team — Claude Native Teams 프록시
|
|
128
|
+
|
|
129
|
+
| 도구 | 설명 |
|
|
130
|
+
|------|------|
|
|
131
|
+
| `team_info` | Teams 메타/멤버/경로 정보 조회 |
|
|
132
|
+
| `team_task_list` | task 목록 조회 (owner/status 필터) |
|
|
133
|
+
| `team_task_update` | task claim/update |
|
|
134
|
+
| `team_send_message` | Teams inbox에 메시지 append |
|
|
135
|
+
|
|
136
|
+
### Pipeline — 파이프라인 관리
|
|
137
|
+
|
|
138
|
+
| 도구 | 설명 |
|
|
139
|
+
|------|------|
|
|
140
|
+
| `pipeline_init` | 새 파이프라인 초기화 |
|
|
141
|
+
| `pipeline_state` | 파이프라인 상태 조회 |
|
|
142
|
+
| `pipeline_advance` | 다음 단계로 전이 (전이 규칙 + fix loop 바운딩) |
|
|
143
|
+
| `pipeline_advance_gated` | HITL 승인 게이트 포함 전이 |
|
|
144
|
+
| `pipeline_list` | 활성 파이프라인 목록 조회 |
|
|
145
|
+
|
|
146
|
+
### HITL — Human-in-the-Loop
|
|
147
|
+
|
|
148
|
+
| 도구 | 설명 |
|
|
149
|
+
|------|------|
|
|
150
|
+
| `request_human_input` | 사용자 입력 요청 (CAPTCHA/승인/자격증명/선택/텍스트) |
|
|
151
|
+
| `submit_human_input` | 사용자 입력 응답 (accept/decline/cancel) |
|
|
152
|
+
|
|
153
|
+
## 브릿지 REST 엔드포인트 (4개)
|
|
154
|
+
|
|
155
|
+
| 엔드포인트 | 설명 |
|
|
156
|
+
|-----------|------|
|
|
157
|
+
| `POST /bridge/register` | 에이전트 등록 (프로세스 수명 기반 lease) |
|
|
158
|
+
| `POST /bridge/result` | 결과 발행 (topic fanout) |
|
|
159
|
+
| `POST /bridge/context` | 선행 컨텍스트 폴링 (auto_ack) |
|
|
160
|
+
| `POST /bridge/deregister` | 에이전트 offline 마킹 |
|
|
161
|
+
|
|
162
|
+
## 프로젝트 구조
|
|
163
|
+
|
|
164
|
+
```
|
|
165
|
+
hub/
|
|
166
|
+
├── server.mjs # MCP 서버 + REST 브릿지 엔드포인트
|
|
167
|
+
├── store.mjs # SQLite WAL 상태 저장소
|
|
168
|
+
├── router.mjs # Actor mailbox 라우터 + QoS
|
|
169
|
+
├── tools.mjs # MCP 도구 20개 정의
|
|
170
|
+
├── hitl.mjs # Human-in-the-Loop 매니저
|
|
171
|
+
├── bridge.mjs # tfx-route.sh ↔ hub 브릿지 CLI
|
|
172
|
+
├── schema.sql # DB 스키마
|
|
173
|
+
├── paths.mjs # 경로 상수 (PID 파일, DB 경로 등)
|
|
174
|
+
├── pipe.mjs # Named Pipe 서버 (push 구독 채널)
|
|
175
|
+
├── assign-callbacks.mjs # assign job 콜백 처리
|
|
176
|
+
├── intent.mjs # 인텐트 파싱
|
|
177
|
+
├── reflexion.mjs # reflexion 루프
|
|
178
|
+
├── research.mjs # 리서치 프록시
|
|
179
|
+
├── token-mode.mjs # 토큰 모드 관리
|
|
180
|
+
├── pipeline/ # 파이프라인 엔진
|
|
181
|
+
│ ├── index.mjs # createPipeline() 팩토리
|
|
182
|
+
│ ├── state.mjs # 파이프라인 상태 CRUD
|
|
183
|
+
│ ├── transitions.mjs # 전이 규칙
|
|
184
|
+
│ └── gates/ # HITL 게이트 (selfcheck, confidence)
|
|
185
|
+
├── delegator/ # 작업 위임 레이어
|
|
186
|
+
│ ├── index.mjs
|
|
187
|
+
│ ├── service.mjs
|
|
188
|
+
│ ├── contracts.mjs
|
|
189
|
+
│ └── tool-definitions.mjs
|
|
190
|
+
├── team/ # Claude Native Teams 통합
|
|
191
|
+
│ ├── nativeProxy.mjs # Teams MCP 프록시
|
|
192
|
+
│ ├── orchestrator.mjs # 팀 오케스트레이터
|
|
193
|
+
│ ├── session.mjs # 세션 관리
|
|
194
|
+
│ ├── dashboard.mjs # TUI 대시보드
|
|
195
|
+
│ ├── tui.mjs # TUI 렌더러
|
|
196
|
+
│ └── cli/ # tfx team CLI 커맨드
|
|
197
|
+
├── workers/ # CLI 워커 어댑터
|
|
198
|
+
│ ├── factory.mjs
|
|
199
|
+
│ ├── claude-worker.mjs
|
|
200
|
+
│ ├── codex-mcp.mjs
|
|
201
|
+
│ ├── gemini-worker.mjs
|
|
202
|
+
│ └── delegator-mcp.mjs
|
|
203
|
+
├── middleware/ # 요청 미들웨어
|
|
204
|
+
│ └── request-logger.mjs
|
|
205
|
+
├── quality/ # 품질 검사
|
|
206
|
+
│ └── deslop.mjs
|
|
207
|
+
└── public/ # 정적 자산 (대시보드 HTML, 트레이 아이콘)
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
## 상태
|
|
211
|
+
|
|
212
|
+
**dev 전용** — 로컬 테스트 목적. 프로덕션 배포 전 안정화 필요.
|
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "tfx-hub",
|
|
3
3
|
"description": "tfx-hub MCP 메시지 버스 관리. CLI 에이전트 간 실시간 통신 허브를 시작/중지/상태확인하고, hub 도메인의 자유형 작업도 처리합니다. Use when: hub, 허브, 메시지 버스, message bus, 브릿지, bridge, MCP 서버 관리, 에이전트 통신",
|
|
4
|
-
"triggers": [
|
|
5
|
-
"tfx-hub"
|
|
6
|
-
],
|
|
4
|
+
"triggers": ["tfx-hub"],
|
|
7
5
|
"argument_hint": "<start|stop|status|자유형 작업 설명>"
|
|
8
6
|
}
|
|
@@ -26,6 +26,7 @@ argument-hint: "[--update] [경로]"
|
|
|
26
26
|
> - Errors: 실패 시 원인/복구/재시도 여부를 구조화해 기록한다.
|
|
27
27
|
|
|
28
28
|
|
|
29
|
+
|
|
29
30
|
> SuperClaude index-repo 오마주. 1회 2K 토큰으로 인덱스 생성, 이후 세션마다 55K 토큰 절감.
|
|
30
31
|
|
|
31
32
|
> **Gemini 위임**: 스캔 + 인덱스 생성 작업은 Gemini CLI에 위임한다. Claude는 모드 선택(Step 0)과 파일 쓰기만 담당. Claude 토큰 소비 ~500 tokens으로 줄어든다.
|
|
@@ -1,11 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "tfx-index",
|
|
3
3
|
"description": "프로젝트 구조를 빠르게 파악하거나 토큰을 절약할 때 사용한다. '인덱싱', '프로젝트 구조', '인덱스 만들어', '코드베이스 맵', '프로젝트 개요' 같은 요청에 사용. 새 프로젝트 온보딩, 세션 시작 시 컨텍스트 효율화에 적극 활용.",
|
|
4
|
-
"triggers": [
|
|
5
|
-
"인덱싱",
|
|
6
|
-
"프로젝트 인덱스",
|
|
7
|
-
"인덱스",
|
|
8
|
-
"tfx-index"
|
|
9
|
-
],
|
|
4
|
+
"triggers": ["인덱싱", "프로젝트 인덱스", "인덱스", "tfx-index"],
|
|
10
5
|
"argument_hint": "[--update] [경로]"
|
|
11
6
|
}
|