Build and try a skill package#
For a short preview, watch Demos. The steps below include the package setup omitted from the recording.
Give your project a skill for organizing code-review findings. You will build a small package, install it in a separate conda environment, and create a symlink to its skill directory in a temporary project. The example contains instructions and no executable script. You do not need an agent client to follow along, so it can sit this one out.
Before you start#
Start with a checkout of this repository and a conda installation where conda skill --help works. If you need to install the plugin, follow Install conda-skills for your usual conda command. Install conda-workspaces for the package-build tooling:
conda install -n base --yes --override-channels -c conda-forge 'conda>=26.9' 'conda-workspaces>=0.12'
If another prefix owns your conda executable, replace -n base with -p /path/to/conda-prefix. Setting up the locked build environment requires network access.
On Windows, enable Developer Mode or use an account with directory-symlink privileges. Use the PowerShell tab where commands differ. On macOS or Linux, use the POSIX tab. Start in the repository root. The commands create a new temporary directory, so they do not change your existing projects or home-directory skills.
Read and build the example#
Read the complete source skill before building it:
---
name: review-notes
description: Use when turning supplied code-review findings into a concise handoff for the author.
---
# Review notes
Organize the user's review findings so the code author can act on them. This example only summarizes supplied findings; it does not review code or run commands.
For each finding, keep the file and line if provided, the problem, its consequence, and the proposed fix. Preserve any uncertainty. If a location or fix is missing, say so rather than inventing one.
Put findings that could lose data or expose private information first, followed by correctness problems and maintainability suggestions. Preserve the reviewer's severity labels if supplied. Combine duplicate findings only when they describe the same problem at the same location.
End with the checks the reviewer actually ran and any stated testing gaps. Do not describe suggested tests as passed, and do not modify files.
Its directory name and frontmatter name are both review-notes. The conda package name is different: conda-skills-example. Commands that select a skill use the skill name.
Build the example package from the checkout root:
conda workspace install --locked -e build
conda task run -e build build-example
The recipe fixes the version and build string, producing conda-dist/noarch/conda-skills-example-0.1.0-0.conda. You will install this local file, so you do not need a public channel with the example package. The build downloads Python, but the skill itself has no runtime dependencies. See Package a skill for the recipe and installed layout.
Create a source environment and project#
Starting in the checkout root, install the local package into a new environment, create a project beside it, and enter the project.
tutorial_root=$(mktemp -d)
conda create --yes --prefix "$tutorial_root/source-env" ./conda-dist/noarch/conda-skills-example-0.1.0-0.conda
mkdir "$tutorial_root/project"
cd "$tutorial_root/project"
$tutorialRoot = Join-Path ([System.IO.Path]::GetTempPath()) ([System.Guid]::NewGuid().ToString())
New-Item -ItemType Directory -Path $tutorialRoot | Out-Null
conda create --yes --prefix "$tutorialRoot/source-env" ./conda-dist/noarch/conda-skills-example-0.1.0-0.conda
New-Item -ItemType Directory -Path "$tutorialRoot/project" | Out-Null
Set-Location "$tutorialRoot/project"
You do not need to activate the source environment. The -p option selects it independently of the conda executable that runs the plugin:
conda skill list -p ../source-env
Look for review-notes from package conda-skills-example, version 0.1.0. The table also shows its description and source path under source-env/share/agent-skills/review-notes. The plugin finds it through conda’s record of the installed SKILL.md. Copying the folder into the prefix by hand would not create package ownership.
Link and inspect#
From the temporary project, run:
conda skill link review-notes -p ../source-env
conda skill status
You should see Linked review-notes at followed by the project’s absolute .agents/skills/review-notes path, then a status entry marked linked. The link points at the complete source directory: reading .agents/skills/review-notes/SKILL.md reads the packaged file.
Running the link command again reuses the matching link:
conda skill link review-notes -p ../source-env
conda skill status --json
The JSON result is an array with one entry. Its name is review-notes, its state is linked, and its target is the resolved source directory. Absolute paths vary by machine. See JSON output for every field’s definition.
linked describes the filesystem, not trust or successful agent-client discovery. Review the source before opening this project in an agent, and use that client’s documentation to check its skill-loading behavior.
Remove the link before the source#
conda skill unlink review-notes
conda skill status
conda skill list -p ../source-env
You should see Removed link for review-notes., followed by No skill entries found. Unlinking identifies the source from the destination symlink, without a source flag. The final list still contains the source skill because removing a link does not uninstall its package.
After unlinking, delete the temporary source environment:
conda remove --yes --prefix ../source-env --all
Leave the temporary project directory before deleting the tutorial directory with your file manager. Only remove the temporary directory created in this tutorial. The built package remains under the checkout’s conda-dist/ and can be reused.
For links in your home directory or the Claude backend, read How agents find skills. To start your own skill with conda skill init, continue with Create a skill, then use Package a skill when you are ready to build it.