···11+BSD 3-Clause License
22+33+Copyright (c) 2026, Pavel Zwerschke
44+55+Redistribution and use in source and binary forms, with or without
66+modification, are permitted provided that the following conditions are met:
77+88+1. Redistributions of source code must retain the above copyright notice, this
99+ list of conditions and the following disclaimer.
1010+1111+2. Redistributions in binary form must reproduce the above copyright notice,
1212+ this list of conditions and the following disclaimer in the documentation
1313+ and/or other materials provided with the distribution.
1414+1515+3. Neither the name of the copyright holder nor the names of its
1616+ contributors may be used to endorse or promote products derived from
1717+ this software without specific prior written permission.
1818+1919+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
2020+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
2121+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
2222+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
2323+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
2424+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
2525+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
2626+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
2727+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
2828+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+89-2
README.md
···44[](https://prefix.dev/channels/conda-forge/packages/pixi-skills)
55[](https://pypi.org/project/pixi-skills)
66[](https://pypi.org/project/pixi-skills)
77+[](https://prefix.dev/channels/skill-forge)
7888-Manage coding agent skills using pixi
99+Manage and install coding agent skills across multiple LLM backends using [pixi](https://pixi.sh).
1010+1111+pixi-skills discovers skills packaged in pixi environments and lets you install them into the configuration directories of various coding agents via symlinks.
9121013## Installation
11141515+```bash
1616+pixi global install pixi-skills
1717+# or use without installing
1818+pixi exec pixi-skills
1919+```
2020+2121+## Concepts
2222+2323+### Skills
2424+2525+A skill is a directory containing a `SKILL.md` file with YAML frontmatter:
2626+2727+```markdown
2828+---
2929+name: my-skill
3030+description: "Does something useful for the agent"
3131+---
3232+3333+Skill instructions go here as Markdown.
3434+The agent reads this file to understand what the skill does.
3535+```
3636+3737+The `name` field is optional and defaults to the directory name.
3838+The `description` field is required.
3939+4040+A collection of ready-to-use skills is available at [skill-forge](https://prefix.dev/channels/skill-forge) ([source](https://github.com/pavelzw/skill-forge)).
4141+4242+### Scopes
4343+4444+- **Local** skills are discovered from the current project's pixi environment at `.pixi/envs/<env>/share/agent-skills/`.
4545+- **Global** skills are discovered from globally installed pixi packages at `~/.pixi/envs/agent-skill-*/share/agent-skills/`.
4646+4747+### Supported backends
4848+4949+| Backend | Local directory | Global directory |
5050+|---------|----------------|-----------------|
5151+| Claude | `.claude/skills/` | `~/.claude/skills/` |
5252+| Codex | `.codex/skills/` | `~/.codex/skills/` |
5353+| Copilot | `.github/skills/` | `~/.github/skills/` |
5454+| Crush | `.crush/skills/` | `~/.crush/skills/` |
5555+| Cursor | `.cursor/skills/` | `~/.cursor/skills/` |
5656+| Gemini | `.gemini/skills/` | `~/.gemini/skills/` |
5757+| Opencode | `.opencode/skills/` | `~/.opencode/skills/` |
5858+5959+Skills are installed as relative symlinks for portability.
6060+6161+## Usage
6262+6363+### List available skills
6464+6565+```bash
6666+# List all local and global skills
6767+pixi-skills list
6868+6969+# List only local skills
7070+pixi-skills list --scope local
7171+7272+# List skills from a specific pixi environment
7373+pixi-skills list --env myenv
7474+```
7575+7676+### Manage skills interactively
7777+7878+```bash
7979+# Interactive mode - prompts for backend and scope
8080+pixi-skills manage
8181+8282+# Specify backend and scope directly
8383+pixi-skills manage --backend claude --scope local
8484+```
8585+8686+This opens an interactive checkbox selector where you can choose which skills to install or uninstall.
8787+8888+### Show installed skills
8989+9090+```bash
9191+# Show installed skills across all backends
9292+pixi-skills status
9393+9494+# Show installed skills for a specific backend
9595+pixi-skills status --backend claude
9696+```
9797+9898+## Development
9999+12100This project is managed by [pixi](https://pixi.sh).
1313-You can install the package in development mode using:
1410115102```bash
16103git clone https://github.com/pavelzw/pixi-skills
···11-def test_hard():
22- import pixi_skills # noqa
33-44- # this is just a demo that pytest can produce good error messages just by
55- # parsing assert statements
66- assert {"a": 1, "b": 2} == {"a": 1, "b": 2}
+15
tests/test_selector.py
···11+from pixi_skills.selector import select_skills_interactively
22+33+44+class TestSelectSkillsInteractively:
55+ def test_empty_skills_list(self) -> None:
66+ result = select_skills_interactively([], None)
77+ assert result == []
88+99+ def test_empty_skills_list_with_installed(self) -> None:
1010+ result = select_skills_interactively([], {"some-skill"})
1111+ assert result == []
1212+1313+ def test_none_installed_defaults_to_empty(self) -> None:
1414+ result = select_skills_interactively([], None)
1515+ assert result == []