Set Up Workspace
SkillFiles & storageSets up a machine learning project workspace by detecting an existing layout or creating starter folders and files.
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 Set Up Workspace skill
About this skill
Detect an existing ML workspace or scaffold a fresh one via `python -m skore_skills scaffold --package <pkg>`. Cookiecutter only: directories, README.md files, and src/<pkg>/ stubs. After a first scaffold, turn executed notebooks and the documentation site on by default (no ask).
What this skill tells your AI
The instructions your AI receives, as published by probabl-ai/skills in skills/setup-workspace/SKILL.md and read by ahel’s review.
Decide where artifacts live. Do not design an experiment here.
Human-facing prose
Details: references/human_facing_prose.md. Scaffolded design
notes, JOURNAL, and folder READMEs describe this workspace's
analysis — not the skills framework, the CLI, or the command that
produced an output. Questions and replies use the same
data-science language (import name, notebooks, documentation
site) — not G-* names, catalog skill ids, or the wrapper CLI.
Say "workspace setup", not setup-workspace.
<!-- results-embed: … --> is a site marker. Authoring hints
stay in this skill. style is ruff only.
Detection
src/orjournal/present → existing. Reuse names and folders. Do not scaffold again.- Manager manifest without
src/<pkg>/→ manager-only. Still scaffold; keep existingpyproject.toml. No--force. - Otherwise → fresh. Ask G-PKG-NAME, then scaffold.
Pre-flight
Tick, then immediately run the matching sequence step. Do not stop after listing the boxes.
- [ ] Layout: fresh | manager-only | existing
- [ ] G-PKG-NAME: ask if fresh/manager-only (unless policy.package or src/<pkg>/ already names it)
- [ ] scaffold --package <pkg> | existing: no scaffold, no invent
- [ ] fresh/manager-only: persist notebooks + site true; install
- [ ] dispatched → return | standalone → git end-turn --stage setup
Sequence
-
If fresh or manager-only, resolve G-PKG-NAME. Ask with the
AskUserQuestiontool when it is not already recorded (thesrc/<pkg>/import name; folder name as the default option). Each ask in this skill states in 2–4 lines what the answer authorizes — the scaffolded tree, the persisted policy key, the toolchain a gate implies — and the detected facts it rests on; a file link is an addition, never the context. “You pick” / “go fast” does not resolve it. Do not confirm in prose instead of the tool. A matching[project] name+src/<pkg>/already resolves it — do not re-ask. A recordedpolicy.packagealso resolves it. Do not re-ask. Whensrc/<pkg>/is absent, scaffold that name. Astatuspackage of null does not reopen the ask. Persist the resolved import name withpython -m skore_skills policy set package <pkg>. -
Fresh / manager-only:
python -m skore_skills scaffold --package <pkg>The CLI writes the tree and each folder
README.md. Do not recreate those files from memory. -
Existing: do not scaffold again. Do not invent files. No rename, no overwrite, no
--force. Do not persist or ask notebooks/site. -
After scaffold on fresh or manager-only, if
policy.notebooksandpolicy.siteare bothnull(never set): persist both on this turn —python -m skore_skills policy set notebooks truepython -m skore_skills policy set site trueDo not AskUserQuestion for notebooks or site. Persist both before the user-facing line. That line says executed notebooks and the documentation site are on; the user can turn either off later. Do not say they are still unset or null. Do not write notebooks or site into JOURNAL; policy is the record. Do not ask.
Same turn after persist:
Load
add-python-packageonly ifstatus.skills.add-python-packageis true andpolicy.env.managedis true. Else one-line skip: namejupytext/nbclient/nbconvert/mkdocs-material; do not inventpixi add/uv add; skipsite init. Do not invent that skill's steps.When that load is allowed:
- notebooks true →
add-python-packageforjupytextandnbclient(bothenv routeagent), plusnbconvertwhen site is also true — stage turns write the notebook viewer with--html. Do not leave them asask. Do not convert. - site true →
add-python-packageformkdocs-material(agent), thenpython -m skore_skills site init.
If either flag is already
trueorfalse, do not overwrite and do not install from this step. - notebooks true →
-
If
setup-ml-projectdispatched this turn and is in this session, return to it; else stop. Standalone:python -m skore_skills git end-turn --stage setup. If JSONactionisinvoke, loadpersist-ml-gitonly ifstatus.skills.persist-ml-gitis true and stop; it returns to triage. If persist is missing, name the pendingstagedpaths and stop. Otherwise loadtriage-ml-taskonly ifstatus.skills.triage-ml-taskis true; else stop.
Stop conditions
- Do not ask env manager, tabular library, or skore mode.
- Do not run
pixi init/uv init. - Do not env-bootstrap or editable-install. Export toolchain
(
jupytext,nbclient,nbconvert,mkdocs-material) only viaadd-python-packageafter persisting notebooks/site. Neverpixi add/uv addfrom this skill. - Do not write experiment or exploratory data analysis bodies.
- Never
git commithere. - Do not AskUserQuestion for notebooks or site.
- Do not persist notebooks/site on an existing layout.
Layout (CLI writes this)
src/<pkg>/
experiments/
journal/
data_analysis/
data/
audit/
tests/smoke/
scratch/
Each directory has README.md.
Signals
- GitHub stars
- 132
- Forks
- 9
- Last commit
- Sep 2026
ahel review
K1binfo
installs-packages (in references/human_facing_prose.md)
Automated review, not a security audit. Ruleset v1+k2.
Advanced
- Item type
- skill
- Key
setup-workspace- Source
- github.com/probabl-ai/skills