Specification guide · not runtime certification

DeepSeek Harness Skills & SKILL.md Paths

DeepSeek Harness discovers instruction Skills from documented project, user, custom and bundled roots. A Skill can use <name>/SKILL.md or <name>.md; this guide explains discovery and structure without claiming runtime certification.

Core distinction

A plugin extends the runtime. A Skill instructs the agent.

DeepSeek's “Everything is a Plugin” architecture does not mean every ecosystem asset is a Skill. The Harness also provides a layered registry for optional instruction assets, loaded only when relevant.

Runtime asset

Plugin

Can supply or compose models, tools, sessions, sandboxes, filesystems, orchestration and UI surfaces.

Open plugin index →
Instruction asset

Skill

Provides a named, described instruction body that can be discovered and loaded through the Skill registry.

See accepted formats ↓
Discovery model

Six roots, with lower rank winning within one layer

The nearest scoped registry layer wins duplicate names before rank is considered. Within one layer, the official local provider scans these roots in order.

RankSourceRoot
100Project DSH<projectRoot>/.dsh/skills
200Project Agents<projectRoot>/.agents/skills
300CustomConfig.customSkillDirs
400User DSH<dshHome>/skills
500User Agents<agentsHome>/skills
600BundledConfig.bundledSkillDir
Accepted shapes

Two direct-entry formats; no recursive nested discovery

Directory bundle
my-skill/
  SKILL.md

The directory name is the Skill identity and may contain referenced resources.

Flat Markdown
my-skill.md

A direct Markdown entry at a configured root. Nested **/SKILL.md traversal is not supported.

Author checklist

Structural compatibility checklist

Passing these checks increases the chance of discovery. It does not prove that tools, scripts, permissions or expected model behavior work correctly.

  1. Use a kebab-case identity.The name must match ^[a-z0-9]+(?:-[a-z0-9]+)*$.
  2. Place the file directly in a supported root.Use <name>/SKILL.md or <name>.md; do not depend on recursive discovery.
  3. Provide a concise description.The model-facing catalog uses the Skill name and description to decide whether to load it.
  4. Declare invocation intent deliberately.The local provider reads disable-model-invocation and user-invocable; omitted controls default to enabled.
  5. Resolve resources relative to the Skill bundle.Reference scripts, assets and supporting files explicitly instead of assuming the full directory is enumerated.
  6. Pin and test the Harness version.The platform is in developer preview and the current package is 0.1.0-rc.6; contracts may break.
Evidence status

Specification-backed, runtime unverified

SkillVetAI has checked these statements against the official subsystem documentation snapshot, but has not yet run the catalog's Skill packages inside DeepSeek Harness. Do not interpret this guide as a compatibility badge for any individual package.

Read the official Skills documentation ↗