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:
- A local DOT workspace (
dot init)- A valid local asset file
- 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
talordances- 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
participantsandrelations(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. Usedot add <owner/repo>to install and auto-register a Dance skill.
To create a new Dance skill, usedot init dance --name my-skillto 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 Status | What Happens |
|---|---|
| Already published | Skipped |
| Unpublished, your namespace | Published together automatically |
| Unpublished, another namespace | Publish 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#
| Rule | What It Means |
|---|---|
| Namespace protection | You can only publish into your namespace via your authenticated account |
| Schema enforcement | Invalid asset payloads are rejected |
| Immutability | Once published, a URN cannot be republished with new content |
| ToS confirmation | Publishing requires accepting the Terms of Service |
Registry Tiers#
| Tier | Examples | Meaning |
|---|---|---|
| Verified | @dot-official, @dot-preset | Curated official namespaces |
| Community | User namespaces | Regular 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 addfrom 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.