triflux 8.3.0 → 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/README.md +209 -97
- package/bin/triflux.mjs +10 -0
- package/package.json +1 -1
- 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-autopilot/SKILL.md +112 -0
- package/skills/tfx-autoresearch/SKILL.md +1 -2
- package/skills/tfx-autoroute/SKILL.md +184 -0
- 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-find/SKILL.md +123 -0
- package/skills/tfx-forge/SKILL.md +183 -0
- package/skills/tfx-fullcycle/SKILL.md +195 -0
- 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-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
|
@@ -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
|
+
```
|
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: tfx-fullcycle
|
|
3
|
+
description: "복잡한 기능을 처음부터 끝까지 자율 개발해야 할 때 사용한다. 'deep autopilot', '풀 오토', '처음부터 끝까지', 'full auto', '전체 파이프라인으로' 같은 요청에 사용. 설계→계획→구현→QA→검증 전체 사이클이 필요한 대규모 기능에 적극 활용."
|
|
4
|
+
triggers:
|
|
5
|
+
- deep autopilot
|
|
6
|
+
- 풀 오토
|
|
7
|
+
- 처음부터 끝까지
|
|
8
|
+
- full auto
|
|
9
|
+
argument-hint: "<구현할 기능 전체 설명>"
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# tfx-fullcycle — Full Development Pipeline with Tri-CLI Consensus
|
|
13
|
+
|
|
14
|
+
> 5-Phase 파이프라인: Expansion → Planning → Execution → QA → Validation.
|
|
15
|
+
> OMC autopilot + Superpowers TDD + MetaGPT SOP 영감. 처음부터 끝까지 자율 실행.
|
|
16
|
+
|
|
17
|
+
## 핵심 원리
|
|
18
|
+
|
|
19
|
+
단순 autopilot은 "구현 → 검증" 2단계. Deep autopilot은 **계획 단계부터 3자 합의**, **구현은 분업**, **검증은 3자 독립 리뷰** — 전체 소프트웨어 개발 SOP를 자동화한다.
|
|
20
|
+
|
|
21
|
+
## 용도
|
|
22
|
+
|
|
23
|
+
- 신규 기능 전체 구현 (설계 → 코드 → 테스트 → 검증)
|
|
24
|
+
- 대규모 리팩터링
|
|
25
|
+
- 복잡한 버그 수정 (재현 → 분석 → 수정 → 회귀 검증)
|
|
26
|
+
- "처음부터 끝까지 알아서 해" 류의 복합 요청
|
|
27
|
+
|
|
28
|
+
## 워크플로우
|
|
29
|
+
|
|
30
|
+
### Phase 1: Expansion (Claude Opus)
|
|
31
|
+
|
|
32
|
+
요구사항을 분석하고 구현 범위를 확장한다:
|
|
33
|
+
|
|
34
|
+
```
|
|
35
|
+
Claude Opus:
|
|
36
|
+
"소프트웨어 아키텍트로서 다음 요구사항을 분석하라:
|
|
37
|
+
요구사항: {user_request}
|
|
38
|
+
프로젝트 컨텍스트: {context from PROJECT_INDEX.md}
|
|
39
|
+
|
|
40
|
+
출력:
|
|
41
|
+
1. 요구사항 해석 및 범위 정의
|
|
42
|
+
2. 영향 받는 파일/모듈 목록
|
|
43
|
+
3. 엣지 케이스 및 고려사항
|
|
44
|
+
4. 암묵적 요구사항 (사용자가 언급하지 않았지만 필요한 것)
|
|
45
|
+
5. acceptance criteria 목록 (검증 가능한 형태)"
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
모호한 점이 있으면 AskUserQuestion으로 사용자 확인.
|
|
49
|
+
|
|
50
|
+
### Phase 2: Planning (3자 합의)
|
|
51
|
+
|
|
52
|
+
**3개 CLI가 동시에, 상호 결과를 보지 않고 독립 계획 수립.**
|
|
53
|
+
|
|
54
|
+
```
|
|
55
|
+
Claude Opus (Planner, background):
|
|
56
|
+
"다음 기능의 구현 계획을 수립하라:
|
|
57
|
+
기능: {expanded_requirements}
|
|
58
|
+
태스크 분해, 순서, 의존성, TDD 전략 포함.
|
|
59
|
+
JSON: { tasks, order, dependencies, tdd_strategy, risks }"
|
|
60
|
+
|
|
61
|
+
Codex (Architect, background):
|
|
62
|
+
codex exec --dangerously-bypass-approvals-and-sandbox --skip-git-repo-check \
|
|
63
|
+
"시니어 엔지니어로서 기술적 설계를 작성하라:
|
|
64
|
+
기능: {expanded_requirements}
|
|
65
|
+
파일 구조, API 인터페이스, 데이터 모델 포함.
|
|
66
|
+
JSON: { design, file_changes, interfaces, test_plan }"
|
|
67
|
+
|
|
68
|
+
Gemini (Critic, background):
|
|
69
|
+
gemini -y -p \
|
|
70
|
+
"QA 전문가로서 구현 계획의 리스크를 분석하라:
|
|
71
|
+
기능: {expanded_requirements}
|
|
72
|
+
엣지 케이스, 보안, 성능, 접근성 우려 포함.
|
|
73
|
+
JSON: { edge_cases, security_risks, performance, accessibility, test_cases }"
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
3개 결과를 tfx-consensus 프로토콜로 합의 도출:
|
|
77
|
+
```
|
|
78
|
+
Consensus Score >= 70 → Phase 3 진행
|
|
79
|
+
Consensus Score < 70 → Round 2 교차검토 → 재합의
|
|
80
|
+
Round 2 후에도 < 60 → 사용자에게 불일치 제시 + 방향 결정 요청
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
### Phase 3: Execution (Codex + Gemini 분업)
|
|
84
|
+
|
|
85
|
+
합의된 계획에 따라 태스크를 병렬 실행:
|
|
86
|
+
|
|
87
|
+
```
|
|
88
|
+
태스크 라우팅:
|
|
89
|
+
코드 구현/수정 → Codex exec --dangerously-bypass-approvals-and-sandbox --skip-git-repo-check
|
|
90
|
+
테스트 작성 → Codex (TDD: 테스트 먼저 → RED 확인 → 구현 → GREEN)
|
|
91
|
+
UI/문서 → Gemini -y -p
|
|
92
|
+
|
|
93
|
+
실행 순서:
|
|
94
|
+
1. 테스트 먼저 작성 (TDD RED phase)
|
|
95
|
+
2. 구현 코드 작성 (TDD GREEN phase)
|
|
96
|
+
3. 리팩터링 (TDD REFACTOR phase)
|
|
97
|
+
4. 통합 테스트 실행
|
|
98
|
+
|
|
99
|
+
병렬 가능 태스크는 동시 실행:
|
|
100
|
+
독립 모듈 A (Codex pane 1) | 독립 모듈 B (Codex pane 2) | 문서 (Gemini)
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
각 태스크 완료 시 단순 검증 (테스트 통과 여부) 확인 후 다음 진행.
|
|
104
|
+
|
|
105
|
+
### Phase 4: QA (3자 독립 리뷰)
|
|
106
|
+
|
|
107
|
+
**전체 변경사항에 대해 3개 CLI가 독립 리뷰한다.**
|
|
108
|
+
|
|
109
|
+
```
|
|
110
|
+
Claude (기능 + 엣지케이스, background):
|
|
111
|
+
"다음 변경사항이 acceptance criteria를 충족하는지 검증하라:
|
|
112
|
+
criteria: {acceptance_criteria}
|
|
113
|
+
변경 파일: {changed_files}
|
|
114
|
+
각 criterion별 PASS/FAIL + 근거.
|
|
115
|
+
엣지 케이스 테스트 시나리오 제안.
|
|
116
|
+
JSON: { criteria_results, edge_case_findings, overall_pass }"
|
|
117
|
+
|
|
118
|
+
Codex (보안 + 성능, background):
|
|
119
|
+
codex exec review --profile thorough \
|
|
120
|
+
--dangerously-bypass-approvals-and-sandbox --skip-git-repo-check \
|
|
121
|
+
"보안/성능 관점에서 변경사항을 리뷰하라:
|
|
122
|
+
OWASP Top 10, 성능 병목, 에러 핸들링, 리소스 누수 확인.
|
|
123
|
+
JSON: { security_findings, performance_findings, overall_pass }"
|
|
124
|
+
|
|
125
|
+
Gemini (UX + 접근성, background):
|
|
126
|
+
gemini -y -p \
|
|
127
|
+
"UX/접근성 관점에서 변경사항을 리뷰하라:
|
|
128
|
+
UI 변경 있으면: 접근성, 반응형, 사용성.
|
|
129
|
+
API 변경 있으면: DX, 문서화, 일관성.
|
|
130
|
+
JSON: { ux_findings, accessibility_findings, overall_pass }"
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
### Phase 5: Validation (Consensus >= 70)
|
|
134
|
+
|
|
135
|
+
Phase 4 결과에 tfx-consensus 프로토콜 적용:
|
|
136
|
+
|
|
137
|
+
```
|
|
138
|
+
Consensus 판정:
|
|
139
|
+
Score >= 70 + Critical 0건 → 완료 확정
|
|
140
|
+
Score >= 70 + Critical 존재 → Critical만 수정 후 재검증
|
|
141
|
+
Score < 70 → 미합의 항목 수정 → Phase 4 재실행 (최대 2회)
|
|
142
|
+
2회 재실행 후에도 < 70 → 사용자에게 보고 + 판단 요청
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
### Final: 완료 보고
|
|
146
|
+
|
|
147
|
+
```markdown
|
|
148
|
+
# Deep Autopilot 완료: {feature}
|
|
149
|
+
|
|
150
|
+
## Pipeline Summary
|
|
151
|
+
| Phase | 상태 | 소요 |
|
|
152
|
+
|-------|------|------|
|
|
153
|
+
| Expansion | ✓ | {criteria_count}개 기준 도출 |
|
|
154
|
+
| Planning | ✓ | Consensus {score}% (Round {n}) |
|
|
155
|
+
| Execution | ✓ | {task_count}개 태스크, {file_count}개 파일 변경 |
|
|
156
|
+
| QA | ✓ | 3자 독립 리뷰 완료 |
|
|
157
|
+
| Validation | ✓ | Consensus {score}%, Critical 0건 |
|
|
158
|
+
|
|
159
|
+
## 변경 사항
|
|
160
|
+
| 파일 | 작업 | 설명 |
|
|
161
|
+
|------|------|------|
|
|
162
|
+
| {file} | 생성/수정 | {summary} |
|
|
163
|
+
|
|
164
|
+
## Acceptance Criteria
|
|
165
|
+
- [x] {criterion1} — 3/3 PASS
|
|
166
|
+
- [x] {criterion2} — 2/3 PASS (Gemini: 조건부)
|
|
167
|
+
|
|
168
|
+
## QA 결과
|
|
169
|
+
- 보안: {findings_count}건 (모두 해결)
|
|
170
|
+
- 성능: {findings_count}건 (모두 해결)
|
|
171
|
+
- 테스트: {pass}/{total} 통과
|
|
172
|
+
|
|
173
|
+
## 미합의 사항 (있으면)
|
|
174
|
+
- {항목}: {각 CLI 입장}
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
## 토큰 예산
|
|
178
|
+
|
|
179
|
+
| Phase | 토큰 |
|
|
180
|
+
|-------|------|
|
|
181
|
+
| Phase 1 (Expansion) | ~5K |
|
|
182
|
+
| Phase 2 (Planning, 3x) | ~20K |
|
|
183
|
+
| Phase 3 (Execution) | ~25K |
|
|
184
|
+
| Phase 4 (QA, 3x) | ~18K |
|
|
185
|
+
| Phase 5 (Validation) | ~5K |
|
|
186
|
+
| 재시도 (필요 시) | +15K |
|
|
187
|
+
| **총합** | **~73-88K** |
|
|
188
|
+
|
|
189
|
+
## 사용 예
|
|
190
|
+
|
|
191
|
+
```
|
|
192
|
+
/tfx-fullcycle "JWT 인증 시스템 전체 구현. 로그인/로그아웃/리프레시/미들웨어/테스트"
|
|
193
|
+
/tfx-fullcycle "풀 오토 — 결제 모듈을 Stripe에서 Toss Payments로 마이그레이션"
|
|
194
|
+
/tfx-fullcycle "처음부터 끝까지 — REST API를 GraphQL로 점진적 전환, 기존 클라이언트 호환 유지"
|
|
195
|
+
```
|
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: tfx-index
|
|
3
|
+
description: "프로젝트 구조를 빠르게 파악하거나 토큰을 절약할 때 사용한다. '인덱싱', '프로젝트 구조', '인덱스 만들어', '코드베이스 맵', '프로젝트 개요' 같은 요청에 사용. 새 프로젝트 온보딩, 세션 시작 시 컨텍스트 효율화에 적극 활용."
|
|
4
|
+
triggers:
|
|
5
|
+
- 인덱싱
|
|
6
|
+
- 프로젝트 인덱스
|
|
7
|
+
- 인덱스
|
|
8
|
+
- tfx-index
|
|
9
|
+
argument-hint: "[--update] [경로]"
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# tfx-index — Project Indexing (94% Token Reduction)
|
|
13
|
+
|
|
14
|
+
> SuperClaude index-repo 오마주. 1회 2K 토큰으로 인덱스 생성, 이후 세션마다 55K 토큰 절감.
|
|
15
|
+
|
|
16
|
+
## 원리
|
|
17
|
+
|
|
18
|
+
매 세션마다 프로젝트 구조를 파악하려면 수십 개 파일을 읽어야 한다 (~58K tokens).
|
|
19
|
+
인덱스를 한 번 생성하면 3K 토큰짜리 PROJECT_INDEX.md만 읽으면 된다.
|
|
20
|
+
|
|
21
|
+
**ROI**: 1회 투자 2K → 세션당 55K 절감 → 10세션이면 550K 절감
|
|
22
|
+
|
|
23
|
+
## 워크플로우
|
|
24
|
+
|
|
25
|
+
### Step 0: 인덱싱 모드 선택
|
|
26
|
+
|
|
27
|
+
인자 없이 호출되거나 모드가 불명확한 경우, AskUserQuestion으로 모드를 선택받는다:
|
|
28
|
+
|
|
29
|
+
```
|
|
30
|
+
AskUserQuestion:
|
|
31
|
+
"인덱싱 모드를 선택하세요:"
|
|
32
|
+
1. 전체 인덱스 생성 (처음 또는 재생성)
|
|
33
|
+
2. 증분 업데이트 (변경분만)
|
|
34
|
+
3. 특정 디렉토리만
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
- 1번 선택 → Step 1부터 전체 실행
|
|
38
|
+
- 2번 선택 → `--update` 모드로 전환 (기존 인덱스 필요, 없으면 1번으로 fallback)
|
|
39
|
+
- 3번 선택 → 추가 AskUserQuestion으로 대상 디렉토리 경로 입력받음
|
|
40
|
+
|
|
41
|
+
`--update` 플래그나 경로 인자가 이미 제공된 경우 이 단계를 건너뛴다.
|
|
42
|
+
|
|
43
|
+
### Step 1: 파일 트리 스캔
|
|
44
|
+
|
|
45
|
+
```
|
|
46
|
+
병렬 Glob으로 전체 파일 트리 수집:
|
|
47
|
+
- **/*.{ts,js,mjs,tsx,jsx,py,go,rs,java} (소스)
|
|
48
|
+
- **/*.{md,json,yaml,toml} (설정/문서)
|
|
49
|
+
- **/package.json, **/tsconfig.json (프로젝트 메타)
|
|
50
|
+
|
|
51
|
+
제외:
|
|
52
|
+
- node_modules/, .git/, dist/, build/, coverage/
|
|
53
|
+
- *.lock, *.log, *.map
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
### Step 2: 메타데이터 추출 (병렬)
|
|
57
|
+
|
|
58
|
+
각 소스 파일에서 핵심 메타데이터만 추출 (전체 읽기 금지):
|
|
59
|
+
|
|
60
|
+
```
|
|
61
|
+
파일당 추출 항목:
|
|
62
|
+
- exports (함수, 클래스, 상수 이름)
|
|
63
|
+
- imports (의존성)
|
|
64
|
+
- 파일 크기 (라인 수)
|
|
65
|
+
- 주요 패턴 (테스트? 설정? 컴포넌트? 유틸?)
|
|
66
|
+
|
|
67
|
+
추출 방법:
|
|
68
|
+
- Grep으로 export/import 문 추출 (파일당 ~20줄만)
|
|
69
|
+
- 전체 파일을 읽지 않음 → 토큰 절약
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
### Step 3: 인덱스 생성
|
|
73
|
+
|
|
74
|
+
```markdown
|
|
75
|
+
# PROJECT_INDEX.md
|
|
76
|
+
Generated: {date} | Files: {count} | Lines: {total_lines}
|
|
77
|
+
|
|
78
|
+
## Architecture
|
|
79
|
+
{1-2줄 아키텍처 요약}
|
|
80
|
+
|
|
81
|
+
## Directory Map
|
|
82
|
+
```
|
|
83
|
+
src/
|
|
84
|
+
├─ hub/ # MCP 메시지 버스 (bridge, router, pipe)
|
|
85
|
+
│ ├─ team/ # 멀티-CLI 팀 모드 (headless, psmux, native)
|
|
86
|
+
│ └─ pipeline/ # 상태 관리 (state, transitions, gates)
|
|
87
|
+
├─ skills/ # 스킬 정의 (tfx-*, SKILL.md)
|
|
88
|
+
└─ bin/ # CLI 진입점
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
## Key Files
|
|
92
|
+
| File | Lines | Exports | Role |
|
|
93
|
+
|------|-------|---------|------|
|
|
94
|
+
| hub/bridge.mjs | 850 | BridgeServer, createBridge | MCP 프로토콜 브릿지 |
|
|
95
|
+
| hub/router.mjs | 720 | Router, routeRequest | 요청/응답 라우팅 |
|
|
96
|
+
| ... | ... | ... | ... |
|
|
97
|
+
|
|
98
|
+
## Dependencies
|
|
99
|
+
| Package | Version | Purpose |
|
|
100
|
+
|---------|---------|---------|
|
|
101
|
+
| express | 4.x | HTTP 서버 |
|
|
102
|
+
| ... | ... | ... |
|
|
103
|
+
|
|
104
|
+
## Entry Points
|
|
105
|
+
- `bin/tfx` → CLI 메인
|
|
106
|
+
- `hub/bridge.mjs` → MCP 서버
|
|
107
|
+
- `skills/*/SKILL.md` → 스킬 정의
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
### Step 4: JSON 인덱스 (기계용)
|
|
111
|
+
|
|
112
|
+
```json
|
|
113
|
+
// PROJECT_INDEX.json (~10KB)
|
|
114
|
+
{
|
|
115
|
+
"generated": "2026-03-29",
|
|
116
|
+
"stats": { "files": 45, "lines": 12500 },
|
|
117
|
+
"files": {
|
|
118
|
+
"hub/bridge.mjs": {
|
|
119
|
+
"lines": 850,
|
|
120
|
+
"exports": ["BridgeServer", "createBridge"],
|
|
121
|
+
"imports": ["express", "./router"],
|
|
122
|
+
"type": "server"
|
|
123
|
+
}
|
|
124
|
+
},
|
|
125
|
+
"graph": {
|
|
126
|
+
"hub/bridge.mjs": ["hub/router.mjs", "hub/pipe.mjs"],
|
|
127
|
+
"hub/router.mjs": ["hub/intent.mjs"]
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
### Step 5: 검증
|
|
133
|
+
|
|
134
|
+
```
|
|
135
|
+
생성된 인덱스 검증:
|
|
136
|
+
- 파일 수 일치 확인
|
|
137
|
+
- 주요 진입점 포함 확인
|
|
138
|
+
- 인덱스 크기 < 5KB 확인
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
## --update 모드
|
|
142
|
+
|
|
143
|
+
기존 인덱스가 있으면 git diff 기반 증분 업데이트:
|
|
144
|
+
|
|
145
|
+
```
|
|
146
|
+
변경된 파일만 재스캔 → 인덱스 부분 갱신
|
|
147
|
+
신규 파일 추가, 삭제된 파일 제거
|
|
148
|
+
전체 재생성 대비 ~80% 시간 절감
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
## 출력 위치
|
|
152
|
+
|
|
153
|
+
```
|
|
154
|
+
{project_root}/
|
|
155
|
+
PROJECT_INDEX.md ← 사람용 (3KB)
|
|
156
|
+
PROJECT_INDEX.json ← 기계용 (10KB)
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
## 토큰 예산
|
|
160
|
+
|
|
161
|
+
| 작업 | 토큰 |
|
|
162
|
+
|------|------|
|
|
163
|
+
| 스캔+추출 | ~1.5K |
|
|
164
|
+
| 인덱스 생성 | ~0.5K |
|
|
165
|
+
| **총합** | **~2K** |
|
|
166
|
+
| **세션당 절감** | **~55K** |
|
|
167
|
+
|
|
168
|
+
## 사용 예
|
|
169
|
+
|
|
170
|
+
```
|
|
171
|
+
/tfx-index # 전체 인덱스 생성
|
|
172
|
+
/tfx-index --update # 증분 업데이트
|
|
173
|
+
/tfx-index src/hub # 특정 디렉토리만
|
|
174
|
+
```
|