Agent skill

Uma

by lamm-mit in lamm-mit/scienceclaw

Run structure relaxation and phonon calculations using Meta's UMA (Universal Materials Accelerator) via fairchem

Apache-2.0Auto-check passedAI & LLM Engineering

Install Uma

skills CLI
$ npx skills add lamm-mit/scienceclaw --skill uma -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install lamm-mit/scienceclaw uma --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/lamm-mit/scienceclaw.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/uma .claude/skills/uma && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
uma
GitHub stars
244
Token cost
~3.5k tokens
SKILL.md length
709 words
Files
4 (incl. scripts)
Skills in repo
85
Repo updated
First seen
Licence
Apache-2.0

At a glance

Run structure relaxation and phonon calculations using Meta's UMA (Universal Materials Accelerator) via fairchem

  • Works in 3 steps: Use materials skill to find prototype… → Use structure-enumeration skill to… → Use uma_screen.py to relax all…
  • Tasks that involve Physical and earth sciences
  • SKILL.md covers Prerequisites, Scripts, Python API and Structure Generation with…, plus 8 more sections
  • Runs Python scripts from its folder; calls python3, pip and conda; needs HF_TOKEN and MP_API_KEY

What it does

Uma is an agent skill from lamm-mit/scienceclaw. Run structure relaxation and phonon calculations using Meta's UMA (Universal Materials Accelerator) via fairchem

Its SKILL.md is about 3.5k tokens, which your agent loads only when the skill is triggered. The skill folder holds 4 other files, including scripts (for example `scripts/uma_relax.py` and `scripts/uma_screen.py`).

It sits in AI & LLM Engineering, covering Physical and earth sciences. It works with CUDA. The licence is Apache-2.0.

When your agent uses it

  • Tasks that involve Physical and earth sciences

Example prompts

  • “/uma”

Requirements

  • Python 3
  • A credential in MP_API_KEY

Workflow steps

3 steps, taken from the first numbered list in SKILL.md.

  1. Use materials skill to find prototype structures from MP
  2. Use structure-enumeration skill to generate candidates by metal substitution
  3. Use uma_screen.py to relax all candidates and assess stability

What it can do on your machine

Read from SKILL.md and the folder at commit ab9aba1. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Ships 2 files in scripts/ (Python), which the agent can run.

    Shell commands in SKILL.md call:

    • python3
    • pip
    • conda

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Links to these hosts (documentation or services it may open):

    • huggingface.co
    • github.com

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names these keys or tokens, usually read from environment variables:

    • HF_TOKEN
    • MP_API_KEY

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Uma loads about 3.5k tokens when it runs. Until then it costs about 29 tokens; SKILL.md has 709 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~29
When it runs · the whole SKILL.md, loaded when a task matches
~3.5k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.

SKILL.md

The full file from lamm-mit/scienceclaw at commit ab9aba1, republished under its Apache-2.0 licence (© lamm-mit). 709 words, ~3,476 tokens.

