Bootstrap only. Direct packages this turn: ruff, ipython,
ipykernel, and plain skore. Skore supplies skore-skills as a
mandatory dependency. Other stage libraries go through
add-python-package.
Human-facing prose
Details: setup-workspace references/human_facing_prose.md.
Ask which manager to use and whether we manage the env in
plain language. Do not name G-ENV-MGR, skill ids, or the
wrapper CLI to the user. Do not mention skore-skills.
Lookup
Run env detect and status first. Take the first row that
matches, then run Sequence steps 3–6 only where the row says ask
or continue. Do not stop after reading the table.
| Caller | policy.env_manager |
policy.env.managed |
Manager question | Managed question |
|---|---|---|---|---|
| dispatched | set | true or false |
skip | skip |
| dispatched | set | null |
skip | ask |
| dispatched | unset | true or false |
ask when detect is none, ambiguous, or mismatch |
skip |
| dispatched | unset | null |
ask when detect is none, ambiguous, or mismatch |
ask |
| standalone | any | any | ask when detect is none, ambiguous, or mismatch |
ask |
A standalone turn still asks when a manager is only recorded and
nothing is on disk yet (env_manager is "none"). After the
questions this row allows: env.managed false stops at step 5;
true runs step 6 (env init, env sync, env add-skore with
no --mode, env verify).
Not this skill
A request to add a package outside ruff, ipython, ipykernel,
and plain skore is not bootstrap. Do not env init and do not
pixi add. Hand that package to the package-install step and
stop. The close names the package and that step in plain language.
Do not write the catalog id.
Sequence
-
python -m skore_skills env detectandstatus. -
When
setup-ml-projectdispatched this turn, skip each question on its own.policy.env_managerset → do not ask which manager.policy.env.managedtrueorfalse→ do not ask whether we manage the env. A recorded manager withenv.managedstill null still asks that one question. A recordedenv.managedwith nopolicy.env_managerdoes not reopen the managed question. A standalone request still asks, including when a manager is only recorded and nothing is on disk yet (env_manageris"none"). -
G-ENV-MGR. Skip when step 2 skipped it. Otherwise read the JSON fields, not sentinel strings: ask when
env_manageris"none",ambiguousis true, ormismatchis true. Userecommendedas the ask order. PATH is not permission. Do notcurl | sh. -
Skip when step 2 skipped it. Otherwise ask whether we manage the env (default yes). Persist
python -m skore_skills policy set env.managed trueorfalse. -
Unmanaged: stop. Name ruff / ipython / ipykernel / skore; do not init. Do not mention
skore-skillsto the user. -
Managed:
policy set env_manager <manager>when it is not already recorded, thenpython -m skore_skills env init --manager <manager> python -m skore_skills env sync --execute python -m skore_skills env add-skore --execute python -m skore_skills env verify --executeDo not pass
--mode. Omitting it installs for a recordedhubormlflowdestination, and plain Skore otherwise.If the selected manager is pixi and
pixi.tomlalready exists, skipenv init; preserve that manifest and continue withenv sync --execute. Never replace it or try to add[tool.pixi]topyproject.toml.Do not hand-edit TOML. Do not run
pixi init. Do not createsrc/. Do not ask where reports go. Plain Skore is the early install when no destination is recorded;add-python-packageupgrades it for Hub or MLflow after that choice is recorded. Do not pass--mode local. If verify reports missingskoreorskore_skills, rerunenv add-skore --executethe same way; never addskore-skillsdirectly. If verify reports missing agent tools, loadadd-python-packagefor ruff / ipython / ipykernel (agent feature) when that skill is installed, not a secondenv init. Ifadd-python-packageis not installed, name ruff / ipython / ipykernel and stop.
Return and close
When dispatched by setup-ml-project, return to that caller after
verification. Standalone, run
python -m skore_skills git end-turn --stage setup. If JSON
action is invoke, load persist-ml-git only if
status.skills.persist-ml-git is true and stop; that skill
returns to triage. If persist is missing, name the pending
staged paths and stop. Otherwise load triage-ml-task only if
status.skills.triage-ml-task is true; else stop.
Three environments
Agent context only; do not narrate skore-skills to the user.
- default — project runtime; bootstrap installs plain
skore, which suppliesskore-skills, when the report destination is unset orlocal. A recordedhubormlflowdestination uses that install instead. - agent — ruff, ipython, ipykernel.
- dev — default + agent. Every later
python -m skore_skillscommand uses this composed environment;env verify --executemust pass before other skills run.