Command reference#

Run conda skill with a subcommand. The installed distribution and plugin entry point are named conda-skills. Use conda skill --help or conda skill <command> --help for help with arguments.

conda skills is a native alias for conda skill. Both accept the same commands and options. Examples use the singular spelling.

Options by command#

Option

list

status

link

unlink

init

quickstart

-n NAME, --name NAME

Yes

No

Yes

No

No

Yes

-p PREFIX, --prefix PREFIX

Yes

No

Yes

No

No

Yes

--backend {agents,claude}

No

Yes

Yes

Yes

No

Prompt

--global

No

Yes

Yes

Yes

Yes

Yes

--force

No

No

No

Yes

No

No

--description TEXT

No

No

No

No

Yes

Prompt

--json

Yes

Yes

Yes

Yes

Yes

Rejected

--console {classic,json}

Yes

Yes

Yes

Yes

Yes

Yes

-v, --verbose

Yes

Yes

Yes

Yes

Yes

Yes

-q, --quiet

Yes

Yes

Yes

Yes

Yes

Yes

-h, --help

Yes

Yes

Yes

Yes

Yes

Yes

Put these options after the subcommand. For list, link, and quickstart’s installed-skill branch, -n and -p are mutually exclusive source overrides. Without either, conda chooses its default target environment, normally the active environment or base if none is active. A missing source environment is an error. Lookup does not create it. unlink does not select a source environment.

The default backend is agents. The default destination root is the current working directory, not a discovered Git or workspace root. --global selects the home directory. See How agents find skills for destination paths and examples.

Commands honor conda’s JSON setting, including CONDA_JSON=true, as well as explicit --json. The interactive quickstart command rejects JSON before prompting. See JSON output for result fields and error handling. Human output uses tables or plain confirmations, displays terminal control characters visibly, and treats skill text literally.

Conda’s shared output helper also provides --console, --verbose (repeatable), and --quiet. These control conda’s console and logging configuration. The plugin chooses its result format using conda’s JSON setting. Use --json for its structured results. Verbosity and quiet mode do not replace the command’s result with a different schema.

list#

conda skill list [-n NAME | -p PREFIX] [--json]

Find and validate package-owned skill headers in the selected source environment, returning skills sorted by name. Project links are not inspected. Human output has Name, Package, Version, Description, and Path columns. An empty result says No package-owned skills found.

Malformed candidates and duplicate ownership cause discovery to fail without returning a partial list. Untracked directories are ignored. See Skill package format for validation rules.

inspect#

conda skill inspect NAME [-n ENVIRONMENT | -p PREFIX] [--file RELATIVE_PATH] [--json]

Show a packaged skill’s name, description, owning package, version, source directory, and directory tree. The tree includes companion files, not just SKILL.md. It describes the current filesystem and does not establish individual ownership or safety of every listed file.

Use --file SKILL.md or a forward-slash path such as --file references/joins.md to preview a UTF-8 file without executing it. Previews have a 1 MiB limit. Binary files are identified without displaying their bytes. Paths must stay inside the skill directory. Absolute paths, parent traversal, and special files are refused.

In a terminal, Rich highlights the source using the filename, keeping Markdown markers, frontmatter, comments, and link destinations visible. Unknown file types use plain text. Piped or redirected output automatically skips highlighting. Preview text still normalizes CRLF line endings, escapes terminal controls, and adds a final newline if missing. It is not a raw file export. Use --json and decode the content field when a script needs the original text.

open#

conda skill open NAME [-n ENVIRONMENT | -p PREFIX] [--json]

Request the system file manager for the validated skill directory: Finder on macOS, Explorer on Windows, or xdg-open on Linux. No individual packaged file is launched. A graphical desktop and its opener must be available. In a headless session, use inspect instead.

Success means the opener accepted the request, not proof that a window is visible. JSON mode still requests the file manager and reports one JSON value instead of a human confirmation. Neither command links the skill or modifies its package. Both use the same source selection as list and link.

