AgentSkillsCN

debug-connection

调试 CLI 与 FigJam 插件之间的 WebSocket 连接问题。当图表无法同步、连接失败、插件始终显示“正在连接……”或补丁未能应用到画布时,请使用此工具。

SKILL.md
--- frontmatter
name: debug-connection
description: Debug WebSocket connection issues between CLI and FigJam plugin. Use when diagrams aren't syncing, connection fails, plugin shows "Connecting..." indefinitely, or patches aren't being applied to canvas.

WebSocket Connection Debugging

Architecture

code
CLI serve (Bun) ←── WebSocket ──→ Plugin UI (ui.ts) ←── postMessage ──→ Plugin Main (code.ts)
     │                                  │                                    │
  File watcher                    Browser APIs                          Figma API
  YAML parsing                    WebSocket client                      Canvas rendering

Common Issues

IssueSymptomSolution
CLI not running"Connecting..." indefinitelyStart bun run packages/cli/src/index.ts serve diagram.yaml
Port in useConnection refusedCheck lsof -i :3456, use different port
Secret mismatchConnects then immediately closesMatch --secret value in CLI and plugin
YAML errorsConnected but no updatesFix validation errors in CLI output
docId mismatchNo response after helloEnsure plugin docId matches YAML docId
Patches not appliedConnected, canvas unchangedCheck Plugin Main console for render errors

Debugging Steps

  1. CLI side: Check terminal for errors, verify YAML with bun run packages/cli/src/index.ts build diagram.yaml
  2. Plugin UI: Right-click plugin → Inspect → Console for WebSocket events
  3. Plugin Main: Figma Desktop → Plugins → Development → Open console

Message Flow

code
Plugin                          CLI
  │                              │
  │──── hello ─────────────────►│  {type:"hello", docId, secret?}
  │◄──── full ─────────────────│  {type:"full", rev, ir}
  │                              │
  │      [YAML changes]          │
  │◄──── patch ────────────────│  {type:"patch", baseRev, nextRev, ops}
  │                              │
  │      [Reconnect]             │
  │──── requestFull ───────────►│  {type:"requestFull", docId}
  │◄──── full ─────────────────│

JSON Import Errors

  • JSON must be an object with version, docId, nodes
  • DSL format: nodes as array
  • IR format: nodes as object (Record)
  • Validation errors shown in alert with path + message

Quick Test

bash
# Start server
bun run packages/cli/src/index.ts serve examples/diagram.yaml

# Test with wscat
wscat -c ws://localhost:3456
> {"type":"hello","docId":"test"}