Agent Skills › deepseek-ai/deepseek-harness › cordis-plugin-development

cordis-plugin-development

GitHub

用于在 Harness 环境中创建、安装、配置及调试插件和 UI 组件。通过工作区文件构建包,利用 plugin_manager 进行部署,并遵循特定流程确保插件生效与预览。

packages/preset/agent-preset/skills/cordis-plugin-development/SKILL.md deepseek-ai/deepseek-harness

Trigger Scenarios

添加或启用新插件 禁用已安装的插件 配置插件功能 调试插件加载问题 开发 UI 组件或装饰

Install

npx skills add deepseek-ai/deepseek-harness --skill cordis-plugin-development -g -y
More Options

Non-standard path

npx skills add https://github.com/deepseek-ai/deepseek-harness/tree/master/packages/preset/agent-preset/skills/cordis-plugin-development -g -y

Use without installing

npx skills use deepseek-ai/deepseek-harness@cordis-plugin-development

指定 Agent (Claude Code)

npx skills add deepseek-ai/deepseek-harness --skill cordis-plugin-development -a claude-code -g -y

安装 repo 全部 skill

npx skills add deepseek-ai/deepseek-harness --all -g -y

预览 repo 内 skill

npx skills add deepseek-ai/deepseek-harness --list

SKILL.md

Frontmatter
{
    "name": "cordis-plugin-development",
    "description": "Use when adding, enabling, disabling, installing, configuring, or debugging a plugin, bundle, feature, page, panel, tool, or MCP connection in the current Harness profile, including a shipped plugin that is disabled by default, and for any visual object, decoration, or widget request that names no other destination, which means an installed UI plugin rendered in the Harness Web UI."
}

Persistent Harness plugins

Use ordinary workspace files to author a bundle, then plugin_manager with action: install_bundle and the absolute package directory as target to install it in the current profile. Changes affect every session in that profile and survive restart. Load editing-cordis-compositions for agent preset changes.

Do not write the profile's package.json or cordis.patch.yml, create packages under $DSH_HOME, or run pnpm in the profile directory: install_bundle performs those steps, and each hand-made write outside the workspace needs its own approval. Every plugin_manager action, including list_plugins and list_bundles, also needs approval without Full access, so call it only when its result decides the next step.

Enable a shipped plugin

A shipped bundle can resolve a plugin row and leave it disabled. The row id and its reason are in the shipped patch, packages/bundle/*/cordis.patch.yml in a source checkout. Write a workspace bundle whose patch overrides that row with disabled: false and inserts the Host rows it depends on; a source checkout's apps/cli/config/examples/<feature>/cordis.yml lists them for opt-in features. Packages shipped with dsh resolve from the dsh installation, so the bundle declares no dependencies on them. Install it with install_bundle.

Deliver a working plugin first

  1. Resolve the requested result and destination. An unspecified visual destination is the current Harness Web UI; a standalone image or HTML file does not complete such a request. Choose reasonable visual details and implement a small first version; install it before visual refinement.
  2. Discover only the APIs needed for that version: cordis_inspect_list, then targeted cordis_inspect_query calls. For UI, query Client Slots.listSubTree and the selected slot's registration options and props. For anything beyond a static decoration, such as tool policy, agent context, session-derived state, or Chat rows, read references/practices.md before choosing the extension point. Once the chosen slot and registration API are known, write the plugin.
  3. Read the matching template under templates/ with the file-read tool and write its copies into one workspace directory, or write the installable package, patch, and required Host/Client files there yourself. Check JavaScript syntax and the manifest, then install it. Before that first installation, do not create preview HTML, mock shells, design variants, screenshot scripts, or rasterizer tooling. Use the installed plugin itself as the first preview.
  4. Read the installation result: its application and warnings fields decide whether the change is live, not server logs, terminal output, process lists, or the page's boot payload. Confirm new rows with cordis_inspect_query, which needs no approval, rather than paging list_plugins. After application: applied, exercise the capability or inspect the live Client registration. Use the connected page for visual verification when browser control is available. For a page or panel, also verify design consistency: styles use only theme tokens, the plugin imports no Harness Client package such as @deepseek-ai/dsh-client-ui-primitives, the console shows no slot entry crash, and the view reads correctly in light and dark themes beside a comparable host page. State any verification limitation explicitly; installation and slot registration alone do not establish what the user can see.
  5. Fix observed defects in the same plugin. When the requested result works, finish with its location and verification status. Do not continue speculative visual variants, optional features, or a new mock preview. Close any task list you created.

Knowledge sources, in order

  1. Inspection: cordis_inspect_query answers exact Service methods and Event modes (Service, Event), a mounted plugin's Config JSON Schema (Config.listConfigs: filter the paged directory by name, then query the entry id), the Tools this Agent can call (Tool), and live Client Slots and theme tokens (Slots, Theme).
  2. Package documentation: Config.listConfigs with name set to the package finds its entries; querying one entry returns its packageDir, the resolved package directory. Read <packageDir>/README.md. Bundled packages resolve from the dsh installation and profile-installed bundles from the profile, so never guess the path from $DSH_PROFILE_DIR.
  3. Source: installed packages ship built lib/index.js and lib/types/**/*.d.ts with JSDoc under that same packageDir, not src/; a source checkout of DSH has packages/<group>/<name>/src. Read them when inspection and the README leave a question open, and start source-level diagnosis from a concrete installation or runtime failure.