status#

conda skill status [--backend {agents,claude} | --all] [--global] [--json]

Inspect the selected destination directory without resolving a source environment or checking package ownership. Entries are sorted by name. Human output has Name, State, Path, and Target columns. An empty or absent destination says No skill entries found.

--all inspects both existing backend directories (agents, then claude) in the selected scope and adds a Backend column. It cannot be combined with --backend. Use --all --global for both home directories. It does not scan other environments or infer which agent has loaded a skill.

State

Meaning

linked

A symlink points to a directory containing a file named SKILL.md.

broken

A symlink does not meet the linked condition: for example, the target is missing, is a file, or lacks SKILL.md.

unmanaged

The destination entry is not a symlink.

Status does not parse frontmatter or validate the contents of a linked directory. A link made by another tool can appear as linked. A regular directory is unmanaged even if it contains a valid skill.

init#

conda skill init NAME [--description TEXT] [--global] [--json]

Create NAME/SKILL.md, NAME/build.py, and NAME/recipe/recipe.yaml under the current directory. --global uses the home directory instead. Running from the home directory without --global is refused. No source environment is needed.

Names follow the same rules as installed skills: at most 64 lowercase ASCII letters, digits, and single separating hyphens. The description must contain non-whitespace text and be at most 1024 characters. Without --description, the header contains an authoring placeholder. User text is serialized as YAML data, including quotes, newlines, and control characters.

Any existing destination is a conflict, including an empty directory or a dangling symlink. There is no overwrite option. Filesystem failures can leave a partial skeleton. Inspect it before removing it or retrying.

The generated recipe builds a noarch: generic package named agent-skill-NAME, version 0.1.0, build 0. It uses Python 3.11 or newer to copy SKILL.md into share/agent-skills/NAME/. The generated build.py does not package companion files until you add them. No license is assigned.

Review the recipe and replace the placeholder instructions before distribution. The command does not build, install, or link the skeleton. See Create a skill for the authoring steps.

JSON output is one object with name, the absolute directory path, and the absolute recipe path. Human output identifies the files and gives the next build command.

quickstart#

conda skill quickstart [-n NAME | -p PREFIX] [--global]

Run an interactive guide to create a skeleton or link installed skills. Both stdin and stdout must be terminals. Redirected input or output fails before prompting, with guidance to use init, list, or link. JSON mode is rejected, including when enabled through conda configuration or CONDA_JSON=true.

Choose new to enter a name and description, select a destination scope, and preview the new directory. Confirmation invokes the same skeleton generator as init. This branch does not look up a source environment.

Choose link to discover package-owned skills in the environment selected by -n, -p, or conda’s default. Select one or more displayed numbers separated by spaces or commas, or enter all. Nothing is selected by default, and cancel exits without writes. Repeated numbers are treated as one selection. Review every selected source path and description, then choose the agents or claude backend.

Review every selected skill’s instructions and supporting files before confirming. Package ownership does not establish trust. The guide previews every destination and checks the whole selection for conflicts before confirmation. It then calls the same linking operation as link for each skill. Existing matching links are reused, and unselected links are left alone. This is not a transaction: filesystem changes or failures during linking can leave earlier links in place.

The scope prompt offers project (the displayed current directory) and home. It defaults to home with --global, otherwise project. You can explicitly choose project even with --global. Choosing home without starting the command with --global fails without writes. The same guard applies when the current directory is the home directory. No upward project-root search occurs.

Confirmation defaults to no. Choosing cancel at the first prompt, declining confirmation, or interrupting input before confirmation makes no changes.

The guide follows fixed prompts without AI. It does not execute skill content, download packages, or create conda environments. Conda’s automatic yes setting does not replace confirmation.

Exit status#

Successful operations exit with status zero, including repeated linking to the same source and unlinking when the destination is already absent. Validation, lookup, filesystem, and argument errors produce a nonzero exit status through conda’s error handling. Do not parse human error text as a stable interface.