triflux 8.2.3 → 8.3.1
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-plugin/plugin.json +1 -1
- package/README.md +209 -97
- package/bin/tfx-doctor-tui.mjs +7 -0
- package/bin/tfx-profile.mjs +7 -0
- package/bin/tfx-setup-tui.mjs +7 -0
- package/bin/triflux.mjs +14 -4
- package/hub/intent.mjs +7 -7
- package/hub/team/tui.mjs +4 -0
- package/hub/workers/delegator-mcp.mjs +18 -18
- package/package.json +6 -2
- package/scripts/setup.mjs +4 -33
- package/scripts/tfx-route.sh +57 -57
- package/skills/.omc/state/agent-replay-8f0e10a9-9693-4410-96f5-a6b07e8ed995.jsonl +1 -0
- package/skills/.omc/state/idle-notif-cooldown.json +3 -0
- package/skills/.omc/state/last-tool-error.json +7 -0
- package/skills/.omc/state/subagent-tracking.json +7 -0
- package/skills/tfx-analysis/SKILL.md +101 -0
- package/skills/tfx-auto-codex/SKILL.md +1 -1
- package/skills/tfx-autopilot/SKILL.md +112 -0
- package/skills/tfx-autoresearch/SKILL.md +1 -2
- package/skills/tfx-autoroute/SKILL.md +184 -0
- package/skills/tfx-codex/SKILL.md +2 -2
- package/skills/tfx-consensus/SKILL.md +112 -0
- package/skills/tfx-debate/SKILL.md +148 -0
- package/skills/tfx-deep-analysis/SKILL.md +186 -0
- package/skills/tfx-deep-plan/SKILL.md +113 -0
- package/skills/tfx-deep-qa/SKILL.md +158 -0
- package/skills/tfx-deep-research/SKILL.md +212 -0
- package/skills/tfx-deep-review/SKILL.md +91 -0
- package/skills/tfx-doctor/SKILL.md +161 -94
- package/skills/tfx-find/SKILL.md +123 -0
- package/skills/tfx-forge/SKILL.md +183 -0
- package/skills/tfx-fullcycle/SKILL.md +195 -0
- package/skills/tfx-hub/SKILL.md +1 -1
- package/skills/tfx-index/SKILL.md +174 -0
- package/skills/tfx-interview/SKILL.md +210 -0
- package/skills/tfx-panel/SKILL.md +187 -0
- package/skills/tfx-persist/SKILL.md +141 -0
- package/skills/tfx-plan/SKILL.md +53 -0
- package/skills/tfx-profile/SKILL.md +149 -0
- package/skills/tfx-prune/SKILL.md +198 -0
- package/skills/tfx-qa/SKILL.md +117 -0
- package/skills/tfx-research/SKILL.md +126 -0
- package/skills/tfx-review/SKILL.md +51 -0
- package/skills/tfx-setup/SKILL.md +160 -101
- package/tui/codex-profile.mjs +402 -0
- package/tui/core.mjs +236 -0
- package/tui/doctor.mjs +327 -0
- package/tui/setup.mjs +362 -0
|
@@ -1,94 +1,161 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: tfx-doctor
|
|
3
|
-
description: >
|
|
4
|
-
triflux 진단 및 수리 도구.
|
|
5
|
-
스킬 미설치
|
|
6
|
-
Use when: not working, broken, error, 안 돼, 이상해, 에러, 캐시, reset
|
|
7
|
-
triggers:
|
|
8
|
-
- tfx-doctor
|
|
9
|
-
argument-hint: "[--fix|--reset]"
|
|
10
|
-
---
|
|
11
|
-
|
|
12
|
-
# tfx-doctor — triflux 진단 및 수리
|
|
13
|
-
|
|
14
|
-
> 뭔가 안 될 때, HUD가 이상할 때, CLI가 안 보일 때 실행하세요.
|
|
15
|
-
|
|
16
|
-
##
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
```
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
-
|
|
31
|
-
|
|
32
|
-
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
|
52
|
-
|
|
53
|
-
|
|
|
54
|
-
|
|
|
55
|
-
|
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
-
|
|
84
|
-
|
|
85
|
-
-
|
|
86
|
-
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
1
|
+
---
|
|
2
|
+
name: tfx-doctor
|
|
3
|
+
description: >
|
|
4
|
+
triflux 진단 및 수리 도구. AskUserQuestion 기반 인터랙티브 선택지로
|
|
5
|
+
CLI 미발견, HUD 미표시, 캐시 오류, 스킬 미설치 등을 진단하고 자동 수정합니다.
|
|
6
|
+
Use when: not working, broken, error, 안 돼, 이상해, 에러, 캐시, reset, doctor
|
|
7
|
+
triggers:
|
|
8
|
+
- tfx-doctor
|
|
9
|
+
argument-hint: "[--fix|--reset]"
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# tfx-doctor — triflux 진단 및 수리
|
|
13
|
+
|
|
14
|
+
> 뭔가 안 될 때, HUD가 이상할 때, CLI가 안 보일 때 실행하세요.
|
|
15
|
+
|
|
16
|
+
## 워크플로우
|
|
17
|
+
|
|
18
|
+
### Step 1: 모드 선택 (AskUserQuestion)
|
|
19
|
+
|
|
20
|
+
인자 없이 호출된 경우 모드를 선택한다:
|
|
21
|
+
|
|
22
|
+
```
|
|
23
|
+
question: "어떤 진단 모드를 실행하시겠습니까?"
|
|
24
|
+
header: "모드"
|
|
25
|
+
options:
|
|
26
|
+
- label: "진단 (Diagnose)"
|
|
27
|
+
description: "읽기 전용 전체 검사 — 아무것도 수정하지 않음"
|
|
28
|
+
- label: "수정 (Fix)"
|
|
29
|
+
description: "파일 동기화 + 캐시 정리 후 진단 실행"
|
|
30
|
+
- label: "캐시 관리 (Cache)"
|
|
31
|
+
description: "캐시 파일별 상태 조회, 선택적 삭제"
|
|
32
|
+
- label: "전체 초기화 (Reset)"
|
|
33
|
+
description: "모든 캐시 삭제 + 재생성 (위험)"
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
`--fix`, `--reset` 인자가 있으면 바로 해당 모드로 실행.
|
|
37
|
+
|
|
38
|
+
### Step 2: 모드별 실행
|
|
39
|
+
|
|
40
|
+
#### 진단 모드
|
|
41
|
+
|
|
42
|
+
```bash
|
|
43
|
+
Bash("triflux doctor --json")
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
JSON 결과를 파싱하여 마크다운 테이블로 표시:
|
|
47
|
+
|
|
48
|
+
```
|
|
49
|
+
| 항목 | 상태 | 비고 |
|
|
50
|
+
|------|------|------|
|
|
51
|
+
| tfx-route.sh | ✅ | v2.0 |
|
|
52
|
+
| HUD | ✅ | 설치됨 |
|
|
53
|
+
| Codex CLI | ✅ | found |
|
|
54
|
+
| Gemini CLI | ⚠ | 미설치 (선택) |
|
|
55
|
+
| ... | ... | ... |
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
이슈가 발견되면 AskUserQuestion:
|
|
59
|
+
```
|
|
60
|
+
question: "N개 이슈가 발견되었습니다. 자동 수정을 시도하시겠습니까?"
|
|
61
|
+
header: "수정"
|
|
62
|
+
options:
|
|
63
|
+
- label: "자동 수정 실행 (Recommended)"
|
|
64
|
+
description: "triflux doctor --fix 실행"
|
|
65
|
+
- label: "건너뛰기"
|
|
66
|
+
description: "수정 없이 결과만 확인"
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
#### 수정 모드
|
|
70
|
+
|
|
71
|
+
```bash
|
|
72
|
+
Bash("triflux doctor --fix")
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
결과를 보고한다.
|
|
76
|
+
|
|
77
|
+
#### 캐시 관리
|
|
78
|
+
|
|
79
|
+
`~/.claude/cache/` 디렉토리의 캐시 파일들을 Read/Glob으로 조회:
|
|
80
|
+
|
|
81
|
+
| 캐시 파일 | 설명 |
|
|
82
|
+
|-----------|------|
|
|
83
|
+
| claude-usage-cache.json | Claude 사용량 |
|
|
84
|
+
| codex-rate-limits-cache.json | Codex 레이트 리밋 |
|
|
85
|
+
| gemini-quota-cache.json | Gemini 쿼터 |
|
|
86
|
+
| sv-accumulator.json | 절약량 누적 |
|
|
87
|
+
| mcp-inventory.json | MCP 서버 인벤토리 |
|
|
88
|
+
| cli-issues.jsonl | CLI 이슈 로그 |
|
|
89
|
+
| triflux-update-check.json | 업데이트 체크 |
|
|
90
|
+
|
|
91
|
+
존재하는 캐시 파일 목록과 크기를 테이블로 표시 후 AskUserQuestion:
|
|
92
|
+
|
|
93
|
+
```
|
|
94
|
+
question: "어떻게 삭제하시겠습니까?"
|
|
95
|
+
header: "삭제"
|
|
96
|
+
options:
|
|
97
|
+
- label: "전체 삭제"
|
|
98
|
+
description: "모든 캐시 파일 삭제"
|
|
99
|
+
- label: "에러 캐시만 삭제"
|
|
100
|
+
description: "파싱 에러가 있는 파일만 삭제"
|
|
101
|
+
- label: "선택 삭제"
|
|
102
|
+
description: "파일 하나씩 선택하여 삭제"
|
|
103
|
+
- label: "취소"
|
|
104
|
+
description: "삭제하지 않음"
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
"선택 삭제" 시 각 파일에 대해 AskUserQuestion으로 삭제 여부 확인.
|
|
108
|
+
|
|
109
|
+
#### 전체 초기화
|
|
110
|
+
|
|
111
|
+
위험 확인:
|
|
112
|
+
```
|
|
113
|
+
question: "전체 캐시를 초기화하시겠습니까? 다음 세션에서 재생성됩니다."
|
|
114
|
+
header: "확인"
|
|
115
|
+
options:
|
|
116
|
+
- label: "초기화 실행"
|
|
117
|
+
description: "모든 캐시 삭제 + MCP/사용량 캐시 재생성"
|
|
118
|
+
- label: "취소"
|
|
119
|
+
description: "아무것도 하지 않음"
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
확인 시:
|
|
123
|
+
```bash
|
|
124
|
+
Bash("triflux doctor --reset")
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
### Step 3: 후속 조치
|
|
128
|
+
|
|
129
|
+
실행 완료 후 AskUserQuestion:
|
|
130
|
+
```
|
|
131
|
+
question: "다른 작업을 하시겠습니까?"
|
|
132
|
+
header: "계속"
|
|
133
|
+
options:
|
|
134
|
+
- label: "다른 모드 실행"
|
|
135
|
+
description: "진단/수정/캐시/초기화 메뉴로 돌아감"
|
|
136
|
+
- label: "종료"
|
|
137
|
+
description: "doctor 종료"
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
## 진단 항목
|
|
141
|
+
|
|
142
|
+
- tfx-route.sh 설치 상태
|
|
143
|
+
- HUD 설치 및 설정 상태
|
|
144
|
+
- Codex/Gemini/Claude CLI 경로 (크로스 셸)
|
|
145
|
+
- Codex Profiles (필수 프로파일 존재 여부)
|
|
146
|
+
- 스킬 설치 상태
|
|
147
|
+
- 플러그인 등록 상태
|
|
148
|
+
- MCP 인벤토리 캐시
|
|
149
|
+
- 잔존 팀(orphan teams) 감지
|
|
150
|
+
|
|
151
|
+
## 에러 처리
|
|
152
|
+
|
|
153
|
+
| 상황 | 처리 |
|
|
154
|
+
|------|------|
|
|
155
|
+
| 캐시 디렉토리 없음 | 정상 — 삭제할 파일 없음 보고 |
|
|
156
|
+
| 파일 삭제 권한 없음 | 수동 삭제 안내 |
|
|
157
|
+
| --fix 후에도 이슈 남음 | Codex/Gemini 설치는 수동 필요 안내 |
|
|
158
|
+
|
|
159
|
+
## standalone TUI
|
|
160
|
+
|
|
161
|
+
터미널에서 직접 실행도 가능: `node tui/doctor.mjs` (arrow key 방식)
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: tfx-find
|
|
3
|
+
description: "코드베이스에서 파일, 함수, 클래스, 문자열을 빠르게 찾을 때 사용한다. '코드 검색', 'find in code', '어디에 있어?', '이 함수 어디서 쓰여?', '파일 찾아줘', '코드베이스 탐색' 같은 요청에 반드시 사용. 파일 위치, 심볼 사용처, 패턴 검색이 필요한 모든 상황에 적극 활용."
|
|
4
|
+
triggers:
|
|
5
|
+
- 코드 검색
|
|
6
|
+
- codebase search
|
|
7
|
+
- find in code
|
|
8
|
+
- 코드에서 찾기
|
|
9
|
+
- 코드베이스 검색
|
|
10
|
+
argument-hint: "<검색 패턴 또는 질문>"
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# tfx-find — Fast Codebase Explorer
|
|
14
|
+
|
|
15
|
+
> OMC explore agent 오마주. Haiku의 속도 + Glob/Grep/Read의 정밀도.
|
|
16
|
+
> "찾는 건 빠르게, 읽는 건 정확하게."
|
|
17
|
+
|
|
18
|
+
## 용도
|
|
19
|
+
|
|
20
|
+
- 파일 위치를 모를 때 빠르게 찾기
|
|
21
|
+
- 특정 함수/클래스/변수가 어디서 사용되는지 추적
|
|
22
|
+
- 문자열 패턴으로 코드 검색
|
|
23
|
+
- 프로젝트 구조 빠르게 파악
|
|
24
|
+
- 설정 파일, 진입점, 테스트 파일 탐색
|
|
25
|
+
|
|
26
|
+
## 워크플로우
|
|
27
|
+
|
|
28
|
+
### Step 1: 검색 의도 파싱
|
|
29
|
+
|
|
30
|
+
사용자 입력에서 검색 유형을 판별한다:
|
|
31
|
+
|
|
32
|
+
```
|
|
33
|
+
검색 유형:
|
|
34
|
+
file_pattern — "*.test.ts 파일 찾아" → Glob
|
|
35
|
+
symbol — "createBridge 함수 어디?" → Grep (정규식)
|
|
36
|
+
string — "TODO 주석 찾아" → Grep (리터럴)
|
|
37
|
+
structure — "프로젝트 구조 보여줘" → Glob + tree
|
|
38
|
+
usage — "Router 클래스 사용처" → Grep (import/require + 참조)
|
|
39
|
+
definition — "handleAuth 정의 찾아" → Grep (function/class/const 패턴)
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
### Step 2: 검색 실행
|
|
43
|
+
|
|
44
|
+
검색 유형에 따라 최적 도구 조합을 선택한다:
|
|
45
|
+
|
|
46
|
+
```
|
|
47
|
+
file_pattern:
|
|
48
|
+
Glob("**/{pattern}") → 매칭 파일 목록
|
|
49
|
+
|
|
50
|
+
symbol:
|
|
51
|
+
Grep(pattern="{symbol}", type="{lang}") → 파일 목록
|
|
52
|
+
→ 상위 5개 파일 Read (정의부 중심, 각 ±10줄)
|
|
53
|
+
|
|
54
|
+
string:
|
|
55
|
+
Grep(pattern="{string}", output_mode="content", context=2) → 매칭 라인 + 컨텍스트
|
|
56
|
+
|
|
57
|
+
structure:
|
|
58
|
+
Glob("**/*.{ts,js,mjs,py,go}") → 파일 트리 구성
|
|
59
|
+
→ 디렉토리별 파일 수 + 역할 요약
|
|
60
|
+
|
|
61
|
+
usage:
|
|
62
|
+
Grep(pattern="import.*{symbol}|require.*{symbol}", output_mode="content") → import 위치
|
|
63
|
+
Grep(pattern="{symbol}", output_mode="content") → 실제 사용 위치
|
|
64
|
+
→ 중복 제거 후 사용처 목록
|
|
65
|
+
|
|
66
|
+
definition:
|
|
67
|
+
Grep(pattern="(function|class|const|let|var|export)\\s+{symbol}", output_mode="content")
|
|
68
|
+
→ 정의 위치 + 파일 경로
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
### Step 3: 결과 정리
|
|
72
|
+
|
|
73
|
+
검색 결과를 구조화하여 보고한다:
|
|
74
|
+
|
|
75
|
+
```markdown
|
|
76
|
+
## 검색 결과: {query}
|
|
77
|
+
|
|
78
|
+
### 매칭 파일 ({count}개)
|
|
79
|
+
| # | 파일 | 라인 | 컨텍스트 |
|
|
80
|
+
|---|------|------|---------|
|
|
81
|
+
| 1 | src/hub/bridge.mjs | 42 | export function createBridge(...) |
|
|
82
|
+
| 2 | src/hub/router.mjs | 15 | import { createBridge } from './bridge' |
|
|
83
|
+
|
|
84
|
+
### 코드 스니펫
|
|
85
|
+
{핵심 코드 (필요 시)}
|
|
86
|
+
|
|
87
|
+
### 관련 파일
|
|
88
|
+
- src/hub/bridge.test.mjs (테스트)
|
|
89
|
+
- src/hub/index.mjs (re-export)
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
## 검색 최적화 규칙
|
|
93
|
+
|
|
94
|
+
1. **Glob 먼저, Grep 나중**: 파일 위치를 알면 Glob, 내용 검색은 Grep.
|
|
95
|
+
2. **type 필터 사용**: `type: "js"` 등으로 불필요 파일 제외.
|
|
96
|
+
3. **head_limit 사용**: 결과가 많을 때 상위 N개만 반환.
|
|
97
|
+
4. **병렬 검색**: 독립적인 검색은 동시에 실행.
|
|
98
|
+
5. **점진적 확장**: 좁은 범위 → 넓은 범위. `src/` → `**/*`.
|
|
99
|
+
|
|
100
|
+
## 동작 규칙
|
|
101
|
+
|
|
102
|
+
1. 결과가 0개이면 패턴을 완화하여 재검색한다 (대소문자 무시, 부분 매칭).
|
|
103
|
+
2. 결과가 50개 초과이면 가장 관련성 높은 10개만 보여주고 필터 제안.
|
|
104
|
+
3. 파일 내용은 필요한 부분만 Read한다 (전체 파일 읽기 금지).
|
|
105
|
+
4. 검색 패턴에 정규식 특수문자가 있으면 자동 이스케이프.
|
|
106
|
+
|
|
107
|
+
## 토큰 예산
|
|
108
|
+
|
|
109
|
+
| 단계 | 토큰 |
|
|
110
|
+
|------|------|
|
|
111
|
+
| 의도 파싱 | ~200 |
|
|
112
|
+
| 검색 실행 | ~1.5K |
|
|
113
|
+
| 결과 정리 | ~1K |
|
|
114
|
+
| **총합** | **~3K** |
|
|
115
|
+
|
|
116
|
+
## 사용 예
|
|
117
|
+
|
|
118
|
+
```
|
|
119
|
+
/tfx-find "createBridge 함수 정의와 사용처"
|
|
120
|
+
/코드 검색 "*.test.mjs 파일 목록"
|
|
121
|
+
/find in code "TODO|FIXME|HACK 주석"
|
|
122
|
+
/코드에서 찾기 "환경변수 사용하는 파일"
|
|
123
|
+
```
|
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: tfx-forge
|
|
3
|
+
description: "새 스킬을 만들거나 기존 스킬을 수정할 때 사용한다. 'forge', '스킬 만들기', 'create skill', '새 스킬', '스킬 생성', 'SKILL.md 작성' 같은 요청에 반드시 사용. 반복 작업을 스킬로 자동화하고 싶을 때 적극 활용."
|
|
4
|
+
triggers:
|
|
5
|
+
- forge
|
|
6
|
+
- 스킬 만들기
|
|
7
|
+
- create skill
|
|
8
|
+
- 스킬 생성
|
|
9
|
+
- new skill
|
|
10
|
+
argument-hint: "[스킬 이름 또는 설명]"
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# tfx-forge — Skill Authoring Meta-Skill
|
|
14
|
+
|
|
15
|
+
> Superpowers skill authoring 오마주. 스킬을 만드는 스킬.
|
|
16
|
+
> "메타 레벨에서 자동화하라."
|
|
17
|
+
|
|
18
|
+
## 용도
|
|
19
|
+
|
|
20
|
+
- 새 tfx 스킬의 SKILL.md를 대화형으로 생성
|
|
21
|
+
- 기존 스킬 형식과 품질 기준을 자동 준수
|
|
22
|
+
- YAML frontmatter + 본문 구조를 일관되게 유지
|
|
23
|
+
- 스킬 작성 시행착오 최소화
|
|
24
|
+
|
|
25
|
+
## 워크플로우
|
|
26
|
+
|
|
27
|
+
### Step 1: 요구사항 수집 (대화형)
|
|
28
|
+
|
|
29
|
+
AskUserQuestion으로 필수 정보를 순서대로 수집한다. 사용자가 초기 입력에 일부 정보를 포함했으면 해당 항목은 건너뛴다.
|
|
30
|
+
|
|
31
|
+
**먼저 스킬 유형을 선택받는다:**
|
|
32
|
+
|
|
33
|
+
```
|
|
34
|
+
AskUserQuestion:
|
|
35
|
+
"스킬 유형을 선택하세요:"
|
|
36
|
+
1. Light (경량, 단일 CLI, 토큰 절약)
|
|
37
|
+
2. Deep (딥, 3-CLI 합의, 정확도 우선)
|
|
38
|
+
3. Core (인프라, 다른 스킬이 내부 호출)
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
선택된 유형에 따라 이후 수집 항목과 템플릿이 달라진다:
|
|
42
|
+
- **Light**: 단일 CLI 워크플로우, 낮은 토큰 예산
|
|
43
|
+
- **Deep**: 3-CLI 병렬 + tfx-consensus 통합, 높은 토큰 예산
|
|
44
|
+
- **Core**: 외부 호출 인터페이스 정의, 내부 API 문서화 포함
|
|
45
|
+
|
|
46
|
+
**이후 나머지 정보를 순서대로 수집한다:**
|
|
47
|
+
|
|
48
|
+
```
|
|
49
|
+
수집 항목 (순서대로):
|
|
50
|
+
|
|
51
|
+
1. 이름 (name)
|
|
52
|
+
"스킬 이름은? (예: tfx-myskill)"
|
|
53
|
+
→ 접두사 'tfx-' 자동 부여 (없으면)
|
|
54
|
+
|
|
55
|
+
2. 한줄 설명 (description)
|
|
56
|
+
"이 스킬이 무엇을 하는지 한 문장으로?"
|
|
57
|
+
|
|
58
|
+
3. 트리거 (triggers)
|
|
59
|
+
"어떤 키워드로 이 스킬을 호출? (쉼표 구분)"
|
|
60
|
+
|
|
61
|
+
4. 토큰 예산
|
|
62
|
+
"예상 토큰 예산은? (예: ~10K)"
|
|
63
|
+
|
|
64
|
+
5. 핵심 워크플로우
|
|
65
|
+
"주요 단계를 간략히 설명해주세요. (3-5 단계)"
|
|
66
|
+
|
|
67
|
+
6. 사용 예시
|
|
68
|
+
"사용 예시 1-3개를 알려주세요."
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
### Step 2: 기존 스킬 분석
|
|
72
|
+
|
|
73
|
+
프로젝트 내 기존 SKILL.md를 참조하여 형식과 품질 기준을 확인한다:
|
|
74
|
+
|
|
75
|
+
```
|
|
76
|
+
Glob("skills/**/SKILL.md")로 기존 스킬 목록 수집
|
|
77
|
+
→ 유사한 타입(Deep/Light)의 스킬 1-2개를 Read하여 형식 참조
|
|
78
|
+
→ YAML frontmatter 구조, 본문 섹션 패턴, 토큰 예산 표 형식 추출
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
### Step 3: SKILL.md 생성
|
|
82
|
+
|
|
83
|
+
수집된 정보로 SKILL.md를 자동 생성한다:
|
|
84
|
+
|
|
85
|
+
```yaml
|
|
86
|
+
# YAML Frontmatter 템플릿
|
|
87
|
+
---
|
|
88
|
+
name: {name}
|
|
89
|
+
description: {description}
|
|
90
|
+
triggers:
|
|
91
|
+
- {trigger_1}
|
|
92
|
+
- {trigger_2}
|
|
93
|
+
- ...
|
|
94
|
+
argument-hint: "{hint}"
|
|
95
|
+
---
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
```markdown
|
|
99
|
+
# 본문 템플릿
|
|
100
|
+
|
|
101
|
+
# {name} — {short_title}
|
|
102
|
+
|
|
103
|
+
> {한줄 설명 또는 오마주}
|
|
104
|
+
|
|
105
|
+
## 용도
|
|
106
|
+
|
|
107
|
+
- {use_case_1}
|
|
108
|
+
- {use_case_2}
|
|
109
|
+
- {use_case_3}
|
|
110
|
+
|
|
111
|
+
## 워크플로우
|
|
112
|
+
|
|
113
|
+
### Step 1: {step_title}
|
|
114
|
+
{step_description}
|
|
115
|
+
|
|
116
|
+
### Step 2: {step_title}
|
|
117
|
+
{step_description}
|
|
118
|
+
|
|
119
|
+
...
|
|
120
|
+
|
|
121
|
+
## 토큰 예산
|
|
122
|
+
|
|
123
|
+
| 단계 | 토큰 |
|
|
124
|
+
|------|------|
|
|
125
|
+
| {step} | ~{N}K |
|
|
126
|
+
| **총합** | **~{total}K** |
|
|
127
|
+
|
|
128
|
+
## 사용 예
|
|
129
|
+
|
|
130
|
+
```
|
|
131
|
+
/{name} "{example_1}"
|
|
132
|
+
/{name} "{example_2}"
|
|
133
|
+
```
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
### Step 4: 디렉토리 생성 및 저장
|
|
137
|
+
|
|
138
|
+
```
|
|
139
|
+
mkdir -p skills/{name}/
|
|
140
|
+
Write → skills/{name}/SKILL.md
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
### Step 5: 검증
|
|
144
|
+
|
|
145
|
+
생성된 파일을 읽어 검증한다:
|
|
146
|
+
|
|
147
|
+
```
|
|
148
|
+
검증 항목:
|
|
149
|
+
- [ ] YAML frontmatter 파싱 가능
|
|
150
|
+
- [ ] name, description, triggers 필수 필드 존재
|
|
151
|
+
- [ ] 본문에 용도, 워크플로우, 토큰 예산, 사용 예 섹션 존재
|
|
152
|
+
- [ ] 파일 크기 < 800줄
|
|
153
|
+
- [ ] 기존 스킬과 트리거 충돌 없음
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
충돌 발견 시 AskUserQuestion으로 트리거 조정 요청.
|
|
157
|
+
|
|
158
|
+
## 동작 규칙
|
|
159
|
+
|
|
160
|
+
1. 사용자가 이름만 제공해도 나머지는 대화형으로 수집한다.
|
|
161
|
+
2. 사용자가 상세 설명을 한꺼번에 제공하면 확인만 받고 즉시 생성한다.
|
|
162
|
+
3. Deep 타입 선택 시 tfx-consensus 통합 포인트를 본문에 자동 포함한다.
|
|
163
|
+
4. 생성 후 반드시 사용자에게 결과를 보여주고 수정 요청을 받는다.
|
|
164
|
+
5. 기존 SKILL.md가 있으면 덮어쓰기 전 사용자 확인을 받는다.
|
|
165
|
+
|
|
166
|
+
## 토큰 예산
|
|
167
|
+
|
|
168
|
+
| 단계 | 토큰 |
|
|
169
|
+
|------|------|
|
|
170
|
+
| 요구사항 수집 | ~2K |
|
|
171
|
+
| 기존 스킬 분석 | ~3K |
|
|
172
|
+
| SKILL.md 생성 | ~3K |
|
|
173
|
+
| 검증 | ~2K |
|
|
174
|
+
| **총합** | **~10K** |
|
|
175
|
+
|
|
176
|
+
## 사용 예
|
|
177
|
+
|
|
178
|
+
```
|
|
179
|
+
/tfx-forge
|
|
180
|
+
/tfx-forge tfx-myskill
|
|
181
|
+
/tfx-forge "CI/CD 파이프라인 자동 생성 스킬"
|
|
182
|
+
/스킬 만들기 "코드 마이그레이션 도우미"
|
|
183
|
+
```
|