JSON output#

Use --json with any non-interactive command, or enable conda’s JSON setting, including CONDA_JSON=true. Discovery, validation, and filesystem behavior stay the same. The interactive quickstart guide rejects JSON mode before prompting. Use the explicit commands in scripts.

A successful command writes one complete, unstyled JSON value to stdout. Paths are strings in the operating system’s path format. Parse the document with a JSON parser, and do not depend on indentation, key order, or escaping style. Empty list and status results are [].

The examples use absolute POSIX paths. Your paths depend on the selected environment and destination root.

list#

conda skill list -p /path/to/source-env --json

The result is an array sorted by skill name. Each object has:

Field

Type

Meaning

name

string

Skill directory name.

description

string

Validated description from the header.

path

string

Absolute path to the skill directory in the source prefix.

package

string

Owning conda package name.

version

string

Owning package version.

[
  {
    "name": "review-notes",
    "description": "Use when turning supplied code-review findings into a concise handoff for the author.",
    "path": "/path/to/source-env/share/agent-skills/review-notes",
    "package": "conda-skills-example",
    "version": "0.1.0"
  }
]

status#

conda skill status --json

The result is an array sorted by destination entry name. The command does not require a source environment.

Field

Type

Meaning

name

string

Destination entry name.

state

string

linked, broken, or unmanaged, as defined in the command reference.

path

string

Absolute destination entry path.

target

string

Resolved symlink target, or an empty string for an unmanaged entry.

[
  {
    "name": "review-notes",
    "state": "linked",
    "path": "/path/to/project/.agents/skills/review-notes",
    "target": "/path/to/source-env/share/agent-skills/review-notes"
  }
]

A broken link still has a target string, even if the target does not exist. A linked state does not confirm package ownership, valid frontmatter, trust, or that an agent has loaded the skill.

With status --all --json, the result remains one array. Each entry adds a string backend field (agents or claude). Entries are grouped in that backend order and sorted by name within each group. The default single-backend output is unchanged. An error inspecting either directory fails the command before it emits a partial array. --global selects home scope for both directories, without a source environment lookup.

init#

conda skill init review-notes --description "Review supplied notes" --json

The result is an object with string fields name, path, and recipe. The path points to the new authoring skeleton. The recipe field is the absolute path to its conda recipe. The skeleton is not yet an installed skill or a client link.

{"name": "review-notes", "path": "/path/to/project/review-notes", "recipe": "/path/to/project/review-notes/recipe/recipe.yaml"}

inspect#

Without --file, the result contains name, description, package, version, path, and files. Each files entry has a relative POSIX-style path and a type of file, directory, symlink, or special. Entries are sorted. This lists the skill directory’s current contents, not package ownership for each file.

With --file, the metadata fields remain and files is replaced by file (the requested relative path), kind (text or binary), and content (the original decoded text or null for binary data). File previews are limited to 1 MiB. Errors use conda’s usual error response rather than a partial result.

open#

The result contains name, path, and opened: true after the system opener accepts the directory request. This does not confirm that a file-manager window is visible. JSON mode does not suppress the opening operation.

Errors and literal text#

Check the exit status before parsing a response as a successful result. On failure, the process exits nonzero and conda emits its normal error response. There is no plugin-specific error schema. Conda’s fields can vary with the error type and conda version.

Descriptions and paths remain literal data. JSON escapes control characters according to JSON syntax, but decoded strings may still contain those characters. Escape decoded values appropriately if you later print them to a terminal or insert them into HTML. Human-mode terminal escaping is not applied to JSON data.