What problem does it solve? Writing plugins for DeepSeek Harness (DSH) involves non-obvious Cordis loader rules, and mistakes like adding a default export or misusing !!js expressions silently break plugins with no diagnostics. This Skill encodes the official postmortems and tested pitfalls so plugins load, inject dependencies, and unload cleanly on the first try. ## Core Features & Use Cases - Loader Trap Prevention: Explains why export default destroys the module namespace (losing inject and name) and why !!js only works inside config, never in disabled/isolate/intercept metadata. - Tool Registration Rules: Covers the real ctx.tools.register() requirements — defineTool() wrapping, mandatory output with schema and render, and the non-standard flat parameters format where required can only be true. - Lifecycle & Debugging Guidance: Details reactive inject dependency semantics, reversible effects via ctx.effect(), and a concrete debugging sequence using dsh --profile web --dump-config and npx dsh-doctor. - Use Case: Your DSH plugin does nothing and throws cannot get property "agents" without inject at load time — this Skill walks you through checking for a default export, verifying the overlay uses an absolute path, and confirming injected services have providers. ## Quick Start Ask the AI to help you write a minimal DSH plugin that registers a tool, or to diagnose why your existing plugin fails to load.