triflux 10.48.1 → 10.50.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/CLAUDE.md +1 -2
- package/README.ko.md +169 -347
- package/README.md +164 -363
- package/adapters/codex/skills/tfx-live/SKILL.md +129 -0
- package/bin/tfx-live.mjs +446 -21
- package/bin/triflux.mjs +188 -1544
- package/config/mcp-registry.json +10 -8
- package/hooks/agy-session-hook.mjs +1 -1
- package/hooks/claude-cwd-projection-refresh.mjs +7 -79
- package/hooks/codex-session-hook.mjs +3 -8
- package/hooks/hook-orchestrator.mjs +8 -648
- package/hooks/lib/resolve-root.mjs +1 -1
- package/hub/bridge.mjs +290 -51
- package/hub/server.mjs +0 -122
- package/hub/team/claude-daemon-control.mjs +54 -6
- package/hub/team/claude-transcript.mjs +240 -0
- package/hub/team/cli/commands/start/index.mjs +17 -3
- package/hub/team/cli/commands/start/parse-args.mjs +1 -0
- package/hub/team/session-context.mjs +203 -0
- package/hub/team/uds-orchestrator.mjs +63 -1
- package/hub/team/worktree-lifecycle.mjs +0 -1
- package/hud/constants.mjs +10 -0
- package/hud/hud-qos-status.mjs +23 -4
- package/hud/providers/gemini.mjs +4 -1
- package/hud/renderers.mjs +10 -6
- package/package.json +6 -3
- package/references/codex-plugin-cc-analysis.md +5 -10
- package/references/codex-plugin-cc-code-patterns.md +3 -3
- package/scripts/__tests__/mcp-guard-engine-policy-sync.test.mjs +4 -19
- package/scripts/__tests__/mcp-guard-engine-proactive-sync.test.mjs +8 -34
- package/scripts/__tests__/mcp-guard-engine-stdio-sync.test.mjs +24 -9
- package/scripts/__tests__/mcp-guard-engine-sync-http-headers.test.mjs +0 -2
- package/scripts/__tests__/mcp-guard-engine.test.mjs +1 -58
- package/scripts/__tests__/setup-cleanup-stale-skills.test.mjs +69 -106
- package/scripts/__tests__/skill-surface.test.mjs +30 -0
- package/scripts/__tests__/smoke.test.mjs +0 -8
- package/scripts/__tests__/tfx-route-node-entry.test.mjs +6 -4
- package/scripts/completions/tfx.bash +2 -8
- package/scripts/completions/tfx.fish +2 -6
- package/scripts/completions/tfx.zsh +1 -11
- package/scripts/config-audit.mjs +0 -55
- package/scripts/doctor-diagnose.mjs +1 -1
- package/scripts/install-commit-hook.mjs +56 -0
- package/scripts/lib/doctor-env-checks.mjs +0 -85
- package/scripts/lib/legacy-hook-cleanup.mjs +230 -0
- package/scripts/lib/legacy-mcp-cleanup.mjs +772 -0
- package/scripts/lib/mcp-guard-engine.mjs +44 -271
- package/scripts/lib/mcp-manifest.mjs +2 -2
- package/scripts/lib/session-presence.mjs +249 -0
- package/scripts/pack.mjs +4 -6
- package/scripts/preflight-cache.mjs +19 -6
- package/scripts/release/check-packages-mirror.mjs +8 -0
- package/scripts/remote-spawn.mjs +56 -1
- package/scripts/run.cjs +1 -1
- package/scripts/session-stale-cleanup.mjs +2 -3
- package/scripts/setup.mjs +531 -688
- package/scripts/sync-hub-mcp-settings.mjs +0 -280
- package/scripts/tfx-route.mjs +1 -1
- package/scripts/tfx-route.sh +11 -1
- package/skills/tfx-auto/SKILL.md +9 -2
- package/skills/tfx-doctor/SKILL.md +15 -157
- package/skills/tfx-doctor/skill.json +2 -2
- package/skills/tfx-live/SKILL.md +73 -206
- package/skills/tfx-remote/SKILL.md +20 -10
- package/skills/tfx-research/SKILL.md +5 -2
- package/skills/tfx-review/SKILL.md +11 -1
- package/skills/tfx-review/skill.json +1 -1
- package/skills/tfx-setup/SKILL.md +13 -547
- package/skills/tfx-setup/skill.json +1 -1
- package/skills/tfx-wt/SKILL.md +10 -8
- package/skills/tfx-wt/skill.json +1 -1
- package/tui/setup.mjs +0 -130
- package/docs/assets/architecture.svg +0 -211
- package/hooks/agent-route-guard.mjs +0 -113
- package/hooks/cross-review-tracker.mjs +0 -135
- package/hooks/cto-north-star-brief.mjs +0 -133
- package/hooks/error-context.mjs +0 -185
- package/hooks/hook-adaptive-collector.mjs +0 -88
- package/hooks/hook-manager.mjs +0 -426
- package/hooks/hook-registry.json +0 -367
- package/hooks/hooks.json +0 -149
- package/hooks/keyword-rules.json +0 -878
- package/hooks/mcp-config-watcher.mjs +0 -84
- package/hooks/permission-safe-allow.mjs +0 -267
- package/hooks/pipeline-stop.mjs +0 -435
- package/hooks/post-tool-tips.mjs +0 -306
- package/hooks/pre-compact-snapshot.mjs +0 -181
- package/hooks/safety-guard.mjs +0 -466
- package/hooks/session-end-cleanup.mjs +0 -360
- package/hooks/session-start-fast.mjs +0 -579
- package/hooks/session-start-lake.mjs +0 -81
- package/hooks/subagent-tracker.mjs +0 -281
- package/hooks/subagent-verifier.mjs +0 -85
- package/hub/mac-focus.mjs +0 -94
- package/hub/mac-tray.swift +0 -144
- package/hub/public/tray-icon.ico +0 -0
- package/hub/public/tray-icon.png +0 -0
- package/hub/public/tray.html +0 -756
- package/hub/tray-lifecycle.mjs +0 -138
- package/hub/tray-runtime.mjs +0 -265
- package/hub/tray-state.mjs +0 -524
- package/hub/tray.mjs +0 -527
- package/scripts/__tests__/install-mcp-gateway-startup.test.mjs +0 -367
- package/scripts/__tests__/keyword-detector.test.mjs +0 -371
- package/scripts/__tests__/mcp-gateway-health-check.test.mjs +0 -261
- package/scripts/__tests__/mcp-gateway-wrapper-check.test.mjs +0 -54
- package/scripts/__tests__/mcp-guard-engine-watch-http-headers.test.mjs +0 -137
- package/scripts/__tests__/session-start-fast.test.mjs +0 -36
- package/scripts/codex-gateway-preflight.mjs +0 -208
- package/scripts/codex-mcp-gateway-sync.mjs +0 -275
- package/scripts/cross-review-gate.mjs +0 -162
- package/scripts/cross-review-tracker.mjs +0 -251
- package/scripts/install-mcp-gateway-startup.mjs +0 -503
- package/scripts/keyword-detector.mjs +0 -373
- package/scripts/keyword-rules-expander.mjs +0 -538
- package/scripts/lib/cross-review-utils.mjs +0 -59
- package/scripts/lib/hook-utils.mjs +0 -16
- package/scripts/lib/keyword-rules.mjs +0 -219
- package/scripts/lib/mcp-gateway-health-check.mjs +0 -224
- package/scripts/lib/mcp-gateway-servers.mjs +0 -70
- package/scripts/lib/mcp-gateway-wrapper-check.mjs +0 -35
- package/scripts/mcp-gateway-config.mjs +0 -222
- package/scripts/mcp-gateway-ensure.mjs +0 -135
- package/scripts/mcp-gateway-integration-test.mjs +0 -262
- package/scripts/mcp-gateway-start.mjs +0 -304
- package/scripts/mcp-gateway-start.ps1 +0 -140
- package/scripts/mcp-gateway-verify.mjs +0 -79
- package/scripts/mcp-safety-guard.mjs +0 -97
- package/scripts/tfx-gate-activate.mjs +0 -98
- package/skills/merge-worktree/SKILL.md +0 -144
- package/skills/merge-worktree/skill.json +0 -5
- package/skills/star-prompt/SKILL.md +0 -220
- package/skills/star-prompt/skill.json +0 -4
- package/skills/tfx-analysis/SKILL.md +0 -193
- package/skills/tfx-analysis/skill.json +0 -6
- package/skills/tfx-find/SKILL.md +0 -125
- package/skills/tfx-find/skill.json +0 -6
- package/skills/tfx-forge/SKILL.md +0 -177
- package/skills/tfx-forge/skill.json +0 -5
- package/skills/tfx-goal-clarify/SKILL.md +0 -373
- package/skills/tfx-goal-clarify/skill.json +0 -5
- package/skills/tfx-hooks/SKILL.md +0 -212
- package/skills/tfx-hooks/skill.json +0 -5
- package/skills/tfx-hub/SKILL.md +0 -205
- package/skills/tfx-hub/skill.json +0 -5
- package/skills/tfx-index/SKILL.md +0 -146
- package/skills/tfx-index/skill.json +0 -5
- package/skills/tfx-interview/SKILL.md +0 -309
- package/skills/tfx-interview/skill.json +0 -6
- package/skills/tfx-plan/SKILL.md +0 -197
- package/skills/tfx-plan/skill.json +0 -6
- package/skills/tfx-profile/SKILL.md +0 -249
- package/skills/tfx-profile/skill.json +0 -5
- package/skills/tfx-prune/SKILL.md +0 -196
- package/skills/tfx-prune/skill.json +0 -6
- package/skills/tfx-qa/SKILL.md +0 -162
- package/skills/tfx-qa/skill.json +0 -6
- package/skills/tfx-ralph/SKILL.md +0 -25
- package/skills/tfx-ralph/skill.json +0 -9
package/CLAUDE.md
CHANGED
|
@@ -110,7 +110,7 @@ Codex를 SSH 너머로 직접 실행하지 않는다. `config.toml` 충돌과 TT
|
|
|
110
110
|
|
|
111
111
|
### SSH 패턴
|
|
112
112
|
|
|
113
|
-
`hosts.json`의 `os` 필드로 대상 셸을 판단한다.
|
|
113
|
+
`hosts.json`의 `os` 필드로 대상 셸을 판단한다.
|
|
114
114
|
|
|
115
115
|
| 대상 OS | 셸 | 패턴 |
|
|
116
116
|
|---------|-----|------|
|
|
@@ -157,7 +157,6 @@ Codex를 SSH 너머로 직접 실행하지 않는다. `config.toml` 충돌과 TT
|
|
|
157
157
|
- Claude 작성 코드 → Codex 리뷰
|
|
158
158
|
- Codex 작성 코드 → Claude 리뷰
|
|
159
159
|
- 동일 모델이 스스로 승인하지 않는다.
|
|
160
|
-
- git 커밋 전에 미검증 파일을 감지하면 알린다.
|
|
161
160
|
</cross-review>
|
|
162
161
|
|
|
163
162
|
<session-context>
|
package/README.ko.md
CHANGED
|
@@ -8,20 +8,13 @@
|
|
|
8
8
|
</picture>
|
|
9
9
|
</p>
|
|
10
10
|
|
|
11
|
-
<h3 align="center">Claude Code
|
|
12
|
-
|
|
13
|
-
<p align="center">
|
|
14
|
-
작업 라우팅, 에이전트 조율, 로컬/원격 팀 실행, Codex/Antigravity/Claude 실행 경로를<br>
|
|
15
|
-
감사 가능한 경로로 묶는 단일 진입점입니다.
|
|
16
|
-
</p>
|
|
11
|
+
<h3 align="center">Claude Code · Codex · Antigravity를 잇는 CLI 중심 멀티모델 오케스트레이터</h3>
|
|
17
12
|
|
|
18
13
|
<p align="center">
|
|
19
14
|
<a href="https://www.npmjs.com/package/triflux"><img src="https://img.shields.io/npm/v/triflux?style=flat-square&color=FFAF00&label=npm" alt="npm version"></a>
|
|
20
15
|
<a href="https://www.npmjs.com/package/triflux"><img src="https://img.shields.io/npm/dm/triflux?style=flat-square&color=F5C242" alt="npm downloads"></a>
|
|
21
16
|
<a href="https://github.com/tellang/triflux/stargazers"><img src="https://img.shields.io/github/stars/tellang/triflux?style=flat-square&color=FFAF00" alt="GitHub stars"></a>
|
|
22
|
-
<img src="https://img.shields.io/badge/
|
|
23
|
-
<sub>deprecated 호환 alias 11개는 전면 API가 아닙니다</sub>
|
|
24
|
-
<img src="https://img.shields.io/badge/node-%3E%3D18-374151?style=flat-square" alt="Node >= 18">
|
|
17
|
+
<img src="https://img.shields.io/badge/node-%3E%3D20-374151?style=flat-square" alt="Node >= 20">
|
|
25
18
|
<a href="https://opensource.org/licenses/MIT"><img src="https://img.shields.io/badge/License-MIT-374151?style=flat-square" alt="License: MIT"></a>
|
|
26
19
|
</p>
|
|
27
20
|
|
|
@@ -29,387 +22,216 @@
|
|
|
29
22
|
<img alt="triflux demo" src="docs/assets/demo-multi.gif" width="680">
|
|
30
23
|
</p>
|
|
31
24
|
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
<a href="#운영">운영</a> ·
|
|
38
|
-
<a href="#보안과-guard">보안</a>
|
|
39
|
-
</p>
|
|
40
|
-
|
|
41
|
-
---
|
|
42
|
-
|
|
43
|
-
## triflux란?
|
|
44
|
-
|
|
45
|
-
triflux는 **Claude Code plugin + npm CLI**입니다. Claude, Codex, Antigravity를
|
|
46
|
-
오가며 AI 코딩 작업을 라우팅합니다. 임의 셸 명령이나 오래된 skill alias가
|
|
47
|
-
제어 표면이 되지 않도록 현재 진입점을 좁혔습니다.
|
|
25
|
+
triflux는 코딩 작업을 Claude, Codex, Antigravity 사이에서 나눠 맡기는 Claude Code 플러그인이자
|
|
26
|
+
npm CLI다. `/tfx-auto`에 할 일을 한 번 적으면 triflux가 CLI 레인(기본은 Codex)을 고르고, 임의
|
|
27
|
+
셸 명령 대신 관리된 경로로 실행한다. 필요하면 로컬 병렬 워커, worktree로 격리한 스웜,
|
|
28
|
+
Claude↔Codex 라이브 세션, 원격 호스트로 작업을 나눈다. 설치, 진단, 로컬 Hub, 팀 실행은 `tfx`
|
|
29
|
+
셸 CLI가 맡는다.
|
|
48
30
|
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
- **`/tfx-auto`가 Claude Code skill의 표준 front door입니다.** quick/deep/consensus/parallel/retry 동작은 플래그로 표현합니다.
|
|
52
|
-
- **`tfx`는 셸 CLI입니다.** setup, doctor, Hub, MCP, team/swarm, handoff 같은 운영 작업을 담당합니다.
|
|
53
|
-
- **호환 alias는 남아 있지만 전면 API가 아닙니다.** 마이그레이션 표는 [`docs/legacy-skill-aliases.md`](https://github.com/tellang/triflux/blob/main/docs/legacy-skill-aliases.md)로 분리했습니다.
|
|
54
|
-
- **호스트 로컬 Codex harness는 패키지 범위 밖입니다.** 예를 들어 `~/.codex/skills/tfx-harness`는 특정 머신에서 워크플로우를 추천할 수 있지만, 이 저장소/npm/Claude plugin에 포함되지 않습니다.
|
|
55
|
-
|
|
56
|
-
---
|
|
57
|
-
|
|
58
|
-
## 빠른 시작
|
|
59
|
-
|
|
60
|
-
### 1. 설치
|
|
61
|
-
|
|
62
|
-
Claude Code plugin:
|
|
63
|
-
|
|
64
|
-
```text
|
|
65
|
-
/plugin marketplace add tellang/triflux
|
|
66
|
-
/plugin install triflux@tellang
|
|
67
|
-
```
|
|
68
|
-
|
|
69
|
-
npm:
|
|
31
|
+
## 설치
|
|
70
32
|
|
|
71
33
|
```bash
|
|
72
|
-
npm install -g triflux
|
|
34
|
+
npm install -g triflux # postinstall이 setup 스크립트를 실행한다
|
|
35
|
+
tfx doctor # CLI, tmux, Hub, MCP, 프로필, 스킬 점검
|
|
73
36
|
```
|
|
74
37
|
|
|
75
|
-
|
|
38
|
+
이 저장소의 마켓플레이스에서 Claude Code 플러그인으로 설치할 수도 있다.
|
|
76
39
|
|
|
77
40
|
```bash
|
|
78
|
-
|
|
79
|
-
|
|
41
|
+
claude plugin marketplace add tellang/triflux
|
|
42
|
+
claude plugin install triflux@triflux
|
|
80
43
|
```
|
|
81
44
|
|
|
82
|
-
자동화에서는 `tfx doctor --json`을
|
|
45
|
+
흔한 설정 어긋남은 `tfx doctor --fix`로 고친다. 자동화에서는 `tfx doctor --json`을 쓴다.
|
|
83
46
|
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
Claude Code slash skill:
|
|
47
|
+
## 처음 써 보기
|
|
87
48
|
|
|
88
49
|
```text
|
|
89
|
-
/tfx-auto "
|
|
90
|
-
/tfx-auto "
|
|
91
|
-
/tfx-auto "
|
|
92
|
-
/tfx-remote spawn ryzen5-7600 "보안 리뷰 실행"
|
|
93
|
-
/tfx-doctor
|
|
94
|
-
```
|
|
95
|
-
|
|
96
|
-
셸 CLI:
|
|
97
|
-
|
|
98
|
-
```bash
|
|
99
|
-
tfx list
|
|
100
|
-
tfx hub ensure
|
|
101
|
-
tfx mcp list
|
|
102
|
-
tfx handoff --target remote --output .omx/handoff.md
|
|
103
|
-
tfx swarm preflight docs/prd/example.md --json
|
|
104
|
-
tfx codex-team "auth 리팩터링 + 테스트 추가"
|
|
50
|
+
/tfx-auto "깨지는 인증 테스트 고쳐줘"
|
|
51
|
+
/tfx-auto "이 변경에서 신뢰 경계 문제 리뷰해줘" --mode consensus
|
|
52
|
+
/tfx-auto "마이그레이션 끝내고 검증까지" --mode deep --retry ralph --max-iterations 10
|
|
105
53
|
```
|
|
106
54
|
|
|
107
|
-
|
|
108
|
-
> 먼저 `tfx doctor`를 실행하면 Codex/Antigravity/Claude, psmux/tmux, Hub, MCP,
|
|
109
|
-
> profile, stale skill 문제를 한 번에 확인할 수 있습니다.
|
|
55
|
+
실행하지 않고 라우팅 판정만 보려면 셸에서 `tfx auto "<작업>" --json`을 실행한다.
|
|
110
56
|
|
|
111
|
-
|
|
57
|
+
## 스킬
|
|
112
58
|
|
|
113
|
-
|
|
59
|
+
직접 쓰는 스킬:
|
|
114
60
|
|
|
115
|
-
|
|
61
|
+
| 스킬 | 용도 |
|
|
62
|
+
| --- | --- |
|
|
63
|
+
| `/tfx-auto` | 구현, 수정, 리뷰, 병렬 작업의 진입점. 동작은 아래 플래그로 정한다. |
|
|
64
|
+
| `/tfx-live` | Claude↔Codex 라이브 세션. `start`/`ask`/`stop`, `peer` 중계, `orchestrate`, `list-sessions`. |
|
|
65
|
+
| `/tfx-remote` | SSH 너머 원격 Claude Code 세션. `setup`, `spawn`, `list`, `attach`, `send`, `resume`, `probe`, `kill`. |
|
|
66
|
+
| `/tfx-setup` | 대화형 설정. 파일 동기화, HUD, Codex 프로필, MCP, 훅 우선순위. |
|
|
67
|
+
| `/tfx-doctor` | 진단과 복구. Hub 시작·중지·상태 확인도 여기서 한다. |
|
|
68
|
+
| `/tfx-ship` | triflux 릴리즈 절차(메인테이너용). |
|
|
69
|
+
| `/tfx-wt` | Windows Terminal 탭·패인 조작. `tfx setup`은 Windows에만 설치한다. |
|
|
116
70
|
|
|
117
|
-
`
|
|
71
|
+
내부 레인(`internal: true`. 다른 스킬과 라우터가 부르지만 이름을 직접 불러도 된다):
|
|
118
72
|
|
|
119
|
-
|
|
|
120
|
-
| --- | --- |
|
|
121
|
-
| `tfx setup` | scripts, HUD, hooks, MCP, profile 동기화. `--dry-run` 지원. |
|
|
122
|
-
| `tfx doctor` | 설치 상태 진단/복구. `--fix`, `--reset`, `--diagnose`, `--json` 지원. |
|
|
123
|
-
| `tfx auto` | `tfx-auto` 라우팅 결정을 미리 확인. `--cli`, `--mode`, `--parallel`, `--json` 지원. |
|
|
124
|
-
| `tfx mcp` | MCP registry 대상을 `list`, `sync`, `add`, `remove`. |
|
|
125
|
-
| `tfx hub` | 로컬 MCP 메시지 버스 시작/중지/보장/상태 확인. |
|
|
126
|
-
| `tfx list` | 설치된 package skill과 user skill 목록. |
|
|
127
|
-
| `tfx handoff` | 현재 컨텍스트를 로컬/원격 이어받기 프롬프트로 직렬화. |
|
|
128
|
-
| `tfx schema` | CLI와 Hub delegator schema 출력. |
|
|
129
|
-
| `tfx hooks` | hook orchestrator를 scan/diff/apply/restore/status로 관리. |
|
|
130
|
-
| `tfx tray` | tray/HUD 상태 프로세스 실행. `--attach`는 foreground 디버깅용. |
|
|
131
|
-
| `tfx multi` | tmux/psmux + Hub 기반 로컬 multi-agent team 실행. |
|
|
132
|
-
| `tfx swarm` | PRD 기반 worktree 격리 swarm의 plan/preflight/run/list. |
|
|
133
|
-
| `tfx synapse` | swarm registry와 lease 상태 확인. |
|
|
134
|
-
| `tfx review` | Codex 기반 git diff review 실행. |
|
|
135
|
-
| `tfx codex-team` | Codex lead team mode용 편의 wrapper. |
|
|
136
|
-
| `tfx notion-read` | MCP client로 Notion 페이지를 Markdown으로 변환. |
|
|
137
|
-
| `tfx why` | 특정 경로의 마지막 커밋 intent trailer 조회. |
|
|
138
|
-
| `tfx update` | 최신 stable/dev 패키지로 업데이트. |
|
|
139
|
-
| `tfx monitor` | 터미널 TUI monitor 실행. |
|
|
140
|
-
| `tfx version` | 버전 정보 출력. |
|
|
141
|
-
| `tfx-profile` | Codex profile 관리용 편의 binary. |
|
|
142
|
-
|
|
143
|
-
정확한 인자 계약은 `tfx schema <command>`로 확인합니다.
|
|
144
|
-
|
|
145
|
-
### Claude Code skill
|
|
146
|
-
|
|
147
|
-
패키지에는 **34개 skill 파일**이 들어 있습니다. 크게 나누면 다음과 같습니다.
|
|
148
|
-
|
|
149
|
-
- **표준 진입점**: `tfx-auto`, `tfx-remote`, `tfx-doctor`, `tfx-setup`,
|
|
150
|
-
`tfx-profile`, `tfx-hub`, `tfx-hooks`, `tfx-ship`, `tfx-wt`.
|
|
151
|
-
- **작업 helper**: `tfx-plan`, `tfx-review`, `tfx-qa`, `tfx-research`,
|
|
152
|
-
`tfx-analysis`, `tfx-find`, `tfx-index`, `tfx-interview`, `tfx-prune`,
|
|
153
|
-
`tfx-forge`, `merge-worktree`, `star-prompt`.
|
|
154
|
-
- **deprecated 호환 alias**: 11개 legacy 이름은 전환용 shim입니다. 새 문서와 새 프롬프트에서는 위 표준 진입점을 우선 사용하세요.
|
|
155
|
-
|
|
156
|
-
### 표준 플래그 맵
|
|
157
|
-
|
|
158
|
-
대부분의 옛 skill 이름은 `tfx-auto` 플래그로 표현할 수 있습니다.
|
|
159
|
-
|
|
160
|
-
| 의도 | 표준 형태 |
|
|
73
|
+
| 스킬 | 용도 |
|
|
161
74
|
| --- | --- |
|
|
162
|
-
|
|
|
163
|
-
|
|
|
164
|
-
|
|
|
165
|
-
| consensus 리뷰 | `/tfx-auto "작업" --mode consensus` |
|
|
166
|
-
| debate 또는 panel 보고 | `/tfx-auto "작업" --mode consensus --shape debate|panel` |
|
|
167
|
-
| 로컬 병렬 작업 | `/tfx-auto "작업" --parallel N --mode deep` 또는 shell `tfx multi ...` |
|
|
168
|
-
| PRD/worktree swarm | `/tfx-auto "작업" --parallel swarm --mode consensus --isolation worktree` 또는 shell `tfx swarm ...` |
|
|
169
|
-
| CLI lane 강제 | `/tfx-auto "작업" --cli codex|antigravity|claude` |
|
|
75
|
+
| `tfx-harness` | 메타 라우팅. 요청에 맞는 스킬이나 경로를 실행 없이 하나 골라 준다. |
|
|
76
|
+
| `tfx-review` | 코드 리뷰 판정(`--quick`은 가벼운 버전). |
|
|
77
|
+
| `tfx-research` | 출처를 교차 확인하는 웹 리서치(`--quick`, `--auto`, `--depth`). |
|
|
170
78
|
|
|
171
|
-
|
|
79
|
+
실행 계획은 superpowers `writing-plans`, 요구사항은 host `deep-interview`, 목표 변환은
|
|
80
|
+
Claude Code 기본 `/goal`을 쓴다. 다중모델 계획·실행은 `/tfx-auto --mode deep`으로 진행하고,
|
|
81
|
+
Codex 프로필은 `~/.codex/<프로필>.config.toml`에서 직접 관리한다.
|
|
172
82
|
|
|
173
|
-
|
|
83
|
+
## `/tfx-auto` 플래그
|
|
174
84
|
|
|
175
|
-
|
|
|
85
|
+
| 플래그 | 값 | 효과 |
|
|
176
86
|
| --- | --- | --- |
|
|
177
|
-
|
|
|
178
|
-
|
|
|
179
|
-
|
|
|
180
|
-
|
|
|
181
|
-
|
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
### consensus/debate/panel 출력
|
|
210
|
-
|
|
211
|
-
```text
|
|
212
|
-
/tfx-auto "Postgres LISTEN/NOTIFY vs Redis Streams" --mode consensus --shape debate
|
|
213
|
-
/tfx-auto "마이그레이션 전략 리뷰" --mode consensus --shape panel
|
|
214
|
-
```
|
|
215
|
-
|
|
216
|
-
참여 lane은 설정된 Claude/Codex/Antigravity입니다. 어떤 lane이 없으면 결과에 partial/degraded 상태가 드러나야 합니다.
|
|
217
|
-
|
|
218
|
-
### 로컬 팀 또는 PRD swarm
|
|
219
|
-
|
|
220
|
-
```text
|
|
221
|
-
# 로컬 team mode
|
|
222
|
-
tfx multi "auth 리팩터링 + UI 수정 + 테스트 추가"
|
|
223
|
-
|
|
224
|
-
# worktree 격리 PRD swarm
|
|
225
|
-
tfx swarm preflight docs/prd/my-feature.md --json
|
|
226
|
-
tfx swarm run docs/prd/my-feature.md
|
|
227
|
-
```
|
|
228
|
-
|
|
229
|
-
swarm은 격리 worktree와 file lease를 사용합니다. 큰 PRD는 실행 전에 preflight로 host,
|
|
230
|
-
CLI profile, lease 충돌을 먼저 확인하세요.
|
|
231
|
-
|
|
232
|
-
### 원격 세션
|
|
233
|
-
|
|
234
|
-
```text
|
|
235
|
-
/tfx-remote setup
|
|
236
|
-
/tfx-remote spawn ryzen5-7600 "보안 리뷰 실행"
|
|
237
|
-
/tfx-remote list
|
|
238
|
-
/tfx-remote attach <session>
|
|
239
|
-
/tfx-remote send <session> "수정 계속 진행"
|
|
240
|
-
```
|
|
241
|
-
|
|
242
|
-
`tfx-remote`는 setup/spawn/list/attach/send/resume/probe/kill 흐름을 하나로 묶은 Claude skill 표면입니다.
|
|
243
|
-
|
|
244
|
-
### 컨텍스트 저장/이어받기
|
|
245
|
-
|
|
246
|
-
```bash
|
|
247
|
-
tfx handoff --target remote --decision "README는 canonical 중심, alias는 docs로 분리" --output .omx/handoff.md
|
|
248
|
-
```
|
|
249
|
-
|
|
250
|
-
세션을 끝내거나 다른 host/agent가 이어받아야 할 때 사용합니다.
|
|
87
|
+
| `--mode` | `quick`(기본), `deep`, `consensus`, `live` | `deep` = 계획 → 실행 → 검증 루프, `consensus` = 여러 CLI 합의, `live` = `tfx-live peer`로 넘김 |
|
|
88
|
+
| `--shape` | `consensus`, `debate`, `panel` | `--mode consensus`의 결과 형태 |
|
|
89
|
+
| `--cli` | `auto`, `codex`, `antigravity`, `claude` | CLI 레인 고정 |
|
|
90
|
+
| `--cli-set` | `triad`, `no-antigravity`, `custom` | 합의 참여자 구성 |
|
|
91
|
+
| `--parallel` | `1`, `N`, `swarm` | `N` = 로컬 워커(`tfx multi`), `swarm` = worktree별 PRD 샤드(`tfx swarm`) |
|
|
92
|
+
| `--isolation` | `none`, `worktree` | 샤드별 worktree 격리(`swarm`이면 강제) |
|
|
93
|
+
| `--remote` | `<host>` | 스웜 샤드를 `hosts.json`의 호스트로 보냄 |
|
|
94
|
+
| `--retry` | `0`, `1`(기본), `ralph`, `auto-escalate` | `ralph` = 막힘 감지가 있는 재시도 상태 기계, `auto-escalate` = 모델 체인을 한 단계씩 올림 |
|
|
95
|
+
| `--max-iterations` | `N` | `ralph`/`auto-escalate` 상한(`0`은 무제한) |
|
|
96
|
+
| `--rounds` | `N`(기본 4) | `--mode live` 왕복 횟수 |
|
|
97
|
+
| `--risk-tier` | `auto`, `low`, `medium`, `high` | 변경 범위로 검증 강도를 정함. `--mode`가 있으면 무시 |
|
|
98
|
+
| `--skill` | `<name>` | `skills/<name>/SKILL.md`를 Codex/Antigravity 프롬프트 앞에 붙임 |
|
|
99
|
+
| `--no-native-bridge-ui` | | headless 워커를 `claude agents` 패널에 띄우지 않음 |
|
|
100
|
+
|
|
101
|
+
`--lead`, `--options`, `--experts`와 플래그 충돌 규칙까지 포함한 전체 계약은
|
|
102
|
+
[`skills/tfx-auto/SKILL.md`](skills/tfx-auto/SKILL.md)에 있다.
|
|
103
|
+
|
|
104
|
+
## 모델과 프로필
|
|
105
|
+
|
|
106
|
+
Codex는 이름 붙은 프로필로 실행한다. 모델 ID는 `~/.codex/<프로필>.config.toml`이, 역할별 프로필
|
|
107
|
+
배정은 [`scripts/lib/agent-route-policy.mjs`](scripts/lib/agent-route-policy.mjs)가 정한다. Claude는
|
|
108
|
+
별칭으로 부르므로 등급마다 가장 새 모델이 자동으로 잡힌다.
|
|
109
|
+
|
|
110
|
+
| 프로필 / 별칭 | 레인 |
|
|
111
|
+
| --- | --- |
|
|
112
|
+
| `gpt6_astra_xhigh` | 아키텍처, 계획, 비평, 디버깅, 보안 리뷰, 깊은 실행 |
|
|
113
|
+
| `gpt6_astra_max`, `gpt6_astra_ultra` | 가장 어려운 단일 작업(`TFX_CODEX_PROFILE=max\|ultra`). `max`는 `auto-escalate` 첫 단계 |
|
|
114
|
+
| `gpt61_sol_high` / `gpt61_sol_med` | 기본 구현, 리뷰, 검증, 테스트, 문서 / 정리 작업 |
|
|
115
|
+
| `gpt6_luna_high` / `gpt6_luna_low` | 빌드 수정, 글쓰기 / 지연 우선 조회 |
|
|
116
|
+
| Claude `fable` | `--retry auto-escalate` 마지막 단계 |
|
|
117
|
+
| Claude `opus` / `sonnet` / `haiku` | 메타 라우팅과 계획 게이트 / Claude 네이티브 QA·검증 / 빠른 탐색 |
|
|
251
118
|
|
|
252
|
-
|
|
119
|
+
라우팅 정책: [`.claude/rules/tfx-routing.md`](.claude/rules/tfx-routing.md) ·
|
|
120
|
+
승격 체인: [`.claude/rules/tfx-escalation-chain.md`](.claude/rules/tfx-escalation-chain.md).
|
|
253
121
|
|
|
254
|
-
##
|
|
122
|
+
## 셸 CLI
|
|
255
123
|
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
124
|
+
| 명령 | 용도 |
|
|
125
|
+
| --- | --- |
|
|
126
|
+
| `tfx setup` / `tfx doctor` | 파일·HUD·MCP·프로필 동기화 / 진단과 복구(`--fix`, `--json`) |
|
|
127
|
+
| `tfx auto` | `tfx-auto` 라우팅 판정 미리 보기 |
|
|
128
|
+
| `tfx multi` | tmux + Hub 기반 로컬 멀티 CLI 팀 |
|
|
129
|
+
| `tfx swarm` | PRD 기반 worktree 격리 실행: `plan`, `preflight`, `run`, `list` |
|
|
130
|
+
| `tfx synapse` | 스웜 세션 레지스트리와 lease |
|
|
131
|
+
| `tfx hub` | 로컬 Hub: `start`, `stop`, `status`, `ensure` |
|
|
132
|
+
| `tfx mcp` | 관리형 MCP 레지스트리: `list`, `sync`, `add`, `remove` |
|
|
133
|
+
| `tfx handoff` | 현재 맥락을 다른 세션이나 호스트로 넘길 프롬프트로 묶음 |
|
|
134
|
+
| `tfx cto` | 저장소 단위 권위 콘솔: `collect`, `status`, `dashboard`, `hygiene`, `steward`, `event` |
|
|
135
|
+
| `tfx review` / `tfx codex-team` | Codex git diff 리뷰 / Codex 주도 팀 모드 |
|
|
136
|
+
| `tfx stealth-fetch <url>` | cloakbrowser로 URL 하나를 가져옴(JSON을 stdout으로) |
|
|
137
|
+
| `tfx notion-read`, `tfx why`, `tfx schema`, `tfx list`, `tfx monitor`, `tfx update`, `tfx version` | Notion → Markdown, 커밋 intent 트레일러, CLI 스키마, 설치된 스킬, TUI 모니터, 업데이트, 버전 |
|
|
138
|
+
| `tfx-live` | 라이브 세션 브리지(`/tfx-live` 스킬과 같은 명령) |
|
|
139
|
+
| `tfx-profile` | 대화형 Codex 프로필 관리자 |
|
|
140
|
+
|
|
141
|
+
정확한 인자는 `tfx <명령> --help`나 `tfx schema <명령>`으로 확인한다.
|
|
142
|
+
|
|
143
|
+
## 런타임 기능
|
|
144
|
+
|
|
145
|
+
**라이브 세션.** `tfx-live`는 Claude Code와 Codex TUI 세션을 조종한다. Claude 데몬 대상
|
|
146
|
+
(`--short`/`--session-id`)은 UDS를 먼저 시도하고, `--session`도 주면 실패 시 tmux로 넘어간다.
|
|
147
|
+
Codex는 tmux를 쓰거나 `--transport uds --thread <id|auto>`로 UDS를 쓴다. `peer`는 두 세션 사이를
|
|
148
|
+
`--rounds`만큼 중계하고, `orchestrate`는 한 작업에 Claude와 Codex를 함께 붙인다. triflux의 Codex
|
|
149
|
+
훅이 실행 중인 Codex 세션을 `~/.local/state/triflux/codex-sessions/`에 기록하므로
|
|
150
|
+
`tfx-live list-sessions --cli codex|claude`로 직접 띄운 tmux 세션도 찾을 수 있다.
|
|
151
|
+
|
|
152
|
+
**오래 걸리는 작업.** `scripts/tfx-route.sh --async <agent> "<프롬프트>"`는 job id를 바로 돌려줘서
|
|
153
|
+
Claude Code Bash 도구의 600초 제한에 걸리지 않는다. 이후 `--job-status`, `--job-wait`,
|
|
154
|
+
`--job-result`로 확인한다.
|
|
155
|
+
|
|
156
|
+
**Hub.** 팀, 원격 세션, MCP 도구, 상태 표시를 잇는 로컬 메시지 버스다. 기본으로
|
|
157
|
+
`127.0.0.1:27888`에 붙고(`TFX_HUB_PORT`로 변경), `TFX_HUB_TOKEN`이 있으면 bearer 토큰을 요구한다.
|
|
158
|
+
`tfx-auto`, `tfx multi`, 로컬 스웜 샤드의 headless 워커는 `claude agents` 패널에 행으로 보인다.
|
|
159
|
+
끄려면 `--no-native-bridge-ui`를 준다.
|
|
160
|
+
|
|
161
|
+
**재시도와 승격.** `--retry ralph`는 끝나거나 막힐 때(같은 실패 3회 연속)까지 반복한다.
|
|
162
|
+
`--retry auto-escalate`는 Codex `gpt6_astra_max`에서 Claude `fable`로 올라간다. 체인은
|
|
163
|
+
`.triflux/config/escalation-chain.json`으로 바꿀 수 있다.
|
|
164
|
+
|
|
165
|
+
**머신 프로파일.** setup은 이 머신에서 쓸 CLI와 timeout 정책을
|
|
166
|
+
`~/.config/triflux/machine-profile.env`에 기록한다. `TFX_DISABLE_CODEX=1`이나
|
|
167
|
+
`TFX_DISABLE_ANTIGRAVITY=1`을 주면 그 CLI가 라우팅에서 빠진다. 허용된 CLI가 하나도 없으면 조용히
|
|
168
|
+
다른 경로로 넘어가지 않고 실패한다. 자세한 내용은
|
|
169
|
+
[`.claude/rules/tfx-machine-profile.md`](.claude/rules/tfx-machine-profile.md).
|
|
170
|
+
|
|
171
|
+
**CTO lake.** `tfx cto`는 저장소에서 일어난 일을 `.triflux/lake/`에 덧붙이기 전용으로 남긴다. 자동
|
|
172
|
+
동작은 기본으로 꺼져 있고 `TFX_CTO_AUTO_COLLECT=1`이나 `TFX_CTO_NORTH_STAR=1`로
|
|
173
|
+
켠다([ADR-0018](docs/adr/0018-cto-auto-behaviors-opt-in.md)). 예전 트레이 UI는 제거됐다
|
|
174
|
+
([ADR-0022](docs/adr/0022-remove-cto-tray.md)).
|
|
175
|
+
|
|
176
|
+
**원격 호스트.** `/tfx-remote`와 `--remote <host>`는 `~/.config/triflux/hosts.json`
|
|
177
|
+
(Windows는 `%APPDATA%\triflux\hosts.json`)에서 호스트를 읽는다. `/tfx-remote setup`으로 호스트를
|
|
178
|
+
추가한 뒤 `/tfx-remote spawn <host> "보안 리뷰 실행"`처럼 쓴다.
|
|
179
|
+
|
|
180
|
+
## 구조
|
|
259
181
|
|
|
260
182
|
```mermaid
|
|
261
183
|
graph TD
|
|
262
|
-
User([
|
|
184
|
+
User([Claude Code 프롬프트 / 셸]) --> Skills["/tfx-auto · /tfx-live · /tfx-remote"]
|
|
263
185
|
User --> CLI[tfx CLI]
|
|
264
|
-
Skills -->
|
|
265
|
-
Skills -->
|
|
266
|
-
CLI -->
|
|
267
|
-
CLI --> Team[tfx multi / swarm]
|
|
268
|
-
Auto --> Route[tfx-route.sh + guards]
|
|
269
|
-
Team --> Hub
|
|
270
|
-
Remote --> Hub
|
|
186
|
+
Skills --> Route[tfx-route.sh]
|
|
187
|
+
Skills --> Live[tfx-live]
|
|
188
|
+
CLI --> Team["tfx multi · tfx swarm"]
|
|
271
189
|
Route --> Codex[Codex CLI]
|
|
272
|
-
Route -->
|
|
190
|
+
Route --> Agy[Antigravity agy]
|
|
273
191
|
Route --> Claude[Claude Code]
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
3. `tfx-auto`가 intent를 mode, retry, parallelism, risk tier, 대상 CLI lane으로 정규화합니다.
|
|
284
|
-
4. `tfx-route.sh`, Hub worker, 또는 `tfx` CLI가 실제 Codex/Antigravity/Claude 기반 작업을 실행합니다.
|
|
285
|
-
5. Hub가 team message, lease, retry, handoff, status surface를 기록합니다.
|
|
286
|
-
|
|
287
|
-
### Hub
|
|
288
|
-
|
|
289
|
-
Hub는 team, remote session, MCP tool, status surface를 위한 로컬 메시지 버스입니다.
|
|
290
|
-
localhost에 bind하며 pipe/HTTP transport를 사용합니다.
|
|
291
|
-
|
|
292
|
-
```bash
|
|
293
|
-
tfx hub ensure
|
|
294
|
-
tfx hub status --json
|
|
295
|
-
tfx hub stop
|
|
296
|
-
```
|
|
297
|
-
|
|
298
|
-
macOS에서 test나 Hub 시작이 `node` localhost port를 열면 방화벽 팝업이 뜰 수 있습니다.
|
|
299
|
-
문서 작업에는 필요 없고, 실제 Hub/team/MCP workflow가 필요할 때만 환경 정책에 맞게 허용하세요.
|
|
300
|
-
|
|
301
|
-
### Guard
|
|
302
|
-
|
|
303
|
-
triflux는 위험한 실행을 관리된 경로 뒤에 둡니다.
|
|
304
|
-
|
|
305
|
-
- CLI 호출은 `tfx-route.sh`, Hub worker, `tfx` CLI를 통과해야 합니다.
|
|
306
|
-
- 직접 `codex exec` / `gemini -y` 경로는 설치된 workflow에서 guard됩니다.
|
|
307
|
-
- psmux/Windows Terminal 흐름은 임의 `wt.exe`/`psmux send-keys`가 아니라 관리 API와 규칙을 사용합니다.
|
|
308
|
-
|
|
309
|
-
### Profile과 모델 라우팅
|
|
310
|
-
|
|
311
|
-
Codex profile은 `tfx-profile`로 관리하고, Antigravity 및 legacy Gemini 호환 상태는 `tfx setup`/`tfx doctor`로 점검합니다. 이미 profile이
|
|
312
|
-
소유한 model/effort 값을 launcher script에 중복 하드코딩하지 마세요.
|
|
313
|
-
|
|
314
|
-
---
|
|
315
|
-
|
|
316
|
-
## 운영
|
|
317
|
-
|
|
318
|
-
### 진단
|
|
319
|
-
|
|
320
|
-
```bash
|
|
321
|
-
tfx doctor
|
|
322
|
-
tfx doctor --json
|
|
323
|
-
tfx doctor --fix
|
|
324
|
-
tfx doctor --diagnose
|
|
325
|
-
```
|
|
326
|
-
|
|
327
|
-
`doctor`는 CLI, profile, hook, skill, Hub, MCP registry, route script sync,
|
|
328
|
-
stale team, 로컬 설정 drift를 확인합니다.
|
|
329
|
-
|
|
330
|
-
### MCP registry
|
|
331
|
-
|
|
332
|
-
```bash
|
|
333
|
-
tfx mcp list
|
|
334
|
-
tfx mcp sync
|
|
335
|
-
tfx mcp add context7 --url https://mcp.context7.com/mcp
|
|
336
|
-
tfx mcp remove context7
|
|
337
|
-
```
|
|
338
|
-
|
|
339
|
-
registry가 관리 대상 MCP 설정의 source of truth입니다. Drift 디버깅이 아니라면
|
|
340
|
-
Codex/Antigravity/Claude MCP 파일을 직접 수정하지 마세요.
|
|
341
|
-
|
|
342
|
-
### State snapshot
|
|
343
|
-
|
|
344
|
-
Hub 시작 시 `~/.codex/`, `~/.gemini/` 일부 상태를 ignored `references/*-snapshots/`
|
|
345
|
-
폴더에 best-effort daily snapshot으로 저장할 수 있습니다. 수동 helper:
|
|
346
|
-
|
|
347
|
-
```bash
|
|
348
|
-
npm run snapshot:codex
|
|
349
|
-
npm run snapshot:gemini
|
|
350
|
-
npm run snapshot:all
|
|
351
|
-
```
|
|
352
|
-
|
|
353
|
-
### Release/mirror check
|
|
354
|
-
|
|
355
|
-
패키지 내용에 영향이 있는 저장소 변경은 ship 전에 release gate를 통과시킵니다.
|
|
356
|
-
|
|
357
|
-
```bash
|
|
358
|
-
npm run lint:skills
|
|
359
|
-
npm run gen:skill-manifest
|
|
360
|
-
npm run release:check-sync
|
|
361
|
-
npm run release:check-mirror
|
|
362
|
-
npm run lint
|
|
192
|
+
Team --> Route
|
|
193
|
+
Team --> WT[(git worktrees)]
|
|
194
|
+
Live -->|UDS 또는 tmux| Sessions[Claude / Codex TUI 세션]
|
|
195
|
+
Route --> Hub["Hub 127.0.0.1:27888"]
|
|
196
|
+
Team --> Hub
|
|
197
|
+
Hub --> Store[(SQLite 또는 메모리 저장소)]
|
|
198
|
+
Hub --> MCP[MCP 도구]
|
|
199
|
+
Hub --> UI["HUD · claude agents 패널"]
|
|
200
|
+
CLI --> Lake[(".triflux/lake (tfx cto)")]
|
|
363
201
|
```
|
|
364
202
|
|
|
365
|
-
|
|
366
|
-
|
|
203
|
+
패키지 구성과 실행 경로는 [ARCHITECTURE.md](ARCHITECTURE.md), 문서 지도는
|
|
204
|
+
[docs/README.md](docs/README.md)에 있다.
|
|
367
205
|
|
|
368
|
-
|
|
206
|
+
## 플랫폼
|
|
369
207
|
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
| 플랫폼 | Multiplexer | 참고 |
|
|
208
|
+
| 플랫폼 | 멀티플렉서 | 참고 |
|
|
373
209
|
| --- | --- | --- |
|
|
374
|
-
| macOS | tmux |
|
|
210
|
+
| macOS | tmux | 기본 경로. hard ceiling을 양수로 두면 `coreutils`(`gtimeout`)가 필요하다. |
|
|
375
211
|
| Linux | tmux | 지원. |
|
|
376
|
-
| Windows | psmux + Windows Terminal |
|
|
377
|
-
|
|
378
|
-
agent/launcher가 따라야 하는 더 엄격한 Windows/psmux 규칙은 `AGENTS.md`와
|
|
379
|
-
`.claude/rules/tfx-psmux.md`를 보세요.
|
|
212
|
+
| Windows | psmux + Windows Terminal | 아래 참고. |
|
|
380
213
|
|
|
381
|
-
|
|
214
|
+
**Windows.** psmux(tmux 포크)의 기본 셸은 PowerShell이다. safety-guard가 `wt.exe`와 psmux `kill-session`
|
|
215
|
+
직접 호출을 막으므로 탭과 패인은 `tfx-wt` 스킬(Windows에만 설치)과
|
|
216
|
+
`hub/team/wt-manager.mjs`를 거친다. 에이전트 규칙은
|
|
217
|
+
[`.claude/rules/tfx-psmux.md`](.claude/rules/tfx-psmux.md).
|
|
382
218
|
|
|
383
|
-
## 보안과
|
|
219
|
+
## 보안과 가드
|
|
384
220
|
|
|
385
|
-
|
|
|
221
|
+
| 층 | 보호 |
|
|
386
222
|
| --- | --- |
|
|
387
|
-
|
|
|
388
|
-
|
|
|
389
|
-
|
|
|
390
|
-
|
|
|
391
|
-
|
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
npm ci
|
|
400
|
-
npm test
|
|
401
|
-
npm run lint
|
|
402
|
-
npm run release:check-sync
|
|
403
|
-
npm run release:check-mirror
|
|
404
|
-
```
|
|
405
|
-
|
|
406
|
-
기여자 메모:
|
|
407
|
-
|
|
408
|
-
- deprecated alias 세부사항은 main README에 다시 늘어놓지 말고 [`docs/legacy-skill-aliases.md`](https://github.com/tellang/triflux/blob/main/docs/legacy-skill-aliases.md)를 갱신하세요.
|
|
409
|
-
- Codex-local 실험은 패키지 경계를 의도적으로 바꾸는 경우가 아니라면 `~/.codex/skills` 아래에 둡니다.
|
|
410
|
-
- docs-only 변경은 보통 `npm run lint`, release sync check 같은 targeted check로 충분합니다. full integration test는 Hub 서버와 localhost listener를 띄울 수 있습니다.
|
|
411
|
-
|
|
412
|
-
---
|
|
223
|
+
| 관리된 경로 | Codex와 Antigravity는 `tfx-route.sh`, Hub 워커, `tfx`로만 부르고 맨 `codex exec`나 `agy`로 부르지 않는다. 호출자가 지키는 규칙이며 이를 막는 훅은 없다. |
|
|
224
|
+
| safety-guard 훅 | 위험한 셸 명령(루트 `rm -rf`, main 강제 push, `git clean -fd`, SQL `DROP`), `wt.exe`·psmux 종료 직접 호출, Windows 호스트로 SSH 보내는 bash 문법을 막고 관리된 대안을 알려 준다. |
|
|
225
|
+
| Hub | localhost에만 붙는다. bearer 토큰(`TFX_HUB_TOKEN`)은 선택. |
|
|
226
|
+
| MCP 레지스트리 | 낡았거나 지원하지 않는 MCP 항목을 관리형 항목으로 바꾼다. |
|
|
227
|
+
| 합의 결과 | deep·consensus 실행은 일부 레인이 빠졌거나 의견이 갈린 결과를 숨기지 않고 표시한다. |
|
|
228
|
+
|
|
229
|
+
## 기여
|
|
230
|
+
|
|
231
|
+
Node 20 이상이 필요하다. 테스트, 린트, 패키지 경계, 미러·릴리즈 점검, 상태 스냅샷은
|
|
232
|
+
[CONTRIBUTING.md](CONTRIBUTING.md)에 있다. 릴리즈는 자동이다. 버전을 올린 커밋이 `main`에
|
|
233
|
+
머지되면 CI 통과 뒤 `release.yml`이 태그, GitHub 릴리즈, OIDC Trusted Publishing을 통한 npm 게시까지 진행한다.
|
|
234
|
+
결정 기록은 [docs/adr/](docs/adr/README.md)에 있다.
|
|
413
235
|
|
|
414
236
|
<p align="center">
|
|
415
237
|
<sub>MIT License · Made by <a href="https://github.com/tellang">tellang</a></sub>
|