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
|
@@ -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
|
+
```
|
package/skills/tfx-hub/SKILL.md
CHANGED
|
@@ -36,7 +36,7 @@ Bash("bash ~/.claude/scripts/tfx-route.sh {에이전트} '{hub 컨텍스트 +
|
|
|
36
36
|
|
|
37
37
|
# codex 직접 호출 시 — 반드시 exec 서브커맨드 포함
|
|
38
38
|
Bash("codex exec --dangerously-bypass-approvals-and-sandbox --skip-git-repo-check '{작업}'")
|
|
39
|
-
Bash("codex --profile
|
|
39
|
+
Bash("codex --profile gpt54_xhigh exec --dangerously-bypass-approvals-and-sandbox --skip-git-repo-check '{작업}'")
|
|
40
40
|
# ↑ --profile은 exec 앞에, --skip-git-repo-check은 exec 뒤에
|
|
41
41
|
|
|
42
42
|
# Claude 네이티브 (탐색/검증)
|
|
@@ -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
|
+
```
|
|
@@ -0,0 +1,210 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: tfx-interview
|
|
3
|
+
description: "요구사항이 모호하거나 구현 전 명확화가 필요할 때 사용한다. 'interview', '인터뷰', '요구사항 정리', '뭘 만들어야 하는지 모르겠어', '명확하게 해줘' 같은 요청에 반드시 사용. 구현 시작 전 스펙을 확정하고 싶을 때 적극 활용."
|
|
4
|
+
triggers:
|
|
5
|
+
- interview
|
|
6
|
+
- 인터뷰
|
|
7
|
+
- 요구사항 탐색
|
|
8
|
+
- tfx-interview
|
|
9
|
+
- 모호성 분석
|
|
10
|
+
argument-hint: "<구현할 주제 또는 요구사항>"
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# tfx-interview — Quantified Socratic Requirements Exploration
|
|
14
|
+
|
|
15
|
+
> OMC deep-interview + ouroboros 오마주. 모호성을 숫자로 측정하고 20% 미만까지 질문한다.
|
|
16
|
+
> "측정할 수 없으면 개선할 수 없다."
|
|
17
|
+
|
|
18
|
+
## 용도
|
|
19
|
+
|
|
20
|
+
- 구현 전 요구사항 명확화
|
|
21
|
+
- 모호한 요청을 정량적으로 분석하여 실행 가능한 수준으로 구체화
|
|
22
|
+
- 빠진 제약 조건, 성공 기준, 경계 조건을 체계적으로 발견
|
|
23
|
+
- 과잉 구현/과소 구현 방지
|
|
24
|
+
|
|
25
|
+
## 핵심: 모호성 점수 (Ambiguity Score)
|
|
26
|
+
|
|
27
|
+
요구사항의 모호성을 수학적으로 측정한다:
|
|
28
|
+
|
|
29
|
+
```
|
|
30
|
+
ambiguity = 1 - (goal × 0.40 + constraints × 0.30 + criteria × 0.30)
|
|
31
|
+
|
|
32
|
+
각 요소 (0.0 ~ 1.0):
|
|
33
|
+
goal — 목표 명확도. "무엇을 달성하려는가?"가 명확한가?
|
|
34
|
+
constraints — 제약 조건 명확도. 범위, 기술 스택, 시간, 호환성 등
|
|
35
|
+
criteria — 성공 기준 명확도. "어떻게 되면 완료인가?"
|
|
36
|
+
|
|
37
|
+
예시:
|
|
38
|
+
입력: "인증 기능 추가해"
|
|
39
|
+
goal = 0.5 (인증이 무슨 인증? OAuth? JWT? 세션?)
|
|
40
|
+
constraints = 0.2 (기술 스택? 기존 시스템 연동?)
|
|
41
|
+
criteria = 0.1 (테스트? 성능? 보안 수준?)
|
|
42
|
+
ambiguity = 1 - (0.5×0.40 + 0.2×0.30 + 0.1×0.30) = 1 - 0.29 = 0.71 (71%)
|
|
43
|
+
|
|
44
|
+
목표: ambiguity < 0.20 (20% 미만)이 될 때까지 질문 반복.
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
## 워크플로우
|
|
48
|
+
|
|
49
|
+
### Step 1: 초기 모호성 평가
|
|
50
|
+
|
|
51
|
+
사용자 입력을 분석하여 초기 ambiguity score를 계산한다:
|
|
52
|
+
|
|
53
|
+
```
|
|
54
|
+
입력 분석:
|
|
55
|
+
1. goal, constraints, criteria 각 요소의 현재 명확도 평가
|
|
56
|
+
2. ambiguity score 계산
|
|
57
|
+
3. 가장 불명확한 요소 식별 → 해당 단계부터 질문 시작
|
|
58
|
+
|
|
59
|
+
출력:
|
|
60
|
+
"📊 현재 모호성: 71%
|
|
61
|
+
- 목표: 50% 명확 (어떤 인증 방식?)
|
|
62
|
+
- 제약: 20% 명확 (기술 스택 미정)
|
|
63
|
+
- 기준: 10% 명확 (완료 조건 없음)
|
|
64
|
+
→ Stage 1: Clarify부터 시작합니다."
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
### Step 2: 5단계 인터뷰 (모호성 < 20%까지)
|
|
68
|
+
|
|
69
|
+
각 단계에서 AskUserQuestion으로 질문하고, 응답 후 ambiguity score를 재계산한다.
|
|
70
|
+
|
|
71
|
+
#### Stage 1: Clarify (명확화) — goal 개선
|
|
72
|
+
|
|
73
|
+
```
|
|
74
|
+
질문 방향:
|
|
75
|
+
- "정확히 무엇을 달성하려는가?"
|
|
76
|
+
- "이 작업의 범위는 어디까지인가?"
|
|
77
|
+
- "완료 후 어떤 상태가 되어야 하는가?"
|
|
78
|
+
|
|
79
|
+
응답 후: goal 점수 재평가 → ambiguity 재계산
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
#### Stage 2: Decompose (분해) — constraints 개선
|
|
83
|
+
|
|
84
|
+
```
|
|
85
|
+
질문 방향:
|
|
86
|
+
- "이것을 어떤 하위 문제로 나눌 수 있는가?"
|
|
87
|
+
- "기술적 제약 조건은? (스택, 호환성, 성능)"
|
|
88
|
+
- "의존하는 외부 시스템이나 API는?"
|
|
89
|
+
|
|
90
|
+
응답 후: constraints 점수 재평가 → ambiguity 재계산
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
#### Stage 3: Challenge (반론) — 숨은 제약 발견
|
|
94
|
+
|
|
95
|
+
```
|
|
96
|
+
질문 방향:
|
|
97
|
+
- "이 접근의 약점은?"
|
|
98
|
+
- "실패할 수 있는 시나리오는?"
|
|
99
|
+
- "6개월 후 유지보수 관점에서 문제될 부분은?"
|
|
100
|
+
|
|
101
|
+
응답 후: constraints + criteria 재평가 → ambiguity 재계산
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
#### Stage 4: Alternatives (대안) — criteria 정밀화
|
|
105
|
+
|
|
106
|
+
```
|
|
107
|
+
질문 방향:
|
|
108
|
+
- "다른 방법은 없는가?"
|
|
109
|
+
- "시간이 절반이라면 어떤 방식을 택하겠는가?"
|
|
110
|
+
- "각 대안의 trade-off는?"
|
|
111
|
+
|
|
112
|
+
응답 후: criteria 점수 재평가 → ambiguity 재계산
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
#### Stage 5: Synthesize (종합) — 최종 확인
|
|
116
|
+
|
|
117
|
+
```
|
|
118
|
+
질문 방향:
|
|
119
|
+
- "지금까지의 논의를 종합하면 최적 경로는?"
|
|
120
|
+
- "첫 번째로 실행할 단계는?"
|
|
121
|
+
- "이 결정에 대한 확신도는? (1-10)"
|
|
122
|
+
|
|
123
|
+
응답 후: 전체 재평가 → 최종 ambiguity score
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
### Step 3: 조기 종료 판단
|
|
127
|
+
|
|
128
|
+
매 질문 후 ambiguity를 재계산하고, < 20%이면 남은 단계를 건너뛰고 종합 단계로 이동한다:
|
|
129
|
+
|
|
130
|
+
```
|
|
131
|
+
질문 후 재계산:
|
|
132
|
+
if ambiguity < 0.20:
|
|
133
|
+
→ "📊 모호성 {score}% — 충분히 명확합니다. 종합 단계로 이동합니다."
|
|
134
|
+
→ Step 4로 직행
|
|
135
|
+
elif ambiguity < 0.40:
|
|
136
|
+
→ "📊 모호성 {score}% — 거의 명확합니다. 핵심 질문 1-2개만 더."
|
|
137
|
+
else:
|
|
138
|
+
→ 다음 단계 진행
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
### Step 4: 산출물 생성
|
|
142
|
+
|
|
143
|
+
인터뷰 결과를 구조화된 문서로 저장한다:
|
|
144
|
+
|
|
145
|
+
```markdown
|
|
146
|
+
# Interview: {topic}
|
|
147
|
+
Date: {date} | Final Ambiguity: {score}%
|
|
148
|
+
|
|
149
|
+
## Ambiguity Breakdown
|
|
150
|
+
| 요소 | 초기 | 최종 | 개선 |
|
|
151
|
+
|------|------|------|------|
|
|
152
|
+
| Goal | {init}% | {final}% | +{delta}% |
|
|
153
|
+
| Constraints | {init}% | {final}% | +{delta}% |
|
|
154
|
+
| Criteria | {init}% | {final}% | +{delta}% |
|
|
155
|
+
|
|
156
|
+
## Goal
|
|
157
|
+
{1문장 목표}
|
|
158
|
+
|
|
159
|
+
## Constraints
|
|
160
|
+
{제약 조건 목록}
|
|
161
|
+
|
|
162
|
+
## Success Criteria
|
|
163
|
+
{성공 기준 목록}
|
|
164
|
+
|
|
165
|
+
## Risks & Challenges
|
|
166
|
+
{식별된 위험}
|
|
167
|
+
|
|
168
|
+
## Alternatives Considered
|
|
169
|
+
| 대안 | 장점 | 단점 | 채택 |
|
|
170
|
+
|------|------|------|------|
|
|
171
|
+
| ... | ... | ... | Y/N |
|
|
172
|
+
|
|
173
|
+
## Decision
|
|
174
|
+
{최종 결정 + 근거}
|
|
175
|
+
|
|
176
|
+
## Action Plan
|
|
177
|
+
1. {단계 1} → 검증: {check}
|
|
178
|
+
2. {단계 2} → 검증: {check}
|
|
179
|
+
3. ...
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
저장 위치: `.omc/plans/interview-{timestamp}.md`
|
|
183
|
+
|
|
184
|
+
## 동작 규칙
|
|
185
|
+
|
|
186
|
+
1. 각 단계에서 반드시 사용자 응답을 수집한 후 다음으로 이동한다.
|
|
187
|
+
2. 매 응답 후 ambiguity score를 재계산하여 진행률을 표시한다.
|
|
188
|
+
3. ambiguity < 20%이면 남은 단계를 건너뛰어도 된다.
|
|
189
|
+
4. 5단계를 모두 거쳐도 ambiguity >= 20%이면 추가 질문 라운드를 진행한다 (최대 2회).
|
|
190
|
+
5. 인터뷰 시작 시 코드베이스를 탐색하여 관련 컨텍스트를 확보한다.
|
|
191
|
+
6. 이전 단계 답변을 다음 단계 질문에 반영한다 (대화형 연결).
|
|
192
|
+
|
|
193
|
+
## 토큰 예산
|
|
194
|
+
|
|
195
|
+
| 단계 | 토큰 |
|
|
196
|
+
|------|------|
|
|
197
|
+
| 초기 평가 | ~1K |
|
|
198
|
+
| 5단계 인터뷰 (질문+분석) | ~10K |
|
|
199
|
+
| 산출물 생성 | ~2K |
|
|
200
|
+
| 코드베이스 탐색 | ~2K |
|
|
201
|
+
| **총합** | **~15K** |
|
|
202
|
+
|
|
203
|
+
## 사용 예
|
|
204
|
+
|
|
205
|
+
```
|
|
206
|
+
/tfx-interview "인증 시스템 리팩터링"
|
|
207
|
+
/tfx-interview "실시간 알림 기능 추가"
|
|
208
|
+
/요구사항 분석 "데이터 파이프라인 설계"
|
|
209
|
+
/인터뷰 "레거시 API를 REST에서 GraphQL로 마이그레이션"
|
|
210
|
+
```
|