Skip to content
sarmakska edited this page Jun 4, 2026 · 1 revision

Doctor

/slipstream:doctor runs the install diagnostic. Every check returns PASS or FAIL with a short detail; FAIL lines now print a one-line fix: remedy underneath so you can copy-paste the remediation without leaving the terminal.

Checks

id Pass condition Failure remedy
claude-dir .claude/ exists in the project, or absent (created on first write) mkdir -p .claude/slipstream/memory
mcp-build dist/mcp/index.js exists pnpm install && pnpm build
mcp-declared .claude-plugin/plugin.json declares mcpServers.slipstream Add the slipstream block to plugin.json
hooks-wired SessionStart, UserPromptSubmit, PreToolUse, PostToolUse, Stop all registered Reinstall the plugin
precompact-hook PreCompact hook registered Reinstall the plugin
memory-dir Memory store exists, or absent (created on first remember) /slipstream:remember once
observations-dir Observation store exists, or absent Created automatically as you work
cli-build dist/cli/index.js exists pnpm install && pnpm build
statusline Statusline script present Reinstall the plugin
output-style Output style preset present Reinstall the plugin
subagents sp-shipper, sp-schema, sp-reviewer agents present Reinstall the plugin
plugin-valid validatePlugin passes (manifest, marketplace, commands, skill library) Read the issues list and fix the offender
dashboard-port No stale dashboard.port file lsof -nP -iTCP:LISTEN | grep slipstream then kill the PID
dashboard-socket Socket file readable or absent rm -f .claude/slipstream/dashboard.sock
duplicate-registration slipstream NOT wired via both the plugin AND .mcp.json Remove one: either delete slipstream from .mcp.json (keep the plugin) or unset the plugin (keep .mcp.json)
double-emit hooks active AND SLIPSTREAM_MCP_EMIT=1 NOT both true Unset SLIPSTREAM_MCP_EMIT in your editor MCP config; the plugin hooks already emit
stale-dashboard Recorded dashboard's /api/health version matches the installed package Run sp_dashboard to restart, or kill the process bound to the recorded port

The three checks in bold are new in v0.6.1 and exist to catch the cross-IDE setup pitfalls that bit early users.

How the new checks work

duplicate-registration

Reads .claude-plugin/plugin.json for mcpServers.slipstream and project-side .mcp.json or .claude/mcp.json for the same key. If both register slipstream, every observation event is counted twice. The fix is to keep one path and remove the other.

double-emit

Checks the runtime env: when the hooks are present AND SLIPSTREAM_MCP_EMIT=1 is set, the MCP server emits its own events on top of the hook events. The observation store ends up with duplicate rows. The remedy is to unset the env var; the hooks already cover the emit path in plugin mode.

stale-dashboard

Reads .claude/slipstream/dashboard.port, probes http://127.0.0.1:<port>/api/health, compares the returned version to the installed package's version. A mismatch means an older dashboard process is squatting the port. The fix is sp_dashboard, which now auto-restarts on a version mismatch.

Rendered output

# slipstream doctor

PASS  claude-dir: /Users/sarma/project/.claude
PASS  mcp-build: /Users/sarma/.claude/plugins/slipstream/dist/mcp/index.js
PASS  mcp-declared: plugin.json mcpServers.slipstream
PASS  hooks-wired: SessionStart, UserPromptSubmit, PreToolUse, PostToolUse, Stop
PASS  precompact-hook: PreCompact hook for lossless compaction
PASS  memory-dir: /Users/sarma/project/.claude/slipstream/memory
PASS  observations-dir: /Users/sarma/project/.claude/slipstream/observations
PASS  cli-build: ..
PASS  statusline: ..
PASS  output-style: ..
PASS  subagents: sp-shipper, sp-schema, sp-reviewer
PASS  plugin-valid: 12 checks passed
PASS  dashboard-port: ..
PASS  dashboard-socket: ..
PASS  duplicate-registration: single registration
PASS  double-emit: single emit path
PASS  stale-dashboard: dashboard v0.6.1 matches build

All checks passed. slipstream is wired correctly.

Related

Clone this wiki locally