install
source · Clone the upstream repo
git clone https://github.com/Upsonic/Upsonic
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/Upsonic/Upsonic "$T" && mkdir -p ~/.claude/skills && cp -r "$T/prebuilt_autonomous_agents/applied_scientist/skills/experiment_management" ~/.claude/skills/upsonic-upsonic-experiment-management && rm -rf "$T"
manifest:
prebuilt_autonomous_agents/applied_scientist/skills/experiment_management/SKILL.mdsource content
Experiment Management Skill
Purpose
Set up and manage the experiment folder structure. This is Phase 0 — it runs before any analysis begins. All bookkeeping files are JSON (never markdown).
When to Use
- At the very start of a new experiment
- When updating
orexperiments.json
after an experiment completescomparison.json
Input
| Parameter | Type | Description |
|---|---|---|
| research_name | string | The experiment name as given by the caller. Use it verbatim — do not rename it, do not re-derive it from the paper title. |
| research_paper | path | Path to the PDF paper |
| current_notebook | path | Path to the current baseline .ipynb |
| current_data | path | Path to the current dataset (file or directory) |
| experiments_directory | path | The directory (inside the workspace) where experiment folders live (e.g. ). |
Actions
Setup (start of experiment)
-
Create experiment directory:
experiments/{research_name}/ -
Copy files (NEVER move, NEVER modify originals):
cp {current_notebook} experiments/{research_name}/current.ipynb cp -r {current_data} experiments/{research_name}/current_data/ cp {research_paper} experiments/{research_name}/research.pdfIf
is a code-based download (e.g.current_data
), leavefetch_ucirepo(id=2)
empty and record the download spec incurrent_data/
's metadata.log.json -
Create
with the starting skeleton:log.json{ "name": "{research_name}", "metadata": { "date": "YYYY-MM-DD", "original_notebook": "{current_notebook}", "original_data": "{current_data}", "research_paper": "{research_paper}" }, "phases": [] }Phases append entries here as they finish; never overwrite earlier entries.
-
Register in
:experiments/experiments.json- If the file does not exist, create it with
.{"experiments": []} - Append a new entry with
:status: "in_progress"{ "name": "{research_name}", "date": "YYYY-MM-DD", "status": "in_progress", "paper": "{paper_title}", "baseline_model": null, "new_method": null, "verdict": null, "key_metric": null, "path": "experiments/{research_name}/" }
- If the file does not exist, create it with
-
Create initial
(seeprogress.json
for schema) with:skills/progress/SKILL.mdstatus: "RUNNING"- all phases listed, all
, Phase 0 markedpendingcurrent
andstarted_at
set to now (UTC ISO-8601)updated_at
Finalize (end of experiment)
- Update the experiment entry in
with finalexperiments.json
,status
, andverdict
(seekey_metric
).skills/evaluate/SKILL.md - Append a row to
.experiments/comparison.json- If the file does not exist, create it with
.{"experiments": []}
- If the file does not exist, create it with
Output
directory with copied filesexperiments/{research_name}/
initializedexperiments/{research_name}/log.json
initializedexperiments/{research_name}/progress.json
updatedexperiments/experiments.json