skills/debug-gdansk/SKILL.md
Debugging guide for broken gdansk integrations. Use when a gdansk widget fails to register, the frontend bundle or render runtime does not start, a `Vite` root path is wrong, widget output or CSS is missing, host and port configuration disagree, or an existing gdansk MCP app needs error-driven diagnosis.
npx skillsauth add mplemay/gdansk debug-gdanskInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Use this workflow when gdansk is already present but something is broken. Diagnose from the failing boundary outward and prefer exact error strings over speculative fixes.
Classify the issue before editing:
Vite(...) root path.@ship.widget(path=...) input.If the repo does not have gdansk wired yet and the task is mainly setup, switch to $use-gdansk.
Start with structure and contract checks:
Vite(...) points at the frontend package root.package.json, vite.config.ts, and widgets/.widgets/**/widget.tsx or widget.jsx.@ship.widget(path=...) uses a path relative to widgets/.@gdansk/vite, vite, @vitejs/plugin-react, react, react-dom, and
@modelcontextprotocol/ext-apps.Use path-contract.md for accepted and rejected widget path inputs.
vite.config.ts, package dependencies, and bundle outputs under dist/.Vite(Path(...), host=..., port=...) on Ship(vite=...) and
gdansk({ host, port }) aligned.Vite(Path(...), build_directory=...) and
gdansk({ buildDirectory }) aligned.Use troubleshooting.md for error-to-fix mapping.
After each change:
@vite/client.dist/.widgets/... prefixes in @ship.widget(...).ui:// mapping: path-contract.mdtools
Adoption and implementation guide for using gdansk in any repository. Use when bootstrapping a new gdansk-backed MCP app, adding a `Ship` widget UI, wiring `ship.mcp(app=...)` with `MCPServer`, configuring the frontend package with `@gdansk/vite`, adding metadata or structured output, registering extra `@mcp.tool` tools on the same server, or mounting the MCP app inside FastAPI.
tools
Use when work should span one or more detached tasks but still behave like one job with a single owner context. TaskFlow is the durable flow substrate under authoring layers like Lobster, ACPX, plugins, or plain code. Keep conditional logic in the caller; use TaskFlow for flow identity, child-task linkage, waiting state, revision-checked mutations, and user-facing emergence.
tools
# Lobster Lobster executes multi-step workflows with approval checkpoints. Use it when: - User wants a repeatable automation (triage, monitor, sync) - Actions need human approval before executing (send, post, delete) - Multiple tool calls should run as one deterministic operation ## When to use Lobster | User intent | Use Lobster? | | ------------------------------------------------------ | --------------------------
tools
# Lobster Lobster executes multi-step workflows with approval checkpoints. Use it when: - User wants a repeatable automation (triage, monitor, sync) - Actions need human approval before executing (send, post, delete) - Multiple tool calls should run as one deterministic operation ## When to use Lobster | User intent | Use Lobster? | | ------------------------------------------------------ | --------------------------