DeepSeek Harness is an open-source framework for building and running AI agents, organized so that its functionality is provided through plugins. Developers use it to launch agent workflows through a local web interface or from source, while the catalogue add-ons extend the harness as plugins.
Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx skills add deepseek-ai/deepseek-harness --skill cordis-plugin-developmentgit clone --depth 1 https://github.com/deepseek-ai/deepseek-harnessWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/deepseek-ai/deepseek-harness/cordis-plugin-development)<a href="https://agentmods.dev/skills/deepseek-ai/deepseek-harness/cordis-plugin-development"><img src="https://agentmods.dev/badge/skills/deepseek-ai/deepseek-harness/cordis-plugin-development/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/deepseek-ai/deepseek-harness/cordis-plugin-development"><img src="https://agentmods.dev/badge/skills/deepseek-ai/deepseek-harness/cordis-plugin-development.svg" alt="Reviewed on agentmods" width="80" height="20"></a>- Snyk pass
- NVIDIA SkillSpector warn
SkillSpector: 2 findings, up to medium
These are SkillSpector’s own severities. On a checked sample its high-severity flags on skills were ~96% false positives — a documented command, a public API, a “never do X” rule — so we show them as a caution to read, not a verdict. Why →
- medium Excessive Agency · line 150 Skill enables autonomous high-impact decisions without human-in-the-loop verification. Critical operations (destructive commands, financial transactions, data deletion) should require explicit user confirmation.Fix: Add human-in-the-loop confirmation for destructive, irreversible, or high-impact operations. Never auto-execute commands that modify files, send data, or alter system state.
- medium Excessive Agency · line 354 Skill enables autonomous high-impact decisions without human-in-the-loop verification. Critical operations (destructive commands, financial transactions, data deletion) should require explicit user confirmation.Fix: Add human-in-the-loop confirmation for destructive, irreversible, or high-impact operations. Never auto-execute commands that modify files, send data, or alter system state.
What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00085 | $0.01699 |
| Opus 5.5 | $0.00034 | $0.00680 |
| Sonnet 5.5 | $0.00017 | $0.00340 |
| Haiku 4.5 | $0.00009 | $0.00170 |
Grade A, and why
cordis-plugin-development scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 13d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
Copies of this mod
8 near-identical copies found in the catalogue:
- cordis-plugin-development — 100% identical, 37 lines differ
- cordis-plugin-development — 100% identical, 434 lines differ
- cordis-plugin-development — 100% identical, 434 lines differ
- cordis-plugin-development — 100% identical, 434 lines differ
- cordis-plugin-development — 100% identical, 434 lines differ
- cordis-plugin-development — 100% identical, 434 lines differ
- cordis-plugin-development — 100% identical, 434 lines differ
- cordis-plugin-development — 100% identical, 434 lines differ
How it starts
The opening of the file, as written. The whole thing — 51 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Persistent Harness plugins
For implementation, 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.
Design or review
Read the applicable references below and inspect the proposed or existing plugin against current APIs. Report design choices or findings instead of following the installation workflow. Do not write files, install bundles, or change profile state unless the user requests implementation.
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
- 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.
- Discover only the APIs needed for that version:
cordis_inspect_list, then targetedcordis_inspect_querycalls. For UI, query ClientSlots.listSubTreeand 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, readreferences/practices.mdbefore choosing the extension point; for a user action in plugin UI, also readreferences/user-actions.md. Once the chosen slot and registration API are known, write the plugin. - Read and copy the matching template files into one workspace directory, or author the package, patch, and required Host/Client files there. Before installing, complete the display checklist in
references/host-plugin.md: meaningful localized titles/descriptions, an original or licensed icon, and exported resources with distribution checks where applicable. This applies to Host-only and configuration-only bundles too; adapt template text and artwork to the request. Check JavaScript syntax and the manifest, then install. Use the installed plugin as the first preview; do not create preview HTML, mock shells, design variants, screenshot scripts, or rasterizer tooling first. - Read the installation result:
applicationandwarningsdecide whether the change is live, not logs, process lists, or the page's boot payload. Confirm new rows with approval-freecordis_inspect_query, notlist_plugins. Afterapplication: applied, exercise the capability or inspect the live Client registration. Verify installed display metadata and the icon usingreferences/host-plugin.md. Use the connected page when available; followreferences/verification.mdfor page/panel design checks and unavailable browser control, andreferences/user-actions.mdfor user actions. Restore user state changed during testing. Report verification limits; installation and slot registration alone do not establish what the user sees. - Fix observed defects in the same plugin. When the requested result works, finish with its location, verification status, and the reason for any display-resource exception; never silently accept default artwork. Do not continue speculative variants, optional features, or mock previews. Close any task list.
What ships with it
16 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
- references/host-plugin.md 5.2 KB
- references/mcp-bundle.md 984 B
- references/practices.md 7.6 KB
- references/ui-plugin.md 1.9 KB
- references/user-actions.md 1.3 KB
- references/verification.md 1.2 KB
- templates/decoration/client.js 686 B runs code
- templates/decoration/cordis.patch.yml 69 B
- templates/decoration/icon.svg 118 B
- templates/decoration/index.js 108 B runs code
- templates/decoration/locale/en.json 128 B
- templates/decoration/package.json 527 B
- templates/mcp/cordis.patch.yml 217 B
- templates/mcp/icon.svg 335 B
- templates/mcp/locale/en.json 148 B
- templates/mcp/package.json 292 B
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 13d ago Changed 83561b4d4fed
- 17d ago Changed · +5 lines · +4 tokens per session 9e25dc1e310a
- 21d ago Changed · +6 lines · +24 tokens per session acb0782654c1
- 22d ago Changed · +1 lines fcf31edc26f6
- 23d ago Changed · -70 lines · +30 tokens per session 5c2ace82c973
- 28d ago Changed · -312 lines · -53 tokens per session 84daca3e10f6
- 1mo ago First seen · 421 lines · 80 tokens per session scan A 01811d3ee9c0
cordis-plugin-development is a skill published in the GitHub repository deepseek-ai/deepseek-harness (250,433 stars, last pushed today), licensed MIT. It adds 85 tokens to every session and 1,699 once invoked, about $0.0003 per session on Opus 5.5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other skills, from other repositories
manage-taskboard
Manage work in the native DeepSeek Harness Taskboard with exact task ids and optimistic versions. Use when an Agent must inspect project work, claim an eligible todo, record progress or blockers, verify an implementation, submit it for human review, or release its own claim; also use when a human asks how to accept…
industry-research-method
A Chinese-language method for researching an industry by mapping its supply chain, tracking policies and news, and writing sourced reports. It separates the chain into upstream inputs, midstream production, and downstream distribution or use.
company-research-method
A documented process for researching a company using supplied files and selected public sources. It produces a company overview with business details, sourced financial figures, and stated risks.
dsh-plugin-guide
Use when developing, reviewing, packaging, debugging, or answering questions about DeepSeek Harness (DSH) plugins — the plugin-based agent harness on vendored Cordis. Applies the official plugin-development constraints (plugin contract, cordis.yml layers, services/events/effects, tool DSL, bundles/profiles) backed by…
setup-matt-pocock-skills
Configure this repo for the engineering skills: set up its issue tracker, triage label vocabulary, and domain doc layout. Run once before first use of the other engineering skills.
wayfinder
Plan a huge chunk of work (more than one agent session can hold) as a shared map of decision tickets on your issue tracker, and resolve them one at a time until the way to the destination is clear.