Sync ML Reports
SkillDev toolsLets your agent copy machine learning reports between local disk, Hub, and MLflow using the skore command.
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 Sync ML Reports skill
About this skill
Copy skore reports between local, Hub, and MLflow with `skore sync`, and optionally switch the recorded upload destination. Trigger when the user asks to sync or migrate reports, switch skore mode, upload reports to Hub or MLflow, or pull Hub/MLflow reports onto disk. First G-SKORE-MODE pick stays e
What this skill tells your AI
The instructions your AI receives, as published by probabl-ai/skills in skills/sync-ml-reports/SKILL.md and read by ahel’s review.
Copy reports with the skore CLI. Switch the default destination
only when the user asked to. Do not evaluate, audit, or invent
Project.sync Python.
Human-facing prose
Details: setup-workspace references/human_facing_prose.md.
Ask where reports live (disk, Hub, MLflow) in those words. Do not
name G-SKORE-MODE, skill ids, or the wrapper CLI in the
question. skore sync output may appear in the close as the
sync table.
Procedure
-
Run
python -m skore_skills status. Readpolicy.skore_modeandskills. Openexperiments/andaudit/for theskore.Project(...)init block:name=, Hubworkspace=, MLflowtracking_uri=. Local store is always the workspacereports/directory (absolute path). Never omit--from-workspace/--to-workspaceon a local endpoint. -
If
policy.skore_modeis unset: STOP. First pick is G-SKORE-MODE inevaluate-ml-pipeline. Do not ask local / hub / mlflow here. Load that skill only ifstatus.skills.evaluate-ml-pipelineis true and the user asked to evaluate; else one-line skip. The close is only this stop: the destination is not chosen yet and is picked when a report is stored. Do not list local, Hub, or MLflow, a workspace name, or a tracking URI. Do not use the source-to-destination close below. -
AskUserQuestion for any answer not already in the request. Ahead of each question, state in 2–4 lines what the answer authorizes — which reports move where, whether
skore_modeand the Project init lines get rewritten — and the facts it rests on: the current mode, the discovered report count, the endpoint. A file link is an addition, never the context.- Intent. Switch default destination (sync, then persist
skore_modeand rewrite every Project init) vs copy only (sync, leave policy and experiment files). - Destination — same three options as G-SKORE-MODE:
local(disk, no account),hub(https://skore.probabl.ai),mlflow(tracking server). Hub: ask the workspace name; it MUST NOT contain/. MLflow: asktracking_uri; confirm a barehost:portashttp://host:port. Do not default the URI. - Project name if
name=is missing or disagrees across files. - Dry-run first vs transfer now.
If intent is switch and destination equals
policy.skore_mode, stop in one line. - Intent. Switch default destination (sync, then persist
-
Destination extras: load
add-python-packageonly ifstatus.skills.add-python-packageis true, for Skore at the destination mode (env add-skore --mode <dest>). If that skill is missing, name Skore for the destination and stop. Do not splicepip install/skore[...]here. -
If Hub is source or destination: require
SKORE_HUB_API_KEYin the environment. Missing → name it and stop. Do not open a browser login. Do not read.skorefor the key. -
Build
skore sync. Ifskoreis not on PATH, nameskore-cliand stop. Do not callskore.Project.syncin Python.skore sync <project> --from=<source_mode> --to=<dest_mode>Source mode is
policy.skore_mode. Add:Endpoint Flags local --from-workspaceor--to-workspace= resolvedreports/hub --from-workspaceor--to-workspace= Hub workspace name (required)mlflow --tracking-uri=...; never*-workspace--to-projectonly if the destination name differs.--hub-urlonly whenSKORE_HUB_URI(or the user) names a non-default Hub.--bothonly if the user asked to copy missing reports both ways. Otherwise one-way.If the user picked dry-run first, run with
--dry-run, show the plan, then ask to transfer. Live run omits--dry-run.Usage/auth/backend errors: name stdout/stderr and stop. Do not invent a Python fallback. Empty output
No reports to synchronize.is success (nothing to copy; a switch may still continue). -
Switch intent only, after a successful (or empty) sync:
python -m skore_skills policy set skore_mode <dest>. Rewrite every Project init inexperiments/andaudit/to the destination form inevaluate-ml-pipeline/references/g_skore_mode.md(audit must match the paired experiment, byte-for-byte modulo formatting). If dest is local,mkdir reports(exist_ok); no README. If hub or mlflow, do not createreports/. Ifjournal/JOURNAL.mdexists, insert a---under History and one lineskore_mode: <old> → <dest> (sync-ml-reports). Missing journal → skip in one line; do not paste a JOURNAL body.Copy-only: do not
policy set, rewrite init, mkdir, or edit JOURNAL.
Stop conditions
- Do not steal first G-SKORE-MODE when
skore_modeis unset. - Do not silently change a recorded mode; switch requires the switch intent (or an explicit user request to switch).
- Do not
git commit. - Do not evaluate,
project.put, or audit. - Do not pass
*-workspaceon an MLflow endpoint. - Do not omit
*-workspaceon a local or Hub endpoint.
End of turn
User-facing close
This close applies only after a sync. An unset policy.skore_mode
uses the step-2 stop instead.
Short story: source → destination, whether policy changed, and
the skore sync table or No reports to synchronize. Do not
dump experiment files.
Then python -m skore_skills git end-turn --stage evaluate
(the persist bucket for this work; this is not a CV run). 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. No git commit.
Signals
- GitHub stars
- 132
- Forks
- 9
- Last commit
- Sep 2026
Advanced
- Item type
- skill
- Key
sync-ml-reports- Source
- github.com/probabl-ai/skills