dino-spec 19.5.0 → 20.4.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.
Files changed (158) hide show
  1. package/.claude/rules/dino/change-categories.md +1 -5
  2. package/.claude/rules/dino/fork-recovery.md +1 -56
  3. package/.claude/rules/dino/quality.md +1 -43
  4. package/.claude/skills/dino.mcp-setup/SKILL.md +383 -0
  5. package/.claude/skills/dino.release/SKILL.md +1 -1
  6. package/.claude/skills/dino.test/SKILL.md +281 -0
  7. package/.claude/skills/dino.validate-deps/SKILL.md +2 -4
  8. package/.claude/skills/dino.verify/SKILL.md +1 -1
  9. package/README.md +13 -2
  10. package/bin/dino-hud.js +7 -2
  11. package/bin/dino.js +7 -2
  12. package/dist/cli/index.js +1 -8
  13. package/dist/cli/index.js.map +1 -1
  14. package/dist/commands/dashboard.d.ts +3 -3
  15. package/dist/commands/dashboard.js +3 -3
  16. package/dist/commands/debug.d.ts +4 -4
  17. package/dist/commands/debug.js +11 -11
  18. package/dist/commands/debug.js.map +1 -1
  19. package/dist/commands/hooks/registry.d.ts +1 -1
  20. package/dist/commands/hooks/registry.d.ts.map +1 -1
  21. package/dist/commands/hooks/registry.js +11 -55
  22. package/dist/commands/hooks/registry.js.map +1 -1
  23. package/dist/commands/hooks/types.d.ts +1 -1
  24. package/dist/commands/hooks/types.d.ts.map +1 -1
  25. package/dist/commands/hooks/types.js.map +1 -1
  26. package/dist/commands/hooks/utils.d.ts +1 -5
  27. package/dist/commands/hooks/utils.d.ts.map +1 -1
  28. package/dist/commands/hooks/utils.js +1 -5
  29. package/dist/commands/hooks/utils.js.map +1 -1
  30. package/dist/commands/hud.d.ts.map +1 -1
  31. package/dist/commands/hud.js +13 -11
  32. package/dist/commands/hud.js.map +1 -1
  33. package/dist/commands/init.d.ts.map +1 -1
  34. package/dist/commands/init.js +24 -14
  35. package/dist/commands/init.js.map +1 -1
  36. package/dist/commands/recommendations.d.ts +3 -3
  37. package/dist/commands/recommendations.js +3 -3
  38. package/dist/commands/session.d.ts +0 -10
  39. package/dist/commands/session.d.ts.map +1 -1
  40. package/dist/commands/session.js +0 -34
  41. package/dist/commands/session.js.map +1 -1
  42. package/dist/core/agents/validators/pip-validator.d.ts +19 -5
  43. package/dist/core/agents/validators/pip-validator.d.ts.map +1 -1
  44. package/dist/core/agents/validators/pip-validator.js +108 -9
  45. package/dist/core/agents/validators/pip-validator.js.map +1 -1
  46. package/dist/core/generator/claude-md.js +1 -1
  47. package/dist/core/memory/agents/memory-capture-agent.d.ts +1 -0
  48. package/dist/core/memory/agents/memory-capture-agent.d.ts.map +1 -1
  49. package/dist/core/memory/agents/memory-capture-agent.js +4 -14
  50. package/dist/core/memory/agents/memory-capture-agent.js.map +1 -1
  51. package/dist/core/memory/consolidation/consolidation.d.ts +1 -0
  52. package/dist/core/memory/consolidation/consolidation.d.ts.map +1 -1
  53. package/dist/core/memory/consolidation/consolidation.js +4 -14
  54. package/dist/core/memory/consolidation/consolidation.js.map +1 -1
  55. package/dist/core/registry/feature-registry.d.ts.map +1 -1
  56. package/dist/core/registry/feature-registry.js +0 -14
  57. package/dist/core/registry/feature-registry.js.map +1 -1
  58. package/dist/core/spec-analyzer/outcome-store.d.ts +1 -1
  59. package/dist/core/spec-analyzer/outcome-store.js +5 -5
  60. package/dist/core/spec-analyzer/outcome-store.js.map +1 -1
  61. package/dist/core/updater/deprecated-files.d.ts.map +1 -1
  62. package/dist/core/updater/deprecated-files.js +16 -0
  63. package/dist/core/updater/deprecated-files.js.map +1 -1
  64. package/dist/hooks/code-safety-patterns.d.ts +45 -0
  65. package/dist/hooks/code-safety-patterns.d.ts.map +1 -0
  66. package/dist/hooks/code-safety-patterns.js +303 -0
  67. package/dist/hooks/code-safety-patterns.js.map +1 -0
  68. package/dist/hooks/generator-factory.d.ts +1 -1
  69. package/dist/hooks/generator-factory.d.ts.map +1 -1
  70. package/dist/hooks/generator-factory.js +13 -7
  71. package/dist/hooks/generator-factory.js.map +1 -1
  72. package/dist/hooks/handlers/execution.d.ts.map +1 -1
  73. package/dist/hooks/handlers/execution.js +34 -0
  74. package/dist/hooks/handlers/execution.js.map +1 -1
  75. package/dist/hooks/handlers/index.d.ts +2 -1
  76. package/dist/hooks/handlers/index.d.ts.map +1 -1
  77. package/dist/hooks/handlers/index.js +28 -18
  78. package/dist/hooks/handlers/index.js.map +1 -1
  79. package/dist/hooks/handlers/memory-lifecycle.d.ts.map +1 -1
  80. package/dist/hooks/handlers/memory-lifecycle.js +32 -2
  81. package/dist/hooks/handlers/memory-lifecycle.js.map +1 -1
  82. package/dist/hooks/handlers/post-edit.d.ts +4 -0
  83. package/dist/hooks/handlers/post-edit.d.ts.map +1 -1
  84. package/dist/hooks/handlers/post-edit.js +18 -0
  85. package/dist/hooks/handlers/post-edit.js.map +1 -1
  86. package/dist/hooks/handlers/pre-tool-use.d.ts +29 -2
  87. package/dist/hooks/handlers/pre-tool-use.d.ts.map +1 -1
  88. package/dist/hooks/handlers/pre-tool-use.js +136 -25
  89. package/dist/hooks/handlers/pre-tool-use.js.map +1 -1
  90. package/dist/hooks/handlers/user-input.d.ts +2 -2
  91. package/dist/hooks/handlers/user-input.d.ts.map +1 -1
  92. package/dist/hooks/handlers/user-input.js +24 -18
  93. package/dist/hooks/handlers/user-input.js.map +1 -1
  94. package/dist/hooks/memory-correlator.d.ts.map +1 -1
  95. package/dist/hooks/memory-correlator.js +4 -18
  96. package/dist/hooks/memory-correlator.js.map +1 -1
  97. package/dist/hooks/post-edit.d.ts +1 -1
  98. package/dist/hooks/post-edit.js +1 -1
  99. package/dist/hooks/post-execution.d.ts +1 -1
  100. package/dist/hooks/post-execution.js +1 -1
  101. package/dist/hooks/post-typecheck.d.ts +1 -1
  102. package/dist/hooks/post-typecheck.js +1 -1
  103. package/dist/hooks/pre-compact.d.ts +1 -1
  104. package/dist/hooks/pre-compact.js +1 -1
  105. package/dist/hooks/pre-tool-use.d.ts +1 -1
  106. package/dist/hooks/pre-tool-use.js +2 -2
  107. package/dist/hooks/pre-tool-use.js.map +1 -1
  108. package/dist/hooks/pre-validate.d.ts +1 -1
  109. package/dist/hooks/pre-validate.js +1 -1
  110. package/dist/hooks/session-end.d.ts +1 -1
  111. package/dist/hooks/session-end.js +1 -1
  112. package/dist/hooks/session-start.d.ts +1 -1
  113. package/dist/hooks/session-start.js +1 -1
  114. package/dist/hooks/stop.d.ts +11 -0
  115. package/dist/hooks/stop.d.ts.map +1 -0
  116. package/dist/hooks/stop.js +12 -0
  117. package/dist/hooks/stop.js.map +1 -0
  118. package/dist/hooks/subagent-start.d.ts +1 -1
  119. package/dist/hooks/subagent-start.js +1 -1
  120. package/dist/hooks/subagent-stop.d.ts +1 -1
  121. package/dist/hooks/subagent-stop.js +1 -1
  122. package/dist/hooks/user-prompt-submit.d.ts +1 -1
  123. package/dist/hooks/user-prompt-submit.js +1 -1
  124. package/dist/mcp/setup.d.ts +3 -1
  125. package/dist/mcp/setup.d.ts.map +1 -1
  126. package/dist/mcp/setup.js +16 -12
  127. package/dist/mcp/setup.js.map +1 -1
  128. package/dist/mcp/tool-catalog.d.ts.map +1 -1
  129. package/dist/mcp/tool-catalog.js +2 -7
  130. package/dist/mcp/tool-catalog.js.map +1 -1
  131. package/dist/mcp-server.d.ts.map +1 -1
  132. package/dist/mcp-server.js +8 -1
  133. package/dist/mcp-server.js.map +1 -1
  134. package/dist/utils/exec.d.ts +2 -3
  135. package/dist/utils/exec.d.ts.map +1 -1
  136. package/dist/utils/exec.js +30 -45
  137. package/dist/utils/exec.js.map +1 -1
  138. package/dist/utils/similarity.d.ts +10 -0
  139. package/dist/utils/similarity.d.ts.map +1 -0
  140. package/dist/utils/similarity.js +41 -0
  141. package/dist/utils/similarity.js.map +1 -0
  142. package/package.json +2 -2
  143. package/dist/hooks/__tests__/pre-package-install.test.d.ts +0 -5
  144. package/dist/hooks/__tests__/pre-package-install.test.d.ts.map +0 -1
  145. package/dist/hooks/__tests__/pre-package-install.test.js +0 -76
  146. package/dist/hooks/__tests__/pre-package-install.test.js.map +0 -1
  147. package/dist/hooks/memory-capture-hooks.d.ts +0 -38
  148. package/dist/hooks/memory-capture-hooks.d.ts.map +0 -1
  149. package/dist/hooks/memory-capture-hooks.js +0 -258
  150. package/dist/hooks/memory-capture-hooks.js.map +0 -1
  151. package/dist/hooks/pre-package-install.d.ts +0 -28
  152. package/dist/hooks/pre-package-install.d.ts.map +0 -1
  153. package/dist/hooks/pre-package-install.js +0 -253
  154. package/dist/hooks/pre-package-install.js.map +0 -1
  155. package/dist/hooks/session-start-verify.d.ts +0 -73
  156. package/dist/hooks/session-start-verify.d.ts.map +0 -1
  157. package/dist/hooks/session-start-verify.js +0 -266
  158. package/dist/hooks/session-start-verify.js.map +0 -1
