triflux 10.44.0 → 10.45.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/README.md +1 -1
- package/adapters/codex/skills/tfx-harness/SKILL.md +45 -9
- package/bin/tfx-live.mjs +752 -77
- package/bin/triflux.mjs +9 -6
- package/hooks/codex-session-hook.mjs +67 -1
- package/hooks/cto-north-star-brief.mjs +3 -16
- package/hooks/error-context.mjs +3 -6
- package/hooks/hook-manager.mjs +1 -1
- package/hooks/hook-registry.json +0 -11
- package/hooks/keyword-rules.json +8 -4
- package/hooks/permission-safe-allow.mjs +36 -2
- package/hooks/session-start-fast.mjs +50 -1
- package/hooks/session-start-lake.mjs +3 -16
- package/hub/bridge.mjs +111 -5
- package/hub/gemini-adapter.mjs +29 -11
- package/hub/lib/memory-store.mjs +66 -30
- package/hub/lib/tfx-route-args.mjs +41 -4
- package/hub/pipe.mjs +10 -15
- package/hub/reflexion.mjs +0 -57
- package/hub/router.mjs +202 -24
- package/hub/schema.sql +1 -0
- package/hub/server.mjs +172 -93
- package/hub/store.mjs +106 -33
- package/hub/team/backend.mjs +4 -2
- package/hub/team/claude-daemon-control.mjs +2 -0
- package/hub/team/cli/commands/start/start-headless.mjs +2 -0
- package/hub/team/cli/commands/start/start-mux.mjs +24 -3
- package/hub/team/cli/services/runtime-mode.mjs +23 -9
- package/hub/team/codex-review.mjs +2 -3
- package/hub/team/conductor.mjs +80 -24
- package/hub/team/cto-auto-collect.mjs +2 -6
- package/hub/team/cto-pull.mjs +4 -0
- package/hub/team/dashboard-open.mjs +1 -0
- package/hub/team/execution-mode.mjs +38 -2
- package/hub/team/headless.mjs +493 -82
- package/hub/team/interactive-tui-transport.mjs +15 -1
- package/hub/team/launcher-template.mjs +19 -2
- package/hub/team/orchestrator.mjs +36 -9
- package/hub/team/pane.mjs +176 -14
- package/hub/team/psmux.mjs +79 -70
- package/hub/team/retry-state-machine.mjs +39 -16
- package/hub/team/session.mjs +57 -0
- package/hub/team/terminal-opener.mjs +68 -13
- package/hub/team/tui-viewer.mjs +65 -14
- package/hub/tools.mjs +6 -0
- package/hub/workers/codex-mcp.mjs +34 -5
- package/hud/cli-policy.mjs +69 -0
- package/hud/constants.mjs +20 -17
- package/hud/context-monitor.mjs +31 -21
- package/hud/hud-qos-status.mjs +81 -91
- package/hud/providers/claude.mjs +150 -84
- package/hud/providers/codex.mjs +10 -1
- package/hud/renderers.mjs +21 -59
- package/hud/utils.mjs +1 -15
- package/package.json +1 -1
- package/scripts/__tests__/keyword-detector.test.mjs +89 -1
- package/scripts/__tests__/release-governance.test.mjs +94 -1
- package/scripts/__tests__/skill-surface.test.mjs +6 -4
- package/scripts/__tests__/tfx-route-bash-node-parity.test.mjs +6 -4
- package/scripts/__tests__/tfx-route-node-entry.test.mjs +23 -17
- package/scripts/claude-login-detect.mjs +107 -25
- package/scripts/ensure-agy-hooks.mjs +31 -1
- package/scripts/keyword-detector.mjs +11 -1
- package/scripts/lib/agent-route-policy.mjs +29 -22
- package/scripts/lib/cli-agy.mjs +24 -4
- package/scripts/lib/codex-profile-config.mjs +26 -8
- package/scripts/lib/codex-recovery.sh +19 -0
- package/scripts/lib/gemini-profiles.mjs +113 -29
- package/scripts/lib/keyword-rules.mjs +12 -0
- package/scripts/lib/logger.mjs +60 -43
- package/scripts/lib/machine-profile.mjs +293 -0
- package/scripts/lib/mcp-health.mjs +44 -18
- package/scripts/notion-read.mjs +2 -1
- package/scripts/release/check-packages-mirror.mjs +53 -1
- package/scripts/release/lib.mjs +1 -2
- package/scripts/release/prepare.mjs +24 -9
- package/scripts/remote-spawn.mjs +830 -32
- package/scripts/session-stale-cleanup.mjs +0 -1
- package/scripts/setup.mjs +474 -143
- package/scripts/sync-hub-mcp-settings.mjs +11 -3
- package/scripts/test-lock.mjs +15 -1
- package/scripts/tfx-gate-activate.mjs +4 -4
- package/scripts/tfx-route-post.mjs +90 -13
- package/scripts/tfx-route.sh +502 -126
- package/skills/merge-worktree/SKILL.md +3 -3
- package/skills/star-prompt/skill.json +1 -1
- package/skills/tfx-analysis/SKILL.md +8 -9
- package/skills/tfx-analysis/skill.json +1 -10
- package/skills/tfx-auto/SKILL.md +203 -46
- package/skills/tfx-auto/skill.json +2 -23
- package/skills/tfx-doctor/skill.json +0 -3
- package/skills/tfx-find/skill.json +0 -7
- package/skills/tfx-forge/SKILL.md +2 -2
- package/skills/tfx-forge/skill.json +0 -7
- package/skills/tfx-goal-clarify/skill.json +5 -0
- package/skills/tfx-harness/SKILL.md +26 -3
- package/skills/tfx-harness/skill.json +5 -0
- package/skills/tfx-hooks/SKILL.md +0 -2
- package/skills/tfx-hooks/skill.json +0 -3
- package/skills/tfx-hub/SKILL.md +1 -6
- package/skills/tfx-hub/skill.json +0 -3
- package/skills/tfx-index/skill.json +0 -6
- package/skills/tfx-interview/SKILL.md +0 -2
- package/skills/tfx-live/SKILL.md +22 -1
- package/skills/tfx-live/skill.json +0 -5
- package/skills/tfx-plan/SKILL.md +7 -8
- package/skills/tfx-plan/skill.json +1 -12
- package/skills/tfx-profile/SKILL.md +6 -6
- package/skills/tfx-profile/skill.json +0 -3
- package/skills/tfx-prune/SKILL.md +4 -6
- package/skills/tfx-qa/SKILL.md +7 -7
- package/skills/tfx-qa/skill.json +1 -11
- package/skills/tfx-ralph/SKILL.md +8 -11
- package/skills/tfx-remote/SKILL.md +2 -2
- package/skills/tfx-remote/skill.json +0 -3
- package/skills/tfx-research/SKILL.md +2 -2
- package/skills/tfx-research/skill.json +1 -16
- package/skills/tfx-review/SKILL.md +11 -11
- package/skills/tfx-review/skill.json +1 -11
- package/skills/tfx-setup/SKILL.md +5 -6
- package/skills/tfx-setup/skill.json +0 -3
- package/skills/tfx-ship/skill.json +1 -9
- package/skills/tfx-wt/skill.json +0 -7
- package/tui/codex-profile.mjs +2 -1
- package/tui/gemini-profile.mjs +11 -24
- package/tui/monitor.mjs +1 -0
- package/tui/setup.mjs +3 -3
- package/scripts/headless-guard-fast.sh +0 -29
- package/scripts/headless-guard.mjs +0 -523
- package/skills/tfx-autopilot/SKILL.md +0 -51
- package/skills/tfx-autopilot/skill.json +0 -12
- package/skills/tfx-codex-swarm-workspace/iteration-1/benchmark.json +0 -75
- package/skills/tfx-codex-swarm-workspace/iteration-1/full-swarm-all-prds/eval_metadata.json +0 -42
- package/skills/tfx-codex-swarm-workspace/iteration-1/full-swarm-all-prds/with_skill/grading.json +0 -39
- package/skills/tfx-codex-swarm-workspace/iteration-1/full-swarm-all-prds/with_skill/outputs/analysis.md +0 -87
- package/skills/tfx-codex-swarm-workspace/iteration-1/full-swarm-all-prds/with_skill/outputs/classification.md +0 -35
- package/skills/tfx-codex-swarm-workspace/iteration-1/full-swarm-all-prds/with_skill/outputs/commands.sh +0 -275
- package/skills/tfx-codex-swarm-workspace/iteration-1/full-swarm-all-prds/with_skill/outputs/routing.md +0 -56
- package/skills/tfx-codex-swarm-workspace/iteration-1/full-swarm-all-prds/with_skill/timing.json +0 -5
- package/skills/tfx-codex-swarm-workspace/iteration-1/full-swarm-all-prds/without_skill/grading.json +0 -39
- package/skills/tfx-codex-swarm-workspace/iteration-1/full-swarm-all-prds/without_skill/outputs/analysis.md +0 -92
- package/skills/tfx-codex-swarm-workspace/iteration-1/full-swarm-all-prds/without_skill/outputs/classification.md +0 -71
- package/skills/tfx-codex-swarm-workspace/iteration-1/full-swarm-all-prds/without_skill/outputs/commands.sh +0 -264
- package/skills/tfx-codex-swarm-workspace/iteration-1/full-swarm-all-prds/without_skill/outputs/routing.md +0 -113
- package/skills/tfx-codex-swarm-workspace/iteration-1/full-swarm-all-prds/without_skill/timing.json +0 -5
- package/skills/tfx-codex-swarm-workspace/iteration-1/implicit-swarm-no-keywords/eval_metadata.json +0 -32
- package/skills/tfx-codex-swarm-workspace/iteration-1/implicit-swarm-no-keywords/with_skill/grading.json +0 -29
- package/skills/tfx-codex-swarm-workspace/iteration-1/implicit-swarm-no-keywords/with_skill/outputs/analysis.md +0 -96
- package/skills/tfx-codex-swarm-workspace/iteration-1/implicit-swarm-no-keywords/with_skill/outputs/classification.md +0 -38
- package/skills/tfx-codex-swarm-workspace/iteration-1/implicit-swarm-no-keywords/with_skill/outputs/commands.sh +0 -151
- package/skills/tfx-codex-swarm-workspace/iteration-1/implicit-swarm-no-keywords/with_skill/outputs/routing.md +0 -51
- package/skills/tfx-codex-swarm-workspace/iteration-1/implicit-swarm-no-keywords/with_skill/timing.json +0 -5
- package/skills/tfx-codex-swarm-workspace/iteration-1/implicit-swarm-no-keywords/without_skill/grading.json +0 -29
- package/skills/tfx-codex-swarm-workspace/iteration-1/implicit-swarm-no-keywords/without_skill/outputs/analysis.md +0 -127
- package/skills/tfx-codex-swarm-workspace/iteration-1/implicit-swarm-no-keywords/without_skill/outputs/classification.md +0 -57
- package/skills/tfx-codex-swarm-workspace/iteration-1/implicit-swarm-no-keywords/without_skill/outputs/commands.sh +0 -129
- package/skills/tfx-codex-swarm-workspace/iteration-1/implicit-swarm-no-keywords/without_skill/outputs/routing.md +0 -84
- package/skills/tfx-codex-swarm-workspace/iteration-1/implicit-swarm-no-keywords/without_skill/timing.json +0 -5
- package/skills/tfx-codex-swarm-workspace/iteration-1/selective-spawn-with-override/eval_metadata.json +0 -27
- package/skills/tfx-codex-swarm-workspace/iteration-1/selective-spawn-with-override/with_skill/grading.json +0 -24
- package/skills/tfx-codex-swarm-workspace/iteration-1/selective-spawn-with-override/with_skill/outputs/analysis.md +0 -98
- package/skills/tfx-codex-swarm-workspace/iteration-1/selective-spawn-with-override/with_skill/outputs/classification.md +0 -65
- package/skills/tfx-codex-swarm-workspace/iteration-1/selective-spawn-with-override/with_skill/outputs/commands.sh +0 -123
- package/skills/tfx-codex-swarm-workspace/iteration-1/selective-spawn-with-override/with_skill/outputs/routing.md +0 -66
- package/skills/tfx-codex-swarm-workspace/iteration-1/selective-spawn-with-override/with_skill/timing.json +0 -5
- package/skills/tfx-codex-swarm-workspace/iteration-1/selective-spawn-with-override/without_skill/grading.json +0 -20
- package/skills/tfx-codex-swarm-workspace/iteration-1/selective-spawn-with-override/without_skill/outputs/analysis.md +0 -88
- package/skills/tfx-codex-swarm-workspace/iteration-1/selective-spawn-with-override/without_skill/outputs/classification.md +0 -40
- package/skills/tfx-codex-swarm-workspace/iteration-1/selective-spawn-with-override/without_skill/outputs/commands.sh +0 -130
- package/skills/tfx-codex-swarm-workspace/iteration-1/selective-spawn-with-override/without_skill/outputs/routing.md +0 -61
- package/skills/tfx-codex-swarm-workspace/iteration-1/selective-spawn-with-override/without_skill/timing.json +0 -5
- package/skills/tfx-consensus/SKILL.md +0 -56
- package/skills/tfx-consensus/skill.json +0 -8
- package/skills/tfx-debate/SKILL.md +0 -60
- package/skills/tfx-debate/skill.json +0 -14
- package/skills/tfx-fullcycle/SKILL.md +0 -47
- package/skills/tfx-fullcycle/skill.json +0 -13
- package/skills/tfx-multi/SKILL.md +0 -45
- package/skills/tfx-multi/references/agent-wrapper-rules.md +0 -94
- package/skills/tfx-multi/references/thorough-pipeline.md +0 -105
- package/skills/tfx-multi/skill.json +0 -10
- package/skills/tfx-panel/SKILL.md +0 -60
- package/skills/tfx-panel/skill.json +0 -14
- package/skills/tfx-persist/SKILL.md +0 -63
- package/skills/tfx-persist/skill.json +0 -14
- package/skills/tfx-psmux-rules/SKILL.md +0 -41
- package/skills/tfx-psmux-rules/skill.json +0 -10
- package/skills/tfx-remote-setup/SKILL.md +0 -42
- package/skills/tfx-remote-setup/skill.json +0 -10
- package/skills/tfx-remote-spawn/SKILL.md +0 -52
- package/skills/tfx-remote-spawn/skill.json +0 -10
- package/skills/tfx-swarm/SKILL.md +0 -49
- package/skills/tfx-swarm/skill.json +0 -13
|
@@ -154,8 +154,6 @@ options:
|
|
|
154
154
|
description: "[PreToolUse:Bash] 위험 명령 차단 — priority:0, 활성"
|
|
155
155
|
- label: "tfx-agent-route-guard"
|
|
156
156
|
description: "[PreToolUse:Agent] 에이전트 라우팅 — priority:0, 활성"
|
|
157
|
-
- label: "omc-headless-guard"
|
|
158
|
-
description: "[PreToolUse:Bash|Agent] headless 가드 — priority:50, 활성"
|
|
159
157
|
...
|
|
160
158
|
```
|
|
161
159
|
|
|
@@ -1,8 +1,5 @@
|
|
|
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
|
-
],
|
|
7
4
|
"argument_hint": "[scan|apply|restore]"
|
|
8
5
|
}
|
package/skills/tfx-hub/SKILL.md
CHANGED
|
@@ -34,14 +34,9 @@ argument-hint: "<start|stop|status|자유형 작업 설명>"
|
|
|
34
34
|
|
|
35
35
|
fallthrough 라우팅:
|
|
36
36
|
```bash
|
|
37
|
-
# tfx-route.sh 경유 (
|
|
37
|
+
# tfx-route.sh 경유 (codex·agy 직접 호출은 라우팅 규칙상 금지)
|
|
38
38
|
Bash("bash ~/.claude/scripts/tfx-route.sh {에이전트} '{hub 컨텍스트 + 작업}' {mcp_profile}")
|
|
39
39
|
|
|
40
|
-
# codex 직접 호출 시 — 반드시 exec 서브커맨드 포함
|
|
41
|
-
Bash("codex exec --dangerously-bypass-approvals-and-sandbox --skip-git-repo-check '{작업}'")
|
|
42
|
-
Bash("codex --profile gpt56_sol_xhigh exec --dangerously-bypass-approvals-and-sandbox --skip-git-repo-check '{작업}'")
|
|
43
|
-
# ↑ --profile은 exec 앞에, --skip-git-repo-check은 exec 뒤에
|
|
44
|
-
|
|
45
40
|
# Claude 네이티브 (탐색/검증)
|
|
46
41
|
Agent(subagent_type="oh-my-claudecode:explore", model="haiku", prompt="{작업}")
|
|
47
42
|
```
|
|
@@ -1,8 +1,5 @@
|
|
|
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
|
-
],
|
|
7
4
|
"argument_hint": "<start|stop|status|자유형 작업 설명>"
|
|
8
5
|
}
|
|
@@ -1,11 +1,5 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "tfx-index",
|
|
3
3
|
"description": "프로젝트 구조를 빠르게 파악하거나 토큰을 절약할 때 사용한다. '인덱싱', '프로젝트 구조', '인덱스 만들어', '코드베이스 맵', '프로젝트 개요' 같은 요청에 사용. 새 프로젝트 온보딩, 세션 시작 시 컨텍스트 효율화에 적극 활용.",
|
|
4
|
-
"triggers": [
|
|
5
|
-
"인덱싱",
|
|
6
|
-
"프로젝트 인덱스",
|
|
7
|
-
"인덱스",
|
|
8
|
-
"tfx-index"
|
|
9
|
-
],
|
|
10
4
|
"argument_hint": "[--update] [경로]"
|
|
11
5
|
}
|
package/skills/tfx-live/SKILL.md
CHANGED
|
@@ -3,7 +3,7 @@ name: tfx-live
|
|
|
3
3
|
description: >
|
|
4
4
|
Use when Claude, Codex, or a Triflux worker needs live Claude↔Codex orchestration:
|
|
5
5
|
start/ask/stop, multi-turn, peer relay, daemon UDS attach, or UDS-first with tmux fallback.
|
|
6
|
-
argument-hint: "<start|ask|stop|probe|peer|converse|goal-driven> ..."
|
|
6
|
+
argument-hint: "<start|ask|stop|probe|list-sessions|peer|converse|goal-driven> ..."
|
|
7
7
|
---
|
|
8
8
|
|
|
9
9
|
# tfx-live — Claude↔Codex live orchestration
|
|
@@ -54,6 +54,24 @@ For explicit UDS-only failure behavior:
|
|
|
54
54
|
tfx-live ask --cli claude --transport uds --short <8hex> --prompt "..." --timeout 120
|
|
55
55
|
```
|
|
56
56
|
|
|
57
|
+
## Codex tmux session discovery
|
|
58
|
+
|
|
59
|
+
List the Codex CLI sessions already running in tmux; this does not require a
|
|
60
|
+
prior `tfx-live start`. The JSON result includes the tmux session name, start
|
|
61
|
+
time, current working directory, and attachment state.
|
|
62
|
+
|
|
63
|
+
```bash
|
|
64
|
+
# All locally running Codex tmux sessions
|
|
65
|
+
tfx-live list-sessions --cli codex
|
|
66
|
+
|
|
67
|
+
# Limit discovery to sessions whose pane cwd exactly matches this worktree
|
|
68
|
+
tfx-live list-sessions --cli codex --cwd ~/Projects/my-worktree
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
`probe` remains the Claude daemon/UDS discovery command. Use
|
|
72
|
+
`list-sessions --cli codex` when selecting an existing Codex tmux session to
|
|
73
|
+
pass to `tfx-live ask --session <name>`.
|
|
74
|
+
|
|
57
75
|
## Peer relay
|
|
58
76
|
|
|
59
77
|
```bash
|
|
@@ -99,6 +117,9 @@ tfx-live --help
|
|
|
99
117
|
|
|
100
118
|
# Probe daemon sessions through Triflux bridge
|
|
101
119
|
tfx-live probe
|
|
120
|
+
|
|
121
|
+
# Discover existing Codex tmux sessions
|
|
122
|
+
tfx-live list-sessions --cli codex
|
|
102
123
|
```
|
|
103
124
|
|
|
104
125
|
If auto falls back, inspect `~/.claude/cache/triflux/tfx-live/bug-reports/uds-fallback-*.json` (override with `$TFX_LIVE_BUG_REPORT_DIR` for tests).
|
|
@@ -1,10 +1,5 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "tfx-live",
|
|
3
3
|
"description": "Use when Claude, Codex, or a Triflux worker needs live Claude↔Codex orchestration: start/ask/stop, multi-turn, peer relay, daemon UDS attach, or UDS-first with tmux fallback.",
|
|
4
|
-
"triggers": [
|
|
5
|
-
"tfx-live",
|
|
6
|
-
"claude-codex-live",
|
|
7
|
-
"codex-claude-live"
|
|
8
|
-
],
|
|
9
4
|
"argument_hint": "<start|ask|stop|probe|peer|converse|goal-driven> ..."
|
|
10
5
|
}
|
package/skills/tfx-plan/SKILL.md
CHANGED
|
@@ -26,17 +26,16 @@ argument-hint: "<구현할 기능> [--quick]"
|
|
|
26
26
|
### 전제조건 프로브 및 Tier Degradation
|
|
27
27
|
|
|
28
28
|
```bash
|
|
29
|
-
|
|
30
|
-
curl -sf http://127.0.0.1:27888/status >/dev/null && \
|
|
29
|
+
curl -sf http://127.0.0.1:27888/status >/dev/null && \
|
|
31
30
|
codex --version 2>/dev/null && \
|
|
32
31
|
agy --version 2>/dev/null
|
|
33
32
|
```
|
|
34
33
|
|
|
35
34
|
| Tier | 조건 | 실행 |
|
|
36
35
|
|------|------|------|
|
|
37
|
-
| **Tier 1** | 전부 정상 |
|
|
36
|
+
| **Tier 1** | Hub + 필요 CLI 전부 정상 | auto multi 3-Model (tmux/psmux 리드면 interactive) |
|
|
38
37
|
| **Tier 2** | 일부 CLI | 가용 + Claude Agent |
|
|
39
|
-
| **Tier 3** |
|
|
38
|
+
| **Tier 3** | Hub 또는 필요 CLI 불가 | Claude Agent only |
|
|
40
39
|
|
|
41
40
|
Tier 3:
|
|
42
41
|
```
|
|
@@ -46,7 +45,7 @@ Tier 3:
|
|
|
46
45
|
|
|
47
46
|
### HARD RULES
|
|
48
47
|
1. `codex exec` 직접 호출 및 deprecated Gemini CLI 직접 호출 금지
|
|
49
|
-
2. Codex/Antigravity → `Bash("tfx multi --
|
|
48
|
+
2. Codex/Antigravity → `Bash("tfx multi --assign ...")` 만. teammate mode는 생략해 `auto` 기본값을 쓴다.
|
|
50
49
|
3. Claude → `Agent(run_in_background=true)`
|
|
51
50
|
4. Bash + Agent 동시 호출
|
|
52
51
|
5. deprecated Gemini CLI 또는 legacy Gemini assign 금지. Antigravity는 `antigravity:`/`agy` 이름만 사용한다.
|
|
@@ -91,12 +90,12 @@ Agent(
|
|
|
91
90
|
|
|
92
91
|
**Bash (Codex Architect):**
|
|
93
92
|
```
|
|
94
|
-
Bash("tfx multi --
|
|
93
|
+
Bash("tfx multi --auto-attach --dashboard \
|
|
95
94
|
--assign 'codex:시니어 엔지니어 기술 설계. 기능: [TASK]. 코드베이스: [RECON]. JSON: { architecture, components, data_models, api, files, impl_notes, confidence }:architect' \
|
|
96
95
|
--timeout 1800", run_in_background=true)
|
|
97
96
|
```
|
|
98
97
|
|
|
99
|
-
> 배리어: 위 dispatch는 background — architect JSON을 소비하는 단계 전에 task-notification
|
|
98
|
+
> 배리어: 위 dispatch는 background — architect JSON을 소비하는 단계 전에 task-notification 완료를 확인하고 team runtime이 제공한 결과에서 회수한다.
|
|
100
99
|
|
|
101
100
|
**Agent (Claude Critic fallback, schema-valid path):**
|
|
102
101
|
```
|
|
@@ -171,7 +170,7 @@ consensus_score = CONSENSUS / 전체 * 100
|
|
|
171
170
|
### Step 2: Antigravity 위임
|
|
172
171
|
|
|
173
172
|
```
|
|
174
|
-
Bash("
|
|
173
|
+
Bash("agy --dangerously-skip-permissions --print '소프트웨어 아키텍트로서 구현 계획. 기능: {feature}. 컨텍스트: {context}. 파일: {file_list}. 출력: 1) 영향 범위 2) 태스크 분해 (검증 방법 포함) 3) 리스크/의존성 4) 복잡도' --print-timeout 10m")
|
|
175
174
|
```
|
|
176
175
|
|
|
177
176
|
**Fallback**: Antigravity 실패 시 Claude Opus 직접.
|
|
@@ -1,17 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "tfx-plan",
|
|
3
|
-
"description": "구현 계획이 필요할 때 사용한다. '계획 세워줘', 'plan', '플랜', '어떻게 구현하지', '태스크 분해', '작업 순서', '합의 계획', 'ralplan', '철저한 계획' 같은 요청에 반드시 사용.
|
|
4
|
-
"triggers": [
|
|
5
|
-
"plan",
|
|
6
|
-
"계획",
|
|
7
|
-
"플랜",
|
|
8
|
-
"설계",
|
|
9
|
-
"deep plan",
|
|
10
|
-
"합의 계획",
|
|
11
|
-
"consensus plan",
|
|
12
|
-
"deep-plan",
|
|
13
|
-
"ralplan"
|
|
14
|
-
],
|
|
3
|
+
"description": "구현 계획이 필요할 때 사용한다. '계획 세워줘', 'plan', '플랜', '어떻게 구현하지', '태스크 분해', '작업 순서', '합의 계획', 'ralplan', '철저한 계획' 같은 요청에 반드시 사용.",
|
|
15
4
|
"argument_hint": "<구현할 기능> [--quick]",
|
|
16
5
|
"internal": true
|
|
17
6
|
}
|
|
@@ -78,9 +78,9 @@ options:
|
|
|
78
78
|
- label: "gpt56_terra_high" → 기본 고품질 (Recommended)
|
|
79
79
|
- label: "gpt56_terra_med" → 균형형
|
|
80
80
|
- label: "gpt56_luna_low" → 빠른 경량
|
|
81
|
-
- label: "
|
|
82
|
-
- label: "
|
|
83
|
-
- label: "
|
|
81
|
+
- label: "gpt6_astra_xhigh" → 고강도 추론
|
|
82
|
+
- label: "gpt6_astra_max" → 최난도 단일 작업
|
|
83
|
+
- label: "gpt6_astra_ultra" → 최상위 자동 위임 (비중첩 전용)
|
|
84
84
|
- label: "custom" → 사용자가 관리하는 프로필
|
|
85
85
|
```
|
|
86
86
|
3. AskUserQuestion으로 effort 선택: `low | medium | high | xhigh | max | ultra`
|
|
@@ -188,9 +188,9 @@ options:
|
|
|
188
188
|
| 프로필 | 용도 |
|
|
189
189
|
|------|------|
|
|
190
190
|
| gpt56_terra_high | 기본 고품질 |
|
|
191
|
-
|
|
|
192
|
-
|
|
|
193
|
-
|
|
|
191
|
+
| gpt6_astra_xhigh | 고강도 추론 |
|
|
192
|
+
| gpt6_astra_max | 최난도 단일 작업 |
|
|
193
|
+
| gpt6_astra_ultra | 최상위 자동 위임 (비중첩 전용) |
|
|
194
194
|
| gpt56_terra_med | 균형형 |
|
|
195
195
|
| gpt56_luna_low | 빠른 경량 |
|
|
196
196
|
| custom | 사용자가 관리하는 프로필 |
|
|
@@ -1,8 +1,5 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "tfx-profile",
|
|
3
3
|
"description": "Codex/Antigravity CLI 프로파일·모델 관리 인터랙티브 UI. tfx-route가 사용하는 프로파일 목록 조회, 모델 변경, effort 조정, 추가/삭제를 AskUserQuestion 기반 인터랙티브 선택지로 수행합니다. Use when: codex profile, codex model, gemini profile, gemini model, 프로파일 변경, 모델 변경, effort 변경, codex 설정, gemini 설정, profile manager, 프로파일 관리, 어떤 모델, tfx profile",
|
|
4
|
-
"triggers": [
|
|
5
|
-
"tfx-profile"
|
|
6
|
-
],
|
|
7
4
|
"argument_hint": "[--list] [--codex | --gemini]"
|
|
8
5
|
}
|
|
@@ -18,10 +18,10 @@ argument-hint: "[파일 경로 또는 git diff 범위]"
|
|
|
18
18
|
|
|
19
19
|
## HARD RULES
|
|
20
20
|
|
|
21
|
-
>
|
|
21
|
+
> 자동 차단 훅은 없다. 아래 규칙은 호출자가 지킨다.
|
|
22
22
|
|
|
23
23
|
1. **`codex exec` 직접 호출 및 deprecated Gemini CLI 직접 호출 절대 금지**
|
|
24
|
-
2. Codex·Antigravity → `Bash("tfx multi --
|
|
24
|
+
2. Codex·Antigravity → `Bash("tfx multi --auto-attach --dashboard --assign 'cli:프롬프트:역할' --timeout 1800", run_in_background=true)` **만** 사용 — teammate mode는 생략해 `auto` 기본값을 쓰며, foreground Bash는 하니스가 600s에 강제 종료. 결과는 task-notification 후 회수
|
|
25
25
|
3. Claude → `Agent(run_in_background=true)`
|
|
26
26
|
4. Bash + Agent를 같은 메시지에서 동시 호출하여 병렬 실행
|
|
27
27
|
|
|
@@ -94,13 +94,13 @@ severity: critical(기능에 영향) | high(가독성 심각) | medium(개선) |
|
|
|
94
94
|
|
|
95
95
|
Codex + Antigravity (Bash, background):
|
|
96
96
|
```
|
|
97
|
-
Bash("tfx multi --
|
|
97
|
+
Bash("tfx multi --auto-attach --dashboard \
|
|
98
98
|
--assign 'codex:다음 파일에서 AI 슬롭을 감지하세요. 구현 효율 관점(중복 패턴, 과잉 에러핸들링, 미사용 코드)으로 분석. 파일: {file_content}. JSON: [{id,category,line_start,line_end,description,severity,suggested_fix}]. severity: critical|high|medium|low. 과탐보다 미탐이 낫습니다.:slop-detector' \
|
|
99
99
|
--assign 'antigravity:다음 파일에서 AI 슬롭을 감지하세요. 가독성/DX 관점(과잉 주석, 과잉 타입, 불필요 추상화)으로 분석. 파일: {file_content}. JSON: [{id,category,line_start,line_end,description,severity,suggested_fix}]. severity: critical|high|medium|low. 과탐보다 미탐이 낫습니다.:readability-reviewer' \
|
|
100
100
|
--timeout 1800", run_in_background=true)
|
|
101
101
|
```
|
|
102
102
|
|
|
103
|
-
> 배리어: 위 dispatch는 background — task-notification 완료
|
|
103
|
+
> 배리어: 위 dispatch는 background — task-notification 완료 후 team runtime 결과에서 결과를 회수하고, Agent 결과도 수집한 다음에만 Step 3을 진행한다.
|
|
104
104
|
|
|
105
105
|
### Step 3: 합의 필터링
|
|
106
106
|
|
|
@@ -193,6 +193,4 @@ for each finding in ALL results:
|
|
|
193
193
|
/tfx-prune
|
|
194
194
|
/tfx-prune src/auth/middleware.ts
|
|
195
195
|
/tfx-prune HEAD~5..HEAD
|
|
196
|
-
/정리 src/
|
|
197
|
-
/anti-slop "과잉 에러 핸들링 제거"
|
|
198
196
|
```
|
package/skills/tfx-qa/SKILL.md
CHANGED
|
@@ -36,20 +36,20 @@ psmux --version 2>/dev/null && \
|
|
|
36
36
|
|
|
37
37
|
| Tier | 조건 | 실행 방식 |
|
|
38
38
|
|------|------|----------|
|
|
39
|
-
| **Tier 1** | 전부 정상 |
|
|
39
|
+
| **Tier 1** | 전부 정상 | auto multi 3-CLI (tmux/psmux 리드면 interactive) |
|
|
40
40
|
| **Tier 2** | 일부 CLI | 가용 CLI + Claude Agent |
|
|
41
|
-
| **Tier 3** |
|
|
41
|
+
| **Tier 3** | Hub 또는 필요 CLI 불가 | Claude Agent only |
|
|
42
42
|
|
|
43
43
|
Tier 3 시:
|
|
44
44
|
```
|
|
45
|
-
⚠ [Tier 3]
|
|
45
|
+
⚠ [Tier 3] multi 실행 환경 미충족 (consensus 미적용)
|
|
46
46
|
누락: {missing} | 권장: 설치 후 재실행 또는 /tfx-qa --quick
|
|
47
47
|
```
|
|
48
48
|
|
|
49
49
|
### HARD RULES
|
|
50
50
|
|
|
51
51
|
1. `codex exec` 직접 호출 및 deprecated Gemini CLI 직접 호출 금지
|
|
52
|
-
2. Codex/Antigravity → `Bash("tfx multi --
|
|
52
|
+
2. Codex/Antigravity → `Bash("tfx multi --assign ...")` 만. teammate mode는 생략해 `auto` 기본값을 쓴다.
|
|
53
53
|
3. Claude → `Agent(run_in_background=true)`
|
|
54
54
|
4. Bash + Agent 동시 호출
|
|
55
55
|
|
|
@@ -83,10 +83,10 @@ Agent(
|
|
|
83
83
|
|
|
84
84
|
**Codex + Antigravity headless:**
|
|
85
85
|
```
|
|
86
|
-
Bash("tfx multi --
|
|
86
|
+
Bash("tfx multi --auto-attach --dashboard --assign 'codex:보안/성능 전문가. OWASP Top 10, O(n²), 메모리 누수, 입력 검증 누락. JSON: { findings: [...], overall_verdict: \"pass\"|\"fail\" }:verifier' --assign 'antigravity:UX/접근성 전문가. API 응답 일관성, 에러 메시지, WCAG 2.1 AA, 문서-동작 일치. JSON: { findings: [...], overall_verdict: \"pass\"|\"fail\" }:verifier' --timeout 1800", run_in_background=true)
|
|
87
87
|
```
|
|
88
88
|
|
|
89
|
-
> 배리어: 위 dispatch는 background — task-notification 완료
|
|
89
|
+
> 배리어: 위 dispatch는 background — task-notification 완료 후 team runtime 결과에서 verifier 결과를 회수하고, Agent 결과도 수집한 다음에만 Step 3을 진행한다.
|
|
90
90
|
|
|
91
91
|
#### Step 3: Consensus Scoring
|
|
92
92
|
- 동일 파일+라인±5 + 유사 카테고리 → 동일 이슈
|
|
@@ -95,7 +95,7 @@ Bash("tfx multi --teammate-mode headless --auto-attach --dashboard --assign 'cod
|
|
|
95
95
|
#### Step 4: 합의된 Critical/High 수정
|
|
96
96
|
|
|
97
97
|
```
|
|
98
|
-
Bash("tfx multi --
|
|
98
|
+
Bash("tfx multi --assign 'codex:합의된 이슈 수정. 최소 변경으로 수정 + 테스트 재실행: {consensus_findings}:fixer' --timeout 900", run_in_background=true)
|
|
99
99
|
```
|
|
100
100
|
|
|
101
101
|
> 배리어: fixer도 background — task-notification 완료 후 수정 결과를 확인한 다음에만 Step 5 보고서를 작성한다.
|
package/skills/tfx-qa/skill.json
CHANGED
|
@@ -1,16 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "tfx-qa",
|
|
3
|
-
"description": "테스트/검증이 필요할 때 사용한다. 'qa', '검증해', '테스트 돌려', 'test-fix', '심층 검증', '철저히 테스트', '보안까지 확인', '전방위 검증' 같은 요청에 반드시 사용.
|
|
4
|
-
"triggers": [
|
|
5
|
-
"qa",
|
|
6
|
-
"검증",
|
|
7
|
-
"테스트 검증",
|
|
8
|
-
"test-fix",
|
|
9
|
-
"deep qa",
|
|
10
|
-
"심층 검증",
|
|
11
|
-
"thorough test",
|
|
12
|
-
"deep-qa"
|
|
13
|
-
],
|
|
3
|
+
"description": "테스트/검증이 필요할 때 사용한다. 'qa', '검증해', '테스트 돌려', 'test-fix', '심층 검증', '철저히 테스트', '보안까지 확인', '전방위 검증' 같은 요청에 반드시 사용.",
|
|
14
4
|
"argument_hint": "[테스트 대상] [--quick]",
|
|
15
5
|
"internal": true
|
|
16
6
|
}
|
|
@@ -2,27 +2,24 @@
|
|
|
2
2
|
internal: true
|
|
3
3
|
name: tfx-ralph
|
|
4
4
|
description: >
|
|
5
|
-
tfx-
|
|
6
|
-
|
|
7
|
-
Use when: ralph, 끝까지, don't stop, 멈추지 마
|
|
8
|
-
triggers:
|
|
9
|
-
- tfx-ralph
|
|
10
|
-
- ralph
|
|
5
|
+
tfx-auto의 완료 보장 retry 별칭. 'ralph', '끝까지', '끝까지 해', '멈추지 마' 같은
|
|
6
|
+
요청에 사용하며, 원래 요청을 tfx-auto의 --retry ralph 상태 머신으로 전달한다.
|
|
11
7
|
---
|
|
12
8
|
|
|
13
|
-
# tfx-ralph — tfx-
|
|
9
|
+
# tfx-ralph — tfx-auto ralph retry 별칭
|
|
14
10
|
|
|
15
11
|
> **ARGUMENTS 처리**: 이 스킬이 `ARGUMENTS: <값>`과 함께 호출되면, 해당 값을 사용자 입력으로 취급하여
|
|
16
12
|
> 워크플로우의 첫 단계 입력으로 사용한다. ARGUMENTS가 비어있거나 없으면 기존 절차대로 사용자에게 입력을 요청한다.
|
|
17
13
|
|
|
18
14
|
|
|
19
|
-
이 스킬은
|
|
15
|
+
이 스킬은 install-time 별칭을 경유하지 않고 canonical owner인 `tfx-auto`로 직접 전달한다.
|
|
20
16
|
|
|
21
17
|
## 동작
|
|
22
18
|
|
|
23
|
-
|
|
19
|
+
사용자의 원래 요청을 task 인자로 그대로 전달하고 다음 형태로 실행한다:
|
|
24
20
|
```
|
|
25
|
-
|
|
21
|
+
/tfx-auto "<원래 요청>" --retry ralph
|
|
26
22
|
```
|
|
27
23
|
|
|
28
|
-
|
|
24
|
+
`--retry ralph`의 기본 `--max-iterations 0`은 unlimited이며, 반복 실패가 같은 원인으로
|
|
25
|
+
3회 이어지면 상태 머신이 `STUCK`으로 중단한다.
|
|
@@ -70,7 +70,7 @@ preflight 실패 시 중단만 하지 말고 아래 중 하나로 복귀시킨
|
|
|
70
70
|
### `tfx-remote kill`
|
|
71
71
|
|
|
72
72
|
공식 public subcommand다. 세션 종료 전에 psmux/WT 정리 규칙은
|
|
73
|
-
`.claude/rules/tfx-psmux.md
|
|
73
|
+
`.claude/rules/tfx-psmux.md`의 detach-first 정책을 따른다.
|
|
74
74
|
|
|
75
75
|
## hosts.json contract
|
|
76
76
|
|
|
@@ -86,5 +86,5 @@ canonical host로 정규화한다.
|
|
|
86
86
|
|
|
87
87
|
허용 범위 안에서 Phase 4b가 완료되었는지 확인할 때 최소 검증은 아래와 같다.
|
|
88
88
|
- `node hub/lib/hosts-compat.mjs --self-test`
|
|
89
|
-
- `Get-FileHash .claude/rules/tfx-psmux.md
|
|
89
|
+
- `Get-FileHash .claude/rules/tfx-psmux.md`
|
|
90
90
|
- legacy alias 문서가 모두 `tfx-remote` 또는 rule 문서로 위임되는지 확인
|
|
@@ -1,8 +1,5 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "tfx-remote",
|
|
3
3
|
"description": "원격 관련 표면을 setup/spawn 계열 하나로 통합한 엔트리포인트. setup, spawn, list, attach, send, resume, kill, probe 하위 명령을 기준으로 기존 tfx-remote-setup/tfx-remote-spawn 흐름을 축소 통합한다.",
|
|
4
|
-
"triggers": [
|
|
5
|
-
"tfx-remote"
|
|
6
|
-
],
|
|
7
4
|
"argument_hint": "[setup|spawn|list|attach|send|resume|kill|probe] ..."
|
|
8
5
|
}
|
|
@@ -70,12 +70,12 @@ Agent(
|
|
|
70
70
|
|
|
71
71
|
**Bash (Codex + Brave):** *(Antigravity/agy 제외 — agy --print 는 무거운 리서치에서 idle 미도달 시 5분 행; route 에서 --print-timeout 180s 로 bound)*
|
|
72
72
|
```
|
|
73
|
-
Bash("tfx multi --
|
|
73
|
+
Bash("tfx multi --auto-attach --dashboard \
|
|
74
74
|
--assign 'codex:서브쿼리를 Brave Search 로 검색. 서브쿼리: {sub_queries}. 관점: 실용/산업. brave_web_search + brave_news_search, freshness=pw. 각 쿼리 상위 5개 구조화.:researcher' \
|
|
75
75
|
--timeout 1800", run_in_background=true)
|
|
76
76
|
```
|
|
77
77
|
|
|
78
|
-
> 배리어: 위 dispatch는 background — task-notification 완료
|
|
78
|
+
> 배리어: 위 dispatch는 background — task-notification 완료 후 team runtime 결과에서 검색 결과를 회수하고, Agent 결과도 수집한 다음에만 Step 3을 진행한다.
|
|
79
79
|
|
|
80
80
|
#### Step 3: 결과 수집 및 교차검증
|
|
81
81
|
|
|
@@ -1,21 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "tfx-research",
|
|
3
|
-
"description": "웹 검색/리서치가 필요할 때 사용한다. '검색해줘', '찾아봐', '최신 정보', '이거 뭐야', '심층 조사', '자세히 알아봐', 'deep research', '전면 리서치', '자율 리서치', '조사해', 'research and plan' 같은 요청에 반드시 사용. 추가로 'X 있나?', 'X 쓸 수 있나?', 'X 풀려있어?', 'X 어떻게 쓰는지', 'X 가능한가?', '방법 있나?', 'X 살아있나?' 같은 도구·기능 존재/사용법/상태 의문문에도 사용.
|
|
4
|
-
"triggers": [
|
|
5
|
-
"tfx-research",
|
|
6
|
-
"리서치",
|
|
7
|
-
"검색",
|
|
8
|
-
"찾아줘",
|
|
9
|
-
"search",
|
|
10
|
-
"web search",
|
|
11
|
-
"deep research",
|
|
12
|
-
"심층 리서치",
|
|
13
|
-
"deep-research",
|
|
14
|
-
"autoresearch",
|
|
15
|
-
"자율 리서치",
|
|
16
|
-
"조사해",
|
|
17
|
-
"알아봐"
|
|
18
|
-
],
|
|
3
|
+
"description": "웹 검색/리서치가 필요할 때 사용한다. '검색해줘', '찾아봐', '최신 정보', '이거 뭐야', '심층 조사', '자세히 알아봐', 'deep research', '전면 리서치', '자율 리서치', '조사해', 'research and plan' 같은 요청에 반드시 사용. 추가로 'X 있나?', 'X 쓸 수 있나?', 'X 풀려있어?', 'X 어떻게 쓰는지', 'X 가능한가?', '방법 있나?', 'X 살아있나?' 같은 도구·기능 존재/사용법/상태 의문문에도 사용.",
|
|
19
4
|
"argument_hint": "<주제> [--quick | --auto] [--depth quick|standard|deep]",
|
|
20
5
|
"internal": true
|
|
21
6
|
}
|
|
@@ -45,12 +45,12 @@ ARGUMENTS 에 `--quick` 포함 → **Quick 모드** (아래 Quick 섹션).
|
|
|
45
45
|
|
|
46
46
|
| Tier | 조건 | 실행 방식 |
|
|
47
47
|
|------|------|----------|
|
|
48
|
-
| **Tier 1** |
|
|
48
|
+
| **Tier 1** | Hub + Codex + Antigravity 전부 정상 | auto multi 3-CLI (tmux/psmux 리드면 interactive) |
|
|
49
49
|
| **Tier 2** | Codex 또는 Antigravity 중 하나만 가용 | 가용 CLI + Claude Agent 조합 |
|
|
50
|
-
| **Tier 3** |
|
|
50
|
+
| **Tier 3** | Hub 또는 필요 CLI 불가, 또는 `claude -p` one-shot | Claude Agent only (consensus 미적용) |
|
|
51
51
|
|
|
52
52
|
```
|
|
53
|
-
IF claude -p (one-shot)
|
|
53
|
+
IF claude -p (one-shot):
|
|
54
54
|
→ Tier 3
|
|
55
55
|
|
|
56
56
|
IF Hub 미응답:
|
|
@@ -71,18 +71,18 @@ ELSE:
|
|
|
71
71
|
### Tier 3 진입 시 필수 출력
|
|
72
72
|
|
|
73
73
|
```
|
|
74
|
-
⚠ [Tier 3]
|
|
74
|
+
⚠ [Tier 3] multi 실행 환경 미충족 — single-model 모드로 실행합니다 (consensus 미적용)
|
|
75
75
|
누락: {missing_components}
|
|
76
|
-
권장:
|
|
76
|
+
권장: Hub, Codex CLI, Antigravity CLI 설치 후 재실행
|
|
77
77
|
또는 /tfx-review --quick 으로 명시적 quick 경로 사용
|
|
78
78
|
```
|
|
79
79
|
|
|
80
80
|
### HARD RULES (Tier 1/2)
|
|
81
81
|
|
|
82
|
-
>
|
|
82
|
+
> 자동 차단 훅은 없다. 아래 규칙은 호출자가 지킨다.
|
|
83
83
|
|
|
84
84
|
1. **`codex exec` 직접 호출 및 deprecated Gemini CLI 직접 호출 절대 금지**
|
|
85
|
-
2. Codex·Antigravity → `Bash("tfx multi --
|
|
85
|
+
2. Codex·Antigravity → `Bash("tfx multi --auto-attach --dashboard --assign 'cli:프롬프트:역할' --timeout 1800", run_in_background=true)` **만** 사용 — teammate mode는 생략해 `auto` 기본값을 쓰며, foreground Bash는 하니스가 600s에 강제 종료. 결과는 task-notification 후 회수
|
|
86
86
|
3. Claude → `Agent(run_in_background=true)`
|
|
87
87
|
4. Bash + Agent를 같은 메시지에서 동시 호출하여 병렬 실행
|
|
88
88
|
|
|
@@ -113,12 +113,12 @@ Agent(
|
|
|
113
113
|
)
|
|
114
114
|
```
|
|
115
115
|
|
|
116
|
-
**Codex + Antigravity
|
|
116
|
+
**Codex + Antigravity multi dispatch (auto):**
|
|
117
117
|
```
|
|
118
|
-
Bash("tfx multi --
|
|
118
|
+
Bash("tfx multi --auto-attach --dashboard --assign 'codex:보안/성능 전문가로서 이 코드를 분석하라. OWASP Top 10 취약점 확인. O(n²) 이상의 성능 병목 식별. 누락된 에러 핸들링 지적. JSON: { findings: [{ id, file, line, severity, category, description, suggestion }] }:reviewer' --assign 'antigravity:코드 품질 전문가로서 이 코드를 분석하라. 가독성과 네이밍 컨벤션 평가. 주석이 필요한 복잡한 로직 식별. 타입 안전성 문제 지적. JSON: { findings: [{ id, file, line, severity, category, description, suggestion }] }:reviewer' --timeout 1800", run_in_background=true)
|
|
119
119
|
```
|
|
120
120
|
|
|
121
|
-
> 배리어: 위 dispatch는 background — task-notification 완료
|
|
121
|
+
> 배리어: 위 dispatch는 background — task-notification 완료 후 team runtime 결과에서 Codex/Antigravity findings를 회수하고, Agent 결과도 TaskOutput으로 수집한 다음에만 Step 3을 진행한다.
|
|
122
122
|
|
|
123
123
|
#### Step 3: Consensus Scoring
|
|
124
124
|
|
|
@@ -163,7 +163,7 @@ Bash("tfx multi --teammate-mode headless --auto-attach --dashboard --assign 'cod
|
|
|
163
163
|
|
|
164
164
|
| 오류 | 조치 |
|
|
165
165
|
|------|------|
|
|
166
|
-
|
|
|
166
|
+
| multi dispatch 타임아웃 | 부분 출력(PARTIAL OUTPUT/.partial) 먼저 회수, 미완료분만 `--timeout 3600` + run_in_background 로 재시도 |
|
|
167
167
|
| Agent 결과 미수신 | Step 2를 Agent만 단독 재실행 |
|
|
168
168
|
| consensus 0% | 대상 범위가 너무 넓음 — 파일 단위 분할 후 재실행 |
|
|
169
169
|
| `tfx multi` 명령 실패 | `tfx status`로 teammate 연결 상태 확인 |
|
|
@@ -1,16 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "tfx-review",
|
|
3
|
-
"description": "코드 리뷰가 필요할 때 사용한다. 'review', '리뷰해줘', '코드 봐줘', '이거 괜찮아?', 'PR 리뷰', '변경사항 확인', '꼼꼼히 리뷰', 'deep review', '심층 리뷰', '보안까지 리뷰', '다각도 리뷰' 같은 요청에 반드시 사용.
|
|
4
|
-
"triggers": [
|
|
5
|
-
"review",
|
|
6
|
-
"리뷰",
|
|
7
|
-
"코드 리뷰",
|
|
8
|
-
"code review",
|
|
9
|
-
"deep review",
|
|
10
|
-
"심층 리뷰",
|
|
11
|
-
"꼼꼼히 리뷰",
|
|
12
|
-
"multi review"
|
|
13
|
-
],
|
|
3
|
+
"description": "코드 리뷰가 필요할 때 사용한다. 'review', '리뷰해줘', '코드 봐줘', '이거 괜찮아?', 'PR 리뷰', '변경사항 확인', '꼼꼼히 리뷰', 'deep review', '심층 리뷰', '보안까지 리뷰', '다각도 리뷰' 같은 요청에 반드시 사용.",
|
|
14
4
|
"argument_hint": "[파일 경로 또는 변경 설명] [--quick]",
|
|
15
5
|
"internal": true
|
|
16
6
|
}
|
|
@@ -22,7 +22,7 @@ triflux 자체는 cross-platform (macOS / Linux / Windows) 이지만, 일부 안
|
|
|
22
22
|
|------|---------|---------------|
|
|
23
23
|
| 탭/패인 매니저 | Windows Terminal (`wt.exe`) → `wt-manager.mjs` 경유 필수 | 별도 매니저 없음. `hub/team/terminal-opener.mjs` 의 3단계 fallback (win32→wt-manager / tmux 감지→tmux/psmux / darwin→Terminal.app) 으로 동작 |
|
|
24
24
|
| psmux | `winget install psmux` / `scoop install psmux` / `choco install psmux` / `cargo install psmux` | Windows용 native tmux. macOS/Linux는 `tmux`가 primary |
|
|
25
|
-
| `<psmux-wt>` 룰 (CLAUDE.md /
|
|
25
|
+
| `<psmux-wt>` 룰 (CLAUDE.md / `.claude/rules/tfx-psmux.md`) | RULE 1~3, 5~6, 8 적용 (PowerShell, wt-manager, WT layout) | RULE 1~3, 5~6, 8 skip 가능. RULE 4 (Codex CLI 인자) 와 gpt55 profile policy 는 공통 적용 |
|
|
26
26
|
| `tfx doctor` 의 WT 항목 | `WT: <version>` 또는 `WT: not found` | 현재 build 는 `WT: not found` 로 표시될 수 있음 — Windows 미설치이므로 정상. 후속 PR 에서 `WT: N/A (non-Windows)` 로 명시 표기 예정 |
|
|
27
27
|
| 셸 | PowerShell 7+ 우선 (`pwsh -File` 필수) | zsh (macOS 기본) / bash. 인라인 명령 가능 |
|
|
28
28
|
| 경로 | Windows 형식 (`C:\Users\...`) | POSIX (`/Users/...`, `$HOME`) |
|
|
@@ -68,7 +68,6 @@ Bash("triflux setup")
|
|
|
68
68
|
필수 훅 목록:
|
|
69
69
|
| 이벤트 | matcher | 스크립트 | 역할 |
|
|
70
70
|
|--------|---------|---------|------|
|
|
71
|
-
| PreToolUse | Bash\|Agent | headless-guard-fast.sh | Codex/Antigravity 직접 호출 차단 |
|
|
72
71
|
| PreToolUse | Bash | psmux-safety-guard.mjs | psmux kill-session 직접 호출 차단 (WT 프리징 방지) |
|
|
73
72
|
| PreToolUse | Skill | tfx-gate-activate.mjs | tfx-multi 게이트 |
|
|
74
73
|
|
|
@@ -113,7 +112,7 @@ Bash("triflux setup")
|
|
|
113
112
|
#### 단계 3: Codex 프로파일
|
|
114
113
|
|
|
115
114
|
`~/.codex/config.toml`을 Read 도구로 읽어 필수 프로파일 존재 여부 확인.
|
|
116
|
-
필수: `
|
|
115
|
+
필수: `gpt6_astra_ultra`, `gpt6_astra_max`, `gpt6_astra_xhigh`, `gpt56_terra_high`, `gpt56_terra_med`, `gpt56_luna_low`.
|
|
117
116
|
|
|
118
117
|
- 모두 존재 → ✅ 표시
|
|
119
118
|
- 누락 있으면 → AskUserQuestion:
|
|
@@ -202,7 +201,7 @@ options:
|
|
|
202
201
|
```
|
|
203
202
|
|
|
204
203
|
**CLAUDE.md 주입 (필수):** 감지된 config.toml 설정을 프로젝트 CLAUDE.md의 `<codex-config>` 섹션에 반영한다.
|
|
205
|
-
이렇게 해야 훅(
|
|
204
|
+
이렇게 해야 훅(safety-guard)이 명령을 차단하거나 Codex 가 플래그 충돌로 실패했을 때, Claude가 차단 메시지를 읽고 "왜 차단됐는지" + "어떻게 수정해야 하는지"를 CLAUDE.md에서 찾아서 올바르게 재시도할 수 있다.
|
|
206
205
|
|
|
207
206
|
주입 예시 (Edit 도구로 `<codex-config>` 섹션 업데이트):
|
|
208
207
|
```markdown
|
|
@@ -221,8 +220,8 @@ config.toml에 이미 설정된 값은 CLI 플래그로 중복 지정하지 않
|
|
|
221
220
|
```
|
|
222
221
|
|
|
223
222
|
차단 → 수정 흐름:
|
|
224
|
-
1.
|
|
225
|
-
2.
|
|
223
|
+
1. Codex 가 `codex exec --full-auto` 를 중복 플래그로 거부
|
|
224
|
+
2. 오류 메시지: "config.toml에 approval_mode=full-auto 있으므로 --full-auto 중복"
|
|
226
225
|
3. Claude가 CLAUDE.md `<codex-config>` 읽음 → `--full-auto` 제거 후 재실행
|
|
227
226
|
4. 동일 실수 반복 방지
|
|
228
227
|
|
|
@@ -1,8 +1,5 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "tfx-setup",
|
|
3
3
|
"description": "triflux 초기 설정 및 진단. AskUserQuestion 기반 인터랙티브 위저드로 파일 동기화, HUD 설정, Codex 프로파일, CLI 진단, MCP 확인, 검색 MCP 설정을 수행합니다. Use when: setup, 설정, 설치, install, 초기화, 처음, 시작, wizard",
|
|
4
|
-
"triggers": [
|
|
5
|
-
"tfx-setup"
|
|
6
|
-
],
|
|
7
4
|
"argument_hint": "[doctor]"
|
|
8
5
|
}
|
|
@@ -1,13 +1,5 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "tfx-ship",
|
|
3
|
-
"description": "triflux 전용 릴리즈 자동화.
|
|
4
|
-
"triggers": [
|
|
5
|
-
"tfx-ship",
|
|
6
|
-
"ship",
|
|
7
|
-
"배포",
|
|
8
|
-
"릴리즈",
|
|
9
|
-
"release",
|
|
10
|
-
"publish"
|
|
11
|
-
],
|
|
3
|
+
"description": "triflux 전용 릴리즈 자동화. **GitHub Actions(release.yml dispatch / npm-publish.yml) 기반 CI 릴리즈가 기본 경로 — npm publish 는 OIDC Trusted Publishing 으로 CI 가 수행하므로 로컬 npm login 불필요.** scripts/release/* 래퍼 + AskUserQuestion 기반 버전 선택 + CHANGELOG 편집 게이트 + Co-Authored-By/AI trailer 금지 강제. 'ship', '배포', '릴리즈', 'release', 'tfx-ship', 'publish' 같은 요청에 반드시 사용.",
|
|
12
4
|
"argument_hint": "[patch|minor|major|<version>] [--skip-tests] [--no-publish] [--dry-run]"
|
|
13
5
|
}
|
package/skills/tfx-wt/skill.json
CHANGED
|
@@ -1,12 +1,5 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "tfx-wt",
|
|
3
3
|
"description": "Windows Terminal 탭/패인 자연어 조작. 사용자가 \"새 탭 열어줘\", \"패인 분할\", \"탭 목록\", \"탭 닫아\" 같은 한국어/영어 표현을 쓰면 wt-cli.mjs 경유로 wt-manager API 호출. safety-guard가 wt.exe 직접 호출을 차단하므로 이 스킬이 유일한 경로다. Use when: 새 탭, tab open, 패인, pane split, 탭 목록, 탭 닫아, wt 탭, wt 패인",
|
|
4
|
-
"triggers": [
|
|
5
|
-
"tfx-wt",
|
|
6
|
-
"wt-tab-route",
|
|
7
|
-
"wt-tab-rename",
|
|
8
|
-
"wt-tab-list",
|
|
9
|
-
"wt-tab-close"
|
|
10
|
-
],
|
|
11
4
|
"argument_hint": "<create-tab|split-pane|layout|list|close|close-stale|rename> [json-opts]"
|
|
12
5
|
}
|