Dev environment
import { Tabs, TabItem, Steps } from “@astrojs/starlight/components”;
-
Clone and install dev deps.
Terminal window git clone https://github.com/AlexKapadia/Pixie.gitcd pixieuv sync --extra dev--extra devpulls inpytest,pytest-asyncio,pytest-benchmark,playwright,pillow, andruff. -
Install the example tool’s venv. Pixie’s tests use the example-compound-interest tool as a fixture; it needs its own venv.
Terminal window cd tools/example-compound-interestuv synccd ../.. -
Run Pixie in dev mode. Hot reload on Python file changes.
Terminal window uv run pixie dev --no-browserVisit http://localhost:7860.
-
Run the tests.
Terminal window uv run pytest # unit + integrationPIXIE_RUN_HEAVY_TESTS=1 uv run pytest -m perf # benchmarksPIXIE_RUN_HEAVY_TESTS=1 uv run pytest -m visual # Playwright pixel-diffPIXIE_RUN_HEAVY_TESTS=1 uv run pytest -m a11y # axe accessibilityPIXIE_RUN_HEAVY_TESTS=1 uv run pytest -m e2e # full browser flowsHeavy markers are off by default so a fresh clone runs fast.
-
Lint and format.
Terminal window uv run ruff format .uv run ruff check .
Recommended editor setup
- VS Code with the Python and Ruff extensions. The repo doesn’t
ship a
settings.jsonbecause preferences vary, butformat on savewith Ruff is the team default. - Type checking.
pyrightruns in CI; no strict-mode obligation in editors, but cleaning up type errors as you go is the path of least resistance.
Working on the frontend
Pixie has no JS build step. To work on the UI:
- Edit
pixie/templates/**/*.htmlfor Jinja partials. - Edit
pixie/static/pixie.cssfor styles. - Edit
pixie/static/pixie.jsorpixie-inputs.jsfor JS helpers. - Refresh the browser — that’s it.
Static assets aren’t fingerprinted in dev mode, so a hard refresh
(Ctrl+Shift+R / Cmd+Shift+R) clears the browser cache if you don’t
see changes.
Common dev tasks
Add a new tool while developing
Use the skill library in Claude Code as normal. If you’re testing the skill itself, run it against a throwaway test repo first.
Re-validate every tool after a runtime change
for d in tools/*/; do uv run pixie validate "$(basename "$d")" --summarydoneDrop the database
rm pixie.db pixie.db-wal pixie.db-shmuv run pixie # init_db() rebuilds the schema on next bootWipe artefacts
rm -rf artefacts/Existing runs in pixie.db will have their artefact links dangle —
either drop the DB too, or just live with it.
Inspect what’s warm
curl -s http://127.0.0.1:7860/api/launcher/state | jqDeveloper mode only. Toggle it in .env:
echo "PIXIE_DEVELOPER_MODE=true" >> .envCI
GitHub Actions runs (on every push):
ruff format --checkruff checkuv run pytest -m "not (perf or visual or a11y or e2e)"- A subset of tools’ validators
The heavy markers run on a nightly schedule, not per-PR.