Add your first tool
import { Tabs, TabItem, Aside } from “@astrojs/starlight/components”;
The intended workflow for adding tools is: say what you want in Claude Code, and refresh the dashboard a minute later. Pixie ships with five skills (and many more in the wider library) that handle the scaffolding, dependency install, and validation for you.
From a natural-language description
Open the Pixie repo in Claude Code, then type:
Add a Pixie tool that converts currencies using the Frankfurter APIThis triggers the add-tool-from-description
skill, which:
- Asks you any clarifying questions (what’s the input — amount + currency codes? Should there be a target-currency picker? Does it need historic rates?).
- Picks a kebab-case
idlikecurrency-converterand a human-readable nameCurrency Converter. - Writes
tools/currency-converter/tool.jsonwith the inputs and outputs. - Writes
tools/currency-converter/pyproject.tomlwithhttpx(for the API call) added to the default dependencies. - Writes
tools/currency-converter/main.py— a FastAPI app honouring/schema,/healthz, and/run. - Runs
uv syncinside the tool folder to build its.venv. - Runs
uv run pixie validate currency-converter. - Surfaces the validation report verbatim. If overall is
fail, the skill reports failure — it doesn’t pretend success.
Refresh the dashboard, and Currency Converter appears in the sidebar.
From a GitHub repository
Find a repo that does something useful (a CLI calculator, a model wrapper, a data tool). In Claude Code, type:
Add github.com/example/some-calculator as a Pixie toolThis triggers add-tool-from-repo,
which clones the repo, reads its README and entrypoint, decides whether it
can be cleanly wrapped (refusing if it needs a GPU, a database server, Docker,
or system packages outside the allowlist), then scaffolds a new tool folder
that imports or invokes the repo’s entrypoint via FastAPI.
The skill refuses cleanly when a repo isn’t a good fit. Read the refusal — it usually tells you what’s needed (e.g. “this repo expects a GPU, but I can wrap a CPU fallback if one exists”).
From other artefacts
Pixie’s wider skill library can wrap:
- A local Python script →
wrap-local-script - A Jupyter notebook →
add-tool-from-notebook - A CLI binary like
ffmpegoryt-dlp→add-tool-from-cli-command - An OpenAPI spec →
add-tool-from-openapi-spec - A Streamlit or Gradio app →
convert-streamlit-app/convert-gradio-app - An Excel workbook with formulas →
add-tool-from-excel-model - An academic paper PDF or arXiv link →
add-tool-from-paper
Each skill is opinionated about what it accepts and what it refuses. See the Skills reference for triggers and acceptance rules.
When something goes wrong
If the validator fails, the skill won’t claim success. The right move is:
Debug the currency-converter toolThis triggers debug-tool, which
re-runs the validator, reads the failing check’s details, opens
main.py / tool.json / pyproject.toml, proposes a fix, applies it, and
re-validates. It stops after two attempts so you don’t waste tokens on a
fundamentally broken concept.
See Troubleshooting for the most common failure modes (missing dependency, schema drift, wrong output shape).
What’s next
You’ve installed Pixie, used the example tool, and added a real one. The fastest way to go deeper is: