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.
- package/.claude/rules/dino/change-categories.md +1 -5
- package/.claude/rules/dino/fork-recovery.md +1 -56
- package/.claude/rules/dino/quality.md +1 -43
- package/.claude/skills/dino.mcp-setup/SKILL.md +383 -0
- package/.claude/skills/dino.release/SKILL.md +1 -1
- package/.claude/skills/dino.test/SKILL.md +281 -0
- package/.claude/skills/dino.validate-deps/SKILL.md +2 -4
- package/.claude/skills/dino.verify/SKILL.md +1 -1
- package/README.md +13 -2
- package/bin/dino-hud.js +7 -2
- package/bin/dino.js +7 -2
- package/dist/cli/index.js +1 -8
- package/dist/cli/index.js.map +1 -1
- package/dist/commands/dashboard.d.ts +3 -3
- package/dist/commands/dashboard.js +3 -3
- package/dist/commands/debug.d.ts +4 -4
- package/dist/commands/debug.js +11 -11
- package/dist/commands/debug.js.map +1 -1
- package/dist/commands/hooks/registry.d.ts +1 -1
- package/dist/commands/hooks/registry.d.ts.map +1 -1
- package/dist/commands/hooks/registry.js +11 -55
- package/dist/commands/hooks/registry.js.map +1 -1
- package/dist/commands/hooks/types.d.ts +1 -1
- package/dist/commands/hooks/types.d.ts.map +1 -1
- package/dist/commands/hooks/types.js.map +1 -1
- package/dist/commands/hooks/utils.d.ts +1 -5
- package/dist/commands/hooks/utils.d.ts.map +1 -1
- package/dist/commands/hooks/utils.js +1 -5
- package/dist/commands/hooks/utils.js.map +1 -1
- package/dist/commands/hud.d.ts.map +1 -1
- package/dist/commands/hud.js +13 -11
- package/dist/commands/hud.js.map +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +24 -14
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/recommendations.d.ts +3 -3
- package/dist/commands/recommendations.js +3 -3
- package/dist/commands/session.d.ts +0 -10
- package/dist/commands/session.d.ts.map +1 -1
- package/dist/commands/session.js +0 -34
- package/dist/commands/session.js.map +1 -1
- package/dist/core/agents/validators/pip-validator.d.ts +19 -5
- package/dist/core/agents/validators/pip-validator.d.ts.map +1 -1
- package/dist/core/agents/validators/pip-validator.js +108 -9
- package/dist/core/agents/validators/pip-validator.js.map +1 -1
- package/dist/core/generator/claude-md.js +1 -1
- package/dist/core/memory/agents/memory-capture-agent.d.ts +1 -0
- package/dist/core/memory/agents/memory-capture-agent.d.ts.map +1 -1
- package/dist/core/memory/agents/memory-capture-agent.js +4 -14
- package/dist/core/memory/agents/memory-capture-agent.js.map +1 -1
- package/dist/core/memory/consolidation/consolidation.d.ts +1 -0
- package/dist/core/memory/consolidation/consolidation.d.ts.map +1 -1
- package/dist/core/memory/consolidation/consolidation.js +4 -14
- package/dist/core/memory/consolidation/consolidation.js.map +1 -1
- package/dist/core/registry/feature-registry.d.ts.map +1 -1
- package/dist/core/registry/feature-registry.js +0 -14
- package/dist/core/registry/feature-registry.js.map +1 -1
- package/dist/core/spec-analyzer/outcome-store.d.ts +1 -1
- package/dist/core/spec-analyzer/outcome-store.js +5 -5
- package/dist/core/spec-analyzer/outcome-store.js.map +1 -1
- package/dist/core/updater/deprecated-files.d.ts.map +1 -1
- package/dist/core/updater/deprecated-files.js +16 -0
- package/dist/core/updater/deprecated-files.js.map +1 -1
- package/dist/hooks/code-safety-patterns.d.ts +45 -0
- package/dist/hooks/code-safety-patterns.d.ts.map +1 -0
- package/dist/hooks/code-safety-patterns.js +303 -0
- package/dist/hooks/code-safety-patterns.js.map +1 -0
- package/dist/hooks/generator-factory.d.ts +1 -1
- package/dist/hooks/generator-factory.d.ts.map +1 -1
- package/dist/hooks/generator-factory.js +13 -7
- package/dist/hooks/generator-factory.js.map +1 -1
- package/dist/hooks/handlers/execution.d.ts.map +1 -1
- package/dist/hooks/handlers/execution.js +34 -0
- package/dist/hooks/handlers/execution.js.map +1 -1
- package/dist/hooks/handlers/index.d.ts +2 -1
- package/dist/hooks/handlers/index.d.ts.map +1 -1
- package/dist/hooks/handlers/index.js +28 -18
- package/dist/hooks/handlers/index.js.map +1 -1
- package/dist/hooks/handlers/memory-lifecycle.d.ts.map +1 -1
- package/dist/hooks/handlers/memory-lifecycle.js +32 -2
- package/dist/hooks/handlers/memory-lifecycle.js.map +1 -1
- package/dist/hooks/handlers/post-edit.d.ts +4 -0
- package/dist/hooks/handlers/post-edit.d.ts.map +1 -1
- package/dist/hooks/handlers/post-edit.js +18 -0
- package/dist/hooks/handlers/post-edit.js.map +1 -1
- package/dist/hooks/handlers/pre-tool-use.d.ts +29 -2
- package/dist/hooks/handlers/pre-tool-use.d.ts.map +1 -1
- package/dist/hooks/handlers/pre-tool-use.js +136 -25
- package/dist/hooks/handlers/pre-tool-use.js.map +1 -1
- package/dist/hooks/handlers/user-input.d.ts +2 -2
- package/dist/hooks/handlers/user-input.d.ts.map +1 -1
- package/dist/hooks/handlers/user-input.js +24 -18
- package/dist/hooks/handlers/user-input.js.map +1 -1
- package/dist/hooks/memory-correlator.d.ts.map +1 -1
- package/dist/hooks/memory-correlator.js +4 -18
- package/dist/hooks/memory-correlator.js.map +1 -1
- package/dist/hooks/post-edit.d.ts +1 -1
- package/dist/hooks/post-edit.js +1 -1
- package/dist/hooks/post-execution.d.ts +1 -1
- package/dist/hooks/post-execution.js +1 -1
- package/dist/hooks/post-typecheck.d.ts +1 -1
- package/dist/hooks/post-typecheck.js +1 -1
- package/dist/hooks/pre-compact.d.ts +1 -1
- package/dist/hooks/pre-compact.js +1 -1
- package/dist/hooks/pre-tool-use.d.ts +1 -1
- package/dist/hooks/pre-tool-use.js +2 -2
- package/dist/hooks/pre-tool-use.js.map +1 -1
- package/dist/hooks/pre-validate.d.ts +1 -1
- package/dist/hooks/pre-validate.js +1 -1
- package/dist/hooks/session-end.d.ts +1 -1
- package/dist/hooks/session-end.js +1 -1
- package/dist/hooks/session-start.d.ts +1 -1
- package/dist/hooks/session-start.js +1 -1
- package/dist/hooks/stop.d.ts +11 -0
- package/dist/hooks/stop.d.ts.map +1 -0
- package/dist/hooks/stop.js +12 -0
- package/dist/hooks/stop.js.map +1 -0
- package/dist/hooks/subagent-start.d.ts +1 -1
- package/dist/hooks/subagent-start.js +1 -1
- package/dist/hooks/subagent-stop.d.ts +1 -1
- package/dist/hooks/subagent-stop.js +1 -1
- package/dist/hooks/user-prompt-submit.d.ts +1 -1
- package/dist/hooks/user-prompt-submit.js +1 -1
- package/dist/mcp/setup.d.ts +3 -1
- package/dist/mcp/setup.d.ts.map +1 -1
- package/dist/mcp/setup.js +16 -12
- package/dist/mcp/setup.js.map +1 -1
- package/dist/mcp/tool-catalog.d.ts.map +1 -1
- package/dist/mcp/tool-catalog.js +2 -7
- package/dist/mcp/tool-catalog.js.map +1 -1
- package/dist/mcp-server.d.ts.map +1 -1
- package/dist/mcp-server.js +8 -1
- package/dist/mcp-server.js.map +1 -1
- package/dist/utils/exec.d.ts +2 -3
- package/dist/utils/exec.d.ts.map +1 -1
- package/dist/utils/exec.js +30 -45
- package/dist/utils/exec.js.map +1 -1
- package/dist/utils/similarity.d.ts +10 -0
- package/dist/utils/similarity.d.ts.map +1 -0
- package/dist/utils/similarity.js +41 -0
- package/dist/utils/similarity.js.map +1 -0
- package/package.json +2 -2
- package/dist/hooks/__tests__/pre-package-install.test.d.ts +0 -5
- package/dist/hooks/__tests__/pre-package-install.test.d.ts.map +0 -1
- package/dist/hooks/__tests__/pre-package-install.test.js +0 -76
- package/dist/hooks/__tests__/pre-package-install.test.js.map +0 -1
- package/dist/hooks/memory-capture-hooks.d.ts +0 -38
- package/dist/hooks/memory-capture-hooks.d.ts.map +0 -1
- package/dist/hooks/memory-capture-hooks.js +0 -258
- package/dist/hooks/memory-capture-hooks.js.map +0 -1
- package/dist/hooks/pre-package-install.d.ts +0 -28
- package/dist/hooks/pre-package-install.d.ts.map +0 -1
- package/dist/hooks/pre-package-install.js +0 -253
- package/dist/hooks/pre-package-install.js.map +0 -1
- package/dist/hooks/session-start-verify.d.ts +0 -73
- package/dist/hooks/session-start-verify.d.ts.map +0 -1
- package/dist/hooks/session-start-verify.js +0 -266
- 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`, `
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
130
|
+
node build.js # Build (NOT bun — segfaults under pipe stdio)
|
|
131
131
|
bun run vitest run # Test (must pass)
|
|
132
132
|
```
|
|
133
133
|
|