DHP Package Format

March 7, 2026 · View on GitHub

A DHP digital human package is always a bundle — a directory containing a spec.yaml and any optional supporting files.

Bundle Structure

packages/digital-humans/<slug>/
  spec.yaml               # required — the agent definition
  README.md               # optional — usage notes for this agent
  assets/                 # optional — icons, images, static resources
  skills/                 # optional — bundled skill directories
    <skill-id>/
      SKILL.md            # skill instruction file
      index.js            # skill script (optional)
      lib/                # nested directories supported
  mcps/                   # optional — bundled MCP server definitions
    <mcp-name>/
      spec.yaml
      <entrypoint>

The install entrypoint is always spec.yaml. All other files are optional.

Required Fields in spec.yaml

Every spec must include:

FieldTypeNotes
namestringNon-empty display name
versionstringe.g. "1.0.0"
authorstringAuthor or organization
descriptionstringOne sentence
typestring"automation", "skill", "mcp", or "extension"

Type-specific requirements:

TypeAlso requires
automationsystem_prompt, at least one subscriptions entry
skillsystem_prompt
mcpmcp_server

When publishing to a registry, include a store block:

store:
  slug: "my-agent"           # must match the bundle directory name
  category: productivity     # see spec/categories.md for allowed values
  tags: ["tag1", "tag2"]
  locale: en-US
  min_app_version: "0.5.0"
  license: MIT
  repository: "https://github.com/..."

The slug field must match the directory name under packages/digital-humans/.

File Format

spec.yaml must be valid YAML. JSON is also accepted (the parser handles both), but YAML is preferred for readability, especially for multi-line system_prompt values.

Bundled Skills and MCPs

Skills and MCPs can be bundled inside the package instead of requiring separate installation. Set bundled: true in the corresponding requires entry:

requires:
  mcps:
    - id: my-database-connector
      bundled: true
      reason: "Custom connector — no separate installation needed"
  skills:
    - id: my-analysis-skill
      bundled: true

Bundled MCPs must have their own spec.yaml under mcps/<id>/. Bundled skills must be directories under skills/<id>/ containing the skill files (e.g. SKILL.md, index.js). The files field in the requires.skills entry must list all files to be downloaded:

requires:
  skills:
    - id: my-analysis-skill
      bundled: true
      files:
        - SKILL.md
        - index.js

Full Field Reference

See spec/app-spec.md for the complete list of all supported fields with types, constraints, and examples.