Publish
Publish skills to agentregistry so others can discover and pull them.
About publishing skills
Agentregistry serves as a catalog for your AI artifacts, including agents, skills, and MCP servers. To control which images you want to make available to your teams, you can use the publishing capability in agentregistry. If a skill is published, a reference to its source (container image or GitHub repository) is stored in agentregistry. This allows teams to quickly discover approved skills and pull them from the registry.
Agentregistry supports multiple publishing modes:
- From a local skill folder: Reads metadata from a local
SKILL.mdfile and publishes the skill with either a pre-built Docker image reference or a GitHub repository reference. - Direct registration: Registers a skill by name with a GitHub repository or Docker image reference, without needing any local files.
Before you begin
- Follow the Get started guide to set up agentregistry and start the agentregistry daemon.
- If publishing from a local folder, create a skill first.
Build the skill (optional)
If you want to publish your skill as a Docker image, build it first using the arctl skill build command:
arctl skill build ./myskill --image docker.io/user/hello-world-template:v1.0.0To also push the image to your container registry, include the --push option:
arctl skill build ./myskill --image docker.io/user/hello-world-template:v1.0.0 --push--platform (e.g., linux/amd64). Make sure that you are logged in to your container registry before using --push.Publish the skill
Review the different ways how you can publish a skill.
Option 1: Publish with a Docker image (from local folder)
Use this option when you have a local skill folder with a SKILL.md file and have already built a Docker image using arctl skill build.
arctl skill publish ./myskill \
--docker-image docker.io/user/hello-world-template:v1.0.0 \
--version 1.0.0The skill name and description are read from the local SKILL.md file. The --docker-image flag specifies the pre-built Docker image to register.
--dry-run flag.Option 2: Publish from a GitHub repository (with local folder)
Use this option when you have the skill files locally but want to register a GitHub repository as the source instead of a Docker image. The skill metadata, such as the name and description, is read from the local SKILL.md file.
arctl skill publish ./myskill \
--github https://github.com/myorg/my-skills/tree/main/skills/myskill \
--version 1.0.0The --github flag accepts full GitHub tree URLs that include a branch and subdirectory path. This path tells the registry exactly where to find the skill within the repository:
| URL format | Example |
|---|---|
| Repository root | https://github.com/myorg/my-skills |
| Specific branch | https://github.com/myorg/my-skills/tree/main |
| Branch and subdirectory | https://github.com/myorg/my-skills/tree/main/skills/myskill |
--dry-run flag.Option 3: Direct registration with GitHub (no local files needed)
Use this option to register a skill that exists only in a GitHub repository without needing any local files. Instead of reading from a SKILL.md file, you provide the skill name and metadata directly via flags.
arctl skill publish my-remote-skill \
--github https://github.com/myorg/my-skills/tree/main/skills/my-remote-skill \
--version 1.0.0 \
--description "A remotely hosted skill"In direct mode:
- The first argument is the skill name (not a folder path).
--githuband--versionare required and represent the source GitHub repository and the version you want to use for your skill.--descriptionis optional.
--dry-run flag.Option 4: Direct registration with Docker image (no local files needed)
Use this option to register a skill with a pre-built Docker image reference without needing any local files.
arctl skill publish my-docker-skill \
--docker-image docker.io/myorg/my-skill:v1.0.0 \
--version 1.0.0 \
--description "A Docker-packaged skill"In direct mode:
- The first argument is the skill name (not a folder path).
--docker-imageand--versionare required.--descriptionis optional.
--dry-run flag.Verify the published skill
-
List the skill references in agentregistry. Verify that you see an entry for the skill that you just published.
arctl skill listExample output:
NAME TITLE VERSION CATEGORY PUBLISHED WEBSITE hello-world-template 1.0.0 <none> True -
Optional: Open the agentregistry UI and go to the Skills view. Verify that you can see your skill.
Next steps
- Pull a skill from the registry to use it locally.
Cleanup
To unpublish a skill from agentregistry, use the arctl skill delete command.
arctl skill delete hello-world-template --version 1.0.0