@tienne/gestalt 0.9.1 → 0.10.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.
- package/CLAUDE.md +75 -0
- package/dist/package.json +2 -1
- package/dist/skills/blast-radius/SKILL.md +134 -0
- package/dist/skills/build-graph/SKILL.md +100 -0
- package/dist/skills/diff-radius/SKILL.md +125 -0
- package/dist/skills/setup/SKILL.md +150 -0
- package/dist/src/cli/commands/graph-visualize.d.ts +11 -0
- package/dist/src/cli/commands/graph-visualize.d.ts.map +1 -0
- package/dist/src/cli/commands/graph-visualize.js +26 -0
- package/dist/src/cli/commands/graph-visualize.js.map +1 -0
- package/dist/src/cli/commands/init.d.ts +5 -0
- package/dist/src/cli/commands/init.d.ts.map +1 -0
- package/dist/src/cli/commands/init.js +79 -0
- package/dist/src/cli/commands/init.js.map +1 -0
- package/dist/src/cli/index.d.ts.map +1 -1
- package/dist/src/cli/index.js +23 -0
- package/dist/src/cli/index.js.map +1 -1
- package/dist/src/code-graph/blast-radius.d.ts +9 -0
- package/dist/src/code-graph/blast-radius.d.ts.map +1 -0
- package/dist/src/code-graph/blast-radius.js +139 -0
- package/dist/src/code-graph/blast-radius.js.map +1 -0
- package/dist/src/code-graph/engine.d.ts +46 -0
- package/dist/src/code-graph/engine.d.ts.map +1 -0
- package/dist/src/code-graph/engine.js +301 -0
- package/dist/src/code-graph/engine.js.map +1 -0
- package/dist/src/code-graph/git-hook.d.ts +22 -0
- package/dist/src/code-graph/git-hook.d.ts.map +1 -0
- package/dist/src/code-graph/git-hook.js +100 -0
- package/dist/src/code-graph/git-hook.js.map +1 -0
- package/dist/src/code-graph/index.d.ts +7 -0
- package/dist/src/code-graph/index.d.ts.map +1 -0
- package/dist/src/code-graph/index.js +6 -0
- package/dist/src/code-graph/index.js.map +1 -0
- package/dist/src/code-graph/plugins/go.d.ts +3 -0
- package/dist/src/code-graph/plugins/go.d.ts.map +1 -0
- package/dist/src/code-graph/plugins/go.js +126 -0
- package/dist/src/code-graph/plugins/go.js.map +1 -0
- package/dist/src/code-graph/plugins/index.d.ts +16 -0
- package/dist/src/code-graph/plugins/index.d.ts.map +1 -0
- package/dist/src/code-graph/plugins/index.js +36 -0
- package/dist/src/code-graph/plugins/index.js.map +1 -0
- package/dist/src/code-graph/plugins/java.d.ts +3 -0
- package/dist/src/code-graph/plugins/java.d.ts.map +1 -0
- package/dist/src/code-graph/plugins/java.js +108 -0
- package/dist/src/code-graph/plugins/java.js.map +1 -0
- package/dist/src/code-graph/plugins/kotlin.d.ts +3 -0
- package/dist/src/code-graph/plugins/kotlin.d.ts.map +1 -0
- package/dist/src/code-graph/plugins/kotlin.js +94 -0
- package/dist/src/code-graph/plugins/kotlin.js.map +1 -0
- package/dist/src/code-graph/plugins/objc.d.ts +3 -0
- package/dist/src/code-graph/plugins/objc.d.ts.map +1 -0
- package/dist/src/code-graph/plugins/objc.js +129 -0
- package/dist/src/code-graph/plugins/objc.js.map +1 -0
- package/dist/src/code-graph/plugins/python.d.ts +3 -0
- package/dist/src/code-graph/plugins/python.d.ts.map +1 -0
- package/dist/src/code-graph/plugins/python.js +116 -0
- package/dist/src/code-graph/plugins/python.js.map +1 -0
- package/dist/src/code-graph/plugins/rust.d.ts +3 -0
- package/dist/src/code-graph/plugins/rust.d.ts.map +1 -0
- package/dist/src/code-graph/plugins/rust.js +108 -0
- package/dist/src/code-graph/plugins/rust.js.map +1 -0
- package/dist/src/code-graph/plugins/swift.d.ts +3 -0
- package/dist/src/code-graph/plugins/swift.d.ts.map +1 -0
- package/dist/src/code-graph/plugins/swift.js +106 -0
- package/dist/src/code-graph/plugins/swift.js.map +1 -0
- package/dist/src/code-graph/plugins/typescript.d.ts +3 -0
- package/dist/src/code-graph/plugins/typescript.d.ts.map +1 -0
- package/dist/src/code-graph/plugins/typescript.js +209 -0
- package/dist/src/code-graph/plugins/typescript.js.map +1 -0
- package/dist/src/code-graph/storage.d.ts +19 -0
- package/dist/src/code-graph/storage.d.ts.map +1 -0
- package/dist/src/code-graph/storage.js +182 -0
- package/dist/src/code-graph/storage.js.map +1 -0
- package/dist/src/code-graph/types.d.ts +93 -0
- package/dist/src/code-graph/types.d.ts.map +1 -0
- package/dist/src/code-graph/types.js +17 -0
- package/dist/src/code-graph/types.js.map +1 -0
- package/dist/src/core/config.d.ts +1 -0
- package/dist/src/core/config.d.ts.map +1 -1
- package/dist/src/core/config.js +1 -1
- package/dist/src/core/config.js.map +1 -1
- package/dist/src/core/types.d.ts +1 -0
- package/dist/src/core/types.d.ts.map +1 -1
- package/dist/src/execute/passthrough-engine.d.ts +4 -1
- package/dist/src/execute/passthrough-engine.d.ts.map +1 -1
- package/dist/src/execute/passthrough-engine.js +54 -4
- package/dist/src/execute/passthrough-engine.js.map +1 -1
- package/dist/src/execute/prompts.d.ts +2 -2
- package/dist/src/execute/prompts.d.ts.map +1 -1
- package/dist/src/execute/prompts.js +7 -3
- package/dist/src/execute/prompts.js.map +1 -1
- package/dist/src/execute/repository.d.ts.map +1 -1
- package/dist/src/execute/repository.js +1 -0
- package/dist/src/execute/repository.js.map +1 -1
- package/dist/src/execute/session.d.ts +3 -1
- package/dist/src/execute/session.d.ts.map +1 -1
- package/dist/src/execute/session.js +3 -1
- package/dist/src/execute/session.js.map +1 -1
- package/dist/src/graph-viz/engine.d.ts +20 -0
- package/dist/src/graph-viz/engine.d.ts.map +1 -0
- package/dist/src/graph-viz/engine.js +81 -0
- package/dist/src/graph-viz/engine.js.map +1 -0
- package/dist/src/graph-viz/html-generator.d.ts +7 -0
- package/dist/src/graph-viz/html-generator.d.ts.map +1 -0
- package/dist/src/graph-viz/html-generator.js +699 -0
- package/dist/src/graph-viz/html-generator.js.map +1 -0
- package/dist/src/graph-viz/index.d.ts +6 -0
- package/dist/src/graph-viz/index.d.ts.map +1 -0
- package/dist/src/graph-viz/index.js +5 -0
- package/dist/src/graph-viz/index.js.map +1 -0
- package/dist/src/graph-viz/port-finder.d.ts +2 -0
- package/dist/src/graph-viz/port-finder.d.ts.map +1 -0
- package/dist/src/graph-viz/port-finder.js +26 -0
- package/dist/src/graph-viz/port-finder.js.map +1 -0
- package/dist/src/graph-viz/server.d.ts +26 -0
- package/dist/src/graph-viz/server.d.ts.map +1 -0
- package/dist/src/graph-viz/server.js +104 -0
- package/dist/src/graph-viz/server.js.map +1 -0
- package/dist/src/graph-viz/types.d.ts +11 -0
- package/dist/src/graph-viz/types.d.ts.map +1 -0
- package/dist/src/graph-viz/types.js +2 -0
- package/dist/src/graph-viz/types.js.map +1 -0
- package/dist/src/mcp/schemas.d.ts +57 -0
- package/dist/src/mcp/schemas.d.ts.map +1 -1
- package/dist/src/mcp/schemas.js +28 -0
- package/dist/src/mcp/schemas.js.map +1 -1
- package/dist/src/mcp/server.d.ts.map +1 -1
- package/dist/src/mcp/server.js +28 -1
- package/dist/src/mcp/server.js.map +1 -1
- package/dist/src/mcp/tools/code-graph-passthrough.d.ts +16 -0
- package/dist/src/mcp/tools/code-graph-passthrough.d.ts.map +1 -0
- package/dist/src/mcp/tools/code-graph-passthrough.js +65 -0
- package/dist/src/mcp/tools/code-graph-passthrough.js.map +1 -0
- package/dist/src/mcp/tools/execute-passthrough.d.ts.map +1 -1
- package/dist/src/mcp/tools/execute-passthrough.js +1 -1
- package/dist/src/mcp/tools/execute-passthrough.js.map +1 -1
- package/dist/src/mcp/tools/graph-visualize-passthrough.d.ts +13 -0
- package/dist/src/mcp/tools/graph-visualize-passthrough.d.ts.map +1 -0
- package/dist/src/mcp/tools/graph-visualize-passthrough.js +26 -0
- package/dist/src/mcp/tools/graph-visualize-passthrough.js.map +1 -0
- package/dist/src/mcp/tools/index.d.ts +1 -0
- package/dist/src/mcp/tools/index.d.ts.map +1 -1
- package/dist/src/mcp/tools/index.js +1 -0
- package/dist/src/mcp/tools/index.js.map +1 -1
- package/package.json +2 -1
- package/skills/blast-radius/SKILL.md +134 -0
- package/skills/build-graph/SKILL.md +100 -0
- package/skills/diff-radius/SKILL.md +125 -0
- package/skills/setup/SKILL.md +150 -0
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: build-graph
|
|
3
|
+
version: "1.0.0"
|
|
4
|
+
description: "Build a code knowledge graph for the current repository to enable blast-radius analysis"
|
|
5
|
+
triggers:
|
|
6
|
+
- "build graph"
|
|
7
|
+
- "build-graph"
|
|
8
|
+
- "index codebase"
|
|
9
|
+
- "build code graph"
|
|
10
|
+
inputs:
|
|
11
|
+
repoRoot:
|
|
12
|
+
type: string
|
|
13
|
+
required: false
|
|
14
|
+
description: "Repository root path (defaults to current working directory)"
|
|
15
|
+
include:
|
|
16
|
+
type: string[]
|
|
17
|
+
required: false
|
|
18
|
+
description: "Glob patterns to include (default: **/*)"
|
|
19
|
+
exclude:
|
|
20
|
+
type: string[]
|
|
21
|
+
required: false
|
|
22
|
+
description: "Glob patterns to exclude"
|
|
23
|
+
mode:
|
|
24
|
+
type: string
|
|
25
|
+
required: false
|
|
26
|
+
description: "Build mode: 'full' (default) or 'incremental' (hash-based, skip unchanged files)"
|
|
27
|
+
outputs:
|
|
28
|
+
- nodesBuilt
|
|
29
|
+
- edgesBuilt
|
|
30
|
+
- timeTakenMs
|
|
31
|
+
---
|
|
32
|
+
|
|
33
|
+
# Build Graph Skill
|
|
34
|
+
|
|
35
|
+
코드베이스를 정적 분석해 코드 지식 그래프를 빌드합니다. 이 그래프를 바탕으로 `/blast-radius` 스킬을 사용할 수 있습니다.
|
|
36
|
+
|
|
37
|
+
## 목적
|
|
38
|
+
|
|
39
|
+
코드 지식 그래프는 파일·함수·클래스 사이의 의존 관계를 SQLite DB(`.gestalt/code-graph.db`)에 저장합니다. 한 번 빌드해두면 `blast-radius` 분석으로 변경 영향 파일만 빠르게 조회할 수 있어 불필요한 파일 읽기를 크게 줄일 수 있습니다.
|
|
40
|
+
|
|
41
|
+
## 지원 언어
|
|
42
|
+
|
|
43
|
+
TypeScript / JavaScript, Python, Go, Java, Kotlin, Rust, Swift, Objective-C
|
|
44
|
+
|
|
45
|
+
## 실행 방법
|
|
46
|
+
|
|
47
|
+
### 기본 (전체 빌드)
|
|
48
|
+
|
|
49
|
+
```
|
|
50
|
+
ges_code_graph {
|
|
51
|
+
action: "build",
|
|
52
|
+
repoRoot: "<현재 디렉토리 절대 경로>"
|
|
53
|
+
}
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
### 증분 빌드 (변경 파일만 재파싱)
|
|
57
|
+
|
|
58
|
+
```
|
|
59
|
+
ges_code_graph {
|
|
60
|
+
action: "build",
|
|
61
|
+
repoRoot: "<현재 디렉토리 절대 경로>",
|
|
62
|
+
mode: "incremental"
|
|
63
|
+
}
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
### 특정 디렉토리만 포함
|
|
67
|
+
|
|
68
|
+
```
|
|
69
|
+
ges_code_graph {
|
|
70
|
+
action: "build",
|
|
71
|
+
repoRoot: "<경로>",
|
|
72
|
+
include: ["src/**", "lib/**"],
|
|
73
|
+
exclude: ["**/*.test.ts", "dist/**"]
|
|
74
|
+
}
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
## 빌드 후 통계 확인
|
|
78
|
+
|
|
79
|
+
```
|
|
80
|
+
ges_code_graph {
|
|
81
|
+
action: "stats",
|
|
82
|
+
repoRoot: "<경로>"
|
|
83
|
+
}
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
## 결과 해석
|
|
87
|
+
|
|
88
|
+
| 필드 | 설명 |
|
|
89
|
+
|------|------|
|
|
90
|
+
| `nodesBuilt` | 인덱싱된 노드 수 (파일·함수·클래스·타입) |
|
|
91
|
+
| `edgesBuilt` | 인덱싱된 엣지 수 (호출·임포트·상속·포함 관계) |
|
|
92
|
+
| `timeTakenMs` | 소요 시간 (밀리초) |
|
|
93
|
+
|
|
94
|
+
## Skill Instructions
|
|
95
|
+
|
|
96
|
+
1. `repoRoot`가 주어지지 않으면 현재 작업 디렉토리(`cwd`)를 절대 경로로 사용합니다.
|
|
97
|
+
2. `ges_code_graph { action: "build", repoRoot: "<repoRoot>", mode: "<mode>" }`를 호출합니다.
|
|
98
|
+
3. 빌드 결과를 사용자에게 표시합니다.
|
|
99
|
+
4. "그래프 빌드 완료! 이제 `/blast-radius`로 변경 영향 파일을 분석할 수 있습니다." 안내를 포함합니다.
|
|
100
|
+
5. 오류가 발생하면 오류 내용을 표시하고 지원 언어인지 확인하도록 안내합니다.
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: diff-radius
|
|
3
|
+
version: "1.0.0"
|
|
4
|
+
description: "커밋 전 미저장·스테이징 변경의 영향범위를 분석한다. 작업 중인 코드가 어디까지 영향 주는지 바로 확인할 때 자동 발동한다."
|
|
5
|
+
triggers:
|
|
6
|
+
# 작업 중 변경 확인
|
|
7
|
+
- "지금 바꾼 거 영향범위"
|
|
8
|
+
- "작업 중인 거 영향범위"
|
|
9
|
+
- "저장한 거 영향범위"
|
|
10
|
+
- "수정 중인 거 영향범위"
|
|
11
|
+
- "아직 커밋 안 한 거 영향범위"
|
|
12
|
+
- "미커밋 영향범위"
|
|
13
|
+
# 스테이징 확인
|
|
14
|
+
- "스테이징된 거 영향범위"
|
|
15
|
+
- "staged 영향범위"
|
|
16
|
+
- "git add 한 거 영향범위"
|
|
17
|
+
# 커밋 전 안전 확인
|
|
18
|
+
- "커밋 전에 영향범위"
|
|
19
|
+
- "올리기 전에 영향범위"
|
|
20
|
+
- "푸시 전에 영향범위"
|
|
21
|
+
inputs:
|
|
22
|
+
repoRoot:
|
|
23
|
+
type: string
|
|
24
|
+
required: false
|
|
25
|
+
description: "Repository root path (defaults to current working directory)"
|
|
26
|
+
diffMode:
|
|
27
|
+
type: string
|
|
28
|
+
required: false
|
|
29
|
+
description: "staged: git diff --cached, unstaged: git diff, all: staged+unstaged (default)"
|
|
30
|
+
maxDepth:
|
|
31
|
+
type: number
|
|
32
|
+
required: false
|
|
33
|
+
description: "BFS traversal depth (default: 2)"
|
|
34
|
+
outputs:
|
|
35
|
+
- changedFiles
|
|
36
|
+
- impactedFiles
|
|
37
|
+
- riskScore
|
|
38
|
+
- summary
|
|
39
|
+
---
|
|
40
|
+
|
|
41
|
+
# Diff Radius Skill
|
|
42
|
+
|
|
43
|
+
커밋하지 않은 변경의 영향범위를 분석합니다. `/blast-radius`가 커밋 기준이라면, 이 스킬은 **지금 작업 중인 변경** 기준으로 동작합니다.
|
|
44
|
+
|
|
45
|
+
## 전제 조건
|
|
46
|
+
|
|
47
|
+
코드 지식 그래프가 먼저 빌드되어 있어야 합니다:
|
|
48
|
+
```
|
|
49
|
+
/build-graph
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
## 실행 방법
|
|
53
|
+
|
|
54
|
+
### 기본 (staged + unstaged 전체)
|
|
55
|
+
|
|
56
|
+
```
|
|
57
|
+
ges_code_graph {
|
|
58
|
+
action: "diff_radius",
|
|
59
|
+
repoRoot: "<현재 디렉토리 절대 경로>"
|
|
60
|
+
}
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
### 스테이징된 변경만 (git add 한 것)
|
|
64
|
+
|
|
65
|
+
```
|
|
66
|
+
ges_code_graph {
|
|
67
|
+
action: "diff_radius",
|
|
68
|
+
repoRoot: "<경로>",
|
|
69
|
+
diffMode: "staged"
|
|
70
|
+
}
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
### 아직 스테이징 안 된 변경만
|
|
74
|
+
|
|
75
|
+
```
|
|
76
|
+
ges_code_graph {
|
|
77
|
+
action: "diff_radius",
|
|
78
|
+
repoRoot: "<경로>",
|
|
79
|
+
diffMode: "unstaged"
|
|
80
|
+
}
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
## blast-radius와 차이
|
|
84
|
+
|
|
85
|
+
| | `/blast-radius` | `/diff-radius` |
|
|
86
|
+
|---|---|---|
|
|
87
|
+
| 기준 | 마지막 커밋 (`HEAD~1`) | 현재 작업 중인 변경 |
|
|
88
|
+
| git 명령 | `git diff HEAD~1` | `git diff HEAD` / `git diff --cached` |
|
|
89
|
+
| 용도 | 배포된 변경 영향 확인 | 커밋 전 영향범위 사전 확인 |
|
|
90
|
+
|
|
91
|
+
## 결과 해석
|
|
92
|
+
|
|
93
|
+
| 필드 | 설명 |
|
|
94
|
+
|------|------|
|
|
95
|
+
| `changedFiles` | 변경된 파일 목록 |
|
|
96
|
+
| `impactedFiles` | 영향받는 파일 목록 (테스트 파일 우선 정렬) |
|
|
97
|
+
| `riskScore` | 위험도 점수 0~1 |
|
|
98
|
+
| `summary` | 한 줄 요약 |
|
|
99
|
+
|
|
100
|
+
## Skill Instructions
|
|
101
|
+
|
|
102
|
+
1. `repoRoot`가 주어지지 않으면 현재 작업 디렉토리를 절대 경로로 사용합니다.
|
|
103
|
+
2. 코드 그래프 DB가 없으면 먼저 `/build-graph`를 실행하도록 안내합니다:
|
|
104
|
+
- `ges_code_graph { action: "db_exists", repoRoot: "<repoRoot>" }` 호출
|
|
105
|
+
- `exists: false`이면 빌드 먼저 안내
|
|
106
|
+
3. `ges_code_graph { action: "diff_radius", repoRoot: "<repoRoot>", diffMode?: "staged"|"unstaged"|"all", maxDepth?: 2 }` 호출합니다.
|
|
107
|
+
4. 결과를 다음 형식으로 표시합니다:
|
|
108
|
+
|
|
109
|
+
```
|
|
110
|
+
## 영향범위 분석 결과 (미커밋 변경)
|
|
111
|
+
|
|
112
|
+
**변경된 파일** (N개):
|
|
113
|
+
- src/auth.ts
|
|
114
|
+
- src/middleware.ts
|
|
115
|
+
|
|
116
|
+
**영향받는 파일** (M개):
|
|
117
|
+
- src/auth.test.ts ← 테스트 파일 우선
|
|
118
|
+
- src/api/routes.ts
|
|
119
|
+
|
|
120
|
+
**위험도**: 0.23 (낮음)
|
|
121
|
+
**요약**: {summary}
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
5. `impactedFiles` 목록을 컨텍스트로 활용합니다.
|
|
125
|
+
6. 변경된 파일이 없으면 "현재 미커밋 변경이 없습니다." 안내합니다.
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: setup
|
|
3
|
+
version: "1.0.0"
|
|
4
|
+
description: "Gestalt 프로젝트 초기 설정 — gestalt.json 생성, 코드 그래프 빌드, post-commit 훅 설치"
|
|
5
|
+
triggers:
|
|
6
|
+
- "gestalt 초기화"
|
|
7
|
+
- "gestalt init"
|
|
8
|
+
- "gestalt setup"
|
|
9
|
+
- "setup gestalt"
|
|
10
|
+
- "프로젝트 설정"
|
|
11
|
+
inputs:
|
|
12
|
+
cwd:
|
|
13
|
+
type: string
|
|
14
|
+
required: false
|
|
15
|
+
description: "초기화할 프로젝트 디렉토리 (기본값: 현재 디렉토리)"
|
|
16
|
+
outputs:
|
|
17
|
+
- gestalt.json
|
|
18
|
+
- code-graph.db
|
|
19
|
+
- post-commit hook
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
# Setup Skill
|
|
23
|
+
|
|
24
|
+
`gestalt init` 명령어와 동일한 초기화 작업을 Claude Code 스킬로 실행한다.
|
|
25
|
+
|
|
26
|
+
## 실행 단계
|
|
27
|
+
|
|
28
|
+
1. **선택 화면**: `AskUserQuestion`으로 실행할 단계를 다중 선택
|
|
29
|
+
2. **gestalt.json 생성**: 프로젝트 루트에 기본 설정 파일 생성
|
|
30
|
+
3. **코드 그래프 빌드**: `ges_code_graph { action: "build" }`로 의존성 그래프 구축
|
|
31
|
+
4. **post-commit 훅 설치**: `gestalt init --skip-graph --skip-hook`을 활용해 훅만 설치
|
|
32
|
+
|
|
33
|
+
---
|
|
34
|
+
|
|
35
|
+
## 실행 방법
|
|
36
|
+
|
|
37
|
+
### Step 1 — 실행할 단계 선택
|
|
38
|
+
|
|
39
|
+
`AskUserQuestion`으로 다음 질문을 표시한다. **3개 모두 기본 선택**으로 제시한다.
|
|
40
|
+
|
|
41
|
+
```
|
|
42
|
+
질문: "실행할 초기화 단계를 선택하세요 (기본: 전체)"
|
|
43
|
+
multiSelect: true
|
|
44
|
+
옵션:
|
|
45
|
+
- label: "gestalt.json 생성 (Recommended)"
|
|
46
|
+
description: "프로젝트 루트에 gestalt.json 설정 파일을 생성합니다"
|
|
47
|
+
- label: "코드 그래프 빌드 (Recommended)"
|
|
48
|
+
description: "코드베이스를 분석해 의존성 그래프를 구축합니다 (시간이 걸릴 수 있음)"
|
|
49
|
+
- label: "post-commit 훅 설치 (Recommended)"
|
|
50
|
+
description: "커밋 시 코드 그래프를 자동으로 갱신하는 git 훅을 설치합니다"
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
선택된 항목에 따라 아래 단계를 순서대로 실행한다. 아무것도 선택하지 않으면 중단한다.
|
|
54
|
+
|
|
55
|
+
---
|
|
56
|
+
|
|
57
|
+
### Step 2 — gestalt.json 생성 (선택된 경우)
|
|
58
|
+
|
|
59
|
+
프로젝트 루트에 `gestalt.json`이 이미 존재하는지 확인한다.
|
|
60
|
+
|
|
61
|
+
**파일이 없으면**: Bash로 생성한다.
|
|
62
|
+
|
|
63
|
+
```bash
|
|
64
|
+
! pnpm tsx bin/gestalt.ts setup
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
또는 npx로 설치된 환경이면:
|
|
68
|
+
|
|
69
|
+
```bash
|
|
70
|
+
! npx @tienne/gestalt setup
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
**파일이 이미 존재하면**: 사용자에게 덮어쓸지 확인 후 진행한다.
|
|
74
|
+
|
|
75
|
+
성공 시 출력:
|
|
76
|
+
```
|
|
77
|
+
✓ gestalt.json 생성 완료
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
---
|
|
81
|
+
|
|
82
|
+
### Step 3 — 코드 그래프 빌드 (선택된 경우)
|
|
83
|
+
|
|
84
|
+
`ges_code_graph` MCP 툴을 사용한다.
|
|
85
|
+
|
|
86
|
+
```
|
|
87
|
+
ges_code_graph({ action: "build", repoRoot: "<현재 디렉토리 절대경로>" })
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
응답 예시:
|
|
91
|
+
```json
|
|
92
|
+
{ "nodesBuilt": 1192, "edgesBuilt": 1321, "timeTakenMs": 4200 }
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
성공 시 출력:
|
|
96
|
+
```
|
|
97
|
+
✓ 코드 그래프 빌드 완료: 노드 {nodesBuilt}개, 엣지 {edgesBuilt}개 ({timeTakenMs}ms)
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
실패해도 다음 단계를 계속 진행한다 (non-fatal).
|
|
101
|
+
|
|
102
|
+
---
|
|
103
|
+
|
|
104
|
+
### Step 4 — post-commit 훅 설치 (선택된 경우)
|
|
105
|
+
|
|
106
|
+
```bash
|
|
107
|
+
! pnpm tsx bin/gestalt.ts init --skip-graph
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
또는:
|
|
111
|
+
|
|
112
|
+
```bash
|
|
113
|
+
! npx @tienne/gestalt init --skip-graph
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
성공 시 출력:
|
|
117
|
+
```
|
|
118
|
+
✓ post-commit 훅 설치 완료
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
---
|
|
122
|
+
|
|
123
|
+
### Step 5 — 완료 메시지
|
|
124
|
+
|
|
125
|
+
선택된 모든 단계 완료 후:
|
|
126
|
+
|
|
127
|
+
```
|
|
128
|
+
Gestalt 초기화 완료!
|
|
129
|
+
|
|
130
|
+
완료된 단계:
|
|
131
|
+
✓ gestalt.json 생성
|
|
132
|
+
✓ 코드 그래프 빌드 (노드 1192개, 엣지 1321개)
|
|
133
|
+
✓ post-commit 훅 설치
|
|
134
|
+
|
|
135
|
+
이제 다음 스킬을 바로 사용할 수 있습니다:
|
|
136
|
+
/gestalt:interview — 요구사항 인터뷰
|
|
137
|
+
/build-graph — 코드 그래프 갱신
|
|
138
|
+
/blast-radius — 영향 범위 분석
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
---
|
|
142
|
+
|
|
143
|
+
## 에러 처리
|
|
144
|
+
|
|
145
|
+
| 상황 | 대응 |
|
|
146
|
+
|------|------|
|
|
147
|
+
| `gestalt.json` 이미 존재 | 덮어쓸지 확인 후 진행 |
|
|
148
|
+
| 코드 그래프 빌드 실패 | 경고 출력 후 다음 단계 계속 |
|
|
149
|
+
| git 저장소 아님 | post-commit 훅 설치 건너뜀 + 안내 |
|
|
150
|
+
| CLI 명령어 없음 | `pnpm add @tienne/gestalt` 안내 |
|