Whiteboard mcp smoke
Skill kamiazya/whiteboard/.claude/skills/whiteboard-mcp-smoke
A skill that standardizes whiteboard MCP and daemon verification. Use it after changing tools, routes, WebSocket behavior, daemon startup, checkpoints, export, or viewport logic when you need to decide what must be restarted and run the right smoke checks. Also use it when the user asks to verify behavior, run smoke tests, confirm things without restarting, or check whether MCP is broken.From its SKILL.md
npx -y skills add kamiazya/whiteboard --skill whiteboard-mcp-smokeAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 5 stars5 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
3.3 KB, as published. Nobody here has run it
MCP Smoke Verification Pattern
This repository splits verification targets into two categories.
- Server/daemon-side changes
Example:
src/server/**,src/app/hooks/useWhiteboardSync.ts,src/daemon/** - MCP schema/registration-side changes
Example: descriptions, schemas, or registration in
src/server/mcp/index.tsandsrc/server/mcp/tools/**
Decide First
- If you only touched
src/server/**orsrc/daemon/**:- Restarting the Claude session is usually unnecessary
- Verify through a watched daemon started with
pnpm --filter @kamiazya/whiteboard-mcp daemon:devor aWHITEBOARD_DEV=1path
- If you touched
src/server/mcp/**:- The MCP client must reconnect
- Do not treat daemon watch mode as sufficient
Procedure
1. Match the startup path to the change type
When repeatedly verifying server/daemon-side changes, use this in another terminal.
pnpm --filter @kamiazya/whiteboard-mcp daemon:dev
Meaning:
- Runs
tsx watch src/server/index.ts --daemon - Server, route, store, and daemon changes restart automatically
- MCP schema changes are not picked up
2. Unit Tests
Start with focused tests for the touched area. If broader coverage is not needed yet, leave full pnpm test for later.
pnpm test
Stop there if it fails.
3. Typecheck
pnpm typecheck
4. Stdio Smoke
pnpm smoke:e2e
scripts/smoke/mcp-e2e-smoke.mjs launches stdio MCP in a subprocess and verifies at least the following.
canvas_createannotatecanvas_inspectversion_saveversion_restore(with and withouttargetSlug)version_listviewport_setreturningno_clientexport_canvas(format:png/svg/json) succeeding via headless rendering with no browser connected
If the final line is [e2e] ALL OK, the MCP wrapper and route wiring are basically connected correctly.
5. LLM Smoke Only When Needed
pnpm smoke:claude
This consumes quota. Use it only when you need to confirm that the LLM can call tools correctly through descriptions and schemas.
How To Read Failures
RPC <method> timed out- MCP failed to start, or stdio is blocked
- If the target tool does not appear in
tools/list- It is likely missing from
src/server/mcp/index.ts
- It is likely missing from
- If you get an error other than
no_client- A guard likely regressed in
routes/export.ts,routes/viewport.ts, orroutes/ws.ts
- A guard likely regressed in
- If version restore returns the wrong element count
- There is likely a regression in
routes/canvas.tsorstore/version-store.ts
- There is likely a regression in
Working Rules
- After server/daemon changes, start from the
daemon:devpath and try verification without restarting Claude - If you touched MCP schema or registration, explicitly state that a restart is required
- In general, progress through
test -> typecheck -> smoke:e2e, stopping on failures - When you add a new tool, add one case to
scripts/smoke/mcp-e2e-smoke.mjswhen feasible