Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx agentmods add skills/learningmatter-mit/atomisticskills/ml-bayesian-optimizationnpx skills add learningmatter-mit/AtomisticSkills --skill ml-bayesian-optimizationgit clone --depth 1 https://github.com/learningmatter-mit/AtomisticSkillsWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/learningmatter-mit/atomisticskills/ml-bayesian-optimization)<a href="https://agentmods.dev/skills/learningmatter-mit/atomisticskills/ml-bayesian-optimization"><img src="https://agentmods.dev/badge/skills/learningmatter-mit/atomisticskills/ml-bayesian-optimization.svg" alt="Measured on agentmods" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5 | $0.00040 | $0.02068 |
| Opus 5 | $0.00020 | $0.01034 |
| Sonnet 5 | $0.00008 | $0.00414 |
| Haiku 4.5 | $0.00004 | $0.00207 |
Grade A, and why
ml-bayesian-optimization scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured today.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 185 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Bayesian Optimization
Goal
Efficiently find the optimal input parameters (e.g., alloy composition, simulation hyperparameters, process conditions) that minimize or maximize one or more expensive black-box objectives (e.g., formation energy, bandgap, elastic modulus) using Bayesian Optimization (BO). BO builds a probabilistic surrogate model (Gaussian Process) over the objective landscape and uses an acquisition function to intelligently select the next most informative experiments, minimizing the number of expensive evaluations required.
- Single-objective: Expected Improvement (EI) maximized via multi-start L-BFGS-B.
- Multi-objective: ParEGO — random Chebyshev scalarization with independent GPs, one weight vector per batch element, naturally steering candidates toward different Pareto-front regions.
Instructions
Step 1: Define the Search Space
Create a search_space.yaml in the research directory. Use the template at resources/search_space_template.yaml as a starting point:
# research_dir/search_space.yaml
parameters:
# Continuous range parameter
- name: x_Fe
type: range
bounds: [0.0, 1.0]
value_type: float
# Integer range parameter
- name: supercell_size
type: range
bounds: [2, 6]
value_type: int
objectives:
# Single-objective: minimize formation energy
- name: formation_energy_eV_atom
minimize: true
# Multi-objective: additionally maximize bandgap (uncomment to enable)
# - name: bandgap_eV
# minimize: false
Guidelines:
- Use
type: rangefor continuous or integer parameters with known bounds. Onlyrangeparameters are passed to the GP surrogate. choiceandfixedtypes are recorded in output CSVs but not optimized. Run separate campaigns per discrete choice.- Choose bounds informed by domain knowledge; avoid unnecessarily wide ranges.
Step 2: Initialize with Quasi-Random Sobol Samples
Generate an initial space-filling design using Sobol sequences. Use a power-of-2 batch_size (4, 8, 16, …) for optimal Sobol balance:
What ships with it
29 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
- examples/branin-function/campaign_state.json 651 B
- examples/branin-function/candidates_round_0.csv 306 B
- examples/branin-function/candidates_round_1.csv 125 B
- examples/branin-function/candidates_round_2.csv 128 B
- examples/branin-function/candidates_round_3.csv 144 B
- examples/branin-function/candidates_round_4.csv 154 B
- examples/branin-function/candidates_round_5.csv 141 B
- examples/branin-function/candidates_round_6.csv 155 B
- examples/branin-function/candidates_round_7.csv 150 B
- examples/branin-function/convergence_curve.png 47 KB
- examples/branin-function/evaluated.csv 1.6 KB
- examples/branin-function/gp_model_2d.png 285 KB
- examples/branin-function/parameter_importance.png 62 KB
- examples/branin-function/README.md 5.6 KB
- examples/branin-function/search_space.yaml 213 B
- examples/li-ag-phases/campaign_state.json 255 B
- examples/li-ag-phases/candidates_round_0.csv 99 B
- examples/li-ag-phases/candidates_round_1.csv 63 B
- examples/li-ag-phases/candidates_round_2.csv 47 B
- examples/li-ag-phases/convergence_curve.png 53 KB
- examples/li-ag-phases/evaluated.csv 354 B
- examples/li-ag-phases/gp_model_1d.png 163 KB
- examples/li-ag-phases/li_ag_phases.csv 539 B
- examples/li-ag-phases/parameter_importance.png 52 KB
- examples/li-ag-phases/README.md 4.2 KB
- examples/li-ag-phases/search_space.yaml 156 B
- resources/search_space_template.yaml 2.2 KB
- scripts/plot_bo_results.py 20 KB runs code
- scripts/suggest_candidates.py 12 KB runs code
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- today First seen · 185 lines · 40 tokens per session scan A e4a397e81683
ml-bayesian-optimization is a skill published in the GitHub repository learningmatter-mit/AtomisticSkills (158 stars, last pushed yesterday), licensed MIT. It adds 40 tokens to every session and 2,068 once invoked, about $0.0002 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-09-03.
Other skills, from other repositories
hugging-face-trackio
Track and visualize ML training experiments with Trackio. Use when logging metrics during training (Python API) or retrieving/analyzing logged metrics (CLI). Supports real-time dashboard visualization, HF Space syncing, and JSON output for automation.
pysr
Use when fitting equations to data with PySR or SymbolicRegression.jl, when a user wants an interpretable formula, symbolic model, scaling law, or empirical relation discovered from numeric data, or when debugging a PySR search that is slow, stuck, or giving poor equations.
cellxgene-census-query
Query CZ CELLxGENE Census (61M+ cells). Filter by cell type/tissue/disease, retrieve expression data, and integrate with scanpy/PyTorch for population-scale single-cell analysis. Use this skill when: (1) Querying single-cell expression data by cell type, tissue, or disease, (2) Exploring available single-cell datasets…
HomeSafe-Bench
VLM indoor safety hazard detection benchmark inspired by HomeSafeBench (arXiv 2509.23690).
depth-estimation
Real-time depth map privacy transforms using Depth Anything v2 (CoreML + PyTorch).
start-experiment
Start the autoresearch optimization loop for a specific model + lane. Resolves the hierarchical program.md (root → model → lane), asks the user for hardware (local TPU VM or GKE cluster of a specified TPU type + topology), discovers available clusters from .env/, checks occupancy with USERPREFIX-aware attribution…