A set of skills to steer your AI-assisted machine learning experiments. The skills help you:
- build your machine learning pipeline with core data science libraries (e.g. scikit-learn, skrub, skore, pandas, polars) while ensuring your agent follows correct methodologies
- evaluate and store your results so you can easily audit and get insights from them
- connect your agent to Skore Hub to get a comprehensive view of your experiments and results
- iterate on your next experiments from a Skore audit digest (a separate backlog turn) and from your own feedback
- organize your workspace according to best practices for data science projects (e.g. cookiecutter template)
Probabl skills let you focus on the science while AI agents handle the implementation, guided by two important ingredients: core data science libraries for maintainability and methodological best practices for running your machine learning experiments properly.
In practice, from a prompt such as:
╭────────────────────────────────────────────────────────────────────────╮
│ > Given the context in the file `data/README.md` and the data located │
│ in `data/`, let's build a first machine learning pipeline that will │
│ serve as baseline for the next experiments that we are going to run │
│ together. │
╰────────────────────────────────────────────────────────────────────────╯
you can expect your agent to start experimenting with you. The skills work well with
models such as Claude Opus and Sonnet and produce great results with smaller models such
as Qwen 3.7 Flash or DeepSeek v4.1 Flash. Each skill declares metadata.modelTier
(small, medium, or big). The eval maps those tiers to Qwen3.8 27B,
DeepSeek v4.1 Flash, and Qwen3.8 Max. A skill may also declare metadata.role
(entry or helper) when its caller continues after it loads. A helper runs on at
most its caller's tier, so a skill never loads a helper of a higher tier;
tools/validate_catalog.py enforces it.
As for agent harnesses, we tested them with Claude Code, OpenCode, Cursor, and GitHub Copilot and found no significant difference in terms of skill invocation.
The skills installer is the skore command, included in the skore
package on PyPI and conda-forge.
# with pip
pip install skore
# with uv
uv tool install skore
# with pixi
pixi global install skore
# with conda
conda install conda-forge::skoreskore skills install with no arguments opens a picker for the source, the
skills, the agent, and the project or user directory. Without a terminal, that
same command prints the catalog.
Install a workflow pack by id when you do not need every skill:
skore skills install setup # workspace, environment, git, export
skore skills install data_analysis # data exploration
skore skills install model # frame, build, smoke-test, evaluate, audit
skore skills install loop # triage, explore, model, review, backlog, export
skore skills install export # notebooks and documentation siteskore skills install ml-experimentation and skore skills install all
(or --all) install every skill in the catalog.
You can use uvx or pixi exec to install skore and run the installer in
an isolated environment:
uvx --from skore skore skills installor
pixi exec --spec skore skore skills installIf you prefer npx, then you can use:
npx skills add probabl-ai/skore-skillsIf you only use Claude Code and prefer the native plugin flow, this repo is also a Claude Code plugin marketplace:
/plugin marketplace add probabl-ai/skore-skills/plugin install probabl-skills@probabl-skills/plugin update pulls new releases.
| Skill | Description |
|---|---|
| triage-ml-task | Session owner: list installed entry skills and ask which to run. |
| review-ml-choices | Show stored project choices and re-enter the skill that can change one. |
| review-ml-experiment | Read the stored report, then write one idea file and one Ideas row per candidate. |
| setup-ml-project | Ask only the pending setup pieces. When Git is selected, commit the current files before setup writes only if that check finds files to preserve. |
| setup-workspace | Detect or scaffold the standard ML workspace layout. |
| setup-python-env | Detect the env manager and bootstrap the runtime, agent-tools, and composed development environments. |
| setup-git | Initialize safe version control, including an optional commit of the tree before setup changes it. |
| persist-ml-git | Commit the current loop stage when the end-turn hook says invoke. |
| model-ml-pipeline | Require locked problem framing, write the first baseline design note for approval, then coordinate later choices, build, smoke testing, evaluation, and audit. |
| export-ml-project | Coordinate executed notebooks and an offline MkDocs documentation site. |
| sync-ml-reports | Copy skore reports between local, Hub, and MLflow, and optionally switch the upload destination. |
| Skill | Description |
|---|---|
| explore-ml-data | Explore the dataset before designing any model. |
| frame-ml-problem | Record the problem, deployment setting, metric, baseline, and fold count before any model code. |
| research-ml-practice | Literature research for an ML methodology concern. |
| build-ml-pipeline | Declare a skrub DataOps graph from the data source to the predictor after framing is locked. |
| evaluate-ml-pipeline | Evaluate one sklearn-compatible learner with the locked validation scheme and persist structured skore reports. |
| smoke-test-ml-pipeline | Structural pytest: prediction count must match the predict-grid row count. |
| audit-ml-pipeline | Audit a persisted skore report read-only and produce a reusable digest. |
| Skill | Description |
|---|---|
| manage-ml-backlog | Record experiment outcomes and triage idea files. A promoted idea moves from the Ideas table into a Backlog row. |
| shape-user-idea | Shape a user idea or a named artifact into one idea file and one Ideas row after they confirm. |
| search-ml-literature | Search scientific and technical sources and write one idea file and one Ideas row for the direction the user confirms. |
| Skill | Description |
|---|---|
| add-python-package | Add a dependency through the project env manager, or ask the user when the environment is user-managed. |
| choose-python-library | Resolve a library choice and add the selected dependency. |
| plot-ml-figure | Pick pandas, seaborn, plotly, or matplotlib before writing figure code. |
| export-ml-notebook | Write a jupytext percent file out as a notebook with empty outputs. |
| export-ml-site | Package workspace markdown and existing notebook HTML into an offline MkDocs site. |
Canonical package policy lives in the CLI; print it with skore skills tools env stack (the same command as python -m skore_skills env stack). choose-python-library resolves competing libraries.
When executed notebooks or the documentation site are enabled in a workspace, workflow stages publish them at completed checkpoints before the next user decision. Python percent files execute once: that run can write the notebook, optional notebook HTML, and audit digest together. Site checkpoints rebuild only when Markdown, notebook HTML, figures, or result files changed. Unset or disabled notebook/site policies do not enable these artifacts automatically.
The getting-started page lives in site/ and is published at
https://probabl-ai.github.io/skore-skills/.
Build it with the site Pixi environment, which provides Node.js:
pixi run -e site site-buildPull requests that change site/, .catalog.json, or the Pixi manifest build
the site in CI. GitHub Pages builds it from main when those same paths change.
A repo admin turns this on once: Settings → Pages → Source GitHub Actions.
If Pages is enabled after that workflow is already on main, run the Pages
workflow with Run workflow. Catalog edits still go through pixi run check.