From oh-my-evor
Scan an existing ML workspace to produce a starting-point report; pre-fills the evor-setup interview
How this skill is triggered — by the user, by Claude, or both
Slash command
/oh-my-evor:evor-distill [workspace-path][workspace-path]The summary Claude sees in its skill listing — used to decide when to auto-load this skill
<Purpose>
<Use_When>
/evor-distill/oh-my-evor:evor-distill<Do_Not_Use_When>
.evor/active-run.json already exists — the workspace is already an active EVOR mission; use /evor-run to resumeevor-setup works directly without distillation/evor-validate/evor-doctor
</Do_Not_Use_When>Determine the workspace root and evor-root from arguments or defaults:
<workspace>: use the argument if provided, else the current working directory.<evorRoot>: use $EVOR_ROOT if set, else <workspace>/.evor.Call evor_distill_scan({ path: "<workspace>", evor_root: "<evorRoot>" }).
This writes <evorRoot>/starting-point.json and returns a human summary. Bad or permission-denied paths are skipped; the scanner never throws on malformed input.
If the call returns {error: ...}, show the error and stop with:
evor-distill scan failed. Check that the workspace path is accessible and retry.
Read <evorRoot>/starting-point.json and present a concise brief to the user:
=== evor-distill report ===
Workspace: <root>
Class: <workspace_class>
Framework: <framework or "unknown">
Task guess: <task_guess or "—">
Datasets (<count>):
<list up to 3 notable entries: path (kind, ~size)>
Models (<count>):
<list up to 3 notable entries: path (format, arch_guess if known)>
Configs (<count>):
<list up to 3 notable entries: path — notable hyperparams if present>
Entry points: <entry_points joined by ", " or "none detected">
Scraped metrics:
<for each: source_path — metric=value (split_hint if present) [UNVERIFIED]>
(none found)
Baseline candidate:
Model: <model_path or "none">
Metric: <metric_name>=<claimed_value> [UNVERIFIED — scraped from repo]
Source: <source>
— or —
(none detected)
If warnings in the report is non-empty, print each entry prefixed with ⚠.
If a baseline_candidate is present (non-null), state clearly:
IMPORTANT: The baseline candidate value (<metric_name>=<claimed_value>) is UNVERIFIED.
It was scraped from the repository and has NOT been measured on a controlled split.
EVOR will re-measure it on the frozen split during /evor-setup (and on the first tick)
before it becomes the official baseline value tracked by the mission.
Never treat a scraped metric as a proven starting point.
If workspace_class is possibly-training, add this warning:
WARNING: A checkpoint or experiment log was modified within the last 10 minutes.
A training run may currently be active. EVOR will not touch any files.
Wait for the active run to finish, then re-run /evor-distill and /evor-setup.
Print:
Starting-point report saved to: <evorRoot>/starting-point.json
Next step: run /oh-my-evor:evor-setup
evor-setup will read this report and pre-fill the interview (framework, dataset path,
model family hint, and baseline candidate) for you to confirm or edit.
<Tool_Usage>
evor_distill_scan — deep-scan workspace; writes and returns a StartingPointReport to <evorRoot>/starting-point.json
</Tool_Usage>npx claudepluginhub it-dainb/oh-my-evorGuides collaborative design exploration before implementation: explores context, asks clarifying questions, proposes approaches, and writes a design doc for user approval.
Creates structured, bite-sized implementation plans from specs or requirements before writing code. Useful for breaking down multi-step tasks into testable steps with file structure and task boundaries.
Synthesizes the current conversation into a structured spec (PRD) and publishes it to the project issue tracker with a ready-for-agent label, without interviewing the user.