@tienne/gestalt 0.72.1 → 0.72.2
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 +22 -0
- package/README.ko.md +33 -7
- package/README.md +33 -6
- package/dist/package.json +1 -1
- package/package.json +1 -1
- package/plugin/.codex-plugin/plugin.json +1 -1
- package/plugin/.mcp.json +1 -1
- package/plugin/mcp.json +1 -1
package/CLAUDE.md
CHANGED
|
@@ -115,6 +115,28 @@ plugin/.mcp.json Grok MCP (plugin/mcp.json과 동일)
|
|
|
115
115
|
- `plugin/skills/review/SKILL.md`가 `../../role-agents/`를 참조한다. 스킬과 에이전트를 함께 옮겨야 이 상대 깊이가 유지된다.
|
|
116
116
|
- 자산 디렉토리 기본값은 `src/core/config.ts`에 `skillsDir`, `agentsDir`, `roleAgentsDir`, `reviewAgentsDir`, `personasDir` 다섯 개로 있다. 경로를 바꾸면 전부 함께 고친다.
|
|
117
117
|
|
|
118
|
+
### MCP 기동 경로
|
|
119
|
+
|
|
120
|
+
클라이언트마다 서버를 띄우는 방식이 다르다.
|
|
121
|
+
|
|
122
|
+
```
|
|
123
|
+
.mcp.json Claude — sh로 scripts/mcp-serve.sh를 찾아 실행
|
|
124
|
+
.claude-plugin/.mcp.json .mcp.json과 내용 동일 (해석 기준 디렉토리가 모호해 양쪽에 둔다)
|
|
125
|
+
plugin/mcp.json Codex — npx, 버전 핀
|
|
126
|
+
plugin/.mcp.json Grok(배포) — plugin/mcp.json과 동일
|
|
127
|
+
.grok/config.toml Grok(이 레포 개발용) — scripts/grok-mcp-serve.sh
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
- `npx`는 버전을 박아도 기동할 때마다 레지스트리를 조회한다. 캐시가 비면 20초, 레지스트리에 못 닿으면 70초를 매달린다. Claude Code의 기동 제한은 30초라 둘 다 `Connection closed`로 끊긴다.
|
|
131
|
+
- `startup_timeout_sec`와 `tool_timeout_sec`는 Codex 키다. Claude Code는 안 읽고 `MCP_TIMEOUT` 환경변수만 본다. Claude 매니페스트에 넣어봐야 무시된다.
|
|
132
|
+
- `scripts/mcp-serve.sh`가 그 셋을 처리한다. nvm, fnm, Volta, Homebrew에서 Node >= 20을 찾는다 (GUI 세션은 PATH에 버전 매니저가 없다). 전역 `gestalt`가 있으면 그걸 쓰고 없으면 `npx --offline`으로 캐시에서 해석한다.
|
|
133
|
+
- 그 스크립트는 npx로 서버를 띄우지 않고 bin 경로만 받아와 직접 exec한다. npx가 cwd의 로컬 패키지를 먼저 보기 때문에, node_modules 없는 gestalt 체크아웃 안에서는 `gestalt: command not found`로 죽는다. 그래서 해석은 `cd /`에서 한다.
|
|
134
|
+
- 전역 `gestalt`가 깔려 있으면 핀보다 그게 이긴다. 누가 `npm i -g`를 했다는 건 이 체크아웃이 번들한 것보다 구체적인 선택이라서다. 대신 어느 쪽을 썼는지 stderr에 적어 버전이 어긋났을 때 로그에서 보이게 한다.
|
|
135
|
+
- 매니페스트의 `sh -c`는 `${CLAUDE_PLUGIN_ROOT}`를 먼저 본다. 거기서 스크립트를 찾으면 `GESTALT_LAUNCHER`는 아예 안 본다. 플러그인으로 설치된 상태에서는 그 변수가 안 걸린다는 뜻이다. 플러그인 없이 이 레포만 연 경우에만 차례가 온다. 그때도 **절대 경로만** 받는다 — 상대 경로를 허용하면 남의 레포를 열었을 때 거기 있는 동명 실행 파일이 서버 대신 도는 자리가 된다.
|
|
136
|
+
- 그 `sh -c`의 최후 폴백도 버전이 핀되어 있다. 거기까지 왔으면 스크립트를 못 찾은 것이다. 스크립트가 없으면 `package.json`도 없어 런타임에 버전을 못 읽는다. 그래서 그 자리만은 `sync-version.ts`가 문자열에 직접 박는다.
|
|
137
|
+
- 네 매니페스트의 버전 핀을 `scripts/sync-version.ts`가 릴리즈마다 함께 갱신한다. `plugin/*`는 인자 하나가 통째로 스펙이고 Claude 쪽은 `sh` 문자열 안에 박혀 있는데, 같은 정규식으로 둘 다 친다.
|
|
138
|
+
- `command: "sh"`라서 Windows 호스트에서는 안 뜬다. 그쪽은 전역 설치 후 `command: "gestalt"`로 안내한다.
|
|
139
|
+
|
|
118
140
|
## Conventions
|
|
119
141
|
- MCP 서버에서 `console.log` 금지 → `log()` stderr 유틸 사용
|
|
120
142
|
- `noUncheckedIndexedAccess` 환경 → 배열 인덱스·regex 캡처그룹에 `!` 단언 필수
|
package/README.ko.md
CHANGED
|
@@ -161,14 +161,18 @@ claude plugin install gestalt@gestalt
|
|
|
161
161
|
|
|
162
162
|
### 옵션 2: Claude Code Desktop
|
|
163
163
|
|
|
164
|
-
|
|
164
|
+
먼저 전역 설치한 다음, 설정이 그 바이너리를 가리키게 하세요:
|
|
165
|
+
|
|
166
|
+
```bash
|
|
167
|
+
npm install -g @tienne/gestalt
|
|
168
|
+
```
|
|
165
169
|
|
|
166
170
|
```json
|
|
167
171
|
{
|
|
168
172
|
"mcpServers": {
|
|
169
173
|
"gestalt": {
|
|
170
|
-
"command": "
|
|
171
|
-
"args": ["
|
|
174
|
+
"command": "gestalt",
|
|
175
|
+
"args": ["serve"]
|
|
172
176
|
}
|
|
173
177
|
}
|
|
174
178
|
}
|
|
@@ -176,13 +180,15 @@ Claude Code Desktop 설정에서 `settings.json` (또는 `claude_desktop_config.
|
|
|
176
180
|
|
|
177
181
|
Claude Code Desktop을 재시작하면 MCP 도구가 즉시 사용 가능해요. 슬래시 커맨드는 플러그인 설치 또는 별도 스킬 설정이 필요해요.
|
|
178
182
|
|
|
183
|
+
`npx -y @tienne/gestalt`도 되긴 하는데, 그 전에 [기동 타임아웃](#기동-타임아웃)을 읽어보세요. 데스크톱 앱이 이 문제에 제일 잘 걸립니다.
|
|
184
|
+
|
|
179
185
|
---
|
|
180
186
|
|
|
181
187
|
### 옵션 3: Claude Code CLI
|
|
182
188
|
|
|
183
189
|
```bash
|
|
184
|
-
|
|
185
|
-
claude mcp add gestalt --
|
|
190
|
+
npm install -g @tienne/gestalt
|
|
191
|
+
claude mcp add gestalt -- gestalt serve
|
|
186
192
|
```
|
|
187
193
|
|
|
188
194
|
또는 `~/.claude/settings.json`을 직접 편집하세요:
|
|
@@ -191,8 +197,8 @@ claude mcp add gestalt -- npx -y @tienne/gestalt
|
|
|
191
197
|
{
|
|
192
198
|
"mcpServers": {
|
|
193
199
|
"gestalt": {
|
|
194
|
-
"command": "
|
|
195
|
-
"args": ["
|
|
200
|
+
"command": "gestalt",
|
|
201
|
+
"args": ["serve"]
|
|
196
202
|
}
|
|
197
203
|
}
|
|
198
204
|
}
|
|
@@ -200,6 +206,26 @@ claude mcp add gestalt -- npx -y @tienne/gestalt
|
|
|
200
206
|
|
|
201
207
|
---
|
|
202
208
|
|
|
209
|
+
### 기동 타임아웃
|
|
210
|
+
|
|
211
|
+
서버가 붙을 때는 붙고 어떨 때는 `Connection closed`로 끊긴다면, 원인은 대개 Gestalt가 아니라 `npx`입니다. 알아둘 게 셋입니다.
|
|
212
|
+
|
|
213
|
+
**npx는 기동할 때마다 레지스트리를 조회합니다.** 버전을 정확히 박아도 마찬가지예요. npm 상대로 재봤더니 캐시가 데워졌을 때 1.9초, 비었을 때 20초, 레지스트리에 못 닿으면 70초를 매달린 뒤 실패했습니다. Claude Code는 stdio 서버에 `initialize` 응답까지 30초를 주므로 콜드 상태와 오프라인 상태가 둘 다 끊긴 연결로 나타납니다. 전역 설치해서 `gestalt serve`를 직접 부르면 이 과정이 통째로 사라집니다.
|
|
214
|
+
|
|
215
|
+
**GUI로 띄운 세션은 PATH가 다릅니다.** 터미널 밖에서 시작한 것들 — 데스크톱 앱, 런처, launchd — 은 버전 매니저가 빠진 PATH를 물려받아서 `npx`를 아예 못 찾고 즉시 죽습니다. `command`에 절대 경로를 주거나 서버 항목에 `env.PATH`를 지정하세요.
|
|
216
|
+
|
|
217
|
+
**Claude Code에서 `startup_timeout_sec`는 아무 일도 안 합니다.** 그건 Codex 키예요. Claude Code는 `MCP_TIMEOUT` 환경변수(밀리초)를 읽으므로 `settings.json`에 넣어야 Claude Code 프로세스까지 전달됩니다:
|
|
218
|
+
|
|
219
|
+
```json
|
|
220
|
+
{
|
|
221
|
+
"env": { "MCP_TIMEOUT": "180000" }
|
|
222
|
+
}
|
|
223
|
+
```
|
|
224
|
+
|
|
225
|
+
플러그인 설치(옵션 1)는 앞의 둘을 `scripts/mcp-serve.sh`가 알아서 처리해요. Node는 nvm, fnm, Volta, Homebrew 밑에서 찾고요. 전역 설치된 `gestalt`가 있으면 그걸 씁니다. 없으면 핀된 버전을 npm 캐시에서 바로 해석하고요.
|
|
226
|
+
|
|
227
|
+
---
|
|
228
|
+
|
|
203
229
|
### 옵션 4: OpenAI Codex 플러그인
|
|
204
230
|
|
|
205
231
|
Claude Code 플러그인과 똑같이 MCP 서버랑 워크플로 스킬 19개를 한 번에 받아요.
|
package/README.md
CHANGED
|
@@ -132,14 +132,18 @@ What you get:
|
|
|
132
132
|
|
|
133
133
|
### Option 2: Claude Code Desktop
|
|
134
134
|
|
|
135
|
-
|
|
135
|
+
Install once, then point the config at the installed binary:
|
|
136
|
+
|
|
137
|
+
```bash
|
|
138
|
+
npm install -g @tienne/gestalt
|
|
139
|
+
```
|
|
136
140
|
|
|
137
141
|
```json
|
|
138
142
|
{
|
|
139
143
|
"mcpServers": {
|
|
140
144
|
"gestalt": {
|
|
141
|
-
"command": "
|
|
142
|
-
"args": ["
|
|
145
|
+
"command": "gestalt",
|
|
146
|
+
"args": ["serve"]
|
|
143
147
|
}
|
|
144
148
|
}
|
|
145
149
|
}
|
|
@@ -147,12 +151,15 @@ Add this to your `settings.json` (or `claude_desktop_config.json`) and restart:
|
|
|
147
151
|
|
|
148
152
|
MCP tools are available immediately after restart. Slash commands require the plugin or manual skills setup.
|
|
149
153
|
|
|
154
|
+
`npx -y @tienne/gestalt` works too, but read [Startup timeouts](#startup-timeouts) first — the desktop app is the setup most likely to hit them.
|
|
155
|
+
|
|
150
156
|
---
|
|
151
157
|
|
|
152
158
|
### Option 3: Claude Code CLI
|
|
153
159
|
|
|
154
160
|
```bash
|
|
155
|
-
|
|
161
|
+
npm install -g @tienne/gestalt
|
|
162
|
+
claude mcp add gestalt -- gestalt serve
|
|
156
163
|
```
|
|
157
164
|
|
|
158
165
|
Or add directly to `~/.claude/settings.json`:
|
|
@@ -161,8 +168,8 @@ Or add directly to `~/.claude/settings.json`:
|
|
|
161
168
|
{
|
|
162
169
|
"mcpServers": {
|
|
163
170
|
"gestalt": {
|
|
164
|
-
"command": "
|
|
165
|
-
"args": ["
|
|
171
|
+
"command": "gestalt",
|
|
172
|
+
"args": ["serve"]
|
|
166
173
|
}
|
|
167
174
|
}
|
|
168
175
|
}
|
|
@@ -170,6 +177,26 @@ Or add directly to `~/.claude/settings.json`:
|
|
|
170
177
|
|
|
171
178
|
---
|
|
172
179
|
|
|
180
|
+
### Startup timeouts
|
|
181
|
+
|
|
182
|
+
If the server connects sometimes and reports `Connection closed` other times, the cause is almost always `npx`, not Gestalt. Three things are worth knowing.
|
|
183
|
+
|
|
184
|
+
**npx reaches the registry on every start.** Pinning an exact version does not change that. Measured against npm: 1.9s on a warm cache, 20s on a cold one, and a 70s hang before failing when the registry is unreachable. Claude Code gives a stdio server 30s to answer `initialize`, so the cold and offline cases both surface as a closed connection. Installing the package globally and calling `gestalt serve` skips all of it.
|
|
185
|
+
|
|
186
|
+
**GUI-launched sessions have a different PATH.** Anything started outside a terminal — the desktop app, a launcher, launchd — inherits a PATH with no version manager on it, so `npx` is not found and the server dies instantly. Give `command` an absolute path, or set `env.PATH` on the server entry.
|
|
187
|
+
|
|
188
|
+
**`startup_timeout_sec` does nothing in Claude Code.** That key belongs to Codex. Claude Code reads the `MCP_TIMEOUT` environment variable (milliseconds) instead, so it goes in `settings.json`, where it lands in the Claude Code process:
|
|
189
|
+
|
|
190
|
+
```json
|
|
191
|
+
{
|
|
192
|
+
"env": { "MCP_TIMEOUT": "180000" }
|
|
193
|
+
}
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
The plugin install (Option 1) already handles the first two through `scripts/mcp-serve.sh`: it finds Node under nvm, fnm, Volta, or Homebrew, prefers a globally installed `gestalt`, and otherwise resolves the pinned version from the npm cache, falling back to the network only when the cache misses.
|
|
197
|
+
|
|
198
|
+
---
|
|
199
|
+
|
|
173
200
|
### Option 4: OpenAI Codex Plugin
|
|
174
201
|
|
|
175
202
|
Bundles the MCP server and all 19 workflow skills, the same way the Claude Code plugin does.
|
package/dist/package.json
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "gestalt",
|
|
3
|
-
"version": "0.72.
|
|
3
|
+
"version": "0.72.2",
|
|
4
4
|
"description": "Gestalt psychology-driven AI development harness. Transforms scattered requirements into structured, validated specifications through interactive interviews.",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "tienne"
|
package/plugin/.mcp.json
CHANGED