git:20260718.4a75c38 to git:20260719.e1e02f3

7 added, 0 removed. Audit A to A.

---
name: marketplace-publish-extension
description: >-
Infrastructure skill — publish (register/update) an extension package to a
marketplace catalog. Reads the extension's SKILL.md frontmatter, constructs
a CatalogEntry, and upserts it into the target marketplace.json. Optionally
commits and pushes when the catalog source is a git repository. Use after
scaffolding an extension with marketplace-create-extension. Not for
installing or searching extensions — use marketplace-install or
marketplace-search for that.
license: MIT-0
compatibility: "dcc-mcp-core 0.17+, Python 3.7+"
allowed-tools: Bash Read Write
metadata:
dcc-mcp:
dcc: python
version: "0.18.9" # x-release-please-version
layer: infrastructure
search-hint: >-
publish extension, register extension, marketplace catalog, upsert
catalog entry, marketplace.json, extension publishing, release to
marketplace
tags: "marketplace, publishing, catalog, infrastructure"
tools: tools.yaml
openclaw:
homepage: https://github.com/dcc-mcp/dcc-mcp-core/blob/main/skills/marketplace-publish-extension/SKILL.md
---
# Marketplace Publish Extension
+ ## CLI-First Control Path
+
+ For marketplace and live-DCC operations, use the `dcc-mcp` skill and
+ `dcc-mcp-cli` whenever shell access is available. Its consent-gated install and
+ `update check` → `update apply` contract is the single source of truth; do not
+ invent a package-local CLI bootstrap path.
+
Publish (register or update) a dcc-mcp extension package to a marketplace
catalog (`marketplace.json`).
Prefer the CLI for local and CI publishing:
```bash
dcc-mcp-cli marketplace pack ./my-extension --out dist/
dcc-mcp-cli marketplace publish ./my-extension \
--catalog ./marketplace.json \
--install-url https://github.com/<owner>/<repo>/releases/download/v0.1.0/my-extension.zip \
--sha256 sha256:<digest> \
--min-core-version 0.19.0 \
--skill-root skill/my-extension
```
## Tools
### `marketplace_publish_extension__publish`
Scan an extension directory, build a `CatalogEntry`, and upsert it into the
target `marketplace.json` (local file or remote URL-backed file). When the
catalog source is a local git repository the tool can optionally commit and
push the change.
## Prerequisites
- dcc-mcp-core installed
- Write access to the target marketplace catalog path
- Git (if using commit+push mode)
## Release Gate — Python 3.7
- **Verify py37 wheels exist** and py37 CI is green before publishing.
- `py37-lite` fallback wheels do NOT satisfy the release gate. Native py37
builds are an LTS requirement with no automatic calendar expiry.
- Confirm `requires-python = ">=3.7"` in `pyproject.toml` is unchanged.
- Removing native py37 requires an accepted superseding ADR, a major release,
and at least 180 days of notice.
## Workflow
1. Point the tool at a local extension directory containing `SKILL.md`.
2. The tool reads the SKILL.md frontmatter and any accompanying metadata.
3. Additional CLI-supplied fields (install url, ref, skill roots, tags,
maintainer, icon, and `showcase`) are merged in. Use a repository-relative
16:9 PNG, JPEG, WebP, AVIF, or animated GIF path; the marketplace resolves
it at the pinned 40-character Git revision.
4. A `CatalogEntry` is built and upserted into the target `marketplace.json`.
New catalogs use the v1 `skills` layout and preserve v1-only fields when an
existing entry is updated.
5. If the catalog source is a git repo and `--commit` is passed, the updated
`marketplace.json` is committed and pushed.
## Official catalog requirements
- Pass `--min-core-version`; v1 entries require an explicit compatibility floor.
- Git sources in the official catalog must use a complete 40-character commit
SHA in `--install-ref`, never a mutable branch name.
- Declare every installed skill directory with `--skill-root`. The installer
only loads declared roots, so multi-skill repositories do not accidentally
expose examples or development-only skills.
- Zip sources require a 64-character SHA-256 digest. When the archive URL
changes, provide the new digest rather than reusing old metadata.
- The publisher preserves v1 curation fields such as `requires` and `policy`
when updating an existing entry, but new official entries must provide the
complete marketplace metadata required by the catalog schema.