Publishing Assets

Share your DOT assets with the world through the public registry.

Publishing makes your local DOT assets available in the public registry so other people can install them by URN. If you're used to package publishing (npm, PyPI, etc.), the mental model is similar:

Create locally → Edit locally → Publish when ready


Before You Publish#

Publishing Checklist:
  1. A local DOT workspace (dot init)
  2. A valid local asset file
  3. A logged-in account (dot login)

Typical setup#

dot init
dot login

Your GitHub username becomes your protected DOT namespace.


The Standard Flow#

Step 1 — Create a local asset#

dot create --kind tal --stage my-project --name my-persona

This generates a file like:

.dance-of-tal/assets/tal/@yourusername/my-project/my-persona.json

Step 2 — Edit the file#

Fill in the generated template with real content:

{
  "$schema": "https://schemas.danceoftal.com/assets/tal.v1.json",
  "kind": "tal",
  "urn": "tal/@yourusername/my-project/my-persona",
  "description": "A backend engineer persona focused on correctness.",
  "tags": ["backend", "correctness"],
  "payload": {
    "content": "You are a backend engineer. Prefer explicit error handling, test coverage, and clean boundaries."
  }
}

Step 3 — Publish it#

dot publish --kind tal --stage my-project --name my-persona --tags "backend,correctness"

Success! The asset is now installable by anyone via URN.


What dot publish Actually Does#

1. Check you're logged in
2. Confirm Terms of Service
3. Validate asset schema (canonical contract)
4. Resolve dependencies (performer/act)
5. Reject duplicate URNs
6. Publish to registry

Publishing by Asset Type#

Tal#

Use Tal for always-on identity and rules.

dot publish --kind tal --stage agent-presets --name senior-engineer --tags "backend,kotlin"

The key field: payload.content

Performer#

Use Performer when you want to publish a ready-made runnable composition.

dot publish --kind performer --stage agent-presets --name sprint --tags "engineering,sprint"
Important rules:
  • Payload must include at least one of tal or dances
  • Referenced URNs must be valid
  • Local dependencies in your namespace can be published together

Act#

Use Act when you want to publish a reusable multi-performer collaboration pattern.

dot publish --kind act --stage workflows --name incident-response --tags "incident,workflow"
Current Act model:
  • Acts use participants and relations (not the legacy node-edge model)
  • Participants must reference valid performer URNs
  • If multiple participants exist, include at least one relation

Dance#

Note: Dance assets cannot be published directly. Dance uses the SKILL.md format from GitHub repositories. Use dot add <owner/repo> to install and auto-register a Dance skill.

To create a new Dance skill, use dot init dance --name my-skill to scaffold a SKILL.md template, then push the repo to GitHub.

Dependency Publishing#

Performer and Act publishes can involve dependencies. Here's how it works:

Performer publish behavior#

Dependency StatusWhat Happens
Already publishedSkipped
Unpublished, your namespacePublished together automatically
Unpublished, another namespacePublish blocked (you'll be told why)

Act publish behavior#

DOT checks:

  • Referenced performers
  • Participant activeDances
  • Transitive dependencies for those performers

This keeps published Acts reproducible for the next person who installs them.


Publishing Rules#

RuleWhat It Means
Namespace protectionYou can only publish into your namespace via your authenticated account
Schema enforcementInvalid asset payloads are rejected
ImmutabilityOnce published, a URN cannot be republished with new content
ToS confirmationPublishing requires accepting the Terms of Service

Registry Tiers#

TierExamplesMeaning
Verified@dot-official, @dot-presetCurated official namespaces
CommunityUser namespacesRegular publisher namespaces

As a publisher, you'll typically publish into the community tier under your GitHub username.


Common Mistakes to Avoid#

Don't do these:
  • Putting secrets inside mcp_config
  • Publishing a Performer referencing local assets you never created
  • Assuming an Act can reference unpublished third-party assets
  • Using the legacy node-edge Act shape instead of participants + relations
  • Trying to publish a Dance directly (use dot add from GitHub)

Good Publishing Hygiene#

  • Keep descriptions short and clear
  • Use tags for discoverability
  • Make Tal assets reusable on their own when possible
  • Publish a Performer when you want people to install a ready-made bundle
  • Publish an Act when you want people to install a collaboration pattern

After Publishing#

Once live, other users can install your asset:

dot install tal/@yourusername/my-project/my-persona
dot install performer/@yourusername/agent-presets/sprint
Congratulations! That's the moment your local draft becomes part of the public DOT ecosystem. Other developers can now discover, install, and build upon your work.