comet skill is the low-level Skill package and Skill run (Engine Run) tool. It discovers explicit Skill directories, project overrides under .comet/skills/, and built-in Skills, and provides local Skill package management plus advanced run debugging.
For regular users creating reusable Skills, prefer /comet-any. comet skill run / comet skill continue are better suited for debugging advanced Skill runs.
Subcommands
All subcommands support
--json.
Common options
—change and —run-id are mutually exclusive: a single Run can only bind to one of them. —change binds to an OpenSpec change directory, while —run-id stores independent Run state in .comet/runs/<run-id>.Package management
add
.comet/skills/<name> (symbolic links are rejected; an atomic rename with backup is used). Project Skills override built-in Skills by name; invalid overrides fail closed (error directly, instead of silently falling back to the built-in).
show
Skill discovery order
resolveSkill looks in the following order and stops at the first match:
- explicit — the selector points to an existing directory and is loaded directly. A non-existent path errors out and does not continue searching.
- project —
<projectRoot>/.comet/skills/<selector>, takes precedence over built-in, so a project can override a built-in Skill by name. - builtin —
assets/skills/<selector>. - None found → fail closed, no silent fallback.
Run lifecycle
run: starting
- Rejects adaptive packages (for now).
- Rejects an already-existing Run (in change mode, a directory can only have one Run).
- Creates an immutable snapshot — freezes the entire Skill package into
.comet/skill-snapshots/<hash>/, with the hash locked to the Run’sskillHash. - Initializes Run state:
currentStep = entry,status = running. - Records a
run_startedtrajectory event. decideresolves the entry step, constructs the first action, runs it through guardrails, writes the pending action, and setsstatus = waiting.
continue: submit an outcome or resume
With an outcome (actual progress):state_migrated event is recorded.
check: on-demand check
--scope can be progress, step, or completion (default progress). It reads the runtime checks from comet/checks.yaml.
Run state storage
Run state is machine-owned — do not edit it manually. Onlyrun_id is mirrored into .comet.yaml.
Associated files (all within the change/run directory):
All file IO is sandboxed within the change/run directory, rejecting absolute paths,
~, drive letters, and .. path traversal. Writes are atomic (write to tmp then rename).
Recovery hints in text mode
In text mode,comet skill prints Pending action and Next: recovery hints directly, so you don’t have to guess the next step yourself after a paused Run or a failed eval.
For example, run output:
check fails, it suggests:
Next steps
- Skill and Engine (advanced) — understand the semantics of Skill packages and Skill runs (Engine Run), pending actions, and immutable snapshots
- Runtime check — distinguishing
comet skill checkfromcomet eval - Skill Creator overview — the main entry point for creating reusable Skills

