Add Python Package
SkillDev toolsWith this Claude skill your agent can add Python packages through the project's own environment manager.
Available today. Use it from your connected AI after setup.
No other account needed.
Add ahel to your AI once: Claude, ChatGPT, Cursor, Claude Code or Codex. Then ask it to use this.
Then ask your AI: use the Add Python Package skill
About this skill
Add a Python dependency through the project env manager, or ask the user to install it when env.managed is false. Trigger when a workflow needs a missing import, after choose-python-library picks a library, or for editable install of src/<pkg>/.
What this skill tells your AI
The instructions your AI receives, as published by probabl-ai/skills in skills/add-python-package/SKILL.md and read by ahel’s review.
The only skill that knows python -m skore_skills env add. Callers
must not splice manager commands themselves.
Human-facing prose
Details: setup-workspace references/human_facing_prose.md.
Run python -m skore_skills … yourself. In questions and replies,
show the manager command from print-only stdout (pixi add …,
uv add …, pip install …) or a plain-language intent. Never
paste python -m skore_skills, env add, env add-skore, or
--feature / --group as something the user should run or choose.
Never paste env graphviz either; quote that command's
instructions or printed manager line.
Pre-flight
Tick, then immediately run the matching sequence step. Do not stop after listing the boxes.
- [ ] status + env detect
- [ ] env.managed: null → stop | false → ask, no --execute | true → continue
- [ ] classify: editable | add-skore | env route then env add
- [ ] skrub → env graphviz (execute conda/`dot -c` when allowed)
Sequence
-
python -m skore_skills statusandenv detect. -
If
policy.env.managedis null: env is unresolved. Say so and stop. Do not bootstrap here. Do not loadsetup-python-envby catalog id unless the user asked for env setup. -
Classify this turn before adding anything:
- Editable only if the user asked to install the workspace
package, or
setup-ml-projectselected that box.has_srctrue is not enough. - Skore if the package is Skore.
- Named package otherwise (
skrub, pandas, …). Never--editablefor a named dependency.
- Editable only if the user asked to install the workspace
package, or
-
If
managedis false: do not--execute. Run print-onlyenv add(orenv add --editable, orenv add-skore --mode <mode>) to obtain the manager line. Every ask in this skill carries its context inline: name the package(s), the manager and env the command would touch, and what each option does. Do not name the calling skill. A file link is an addition, never the context. Ask with two options:- I will handle it (default) — name the package(s) and
show that stdout (e.g.
pixi add pandas). Do not wait; return. - Please install this now — show the same manager line, wait until the user confirms it is done, then return.
Show exactly one manager command. Do not list agent extras, optional extras,
ask, or refuse unlessenv routeJSON this turn returned thatscope. If print-only did not run, name the package and the manager in words. Do not invent a wrapper command. - I will handle it (default) — name the package(s) and
show that stdout (e.g.
-
If this turn is editable and
has_srcis true:python -m skore_skills env add --editable --executeNever
pip install -e .in a pixi project. Ifhas_srcis false, stop. Namesetup-workspaceonly if it is installed. -
If the package is Skore, read the persisted
policy.skore_modeand run:python -m skore_skills env add-skore --mode <mode> --executeIf the mode is unset, return to
evaluate-ml-pipeline. Do not spellskore[...]or pick conda vs PyPI yourself. Seeadd-python-package/references/skore_variant.md. -
Else
python -m skore_skills env route <pkg>. Use only thescopereturned this turn. Do not list other branches. Do not guessdefault.- No JSON this turn → name
env route <pkg>and stop. Do notenv add --execute. refuse→ stop. Quotemessage. Do not install.default→env add --execute <pkg>agent→env add --feature agent --execute <pkg>ask→ G-ENV-SCOPE: ask project runtime vs a named optional extra / agent tools. Map the answer to--feature/--groupprivately, thenenv addwith that flag.
When
managedis true andscopeis notrefuse, pass--executeon that one command. Never pastepixi add/uv add/pip installfrom memory. - No JSON this turn → name
-
If this turn is
skrub, Graphviz is required for DataOp HTML graphs. After the add, runpython -m skore_skills env graphviz. Then:dotis set, oractioniscondaand managed →python -m skore_skills env graphviz --execute(installs conda Graphviz when needed, then alwaysdot -cin the composed env).actionissystemanddotis null → AskUserQuestion with two options, quoting JSONinstructionsonly:- I will install Graphviz (default) — do not wait; return.
- Please wait until I confirm — wait, then re-run
env graphviz --executesodot -cstill runs.
- Unmanaged → do not
--execute. Showcommand(conda) orinstructions(system) from print-only JSON.
Never invent
brew/apt/winget/dot -cfrom memory. Do not pip-install Graphviz or add it as a Python package on uv / poetry / hatch / pip-venv. Refuse that in prose; do not pasteenv add graphvizoruv add graphvizas a command fence.
Return when the import is available, when the user confirmed they installed it, or when they chose to handle it themselves.
References
references/skore_variant.md
Signals
- GitHub stars
- 132
- Forks
- 9
- Last commit
- Sep 2026
ahel review
K1binfo
installs-packagesK1binfo
installs-packages (in evals/evals.json)
Automated review, not a security audit. Ruleset v1+k2.
Advanced
- Item type
- skill
- Key
add-python-package- Source
- github.com/probabl-ai/skills