Installing Skills
A CMDOP skill is a scoped capability bundle — a manifest, an entry script, and dependencies — that the agent can invoke as a sub-session. This guide walks through finding, installing, running, and removing them.
What a skill is
Three files make a skill:
skill.md— manifest with YAML frontmatter and a system prompt.run.py(or other entry point) — the executable, JSON-stdout contract.requirements.txt— auto-installed in a virtual environment on first run.
Output contract: every skill returns {"ok": bool, ...} and exits with status 0 (success) or 1 (failure). See cmdop_skills/skills/email-macos/ for a canonical example.
Skill origins
Three buckets, listed in precedence order (last wins):
| Origin | Lives at | Updated by |
|---|---|---|
| Built-in | Shipped with CMDOP binary | CMDOP releases |
| Global | Workspace-scoped, fetched via cmdop skills sync | cmdop skills install / update |
| Local | .cmdop/skills/ in your repo | Edited by hand |
Local beats global beats built-in. Use local for project-specific overrides.
Listing what is available
cmdop skills listShows installed skills with origin, version, and last-updated timestamp.
Installing from the marketplace
cmdop skills install email-macos
cmdop skills install https://github.com/your-org/skill-foo.gitDefault install location is the global directory. Use --local to drop into .cmdop/skills/ instead — useful for skills that should only run inside one repo.
Running a skill manually
cmdop skills run email-macos -- --query "from:boss"The -- separates skill arguments from the CLI’s flags. The skill prints JSON on stdout; the CLI surfaces ok: false reasons as exit-1 with the reason logged.
Inside chat the agent invokes skills via the skill_run(name, prompt) tool — a sub-session with full tool access governed by the parent provider.
Updating and uninstalling
cmdop skills update email-macos
cmdop skills uninstall email-macosFor local skills (in .cmdop/skills/), uninstall just removes the directory. For global skills, it also clears the cached venv.
What cmdop skills sync does
Pulls the workspace-defined global skill manifest, then installs / updates / removes to match. Run after a teammate adds or removes a skill from the workspace catalog.
cmdop skills syncAuthoring your own
The shortest path:
- Create a directory with
skill.md,run.py,requirements.txt. - Drop it under
.cmdop/skills/<name>/. cmdop skills listshould show it aslocal.cmdop skills run <name>to test.
For a deeper walkthrough see Writing your first skill.
A skill that returns {"ok": false, "reason": "..."} and exits 1 lets the parent agent gracefully recover. Always honor the contract.
Local skills (.cmdop/skills/) override global ones. Use them for project-specific overrides; do not ship them in your global skill set or you will surprise teammates.