triflux 3.2.0-dev.3 → 3.2.0-dev.6
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.ko.md +19 -13
- package/README.md +19 -13
- package/bin/triflux.mjs +144 -67
- package/hooks/hooks.json +2 -2
- package/hooks/keyword-rules.json +338 -0
- package/hub/server.mjs +19 -10
- package/hub/team/cli.mjs +606 -442
- package/hub/team/dashboard.mjs +164 -55
- package/hub/team/native.mjs +38 -0
- package/hub/team/session.mjs +39 -23
- package/hud/hud-qos-status.mjs +56 -1
- package/package.json +3 -2
- package/scripts/__tests__/keyword-detector.test.mjs +234 -0
- package/scripts/hub-ensure.mjs +82 -0
- package/scripts/keyword-detector.mjs +257 -0
- package/scripts/keyword-rules-expander.mjs +521 -0
- package/scripts/lib/keyword-rules.mjs +165 -0
- package/scripts/run.cjs +62 -0
- package/scripts/setup.mjs +36 -16
- package/scripts/test-tfx-route-no-claude-native.mjs +49 -0
- package/scripts/tfx-route.sh +482 -418
- package/skills/tfx-auto-codex/SKILL.md +79 -0
- package/skills/tfx-team/SKILL.md +108 -63
- package/scripts/team-keyword.mjs +0 -35
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: tfx-auto-codex
|
|
3
|
+
description: Codex 리드형 tfx-auto. Claude 네이티브 역할을 Codex로 치환하고 Gemini 사용은 유지합니다.
|
|
4
|
+
triggers:
|
|
5
|
+
- tfx-auto-codex
|
|
6
|
+
argument-hint: "\"작업 설명\" | N:agent_type \"작업 설명\""
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# tfx-auto-codex — Codex 리드형 tfx-auto
|
|
10
|
+
|
|
11
|
+
> 목적: 기존 `tfx-auto`의 오케스트레이션 패턴을 유지하면서
|
|
12
|
+
> Claude 네이티브 역할(`explore`, `verifier`, `test-engineer`, `qa-tester`)을
|
|
13
|
+
> Codex로 치환해 Codex/Gemini만으로 실행한다.
|
|
14
|
+
|
|
15
|
+
## 핵심 원칙
|
|
16
|
+
|
|
17
|
+
1. **Codex 라우팅 유지**
|
|
18
|
+
- 구현/분석/리뷰/디버깅/검증은 Codex 우선.
|
|
19
|
+
2. **Gemini 유지**
|
|
20
|
+
- `designer`, `writer`는 Gemini 경로를 그대로 사용.
|
|
21
|
+
3. **Claude 네이티브 제거**
|
|
22
|
+
- 실행 시 `TFX_NO_CLAUDE_NATIVE=1`로 강제.
|
|
23
|
+
4. **고난도 설계는 xhigh**
|
|
24
|
+
- 설계/분해/비판 검토 성격의 작업은 `codex --profile xhigh` 기준으로 운용.
|
|
25
|
+
|
|
26
|
+
## 사용법
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
/tfx-auto-codex "인증 리팩터링 + UI 개선 + 테스트 보강"
|
|
30
|
+
/tfx-auto-codex 3:codex "src/api, src/auth, src/payment 병렬 리뷰"
|
|
31
|
+
/tfx-auto-codex 2:gemini "온보딩 UI 카피 + 접근성 개선"
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
## 실행 규칙
|
|
35
|
+
|
|
36
|
+
`tfx-auto` 워크플로우(입력 파싱 → 트리아지 → 분해 → DAG 실행 → 수집/보고)를 그대로 사용한다.
|
|
37
|
+
|
|
38
|
+
단, **실행 명령은 아래 환경변수를 반드시 포함**한다:
|
|
39
|
+
|
|
40
|
+
```bash
|
|
41
|
+
TFX_NO_CLAUDE_NATIVE=1 bash ~/.claude/scripts/tfx-route.sh {agent} '{prompt}' {mcp_profile}
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
### 역할 치환 (자동)
|
|
45
|
+
|
|
46
|
+
`TFX_NO_CLAUDE_NATIVE=1`일 때:
|
|
47
|
+
|
|
48
|
+
- `explore` -> Codex `fast`
|
|
49
|
+
- `verifier` -> Codex `thorough review`
|
|
50
|
+
- `test-engineer` -> Codex `high`
|
|
51
|
+
- `qa-tester` -> Codex `thorough review`
|
|
52
|
+
|
|
53
|
+
## 트리아지 기준
|
|
54
|
+
|
|
55
|
+
- `codex`: 코드 구현/수정/분석/리뷰/디버깅/테스트/검증/리서치
|
|
56
|
+
- `gemini`: 문서/UI/디자인/멀티모달
|
|
57
|
+
|
|
58
|
+
Claude 타입 반환은 기본적으로 허용하지 않는다.
|
|
59
|
+
분류 결과에 `claude`가 포함되면 `codex`로 치환 후 분해를 진행한다.
|
|
60
|
+
단, Codex CLI 미설치 환경에서는 실행 안전성을 위해 `claude-native` fallback이 유지될 수 있다.
|
|
61
|
+
|
|
62
|
+
## 권장 프로필
|
|
63
|
+
|
|
64
|
+
- 설계/계획/비판적 검토: `xhigh`
|
|
65
|
+
- 일반 구현/수정: `high`
|
|
66
|
+
- 리뷰: `thorough`
|
|
67
|
+
- 빠른 탐색: `fast`
|
|
68
|
+
|
|
69
|
+
## 의존성
|
|
70
|
+
|
|
71
|
+
- `~/.claude/scripts/tfx-route.sh` 최신 동기화 상태
|
|
72
|
+
- Codex CLI 설치
|
|
73
|
+
- Gemini CLI 설치 (UI/문서 경로 사용 시)
|
|
74
|
+
|
|
75
|
+
## Troubleshooting
|
|
76
|
+
|
|
77
|
+
1. `/tfx-doctor` — 진단
|
|
78
|
+
2. `/tfx-doctor --fix` — 자동 수정
|
|
79
|
+
3. `/tfx-doctor --reset` — 캐시 초기화
|
package/skills/tfx-team/SKILL.md
CHANGED
|
@@ -6,33 +6,51 @@ triggers:
|
|
|
6
6
|
argument-hint: '"작업 설명" | --agents codex,gemini "작업" | --tmux "작업" | status | stop'
|
|
7
7
|
---
|
|
8
8
|
|
|
9
|
-
# tfx-team v2.
|
|
10
|
-
|
|
11
|
-
> Claude Code Native Teams
|
|
12
|
-
>
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
| teammate |
|
|
18
|
-
|
|
|
19
|
-
|
|
|
20
|
-
|
|
|
21
|
-
|
|
|
22
|
-
|
|
|
9
|
+
# tfx-team v2.2 — 슬림 래퍼 + 네비게이션 복원 기반 멀티-CLI 팀 오케스트레이터
|
|
10
|
+
|
|
11
|
+
> Claude Code Native Teams의 Shift+Down 네비게이션을 복원한다.
|
|
12
|
+
> Codex/Gemini 워커마다 최소 프롬프트(~100 토큰)의 슬림 Agent 래퍼를 spawn하여 네비게이션에 등록하고,
|
|
13
|
+
> 실제 작업은 `tfx-route.sh`가 수행한다. task 상태는 `team_task_list`를 truth source로 검증한다.
|
|
14
|
+
|
|
15
|
+
| 구분 | v2 (기존) | v2.1 | v2.2 (현재) |
|
|
16
|
+
|--|--|--|--|
|
|
17
|
+
| 실행 | `Agent(teammate)` → `Bash(tfx-route.sh)` | `Lead` → `Bash` 직접 | `Agent(슬림)` → `Bash(tfx-route.sh)` |
|
|
18
|
+
| teammate | Claude Opus 인스턴스 × N | 없음 | 슬림 래퍼 × N |
|
|
19
|
+
| Shift+Down | ✓ | ✗ | ✓ (복원) |
|
|
20
|
+
| task claim | teammate `TaskUpdate` | Hub bridge | Hub bridge (변경 없음) |
|
|
21
|
+
| 결과 보고 | teammate `SendMessage` | Hub bridge | 슬림 래퍼 `SendMessage` + Hub bridge |
|
|
22
|
+
| 결과 수집 | SendMessage 중심 | `team_task_list` 폴링 | `team_task_list` 폴링 (변경 없음) |
|
|
23
|
+
| 정리 | `shutdown_request` × N | `TeamDelete` 직접 | `TeamDelete` 직접 |
|
|
24
|
+
| Opus 토큰 | N × ~800 토큰 | 0 | N × ~180 토큰 (77% 절감) |
|
|
23
25
|
|
|
24
26
|
## 사용법
|
|
25
27
|
|
|
26
|
-
```
|
|
27
|
-
/tfx-team "인증 리팩터링 + UI 개선 + 보안 리뷰"
|
|
28
|
-
/tfx-team --agents codex,gemini "프론트+백엔드"
|
|
29
|
-
/tfx-team --tmux "작업" # 레거시 tmux 모드
|
|
30
|
-
/tfx-team status
|
|
28
|
+
```
|
|
29
|
+
/tfx-team "인증 리팩터링 + UI 개선 + 보안 리뷰"
|
|
30
|
+
/tfx-team --agents codex,gemini "프론트+백엔드"
|
|
31
|
+
/tfx-team --tmux "작업" # 레거시 tmux 모드
|
|
32
|
+
/tfx-team status
|
|
31
33
|
/tfx-team stop
|
|
32
34
|
```
|
|
33
35
|
|
|
34
36
|
## 실행 워크플로우
|
|
35
37
|
|
|
38
|
+
### Phase 0: 사전 점검 정책 (출력 최소화)
|
|
39
|
+
|
|
40
|
+
세션 시작 전 점검은 **리드 포그라운드에서 단계별로 장황하게 출력하지 않는다.**
|
|
41
|
+
|
|
42
|
+
- 원칙:
|
|
43
|
+
- 사전 점검은 워커 생성과 **비동기 병렬**로 수행한다.
|
|
44
|
+
- 사용자가 요청하지 않으면 `Searched for ...`, 개별 `Bash(...)` 로그를 전면 보고하지 않는다.
|
|
45
|
+
- 리드에는 요약 한 줄만 노출한다. 예: `preflight: ok (route/hub)`
|
|
46
|
+
- Hub 점검은 `/status`를 기준으로 한다 (`/health` 단독 판정 금지).
|
|
47
|
+
- 권장 체크 예시:
|
|
48
|
+
- `curl -sf http://127.0.0.1:27888/status >/dev/null && echo "Hub: OK" || echo "Hub: NOT RUNNING"`
|
|
49
|
+
- 실패 시에만 상세를 노출한다:
|
|
50
|
+
- `tfx-route.sh` 없음
|
|
51
|
+
- Hub 비정상/미기동
|
|
52
|
+
- 필수 CLI 미설치
|
|
53
|
+
|
|
36
54
|
### Phase 1: 입력 파싱
|
|
37
55
|
|
|
38
56
|
```
|
|
@@ -42,13 +60,13 @@ argument-hint: '"작업 설명" | --agents codex,gemini "작업" | --tmux "작
|
|
|
42
60
|
입력: "status" → 제어 커맨드
|
|
43
61
|
입력: "stop" → 제어 커맨드
|
|
44
62
|
```
|
|
45
|
-
|
|
46
|
-
**제어 커맨드 감지:**
|
|
47
|
-
- `status`, `stop`, `kill`, `attach`, `list`, `send` → `Bash("node bin/triflux.mjs team {cmd}")` 직행
|
|
48
|
-
(`bin/triflux.mjs` 절대경로는 triflux 패키지 루트 기준)
|
|
49
|
-
- 그 외 → Phase 2 트리아지
|
|
50
|
-
|
|
51
|
-
**--tmux 감지:** 입력에 `--tmux`가 포함되면 Phase 3-tmux로 분기.
|
|
63
|
+
|
|
64
|
+
**제어 커맨드 감지:**
|
|
65
|
+
- `status`, `stop`, `kill`, `attach`, `list`, `send` → `Bash("node bin/triflux.mjs team {cmd}")` 직행
|
|
66
|
+
(`bin/triflux.mjs` 절대경로는 triflux 패키지 루트 기준)
|
|
67
|
+
- 그 외 → Phase 2 트리아지
|
|
68
|
+
|
|
69
|
+
**--tmux 감지:** 입력에 `--tmux`가 포함되면 Phase 3-tmux로 분기.
|
|
52
70
|
|
|
53
71
|
### Phase 2: 트리아지 (tfx-auto와 동일)
|
|
54
72
|
|
|
@@ -69,16 +87,16 @@ Bash("codex exec --full-auto --skip-git-repo-check '다음 작업을 분석하
|
|
|
69
87
|
{ \"parts\": [{ \"description\": \"...\", \"agent\": \"codex|gemini|claude\" }] }
|
|
70
88
|
'")
|
|
71
89
|
```
|
|
72
|
-
|
|
73
|
-
> Codex 분류 실패 시 → Opus(오케스트레이터)가 직접 분류+분해
|
|
74
|
-
|
|
75
|
-
```
|
|
76
|
-
# Step 2b: 인라인 분해
|
|
77
|
-
분류 결과 → 서브태스크 배열 구성:
|
|
78
|
-
[{ cli: "codex", subtask: "인증 리팩터링", role: "executor" },
|
|
79
|
-
{ cli: "gemini", subtask: "UI 개선", role: "designer" },
|
|
80
|
-
{ cli: "codex", subtask: "보안 리뷰", role: "reviewer" }]
|
|
81
|
-
```
|
|
90
|
+
|
|
91
|
+
> Codex 분류 실패 시 → Opus(오케스트레이터)가 직접 분류+분해
|
|
92
|
+
|
|
93
|
+
```
|
|
94
|
+
# Step 2b: 인라인 분해
|
|
95
|
+
분류 결과 → 서브태스크 배열 구성:
|
|
96
|
+
[{ cli: "codex", subtask: "인증 리팩터링", role: "executor" },
|
|
97
|
+
{ cli: "gemini", subtask: "UI 개선", role: "designer" },
|
|
98
|
+
{ cli: "codex", subtask: "보안 리뷰", role: "reviewer" }]
|
|
99
|
+
```
|
|
82
100
|
|
|
83
101
|
#### 수동 모드 (`N:agent_type` 또는 `--agents`)
|
|
84
102
|
|
|
@@ -90,12 +108,12 @@ Codex 분류 건너뜀 → Opus가 직접 N개 서브태스크 분해.
|
|
|
90
108
|
|
|
91
109
|
#### Step 3a: 팀 생성
|
|
92
110
|
|
|
93
|
-
```
|
|
94
|
-
teamName = "tfx-" + Date.now().toString(36).slice(-6)
|
|
95
|
-
|
|
96
|
-
TeamCreate({
|
|
97
|
-
team_name: teamName,
|
|
98
|
-
description: "tfx-team: {원본 작업 요약}"
|
|
111
|
+
```
|
|
112
|
+
teamName = "tfx-" + Date.now().toString(36).slice(-6)
|
|
113
|
+
|
|
114
|
+
TeamCreate({
|
|
115
|
+
team_name: teamName,
|
|
116
|
+
description: "tfx-team: {원본 작업 요약}"
|
|
99
117
|
})
|
|
100
118
|
```
|
|
101
119
|
|
|
@@ -116,17 +134,42 @@ for each assignment in assignments (index i):
|
|
|
116
134
|
runQueue.push({ taskId, agentName, ...assignment })
|
|
117
135
|
```
|
|
118
136
|
|
|
119
|
-
#### Step 3c:
|
|
137
|
+
#### Step 3c: 슬림 래퍼 Agent 실행 (v2.2 네비게이션 복원)
|
|
120
138
|
|
|
121
|
-
Codex/Gemini
|
|
139
|
+
Codex/Gemini 서브태스크마다 최소 프롬프트의 Agent를 spawn하여 네비게이션에 등록한다.
|
|
140
|
+
Agent 내부에서 `Bash(tfx-route.sh)` 1회 실행 후 결과 보고하고 종료한다.
|
|
122
141
|
|
|
123
142
|
```
|
|
124
143
|
for each item in runQueue where item.cli in ["codex", "gemini"]:
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
144
|
+
Agent({
|
|
145
|
+
name: item.agentName,
|
|
146
|
+
team_name: teamName,
|
|
147
|
+
run_in_background: true,
|
|
148
|
+
prompt: buildSlimWrapperPrompt(item.cli, {
|
|
149
|
+
subtask: item.subtask,
|
|
150
|
+
role: item.role,
|
|
151
|
+
teamName: teamName,
|
|
152
|
+
taskId: item.taskId,
|
|
153
|
+
agentName: item.agentName,
|
|
154
|
+
leadName: "team-lead",
|
|
155
|
+
mcp_profile: mcp_profile
|
|
156
|
+
})
|
|
157
|
+
})
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
슬림 래퍼 프롬프트 (~100 토큰):
|
|
129
161
|
```
|
|
162
|
+
Bash 1회 실행 후 종료.
|
|
163
|
+
|
|
164
|
+
TFX_TEAM_NAME={teamName} TFX_TEAM_TASK_ID={taskId} TFX_TEAM_AGENT_NAME={agentName} TFX_TEAM_LEAD_NAME=team-lead bash ~/.claude/scripts/tfx-route.sh {role} '{subtask}' {mcp_profile}
|
|
165
|
+
|
|
166
|
+
완료 → TaskUpdate(status: completed) + SendMessage(to: team-lead).
|
|
167
|
+
실패 → TaskUpdate(status: failed) + SendMessage(to: team-lead).
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
`buildSlimWrapperPrompt()`는 `hub/team/native.mjs`에 정의.
|
|
171
|
+
|
|
172
|
+
**핵심 차이 vs v2:** 프롬프트 ~100 토큰 (v2의 ~500), task claim/complete/report는 tfx-route.sh Hub bridge가 수행.
|
|
130
173
|
|
|
131
174
|
`tfx-route.sh` 팀 통합 동작(이미 구현됨, `TFX_TEAM_*` 기반):
|
|
132
175
|
- `TFX_TEAM_NAME`: 팀 식별자
|
|
@@ -164,8 +207,9 @@ Agent({
|
|
|
164
207
|
|
|
165
208
|
```
|
|
166
209
|
"팀 '{teamName}' 생성 완료.
|
|
167
|
-
Codex/Gemini
|
|
168
|
-
|
|
210
|
+
Codex/Gemini 워커가 슬림 래퍼 Agent로 네비게이션에 등록되었습니다.
|
|
211
|
+
Shift+Down으로 다음 워커, Shift+Tab/Shift+Left로 이전 워커 전환이 가능합니다.
|
|
212
|
+
(Shift+Up은 일부 환경에서 동작하지 않을 수 있음)"
|
|
169
213
|
```
|
|
170
214
|
|
|
171
215
|
### Phase 4: 결과 수집 (truth source = team_task_list)
|
|
@@ -192,25 +236,25 @@ Bash("curl -sf http://127.0.0.1:27888/bridge/team/task-list -H \"Content-Type: a
|
|
|
192
236
|
| 3 | claude-worker-1 | claude | 실패 fallback 재시도 | completed |
|
|
193
237
|
```
|
|
194
238
|
|
|
195
|
-
### Phase 5: 정리
|
|
239
|
+
### Phase 5: 정리
|
|
196
240
|
|
|
197
|
-
|
|
198
|
-
|
|
241
|
+
슬림 래퍼 Agent는 Bash 완료 후 자동 종료된다.
|
|
242
|
+
claude 타입 Agent와 슬림 래퍼 Agent 모두 완료 확인 후 `TeamDelete()`를 호출한다.
|
|
199
243
|
|
|
200
|
-
> **중요:**
|
|
244
|
+
> **중요:** 슬림 래퍼 Agent가 아직 실행 중이면 `TeamDelete`가 실패할 수 있다. 모든 워커 완료를 확인한 뒤 삭제한다.
|
|
201
245
|
|
|
202
246
|
### Phase 3-tmux: 레거시 tmux 모드
|
|
203
247
|
|
|
204
248
|
`--tmux` 플래그가 있으면 기존 v1 방식으로 실행:
|
|
205
|
-
|
|
206
|
-
```bash
|
|
207
|
-
# PKG_ROOT: triflux 패키지 루트 (Bash로 확인)
|
|
208
|
-
Bash("node {PKG_ROOT}/bin/triflux.mjs team --no-attach --agents {agents.join(',')} \"{task}\"")
|
|
209
|
-
```
|
|
210
|
-
|
|
211
|
-
이후 Phase 4-5 대신 사용자에게 tmux 세션 안내:
|
|
212
|
-
|
|
213
|
-
```
|
|
249
|
+
|
|
250
|
+
```bash
|
|
251
|
+
# PKG_ROOT: triflux 패키지 루트 (Bash로 확인)
|
|
252
|
+
Bash("node {PKG_ROOT}/bin/triflux.mjs team --no-attach --agents {agents.join(',')} \"{task}\"")
|
|
253
|
+
```
|
|
254
|
+
|
|
255
|
+
이후 Phase 4-5 대신 사용자에게 tmux 세션 안내:
|
|
256
|
+
|
|
257
|
+
```
|
|
214
258
|
"tmux 세션이 생성되었습니다.
|
|
215
259
|
tmux attach -t {sessionId} 세션 연결
|
|
216
260
|
Ctrl+B → 방향키 pane 전환
|
|
@@ -235,6 +279,7 @@ Bash("node {PKG_ROOT}/bin/triflux.mjs team --no-attach --agents {agents.join(','
|
|
|
235
279
|
- **codex/gemini CLI** — 해당 에이전트 사용 시
|
|
236
280
|
- **tfx setup** — tfx-route.sh 동기화 + AGENT_TEAMS 자동 설정 (사전 실행 권장)
|
|
237
281
|
- **Hub bridge 활성 상태** — 기본 `http://127.0.0.1:27888` (`/bridge/team/*`, `/bridge/result` 사용)
|
|
282
|
+
- **출력 정책** — preflight는 비동기/요약 출력이 기본이며, 실패 시에만 상세 출력
|
|
238
283
|
|
|
239
284
|
## 에러 처리
|
|
240
285
|
|
package/scripts/team-keyword.mjs
DELETED
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
// scripts/team-keyword.mjs — "team" 매직 키워드 → /tfx-team 라우팅
|
|
3
|
-
// UserPromptSubmit 훅에서 실행. stdin으로 프롬프트 수신.
|
|
4
|
-
import { readFileSync } from "node:fs";
|
|
5
|
-
|
|
6
|
-
// stdin에서 프롬프트 읽기
|
|
7
|
-
let prompt = "";
|
|
8
|
-
try {
|
|
9
|
-
prompt = readFileSync(0, "utf8");
|
|
10
|
-
} catch {
|
|
11
|
-
process.exit(0);
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
// 코드 블록 제거 (오탐 방지)
|
|
15
|
-
const cleaned = prompt
|
|
16
|
-
.replace(/```[\s\S]*?```/g, "")
|
|
17
|
-
.replace(/`[^`]+`/g, "")
|
|
18
|
-
.replace(/https?:\/\/\S+/g, "");
|
|
19
|
-
|
|
20
|
-
// "team" 키워드 감지 (소유격/관사 뒤는 제외)
|
|
21
|
-
const hasTeam =
|
|
22
|
-
/(?<!\b(?:my|the|our|a|his|her|their|its|omc|oh-my-claudecode)\s)\bteam\b/i.test(cleaned) ||
|
|
23
|
-
/\btfx[\s-]?team\b/i.test(cleaned);
|
|
24
|
-
|
|
25
|
-
if (hasTeam) {
|
|
26
|
-
console.log("[MAGIC KEYWORD: tfx-team]");
|
|
27
|
-
console.log("");
|
|
28
|
-
console.log("You MUST invoke the skill using the Skill tool:");
|
|
29
|
-
console.log("");
|
|
30
|
-
console.log("Skill: tfx-team");
|
|
31
|
-
console.log("");
|
|
32
|
-
console.log(`User request:\n${prompt.trim()}`);
|
|
33
|
-
console.log("");
|
|
34
|
-
console.log("IMPORTANT: Invoke the skill IMMEDIATELY. Do not proceed without loading the skill instructions.");
|
|
35
|
-
}
|