DSH_PROFILE (profile name) and DSH_PROFILE_DIR (its directory, whose node_modules holds only profile-installed bundles) are set in every shell call of a profile-launched Harness and absent when the Harness was booted without a profile. Bash reads them as $DSH_PROFILE; PowerShell, which the Windows preset uses, reads them as $env:DSH_PROFILE. With dsh on the PATH, dsh --profile "$DSH_PROFILE" --dump-config prints the composed profile.

Read next

The files below live in this skill's base directory, which the skill tool reported, and the table is the complete list: do not enumerate that directory. In every deployment, including a source checkout, read these files with the file-read tool, write copies into the workspace with the file-write tool, and verify a copy by reading it back. In Desktop the directory sits inside app.asar, which only the Host process's own file reads can open; shell commands (ls, cat, cp, cmp), the glob and search tools (they run a native ripgrep process), node, and pnpm all fail on it. Never install or syntax-check a template in place; copy its contents into the workspace first.

Task File
Bundle manifest, display metadata and icon, install and enable semantics, Host plugin export forms, Config references/host-plugin.md
A UI plugin rendered in the Web page: Client manifest, module loader, slot registration references/ui-plugin.md
Connecting an MCP server through a configuration-only bundle references/mcp-bundle.md
Verification limits when no browser control is available references/verification.md
UI plugin starting point, four files templates/decoration/package.json, templates/decoration/cordis.patch.yml, templates/decoration/index.js, templates/decoration/client.js
MCP bundle starting point, two files templates/mcp/package.json, templates/mcp/cordis.patch.yml
Loader patch dialect and the list of installable plugin packages the cordis-composition-reference skill
Choosing extension points, contexts, and state mechanisms for upgrade stability and performance references/practices.md

Version History

  • 477b4f4 Current 2026-09-27 12:00

Same Skill Collection

.agents/skills/agent-experience/SKILL.md
.agents/skills/dsh-archive-agent-notes/SKILL.md
.agents/skills/dsh-ci-test-reliability/SKILL.md
.agents/skills/dsh-client-ui-ux/SKILL.md
.agents/skills/dsh-code-review/SKILL.md
.agents/skills/dsh-doc-site-sync/SKILL.md
.agents/skills/dsh-doc-standards/SKILL.md
.agents/skills/dsh-find-simplifications/SKILL.md
.agents/skills/dsh-merging-stacked-prs/SKILL.md
.agents/skills/dsh-pre-push-checks/SKILL.md
.agents/skills/dsh-prose-standard/SKILL.md
.agents/skills/dsh-speed-up-perf/SKILL.md
.agents/skills/dsh-translate-docs/SKILL.md
.agents/skills/dsh-trim-cot-leakage/SKILL.md
packages/preset/agent-preset/skills/cordis-composition-reference/SKILL.md
packages/preset/agent-preset/skills/editing-cordis-compositions/SKILL.md
packages/skill/skill-office/assets/office-docx/SKILL.md
packages/skill/skill-office/assets/office-pptx/SKILL.md
packages/skill/skill-office/assets/office-xlsx/SKILL.md
.agents/skills/dsh-doc/SKILL.md
.agents/skills/record-browser-gif/SKILL.md

Metadata

Files
0
Version
477b4f4
Hash
acb07826
Indexed
2026-09-27 12:00

ホーム - Wiki
Copyright © 2011-2026 iteam. Current version is 2.155.2. UTC+08:00, 2026-09-28 06:55
浙ICP备14020137号-1