triflux 8.6.0 → 8.9.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.
@@ -0,0 +1,259 @@
1
+ ---
2
+ name: tfx-remote-spawn
3
+ description: >
4
+ 원격/로컬 머신에 Claude 세션을 psmux 기반으로 spawn하고 관리합니다.
5
+ 자동 핸드오프, 추가 프롬프트 전송, 세션 재부착, 원격 환경 자동 감지를 지원합니다.
6
+ 이 스킬은 다음 상황에서 반드시 사용하세요:
7
+ 원격 실행, 세션 spawn, 다른 머신에서 작업, 원격 Claude, 세션 전달, 핸드오프 전달,
8
+ 원격 세션에 프롬프트 보내기, 세션 목록, 세션 재부착.
9
+ 로컬 호스트 별칭이 references/hosts.json에 등록되어 있으면 호스트명 언급만으로도 트리거됩니다.
10
+ triggers:
11
+ - tfx-remote-spawn
12
+ - remote-spawn
13
+ argument-hint: "[호스트] [프롬프트] 또는 자연어"
14
+ ---
15
+
16
+ # tfx-remote-spawn — 원격/로컬 Claude 세션 관리
17
+
18
+ > psmux 세션 기반으로 Claude를 원격/로컬에서 실행하고 관리합니다.
19
+ > AskUserQuestion 기반 인터랙티브 메뉴로 다중 호출 없이 한번에 처리.
20
+
21
+ ## 워크플로우
22
+
23
+ ### Step 1: 동작 판별
24
+
25
+ 사용자 입력을 아래 순서로 매칭한다. **명확히 매칭되면 바로 실행**, 모호하면 AskUserQuestion.
26
+
27
+ ```
28
+ "ultra4에서 보안 리뷰 해" → spawn(host=ultra4, prompt="보안 리뷰 해")
29
+ "세션 목록 보여줘" → list
30
+ "ultra4 세션에 테스트도 해" → send(session=auto, prompt="테스트도 해")
31
+ "아까 그 세션 다시 열어" → attach(session=most-recent)
32
+ "로컬에서 리팩터링 이어서" → spawn(local, prompt="리팩터링 이어서")
33
+ ```
34
+
35
+ **모호한 입력** (예: 인자 없이 호출, 호스트만 명시) → AskUserQuestion:
36
+
37
+ ```
38
+ question: "어떤 작업을 하시겠습니까?"
39
+ header: "원격 세션"
40
+ options:
41
+ - label: "세션 생성 (Spawn)"
42
+ description: "새 Claude 세션을 원격/로컬에 생성"
43
+ - label: "프롬프트 전송 (Send)"
44
+ description: "기존 세션에 추가 프롬프트 전달"
45
+ - label: "세션 목록 (List)"
46
+ description: "활성 tfx-spawn-* 세션 조회"
47
+ - label: "세션 재부착 (Attach)"
48
+ description: "기존 세션을 WT 탭에 다시 열기"
49
+ - label: "환경 프로브 (Probe)"
50
+ description: "원격 호스트 환경 강제 감지"
51
+ ```
52
+
53
+ ### Step 2: 호스트 선택
54
+
55
+ spawn/send/attach/probe에서 호스트가 필요한데 미지정인 경우.
56
+
57
+ 1. `references/hosts.json` 읽기
58
+ 2. 등록된 호스트가 1개 → 자동 선택
59
+ 3. 등록된 호스트가 2개 이상 → AskUserQuestion:
60
+
61
+ ```
62
+ question: "어떤 호스트에서 실행하시겠습니까?"
63
+ header: "호스트"
64
+ options:
65
+ - label: "ultra4"
66
+ description: "Windows 데스크탑 (SSAFY)"
67
+ - label: "m2"
68
+ description: "MacBook Pro"
69
+ - label: "로컬 (이 머신)"
70
+ description: "현재 머신에서 새 세션 생성"
71
+ ```
72
+
73
+ 옵션은 `references/hosts.json`의 hosts 키에서 동적 생성.
74
+ `hosts.json`이 없으면 → `/tfx-remote-setup` 안내.
75
+
76
+ ### Step 3: 세션 선택 (send/attach)
77
+
78
+ send 또는 attach에서 세션이 미지정인 경우.
79
+
80
+ ```bash
81
+ node scripts/remote-spawn.mjs --list
82
+ ```
83
+
84
+ 활성 세션이 0개 → "활성 세션이 없습니다" 보고 후 종료.
85
+ 활성 세션이 1개 → 자동 선택.
86
+ 활성 세션이 2개 이상 → AskUserQuestion:
87
+
88
+ ```
89
+ question: "어떤 세션에 연결하시겠습니까?"
90
+ header: "세션"
91
+ options:
92
+ - label: "tfx-spawn-ultra4-a1b2c3d4"
93
+ description: "ultra4 | active | 10분 전 생성"
94
+ - label: "tfx-spawn-m2-e5f6g7h8"
95
+ description: "m2 | active | 30분 전 생성"
96
+ ```
97
+
98
+ 옵션은 `--list` 결과에서 동적 생성.
99
+
100
+ ### Step 4: 동작별 실행
101
+
102
+ #### spawn — 세션 생성
103
+
104
+ **4-1. 핸드오프 생성**
105
+
106
+ 프롬프트만 준 경우, 현재 대화 맥락에서 핸드오프를 자동 생성한다.
107
+
108
+ 핸드오프 구조:
109
+ ```
110
+ ## 작업 컨텍스트
111
+ - 현재 프로젝트: {프로젝트 경로}
112
+ - 작업 중인 파일: {최근 수정 파일 목록}
113
+ - 진행 상황: {현재 대화에서 완료한 것}
114
+
115
+ ## 태스크
116
+ {사용자 프롬프트 또는 추출된 작업 지시}
117
+
118
+ ## 참고
119
+ - {관련 결정 사항이나 제약}
120
+ ```
121
+
122
+ 저장: `.omc/handoff-{uuid8}.md`
123
+ 사용자가 `--handoff <file>` 명시 시 자동 생성 건너뜀.
124
+
125
+ **4-2. 환경 확인**
126
+
127
+ ```bash
128
+ node scripts/remote-spawn.mjs --probe {host}
129
+ ```
130
+
131
+ | claudePath | 동작 |
132
+ |------------|------|
133
+ | 유효한 경로 | 정상 진행 |
134
+ | null | AskUserQuestion으로 분기 ↓ |
135
+
136
+ ```
137
+ question: "{host}에 Claude Code가 없습니다. 어떻게 하시겠습니까?"
138
+ header: "Claude 미설치"
139
+ options:
140
+ - label: "설치 안내 보기"
141
+ description: "macOS/Linux: npm install -g @anthropic-ai/claude-code | Windows: winget"
142
+ - label: "다른 CLI로 실행"
143
+ description: "codex 또는 gemini로 원격 작업 실행"
144
+ - label: "다른 호스트 선택"
145
+ description: "호스트 선택 메뉴로 돌아감"
146
+ - label: "취소"
147
+ description: "작업 중단"
148
+ ```
149
+
150
+ **4-3. 세션 실행**
151
+
152
+ ```bash
153
+ node scripts/remote-spawn.mjs --host {host} --dir {dir} --prompt {prompt} --handoff {handoff_file}
154
+ ```
155
+
156
+ 실행 후 결과 보고:
157
+ ```
158
+ spawned: tfx-spawn-ultra4-a1b2c3d4
159
+ WT 탭에서 Claude@ultra4 세션이 열립니다.
160
+ ```
161
+
162
+ 후속 작업 AskUserQuestion:
163
+ ```
164
+ question: "세션이 생성되었습니다. 추가 작업이 있습니까?"
165
+ header: "다음"
166
+ options:
167
+ - label: "프롬프트 추가 전송"
168
+ description: "방금 생성한 세션에 추가 지시 전달"
169
+ - label: "다른 호스트에도 spawn"
170
+ description: "다른 머신에 추가 세션 생성"
171
+ - label: "완료"
172
+ description: "작업 종료"
173
+ ```
174
+
175
+ #### send — 프롬프트 전송
176
+
177
+ 세션이 결정되면:
178
+ ```bash
179
+ node scripts/remote-spawn.mjs --send {session_name} --prompt "{prompt}"
180
+ ```
181
+
182
+ 전송 후 AskUserQuestion:
183
+ ```
184
+ question: "프롬프트가 전송되었습니다. 추가 작업이 있습니까?"
185
+ header: "다음"
186
+ options:
187
+ - label: "추가 프롬프트 전송"
188
+ description: "같은 세션에 다른 프롬프트 전달"
189
+ - label: "다른 세션에 전송"
190
+ description: "세션 선택 메뉴로 돌아감"
191
+ - label: "완료"
192
+ description: "작업 종료"
193
+ ```
194
+
195
+ #### list — 세션 목록
196
+
197
+ ```bash
198
+ node scripts/remote-spawn.mjs --list
199
+ ```
200
+
201
+ 결과를 테이블로 표시 후, 세션이 있으면 AskUserQuestion:
202
+ ```
203
+ question: "세션을 선택하여 작업하시겠습니까?"
204
+ header: "세션 작업"
205
+ options:
206
+ - label: "프롬프트 전송"
207
+ description: "선택한 세션에 프롬프트 전달"
208
+ - label: "재부착"
209
+ description: "선택한 세션을 WT 탭에 열기"
210
+ - label: "완료"
211
+ description: "목록 확인만"
212
+ ```
213
+
214
+ #### attach — 세션 재부착
215
+
216
+ ```bash
217
+ node scripts/remote-spawn.mjs --attach {session_name}
218
+ ```
219
+
220
+ #### probe — 환경 확인
221
+
222
+ ```bash
223
+ node scripts/remote-spawn.mjs --probe {host}
224
+ ```
225
+
226
+ 결과를 정리:
227
+ ```
228
+ ultra4 환경:
229
+ OS: Windows (win32)
230
+ Shell: pwsh
231
+ Home: C:\Users\SSAFY
232
+ Claude: C:\Users\SSAFY\.local\bin\claude.exe
233
+ ```
234
+
235
+ ## 전제 조건
236
+
237
+ - **psmux** 설치 (권장, 전체 기능). 미설치 시 기존 WT+SSH fallback.
238
+ - `remoteControlAtStartup: true` 설정 (`triflux setup` 자동)
239
+ - 원격 호스트: Tailscale 네트워크 + SSH 접속 가능
240
+ - 로컬: Windows Terminal
241
+ - hosts.json 미설정 시 → `/tfx-remote-setup` 안내
242
+
243
+ ## 호스트 설정
244
+
245
+ `references/hosts.json`에 호스트 별칭을 등록한다. `/tfx-remote-setup`으로 인터랙티브 설정 가능.
246
+
247
+ ```json
248
+ {
249
+ "hosts": {
250
+ "ultra4": {
251
+ "description": "Windows 데스크탑",
252
+ "aliases": ["울트라", "데스크탑"],
253
+ "default_dir": "~/Desktop/Projects"
254
+ }
255
+ },
256
+ "default_host": "ultra4",
257
+ "triggers": ["원격에서", "다른 머신에서", "다른 컴퓨터에서"]
258
+ }
259
+ ```
@@ -1,205 +0,0 @@
1
- ---
2
- name: remote-spawn
3
- description: >
4
- 원격/로컬 머신에 Claude 세션을 psmux 기반으로 spawn하고 관리합니다.
5
- 자동 핸드오프, 추가 프롬프트 전송, 세션 재부착, 원격 환경 자동 감지를 지원합니다.
6
- 이 스킬은 다음 상황에서 반드시 사용하세요:
7
- 원격 실행, 세션 spawn, 다른 머신에서 작업, 원격 Claude, 세션 전달, 핸드오프 전달,
8
- 원격 세션에 프롬프트 보내기, 세션 목록, 세션 재부착.
9
- 로컬 호스트 별칭이 references/hosts.json에 등록되어 있으면 호스트명 언급만으로도 트리거됩니다.
10
- triggers:
11
- - remote-spawn
12
- argument-hint: "[--host <name>] [--send <session> <prompt>] [--list] [--attach] <prompt or natural language>"
13
- ---
14
-
15
- # remote-spawn — 원격/로컬 Claude 세션 관리
16
-
17
- > psmux 세션 기반으로 Claude를 원격/로컬에서 실행하고 관리합니다.
18
- > 대화 컨텍스트를 자동으로 핸드오프하고, 자연어로 세션을 제어할 수 있습니다.
19
-
20
- ## 입력 해석
21
-
22
- 사용자 입력을 아래 순서로 매칭한다. 매칭되면 해당 동작 실행.
23
-
24
- ```
25
- "ultra4에서 보안 리뷰 해" → spawn(host=ultra4, prompt="보안 리뷰 해")
26
- "세션 목록 보여줘" → list
27
- "ultra4 세션에 테스트도 해달라고 전달해" → send(session=auto-detect, prompt="테스트도 해달라고")
28
- "아까 그 세션 다시 열어" → attach(session=most-recent)
29
- "로컬에서 리팩터링 이어서" → spawn(local, prompt="리팩터링 이어서")
30
- ```
31
-
32
- ### 호스트 감지
33
-
34
- 1. `--host <name>` 명시 → 그대로 사용
35
- 2. `references/hosts.json` 에 등록된 별칭/키워드 매칭 → 호스트 자동 해석
36
- 3. "원격에서", "다른 머신에서" → hosts.json의 default 호스트 사용
37
- 4. 매칭 없음 + --local 없음 → 사용자에게 "어떤 호스트에서 실행할까요?" 질문
38
-
39
- `references/hosts.json`이 없으면 --host를 명시적으로 요구한다.
40
-
41
- ### 동작 분류
42
-
43
- | 패턴 | 동작 | 설명 |
44
- |------|------|------|
45
- | 호스트 + 프롬프트 | **spawn** | 원격 Claude 세션 생성 |
46
- | --local / "로컬에서" | **spawn local** | 로컬 Claude 세션 생성 |
47
- | "전달해", "보내줘", --send | **send** | 기존 세션에 프롬프트 전송 |
48
- | "목록", "세션 리스트", --list | **list** | 활성 세션 목록 |
49
- | "다시 열어", "재부착", --attach | **attach** | WT 탭에 세션 재부착 |
50
- | "환경 확인", --probe | **probe** | 원격 환경 프로브 (강제 갱신) |
51
-
52
- ## 실행 워크플로우
53
-
54
- ### spawn — 세션 생성 (핵심)
55
-
56
- spawn은 3단계로 동작한다:
57
-
58
- **1단계: 핸드오프 생성 (자동)**
59
-
60
- 사용자가 프롬프트만 준 경우, 현재 대화 맥락에서 핸드오프를 자동 생성한다.
61
- 핸드오프는 원격 Claude가 작업을 이해하는 데 필요한 최소 컨텍스트다.
62
-
63
- 핸드오프 구조:
64
- ```
65
- ## 작업 컨텍스트
66
- - 현재 프로젝트: {프로젝트 경로}
67
- - 작업 중인 파일: {최근 수정 파일 목록}
68
- - 진행 상황: {현재 대화에서 완료한 것}
69
-
70
- ## 태스크
71
- {사용자 프롬프트 또는 추출된 작업 지시}
72
-
73
- ## 참고
74
- - {관련 결정 사항이나 제약}
75
- ```
76
-
77
- 핸드오프 생성 후 임시 파일에 저장: `.omc/handoff-{uuid8}.md`
78
-
79
- 사용자가 명시적으로 `--handoff <file>` 을 준 경우, 자동 생성 대신 해당 파일 사용.
80
- 사용자가 `/mp`로 생성한 핸드오프가 있으면 그것을 우선 사용.
81
-
82
- **2단계: 환경 확인**
83
-
84
- 원격 호스트의 프로브 결과를 확인한다. 캐시가 있으면 캐시 사용.
85
-
86
- ```bash
87
- node scripts/remote-spawn.mjs --probe {host}
88
- ```
89
-
90
- 프로브 결과에 따른 분기:
91
-
92
- | claudePath | 동작 |
93
- |------------|------|
94
- | 유효한 경로 | 정상 진행 |
95
- | null | 설치 안내 출력 후 사용자 확인 대기 |
96
-
97
- **claude 미설치 시 안내 메시지:**
98
-
99
- ```
100
- {host}에 Claude Code가 설치되어 있지 않습니다.
101
-
102
- 설치 방법:
103
- macOS/Linux: npm install -g @anthropic-ai/claude-code
104
- Windows: winget install Anthropic.ClaudeCode
105
-
106
- 설치 후 `--probe {host}` 로 환경을 갱신하세요.
107
- 또는 이 호스트에서 다른 CLI(codex, gemini)로 작업하시겠습니까?
108
- ```
109
-
110
- **3단계: 세션 실행**
111
-
112
- ```bash
113
- node scripts/remote-spawn.mjs --host {host} --dir {dir} --prompt {prompt} --handoff {handoff_file}
114
- ```
115
-
116
- 실행 후 세션 이름을 사용자에게 알려준다:
117
- ```
118
- spawned: tfx-spawn-ultra4-a1b2c3d4
119
- WT 탭에서 Claude@ultra4 세션이 열립니다.
120
- 추가 프롬프트: /remote-spawn --send tfx-spawn-ultra4-a1b2c3d4 "다음 작업"
121
- ```
122
-
123
- ### send — 프롬프트 전송
124
-
125
- 사용자가 세션 이름을 명시하지 않으면, 해당 호스트의 가장 최근 세션을 자동 감지한다.
126
-
127
- ```bash
128
- # 세션 이름 명시
129
- node scripts/remote-spawn.mjs --send tfx-spawn-ultra4-a1b2c3d4 --prompt "{prompt}"
130
-
131
- # 호스트명으로 자동 감지
132
- node scripts/remote-spawn.mjs --list # tfx-spawn-ultra4-* 필터링
133
- # → 가장 최근 세션에 전송
134
- node scripts/remote-spawn.mjs --send {detected_session} --prompt "{prompt}"
135
- ```
136
-
137
- ### list — 세션 목록
138
-
139
- ```bash
140
- node scripts/remote-spawn.mjs --list
141
- ```
142
-
143
- 결과를 표 형태로 정리해서 보여준다:
144
- ```
145
- | 세션 | 호스트 | 상태 |
146
- |------|--------|------|
147
- | tfx-spawn-ultra4-a1b2c3d4 | ultra4 | active |
148
- | tfx-spawn-m2-e5f6g7h8 | m2 | active |
149
- ```
150
-
151
- ### attach — 재부착
152
-
153
- ```bash
154
- node scripts/remote-spawn.mjs --attach {session_name}
155
- ```
156
-
157
- 세션 이름 미지정 시 가장 최근 세션을 사용한다.
158
-
159
- ### probe — 환경 확인
160
-
161
- ```bash
162
- node scripts/remote-spawn.mjs --probe {host}
163
- ```
164
-
165
- 결과를 사람이 읽기 좋게 정리:
166
- ```
167
- ultra4 환경:
168
- OS: Windows (win32)
169
- Shell: pwsh
170
- Home: C:\Users\SSAFY
171
- Claude: C:\Users\SSAFY\.local\bin\claude.exe
172
- ```
173
-
174
- ## 전제 조건
175
-
176
- - **psmux** 설치 (권장, 전체 기능). 미설치 시 기존 WT+SSH fallback.
177
- - `remoteControlAtStartup: true` 설정 (`triflux setup` 자동)
178
- - 원격 호스트: SSH config 등록 + Claude Code 설치
179
- - 로컬: Windows Terminal
180
-
181
- ## 호스트 설정
182
-
183
- `references/hosts.json`에 개인 호스트 별칭을 등록한다.
184
- 이 파일은 프로젝트에 커밋하지 않고 로컬에서만 관리한다 (.gitignore 추가).
185
-
186
- ```json
187
- {
188
- "hosts": {
189
- "ultra4": {
190
- "description": "Windows 데스크탑",
191
- "aliases": ["울트라", "데스크탑"],
192
- "default_dir": "~/Desktop/Projects"
193
- },
194
- "m2": {
195
- "description": "MacBook Pro",
196
- "aliases": ["맥북", "맥"],
197
- "default_dir": "~/projects"
198
- }
199
- },
200
- "default_host": "ultra4",
201
- "triggers": ["원격에서", "다른 머신에서", "다른 컴퓨터에서"]
202
- }
203
- ```
204
-
205
- 이 파일이 없으면 호스트 자동 감지가 비활성화되고, --host를 명시해야 한다.