Publishing
Skills are published to PyPI (as pip packages) and the CMDOP marketplace (for discovery and one-click install). The cmdop-skill release command handles bumping, building, uploading to PyPI, and publishing to CMDOP in one step.
API key setup
Publishing requires a CMDOP API key. The key is resolved in this order:
--api-keyflagCMDOP_API_KEYenvironment variable- Saved config (from
cmdop-skill config set-key) - Interactive prompt (in terminal mode)
# Save key globally (recommended)
cmdop-skill config set-key
# Or set via environment
export CMDOP_API_KEY=cmdop_xxx
# Or pass directly
cmdop-skill release --api-key cmdop_xxxManage saved config:
cmdop-skill config show # show saved key (masked) + path
cmdop-skill config reset # remove saved keyLocal development
Install locally (symlink)
Symlinks your skill directory into the CMDOP skills folder. The agent picks it up immediately:
cmdop-skill install .
# or
make install-skillUninstall
cmdop-skill uninstall my-skillCheck package name
Before publishing, verify the name is available on PyPI:
cmdop-skill check-name my-cool-skillReturns availability status and existing package info if taken.
Version bump
cmdop-skill bump # patch: 0.1.0 β 0.1.1
cmdop-skill bump --minor # minor: 0.1.1 β 0.2.0
cmdop-skill bump --major # major: 0.2.0 β 1.0.0Reads current version from pyproject.toml, bumps it, and writes back. Supports both 3-segment semver (1.2.3) and 4-segment CalVer (2026.3.4.1).
Publish to CMDOP marketplace only
cmdop-skill publish
# or
make publishSends skill metadata, system prompt, and README to the marketplace. The server uses LLM to extract:
- Category (from 20 predefined categories)
- Tags
- Translations to 17 languages
Full release
The recommended workflow β does everything in one command:
cmdop-skill release
# or
make releaseThis performs:
- Bump β increment patch version in
pyproject.toml - Badge β inject CMDOP marketplace badge into README
- URLs β patch
pyproject.tomlwith marketplace URLs - Publish β upload to CMDOP marketplace (with progress indicator)
- Build β create wheel and sdist with hatchling
- Upload β upload to PyPI via twine
Release options
cmdop-skill release -b minor # bump minor instead of patch
cmdop-skill release -b major # bump major
cmdop-skill release --no-bump # skip version bump
cmdop-skill release --test-pypi # upload to TestPyPI (skips CMDOP)
cmdop-skill release --no-publish # PyPI only (skip CMDOP marketplace)
cmdop-skill release --json # CI-friendly JSON outputCI/CD example
export CMDOP_API_KEY=cmdop_xxx
cmdop-skill release --jsonJSON output includes: name, version, target, marketplace result, uploaded files.
What happens during publish
When you publish to the CMDOP marketplace:
- Manifest extraction β
skill/config.py+pyproject.tomlare parsed for name, version, description - LLM analysis β the server analyzes your skillβs README and system prompt to determine:
- Category (development, security, devops, etc.)
- Tags
- Short description
- Manager type (pip/npm) and skill type (package/script)
- Translations β description and tags are translated to 17 languages
- Listing β skill appears in the marketplace with a deep link:
cmdop://skills/install/my-skill
LLM analysis + translations can take 30-60 seconds. The CLI shows a progress indicator with elapsed time.
After publishing
Your skill is installable via:
# CLI
cmdop skills install my-skill
# Deep link (opens CMDOP desktop app)
cmdop://skills/install/my-skill
# pip (as a standalone package)
pip install my-skill