@@ -6,11 +6,7 @@ Files are classified into categories based on path and name:
6
6
 
7
7
  ### dependency (High Significance)
8
8
  Files that affect project dependencies:
9
- - `package.json`, `package-lock.json`, `yarn.lock`, `pnpm-lock.yaml`
10
- - `requirements.txt`, `Pipfile`, `pyproject.toml`
11
- - `Cargo.toml`, `Cargo.lock`
12
- - `go.mod`, `go.sum`
13
- - `Gemfile`, `Gemfile.lock`
9
+ - `package.json`, `bun.lockb`, `package-lock.json`
14
10
 
15
11
  **Pending Action:** Run package manager install command
16
12
 
@@ -1,58 +1,3 @@
1
1
  # Fork Context Recovery
2
2
 
3
- **CRITICAL**: Skills with `context: fork` start with NO conversation history. They MUST recover context before doing anything.
4
-
5
- ---
6
-
7
- ## Canonical Recovery Pattern
8
-
9
- Every forked skill MUST implement Step 0 using this priority order:
10
-
11
- ### Source Priority
12
-
13
- | Priority | Source | Check For |
14
- |----------|--------|-----------|
15
- | 1 | `$ARGUMENTS` | Direct input from user |
16
- | 2 | `.dino/session.md` | `### Discovery:` in `## Notes` (use most recent) |
17
- | 3 | Skill-specific source | See table below |
18
- | 4 | `.dino/handoff/latest.md` | Previous session context |
19
- | 5 | `AskUserQuestion` | Last resort only |
20
-
21
- **Stop at the first source that provides actionable context.**
22
-
23
- ### Skill-Specific Sources (Priority 3)
24
-
25
- | Skill | Source | Check For |
26
- |-------|--------|-----------|
27
- | ralph-gate | `.dino/ralph-gate/status.md` | "IN PROGRESS" with user request |
28
- | ralph | `.dino/ralph-state.json` | `phase === 'executing'`, pending stories |
29
- | team | `.dino/team.md` | `## Mission` with content |
30
- | refactor | `.dino/plans/refactor-customer-review.md` | Incomplete/complete review |
31
- | analyze-codebase | `CLAUDE.md` | Project architecture context |
32
- | scout | `.dino/ralph-gate/status.md` | Research needs for in-progress work |
33
-
34
- ---
35
-
36
- ## Implementation in Skills
37
-
38
- Each forked skill should reference this rule briefly, not duplicate it:
39
-
40
- ```markdown
41
- ## Step 0: Recover Context
42
-
43
- Follow `.claude/rules/dino/fork-recovery.md` recovery pattern.
44
-
45
- **Skill-specific source**: `.dino/ralph-state.json` (check for pending stories)
46
-
47
- If no context found, ask: "What would you like me to [skill action]?"
48
- ```
49
-
50
- ---
51
-
52
- ## Rules
53
-
54
- - **NEVER** ask user if context exists in files — check files first
55
- - **NEVER** proceed to main work without context
56
- - **ALWAYS** read sources in priority order
57
- - **STOP** at first actionable match
58
- - If all file sources are empty/missing, use `AskUserQuestion` with proper format (options, not plain text)
3
+ Fork-context skills must recover context before doing work. See each skill's Step 0 for the recovery pattern. Priority: $ARGUMENTS session.md Discovery skill-specific source → handoff/latest.md → AskUserQuestion.
@@ -68,49 +68,7 @@ Documentation only → SKIP
68
68
 
