Skip to Content

Publishing

TL;DR

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:

  1. --api-key flag
  2. CMDOP_API_KEY environment variable
  3. Saved config (from cmdop-skill config set-key)
  4. 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_xxx

Manage saved config:

cmdop-skill config show # show saved key (masked) + path cmdop-skill config reset # remove saved key

Local development

Symlinks your skill directory into the CMDOP skills folder. The agent picks it up immediately:

cmdop-skill install . # or make install-skill

Uninstall

cmdop-skill uninstall my-skill

Check package name

Before publishing, verify the name is available on PyPI:

cmdop-skill check-name my-cool-skill

Returns 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.0

Reads 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 publish

Sends 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 release

This performs:

  1. Bump β€” increment patch version in pyproject.toml
  2. Badge β€” inject CMDOP marketplace badge into README
  3. URLs β€” patch pyproject.toml with marketplace URLs
  4. Publish β€” upload to CMDOP marketplace (with progress indicator)
  5. Build β€” create wheel and sdist with hatchling
  6. 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 output

CI/CD example

export CMDOP_API_KEY=cmdop_xxx cmdop-skill release --json

JSON output includes: name, version, target, marketplace result, uploaded files.

What happens during publish

When you publish to the CMDOP marketplace:

  1. Manifest extraction β€” skill/config.py + pyproject.toml are parsed for name, version, description
  2. 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)
  3. Translations β€” description and tags are translated to 17 languages
  4. 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
Last updated on