Download SKILL.mdSave it as .claude/skills/uma/SKILL.md (or your agent's skills folder). This skill also uses 3 other files; get the full folder from GitHub.
name
uma
description
Run structure relaxation and phonon calculations using Meta's UMA (Universal Materials Accelerator) via fairchem

UMA Skill

Run structure relaxation, single-point energy calculations, and phonon property calculations using UMA (Universal Materials Accelerator), a machine-learned interatomic potential from Meta FAIR. UMA is a fast alternative to DFT, achieving near-DFT accuracy at a fraction of the cost.

Built on the fairchem framework.

Prerequisites

  • fairchem-core installed (pip install fairchem-core)
  • phonopy installed (pip install phonopy) — for phonon calculations
  • HF_TOKEN environment variable set (gated model on HuggingFace)
  • GPU recommended (CUDA); CPU works but is much slower

Scripts

uma_relax.py — Relax a crystal structure (CLI)
bash
python3 {baseDir}/scripts/uma_relax.py \
  --structure path/to/structure.cif \
  --relax-cell --pressure 150 \
  --format json
ParameterDescription
--structurePath to CIF, POSCAR, or XYZ structure file
--mp-idMaterials Project ID (fetches structure automatically)
--modeluma-s-1p1, uma-s-1p2, uma-m-1p1 (default: uma-m-1p1)
--taskomat (default), omol, omc, oc20, odac
--devicecuda (default) or cpu
--relax-cellEnable full cell relaxation
--pressureExternal pressure in GPa (default: 0). Implies --relax-cell
--fmaxForce convergence threshold in eV/A (default: 0.05)
--stepsMax optimizer steps (default: 200)
--output-cifPath to save relaxed structure as CIF
--formatsummary | json

Python API

For batch workflows (screening, phonon), use the Python API directly:

Loading the model (do once, reuse for all calculations)
python
from fairchem.core import pretrained_mlip, FAIRChemCalculator

predictor = pretrained_mlip.get_predict_unit("uma-m-1p1", device="cuda")
calc = FAIRChemCalculator(predictor, task_name="omat")
Structure relaxation
python
from ase.build import bulk
from ase.optimize import FIRE
from ase.filters import FrechetCellFilter

atoms = bulk("Si")  # or: ase.io.read("structure.cif")
atoms.calc = calc

# Relax with external pressure (1 GPa = 1/160.21766208 eV/A^3)
pressure_gpa = 150.0
pressure_ev_per_A3 = pressure_gpa / 160.21766208
opt = FIRE(FrechetCellFilter(atoms, scalar_pressure=pressure_ev_per_A3))
opt.run(fmax=0.05, steps=500)

energy = atoms.get_potential_energy()  # eV
volume = atoms.get_volume()            # A^3
Phonon calculation (finite displacement method)
python
import phonopy
from phonopy.structure.atoms import PhonopyAtoms
import numpy as np

# Convert ASE Atoms to PhonopyAtoms
ph_atoms = PhonopyAtoms(
    symbols=atoms.get_chemical_symbols(),
    cell=atoms.get_cell(),
    scaled_positions=atoms.get_scaled_positions(),
)

# Create phonopy object with supercell
ph = phonopy.Phonopy(ph_atoms, supercell_matrix=np.diag([2, 2, 2]))
ph.generate_displacements(distance=0.01, is_diagonal=False)

# Compute forces on each displaced supercell using UMA
force_sets = []
for scell in ph.supercells_with_displacements:
    from ase import Atoms as ASEAtoms
    ase_scell = ASEAtoms(
        symbols=scell.symbols, positions=scell.positions,
        cell=scell.cell, pbc=True,
    )
    ase_scell.calc = FAIRChemCalculator(predictor, task_name="omat")
    forces = ase_scell.get_forces()
    forces -= forces.mean(axis=0)  # acoustic sum rule
    force_sets.append(forces)

ph.forces = force_sets
ph.produce_force_constants()
ph.symmetrize_force_constants()

# Get phonon frequencies
ph.run_mesh([8, 8, 8])
frequencies = ph.get_mesh_dict()["frequencies"]  # (n_qpoints, n_bands) in THz

# Check dynamic stability (no imaginary modes)
min_freq = frequencies.min()
dynamically_stable = min_freq > -0.5  # THz threshold

# Thermal properties
ph.run_thermal_properties(t_min=0, t_max=600, t_step=100)
tp = ph.get_thermal_properties_dict()
# tp["temperatures"], tp["free_energy"], tp["entropy"], tp["heat_capacity"]
Auto supercell size
python
def auto_supercell(n_atoms):
    if n_atoms <= 4: return [3, 3, 3]
    elif n_atoms <= 16: return [2, 2, 2]
    elif n_atoms <= 48: return [2, 2, 1]
    else: return [1, 1, 1]

Structure Generation with pymatgen

Build from spacegroup + Wyckoff positions
python
from pymatgen.core import Structure, Lattice

# LaH10 clathrate (Fm-3m, SG 225)
structure = Structure.from_spacegroup(
    225, Lattice.cubic(5.1),
    ["La", "H", "H"],
    [[0, 0, 0], [0.25, 0.25, 0.25], [0.118, 0.118, 0.118]],
)

# CaH6 sodalite (Im-3m, SG 229)
structure = Structure.from_spacegroup(
    229, Lattice.cubic(3.54),
    ["Ca", "H"],
    [[0, 0, 0], [0.25, 0, 0.5]],
)
Element substitution
python
from pymatgen.transformations.standard_transformations import SubstitutionTransformation
sub = SubstitutionTransformation({"La": "Y"})
new_structure = sub.apply_transformation(structure)
Convert pymatgen ↔ ASE
python
from pymatgen.io.ase import AseAtomsAdaptor
atoms = AseAtomsAdaptor.get_atoms(structure)      # pymatgen → ASE
structure = AseAtomsAdaptor.get_structure(atoms)   # ASE → pymatgen

Convex Hull Stability

python
from mp_api.client import MPRester
from pymatgen.analysis.phase_diagram import PhaseDiagram, PDEntry
from pymatgen.core import Composition
import os

with MPRester(os.environ["MP_API_KEY"]) as mpr:
    entries = mpr.get_entries_in_chemsys("La-H")

my_entry = PDEntry(Composition("LaH10"), total_energy_eV, name="UMA-LaH10")
pd = PhaseDiagram(list(entries) + [my_entry])
e_above_hull = pd.get_e_above_hull(my_entry)  # eV/atom; 0 = on hull

GPU and SLURM

UMA requires a GPU. Structure your code with a GPU check at the top. When no GPU is available, write a SLURM script that re-runs the SAME script on a GPU node. The script file is at agent_scripts/agent_code.py relative to the project root.

python
import torch, subprocess, os, sys, json

# GPU check — must be at the TOP of the script, before any UMA imports
if not torch.cuda.is_available():
    print("No GPU — submitting to SLURM", file=sys.stderr)
    venv = os.environ.get("VIRTUAL_ENV", "")
    script_path = os.path.abspath(sys.argv[0])  # path to this script
    slurm = f"""#!/bin/bash
#SBATCH --partition=venkvis-h100
#SBATCH --gres=gpu:1
#SBATCH --mem=64G
#SBATCH --time=04:00:00
#SBATCH --output=slurm-%j.out
#SBATCH --error=slurm-%j.err
source {venv}/bin/activate
export HF_TOKEN="{os.environ.get('HF_TOKEN', '')}"
export MP_API_KEY="{os.environ.get('MP_API_KEY', '')}"
cd {os.getcwd()}
{sys.executable} {script_path}
"""
    with open("submit.sh", "w") as f:
        f.write(slurm)
    result = subprocess.run(["sbatch", "submit.sh"], capture_output=True, text=True)
    job_id = result.stdout.strip().split()[-1] if result.returncode == 0 else None
    print(json.dumps({"status": "SUBMITTED_TO_SLURM", "job_id": job_id}))
    sys.exit(0)

# === GPU code below (only runs on GPU node) ===
from fairchem.core import pretrained_mlip, FAIRChemCalculator
# ... rest of computation

For job dependency (ensure job B runs after job A):

bash
sbatch --dependency=afterok:<job_A_id> submit_B.sh

Verification Checklist

Before submitting or executing code that uses UMA, verify:

  • Model loaded with pretrained_mlip.get_predict_unit("uma-m-1p1", device="cuda") — NOT pretrained_mlip("UMA") or pretrained_mlip.load()
  • Calculator created with FAIRChemCalculator(predictor, task_name="omat") — NOT FAIRChemCalculator(model)
  • Cell filter is FrechetCellFilter from ase.filters — NOT ExpCellFilter from ase.constraints
  • Pressure conversion: pressure_gpa / 160.21766208 — NOT * 0.0006242 or other approximations
  • SLURM partition is venkvis-h100 or venkvis-a100 — NOT gpu or standard
  • Environment activation: source <venv>/bin/activate — NOT conda activate or module load
  • Venv path from os.environ.get("VIRTUAL_ENV", "") — NOT hardcoded
  • API keys from os.environ.get("HF_TOKEN") and os.environ.get("MP_API_KEY")
  • Output printed as JSON to stdout, progress/errors to stderr

Models

ModelParametersSpeedAccuracy
uma-s-1p16.6M active / 150M totalFastGood
uma-s-1p26.6M active / 290M totalFastBetter
uma-m-1p150M active / 1.4B totalSlowerBest
uma_screen.py — Batch structure relaxation and stability screening

Relax all CIF files in a directory with UMA at multiple pressures, compute formation energies, and check 0 GPa stability against the Materials Project convex hull. No hardcoded prototypes — structures come from the structure-enumeration skill or any other source.

Typical workflow:

  1. Use materials skill to find prototype structures from MP
  2. Use structure-enumeration skill to generate candidates by metal substitution
  3. Use uma_screen.py to relax all candidates and assess stability
bash
# Relax all CIFs in the default enumeration directory
python3 {baseDir}/scripts/uma_screen.py --format json

# From a custom directory
python3 {baseDir}/scripts/uma_screen.py \
  --structures-dir ./my_candidates \
  --pressures 0,150 \
  --format json

If no GPU is available, the script auto-submits to SLURM (venkvis-h100).

Show full SKILL.md (245 more words)Show less
Screening Parameters
ParameterDescription
--structures-dirDirectory of CIF files to relax (default: ~/.scienceclaw/enumerated_structures)
--pressuresPressures in GPa (default: 0,150)
--after-jobSLURM job ID to wait for before starting (ensures prior job completes first)
--modelUMA checkpoint (default: uma-m-1p1)
--devicecuda (default) or cpu
--fmaxForce convergence threshold (default: 0.05)
--stepsMax optimizer steps (default: 200)
--output-dirDirectory for relaxed CIFs (default: ./uma_screen_output)
--formatjson or summary
--dry-runShow plan without running
Pipeline Steps
  1. Scan --structures-dir for CIF files
  2. Identify metal elements in each structure
  3. Relax elemental references + H2 at 0 GPa
  4. Relax each structure at each pressure
  5. Compute formation energy per atom
  6. At 0 GPa, query MP convex hull for energy above hull
  7. Rank by formation energy, save relaxed CIFs
Output (JSON)
json
{
  "status": "COMPLETED",
  "model": "uma-m-1p1",
  "ranking": [
    {
      "rank": 1,
      "formula": "LaH10",
      "prototype": "LaH10-type",
      "formation_energy_eV_per_atom": -0.1234,
      "converged": true,
      "e_above_hull_eV_per_atom_0GPa": 0.045
    }
  ],
  "candidates": [ ... ],
  "reference_energies": { ... }
}

Python API (for scripting)

You can also use UMA directly in Python without the CLI script:

python
from fairchem.core import pretrained_mlip, FAIRChemCalculator
from ase.build import bulk
from ase.optimize import FIRE
from ase.filters import FrechetCellFilter

# Load model (do this once, reuse for many structures)
predictor = pretrained_mlip.get_predict_unit("uma-m-1p1", device="cuda")
calc = FAIRChemCalculator(predictor, task_name="omat")

# Build or load structure
atoms = bulk("Si")  # or: ase.io.read("structure.cif")
atoms.calc = calc

# Relax with optional external pressure
pressure_gpa = 150.0
pressure_ev_per_A3 = pressure_gpa / 160.21766208
filtered = FrechetCellFilter(atoms, scalar_pressure=pressure_ev_per_A3)
opt = FIRE(filtered)
opt.run(fmax=0.05, steps=500)

# Read results
energy = atoms.get_potential_energy()        # eV
forces = atoms.get_forces()                   # eV/A
volume = atoms.get_volume()                   # A^3

Typical Workflow with HPC

Since UMA requires a GPU, a typical workflow on Artemis is:

  1. Prepare your structure files (CIF/POSCAR) on the login node
  2. Write a SLURM script that runs uma_relax.py (see hpc skill for script format)
  3. Submit with sbatch to venkvis-h100 or venkvis-a100
  4. Check status with squeue -j <job_id>
  5. Read results from the output JSON after completion

Structure Generation with pymatgen

To enumerate candidate structures for screening, use pymatgen directly:

python
from pymatgen.core import Structure, Lattice

# Build a structure from spacegroup + Wyckoff positions
structure = Structure.from_spacegroup(
    225,                              # Fm-3m
    Lattice.cubic(5.1),               # lattice parameter
    ["La", "H", "H"],                 # species at each site
    [[0, 0, 0],                       # 4a: metal
     [0.25, 0.25, 0.25],             # 8c: H
     [0.118, 0.118, 0.118]],         # 32f: H (clathrate cage)
)
structure.to("LaH10.cif", fmt="cif")

To substitute metals in a prototype:

python
from pymatgen.transformations.standard_transformations import SubstitutionTransformation

# Replace La with Y in a prototype
sub = SubstitutionTransformation({"La": "Y"})
new_structure = sub.apply_transformation(structure)

Convex Hull Stability Analysis

To check thermodynamic stability at 0 GPa, compare against the Materials Project convex hull:

python
from mp_api.client import MPRester
from pymatgen.analysis.phase_diagram import PhaseDiagram, PDEntry
from pymatgen.core import Composition

with MPRester("YOUR_MP_API_KEY") as mpr:
    # Fetch all known phases in the La-H system
    entries = mpr.get_entries_in_chemsys("La-H")

# Add your UMA-computed entry
my_entry = PDEntry(Composition("LaH10"), total_energy_eV, name="UMA-LaH10")
all_entries = list(entries) + [my_entry]

# Build phase diagram and check stability
pd = PhaseDiagram(all_entries)
e_above_hull = pd.get_e_above_hull(my_entry)  # eV/atom; 0 = on hull (stable)

© lamm-mit, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 3 other files (scripts) in skills/uma of lamm-mit/scienceclaw.

  • SKILL.md
  • requirements.txt
  • scripts/uma_relax.py
  • scripts/uma_screen.py

Open the folder on GitHubat commit ab9aba1

Compare with similar skills

Uma next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Uma compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Uma this skilllamm-mit/scienceclaw244—~3.5kAutomated safety check: PassApache-2.0
ML Generative Aditlearningmatter-mit/AtomisticSkills175—~1.4kAutomated safety check: PassMIT
Mat Lammps Mdlearningmatter-mit/AtomisticSkills175—~1.2kAutomated safety check: PassMIT
Optimize For GPUmajiayu000/claude-skill-registry6661 repos~8.5kAutomated safety check: PassMIT
Esmfold2JimLiu/science-skills2274 repos~2.5kAutomated safety check: PassApache-2.0
MUSA GPU Training Optimizeropen-infra-skills/infra-skills141—~1.7kAutomated safety check: PassApache-2.0

Similar skills

  • ML Generative Adit

    learningmatter-mit/AtomisticSkills

    Generate novel crystal structures and molecules using ADiT (All-atom Diffusion Transformer), a unified latent diffusion model.

    175 GitHub stars~1.4k tokensUpdated yesterday
    AI & LLM EngineeringAuto-check passed
  • Mat Lammps Md

    learningmatter-mit/AtomisticSkills

    Build and run LAMMPS molecular dynamics with isolated MLIP-specific binaries (MACE, MatGL/CHGNet, FairChem) to avoid Python and Torch stack conflicts.

    175 GitHub stars~1.2k tokensUpdated yesterday
    Research & ScienceAuto-check passed
  • Optimize For GPU

    majiayu000/claude-skill-registry

    GPU-accelerate Python code using CuPy, Numba CUDA, Warp, cuDF, cuML, cuGraph, KvikIO, cuCIM, cuxfilter, cuVS, cuSpatial, and RAFT.

    666 GitHub starsUsed in 1 repo~8.5k tokens
    Data & AnalyticsAuto-check passed
  • Esmfold2

    JimLiu/science-skills

    Biohub ESMFold2 / ESMFold2-Fast all-atom co-folding (Candido et al.

    227 GitHub starsUsed in 4 repos~2.5k tokens
    AI & LLM EngineeringAuto-check passed
  • MUSA GPU Training Optimizer

    open-infra-skills/infra-skills

    Profiles, benchmarks and tunes AI training workloads on Moore Threads MUSA GPUs with a measurement-first process that keeps model behavior unchanged.

    141 GitHub stars~1.7k tokensUpdated 2 mo ago
    AI & LLM EngineeringAuto-check passed
  • Benchmark Tune

    Mesh-LLM/mesh-llm

    A skill your agent uses when running, debugging, interpreting, or documenting mesh-llm benchmark tune model-serving throughput trials, including choosing…

    3.5k GitHub stars~1.6k tokensUpdated today
    AI & LLM EngineeringAuto-check passed

More from lamm-mit/scienceclaw

All 85 skills in this repo
  • Fred Economic Data

    lamm-mit/scienceclaw

    Query FRED (Federal Reserve Economic Data) API for 800,000+ economic time series from 100+ sources.

    244 GitHub starsUsed in 4 repos~3k tokens
    Auto-check passed
  • Drug Research

    lamm-mit/scienceclaw

    Generates comprehensive drug research reports with compound disambiguation, evidence grading, and mandatory completeness sections.

    244 GitHub starsUsed in 3 repos~1.7k tokens
    Auto-check passed
  • Imaging Data Commons

    lamm-mit/scienceclaw

    Query and download public cancer imaging data from NCI Imaging Data Commons using idc-index.

    244 GitHub starsUsed in 5 repos~11k tokens
    Auto-check passed
  • Rowan

    lamm-mit/scienceclaw

    Cloud-based quantum chemistry platform with Python API. An agent skill from lamm-mit/scienceclaw.

    244 GitHub starsUsed in 4 repos~3.1k tokens
    Auto-check: warnings
  • Infographics

    lamm-mit/scienceclaw

    Create professional infographics using Nano Banana Pro AI with smart iterative refinement.

    244 GitHub starsUsed in 6 repos~4.4k tokens
    Auto-check: notes
  • Disease Research

    lamm-mit/scienceclaw

    Generate comprehensive disease research reports using 100+ ToolUniverse tools.

    244 GitHub stars~946 tokensUpdated 1 mo ago
    Auto-check passed

Works with

Questions about Uma

What does Uma do?

Run structure relaxation and phonon calculations using Meta's UMA (Universal Materials Accelerator) via fairchem. Uma is an agent skill from lamm-mit/scienceclaw.

When should I use Uma?

Uma fits situations like: tasks that involve Physical and earth sciences.

How do I install Uma in Claude Code?

Run `npx skills add lamm-mit/scienceclaw --skill uma -a claude-code`. Or copy the skill folder (skills/uma in lamm-mit/scienceclaw) into .claude/skills/uma in your project. Claude Code loads it when a task matches its description.

How do I install Uma in Codex?

Run `npx skills add lamm-mit/scienceclaw --skill uma -a codex`. Or copy the skill folder (skills/uma in lamm-mit/scienceclaw) into .agents/skills/uma in your project. Codex loads it when a task matches its description.

Can I use Uma in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add lamm-mit/scienceclaw --skill uma -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/uma, .gemini/skills/uma, .github/skills/uma and .opencode/skills/uma in your project.

What does Uma need to run?

Going by SKILL.md and its folder, Uma needs Python for the scripts in its folder, the command-line tools its instructions call (python3, pip and conda) and credentials named HF_TOKEN and MP_API_KEY. Our summary lists: Python 3; A credential in MP_API_KEY.

Does Uma access the network?

SKILL.md names 2 domains. As links in the text: huggingface.co and github.com. This is read from the text; nothing was executed.

Is Uma safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.

What licence does Uma use?

Uma is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Uma use?

About 3.5k tokens (SKILL.md is roughly 14k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Uma?

Skills that share tags, products or a category with Uma: ML Generative Adit (learningmatter-mit/AtomisticSkills, 175 stars), Mat Lammps Md (learningmatter-mit/AtomisticSkills, 175 stars), Optimize For GPU (majiayu000/claude-skill-registry, 666 stars) and Esmfold2 (JimLiu/science-skills, 227 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Uma?

lamm-mit (a GitHub user) maintains it in lamm-mit/scienceclaw, which has 244 GitHub stars. The repository holds 85 skills in this directory. The repository was last updated on August 21, 2026.

Source: lamm-mit/scienceclaw on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.