69
69
  ## Mandatory Review
70
70
 
71
- Optional review gate for code changes.
72
-
73
- ### Enabling
74
-
75
- ```bash
76
- DINO_MANDATORY_REVIEW=true
77
- ```
78
-
79
- Or in `.dino/config.json`:
80
- ```json
81
- {"mandatoryReview": true}
82
- ```
83
-
84
- ### Review Flow
85
-
86
- ```
87
- Edit/Write → [review enabled?] → Spawn reviewer → [critical?] → Block/Continue
88
- ```
89
-
90
- ### Review Categories
91
-
92
- | Category | Checks | Severity |
93
- |----------|--------|----------|
94
- | Security | Secrets, injection, auth | Critical/Major |
95
- | Quality | Patterns, errors, complexity | Major/Minor |
96
- | Style | Formatting, naming | Minor/Info |
97
- | Performance | N+1, inefficient patterns | Major/Minor |
98
-
99
- ### Blocking Rules
100
-
101
- | Condition | Action |
102
- |-----------|--------|
103
- | Critical security | BLOCK |
104
- | Critical quality | BLOCK |
105
- | Major (if configured) | BLOCK |
106
- | Minor/Info | Warn only |
107
-
108
- ### Environment Variables
109
-
110
- | Variable | Default | Purpose |
111
- |----------|---------|---------|
112
- | `DINO_MANDATORY_REVIEW` | false | Enable review |
113
- | `DINO_REVIEW_BLOCK_MAJOR` | false | Block on major |
71
+ Set `DINO_MANDATORY_REVIEW=true` to enable code review gate. Disabled by default.
114
72
 
115
73
  ---
116
74
 
@@ -0,0 +1,383 @@
1
+ ---
2
+ description: Configure MCP server for Claude Code
3
+ metadata:
4
+ model: haiku
5
+ context: inherit
6
+ effort: low
7
+ allowed-tools:
8
+ - Read
9
+ - Bash
10
+ - Glob
11
+ - WebSearch
12
+ ---
13
+
14
+ # MCP Setup
15
+
16
+ Configure Model Context Protocol (MCP) servers for Claude Code.
17
+
18
+ ## What is MCP
19
+
20
+ MCP is an open protocol (JSON-RPC 2.0) that standardizes how AI assistants connect to external tools and data sources. Claude Code uses MCP to extend its capabilities through custom servers.
21
+
22
+ **Official Spec**: https://modelcontextprotocol.io/specification/2025-11-25
23
+
24
+ ## Transport Types
25
+
26
+ | Transport | Use Case | Config Key |
27
+ |-----------|----------|------------|
28
+ | **stdio** | Local CLI tools (recommended) | `command`, `args`, `env` |
29
+ | **SSE** | Server-Sent Events over HTTP | `url`, `headers` |
30
+ | **HTTP** | Direct HTTP endpoints | `url`, `headers` |
31
+
32
+ ## Configuration Scopes
33
+
34
+ | Scope | Location | Usage |
35
+ |-------|----------|-------|
36
+ | **Project** | `.mcp.json` (project root) | Shared with team, version controlled |
37
+ | **Local** | `~/.claude.json` (local object) | Machine-specific, not synced |
38
+ | **User** | `~/.claude.json` (user object) | Personal, applies to all projects |
39
+
40
+ ### Priority Order
41
+
42
+ Project > Local > User (project scope overrides others)
43
+
44
+ ## Configuration Files
45
+
46
+ ### Project Scope (`.mcp.json`)
47
+
48
+ Place at project root:
49
+
50
+ ```json
51
+ {
52
+ "mcpServers": {
53
+ "server-name": {
54
+ "type": "stdio",
55
+ "command": "node",
56
+ "args": ["server.js"],
57
+ "env": {
58
+ "API_KEY": "${API_KEY:-default}"
59
+ }
60
+ }
61
+ }
62
+ }
63
+ ```
64
+
65
+ ### Local/User Scope (`~/.claude.json`)
66
+
67
+ ```json
68
+ {
69
+ "mcpServers": {
70
+ "local-server": {
71
+ "type": "stdio",
72
+ "command": "/path/to/server"
73
+ }
74
+ }
75
+ }
76
+ ```
77
+
78
+ ### With `.claude/settings.json`
79
+
80
+ Hooks and status line configuration (dino-specific):
81
+
82
+ ```json
83
+ {
84
+ "statusLine": {
85
+ "type": "command",
86
+ "command": "dino-hud",
87
+ "padding": 0
88
+ },
89
+ "hooks": {
90
+ "PostToolUse": [
91
+ {
92
+ "matcher": "Edit|Write",
93
+ "hooks": [
94
+ { "type": "command", "command": "bun tsc --noEmit --incremental" }
95
+ ]
96
+ }
97
+ ]
98
+ }
99
+ }
100
+ ```
101
+
102
+ ## CLI Commands
103
+
104
+ ```bash
105
+ # Add MCP server (interactive)
106
+ claude mcp add <server-name>
107
+
108
+ # Add with specific scope
109
+ claude mcp add <server-name> --scope project
110
+ claude mcp add <server-name> --scope local
111
+ claude mcp add <server-name> --scope user
112
+
113
+ # List configured servers
114
+ claude mcp list
115
+
116
+ # Remove server
117
+ claude mcp remove <server-name>
118
+
119
+ # Get server details
120
+ claude mcp get <server-name>
121
+ ```
122
+
123
+ ## Server Configuration Formats
124
+
125
+ ### stdio Transport (Most Common)
126
+
127
+ ```json
128
+ {
129
+ "mcpServers": {
130
+ "my-tool": {
131
+ "type": "stdio",
132
+ "command": "node",
133
+ "args": ["--experimental-specifier-resolution=node", "dist/server.js"],
134
+ "env": {
135
+ "NODE_ENV": "production",
136
+ "API_KEY": "${MY_API_KEY}"
137
+ }
138
+ }
139
+ }
140
+ }
141
+ ```
142
+
143
+ ### HTTP/SSE Transport
144
+
145
+ ```json
146
+ {
147
+ "mcpServers": {
148
+ "remote-tool": {
149
+ "type": "http",
150
+ "url": "https://api.example.com/mcp",
151
+ "headers": {
152
+ "Authorization": "Bearer ${API_TOKEN}"
153
+ }
154
+ }
155
+ }
156
+ }
157
+ ```
158
+
159
+ ### With Bun
160
+
161
+ ```json
162
+ {
163
+ "mcpServers": {
164
+ "bun-server": {
165
+ "type": "stdio",
166
+ "command": "bun",
167
+ "args": ["run", "server.ts"],
168
+ "env": {
169
+ "BUN_NO_WARNINGS": "1"
170
+ }
171
+ }
172
+ }
173
+ }
174
+ ```
175
+
176
+ ## Environment Variables
177
+
178
+ MCP supports environment variable expansion:
179
+
180
+ | Syntax | Behavior |
181
+ |--------|----------|
182
+ | `${VAR}` | Required - errors if unset |
183
+ | `${VAR:-default}` | Optional - uses default if unset |
184
+ | `${VAR:=default}` | Sets variable if unset |
185
+
186
+ ### Security Note
187
+
188
+ Never hardcode secrets. Use environment variables:
189
+
190
+ ```json
191
+ {
192
+ "env": {
193
+ "API_KEY": "${ANTHROPIC_API_KEY}",
194
+ "DB_URL": "${DATABASE_URL:-localhost:5432}"
195
+ }
196
+ }
197
+ ```
198
+
199
+ ## Dino MCP Server
200
+
201
+ Dino includes a built-in MCP server with 22 tools.
202
+
203
+ ### Check Current Config
204
+
205
+ ```bash
206
+ dino mcp doctor
207
+ ```
208
+
209
+ ### Manual Configuration
210
+
211
+ Add to `.mcp.json`:
212
+
213
+ ```json
214
+ {
215
+ "mcpServers": {
216
+ "dino": {
217
+ "type": "stdio",
218
+ "command": "dino",
219
+ "args": ["mcp", "serve"],
220
+ "env": {}
221
+ }
222
+ }
223
+ }
224
+ ```
225
+
226
+ ### Protocol Details
227
+
228
+ - **Protocol Version**: `2024-11-05`
229
+ - **Server Name**: `dino`
230
+ - **Capabilities**: `tools: { listChanged: true }`
231
+
232
+ ### Available Tools
233
+
234
+ | Tool | Purpose |
235
+ |------|---------|
236
+ | `dino_status` | Session state display |
237
+ | `dino_budget` | Token budget tracking |
238
+ | `dino_context` | Context management |
239
+ | `dino_defer` | Lazy file loading |
240
+ | `dino_focus_set` | Set focus area |
241
+ | `dino_memory_save` | Save memories |
242
+ | `dino_memory_recall` | Recall memories |
243
+ | `dino_retrieve` | Hybrid context retrieval |
244
+ | `dino_spec` | Prompt analysis |
245
+ | `dino_validate` | Package validation |
246
+ | `dino_tasks` | Task management |
247
+ | `dino_plans` | Plan management |
248
+ | `dino_agents` | Agent coordination |
249
+
250
+ Run `dino mcp serve --help` for full tool list.
251
+
252
+ ## Common Mistakes
253
+
254
+ ### Missing `mcpServers` Wrapper
255
+
256
+ ```json
257
+ // WRONG - Missing wrapper
258
+ {
259
+ "my-server": { "command": "node" }
260
+ }
261
+
262
+ // CORRECT
263
+ {
264
+ "mcpServers": {
265
+ "my-server": { "command": "node" }
266
+ }
267
+ }
268
+ ```
269
+
270
+ ### Wrong Transport for Remote
271
+
272
+ ```json
273
+ // WRONG - stdio for remote
274
+ {
275
+ "type": "stdio",
276
+ "url": "https://api.example.com"
277
+ }
278
+
279
+ // CORRECT
280
+ {
281
+ "type": "http",
282
+ "url": "https://api.example.com/mcp"
283
+ }
284
+ ```
285
+
286
+ ### Tildef/Home in Paths (Bun/Node Issue)
287
+
288
+ ```json
289
+ // WRONG - Causes Bun segfault
290
+ {
291
+ "command": "~/bin/server"
292
+ }
293
+
294
+ // CORRECT - Use absolute paths
295
+ {
296
+ "command": "/Users/username/bin/server"
297
+ }
298
+
299
+ // CORRECT - Or expand via env
300
+ {
301
+ "command": "${HOME}/bin/server"
302
+ }
303
+ ```
304
+
305
+ ### Missing args Array
306
+
307
+ ```json
308
+ // WRONG - args as string
309
+ {
310
+ "command": "node",
311
+ "args": "server.js --port 3000"
312
+ }
313
+
314
+ // CORRECT - args as array
315
+ {
316
+ "command": "node",
317
+ "args": ["server.js", "--port", "3000"]
318
+ }
319
+ ```
320
+
321
+ ## Troubleshooting
322
+
323
+ ### Server Not Appearing
324
+
325
+ 1. Check JSON syntax: `cat .mcp.json | jq .`
326
+ 2. Verify scope: `claude mcp list`
327
+ 3. Check command path is absolute or in PATH
328
+
329
+ ### Connection Drops
330
+
331
+ 1. Check server logs: `dino mcp serve --verbose`
332
+ 2. Verify protocol version matches
333
+ 3. Run `dino mcp doctor` for diagnostics
334
+
335
+ ### Bun Segmentation Fault
336
+
337
+ **CAUSE**: Usually incorrect config or path issues.
338
+
339
+ **CHECK**:
340
+ 1. All paths are absolute (no `~` or `$HOME`)
341
+ 2. `args` is an array, not a string
342
+ 3. Environment variables use `${VAR}` syntax
343
+ 4. JSON is valid (no trailing commas)
344
+
345
+ **FIX**:
346
+ ```bash
347
+ # Validate JSON
348
+ cat .mcp.json | jq .
349
+
350
+ # Test server directly
351
+ dino mcp serve
352
+
353
+ # Run diagnostics
354
+ dino mcp doctor
355
+ ```
356
+
357
+ ## Workflow
358
+
359
+ 1. Check current configuration:
360
+ ```bash
361
+ claude mcp list
362
+ dino mcp doctor
363
+ ```
364
+
365
+ 2. Add or update server configuration in `.mcp.json`
366
+
367
+ 3. Validate configuration:
368
+ ```bash
369
+ cat .mcp.json | jq .
370
+ ```
371
+
372
+ 4. Restart Claude Code to load new servers
373
+
374
+ 5. Verify server is running:
375
+ ```bash
376
+ claude mcp get dino
377
+ ```
378
+
379
+ ## Resources
380
+
381
+ - [MCP Specification](https://modelcontextprotocol.io/specification/2025-11-25)
382
+ - [Claude Code MCP Docs](https://docs.anthropic.com/en/docs/claude-code/mcp)
383
+ - [Anthropic MCP Blog](https://www.anthropic.com/engineering/claude-mcp-code-execution)
@@ -127,7 +127,7 @@ Apply all confirmed documentation changes before build/publish.
127
127
  ### 6. Build and Test
128
128
 
129
129
  ```bash
130
- bun run build.js # Build
130
+ node build.js # Build (NOT bun — segfaults under pipe stdio)
131
131
  bun run vitest run # Test (must pass)
132
132
  ```
133
133