skills/structure-enumeration/SKILL.md
Generate candidate crystal structures by element substitution in prototype structures
npx skillsauth add lamm-mit/scienceclaw structure-enumerationInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Generate candidate crystal structures by substituting elements in a prototype structure. Supports three prototype sources: Materials Project lookup, local CIF files, or building from spacegroup + Wyckoff positions.
enumerate_structures.py — Substitute elements in a prototypeFrom Materials Project (for ambient-pressure phases):
python3 {baseDir}/scripts/enumerate_structures.py \
--prototypes LaH3,CaH2 \
--metals Y,Ca,Sc,Ce \
--format json
From Wyckoff positions (for high-pressure or hypothetical phases not in MP):
python3 {baseDir}/scripts/enumerate_structures.py \
--wyckoff '[{"name":"LaH10","spacegroup":225,"lattice":{"a":5.1},"species":["La","H","H"],"coords":[[0,0,0],[0.25,0.25,0.25],[0.118,0.118,0.118]]}]' \
--metals Y,Ca,Sc,Ce \
--format json
Multiple prototypes via Wyckoff:
python3 {baseDir}/scripts/enumerate_structures.py \
--wyckoff '[{"name":"LaH10","spacegroup":225,"lattice":{"a":5.1},"species":["La","H","H"],"coords":[[0,0,0],[0.25,0.25,0.25],[0.118,0.118,0.118]]},{"name":"CaH6","spacegroup":229,"lattice":{"a":3.54},"species":["Ca","H"],"coords":[[0,0,0],[0.25,0,0.5]]}]' \
--metals Y,Sc,Ce,Ba \
--format json
| Parameter | Description |
|-----------|-------------|
| --prototypes | Comma-separated formulas to fetch from Materials Project (e.g. LaH3,CaH2). Only works for phases in MP. |
| --mp-ids | Comma-separated Materials Project IDs (e.g. mp-1234,mp-5678) |
| --prototype-files | Comma-separated paths to local CIF/POSCAR files |
| --wyckoff | JSON array of prototype specs for building from spacegroup + Wyckoff positions (see format below). Use this for high-pressure phases not in MP. |
| --metals | Required. Comma-separated target metals for substitution (e.g. Y,Ca,Sc,Ce) |
| --output-dir | Directory for output CIF files (default: ~/.scienceclaw/enumerated_structures) |
| --format | summary | json |
| --dry-run | Show plan without generating structures |
Each prototype is a JSON object with:
{
"name": "LaH10",
"spacegroup": 225,
"lattice": {"a": 5.1},
"species": ["La", "H", "H"],
"coords": [[0,0,0], [0.25,0.25,0.25], [0.118,0.118,0.118]]
}
name: label for the prototypespacegroup: international space group numberlattice: {"a": ...} for cubic, {"a": ..., "c": ...} for hexagonalspecies: element at each Wyckoff site (first non-H element is the metal site for substitution)coords: fractional coordinates for each Wyckoff site| Prototype | SG | SG# | Lattice | Species | Coordinates | |-----------|-----|-----|---------|---------|-------------| | LaH10 (clathrate) | Fm-3m | 225 | a=5.1 | La, H, H | [0,0,0], [0.25,0.25,0.25], [0.118,0.118,0.118] | | CaH6 (sodalite) | Im-3m | 229 | a=3.54 | Ca, H | [0,0,0], [0.25,0,0.5] | | H3S | Im-3m | 229 | a=3.09 | S, H | [0,0,0], [0.5,0,0.5] | | YH9 | P63/mmc | 194 | a=3.6, c=5.5 | Y, H, H | [0,0,0.25], [0.167,0.333,0.25], [0.167,0.333,0.583] |
_prototype suffix)--output-dir{
"status": "success",
"output_dir": "/home/user/.scienceclaw/enumerated_structures",
"prototypes_used": ["LaH10", "CaH6"],
"metals": ["Y", "Ca", "Sc"],
"total_generated": 6,
"structures": [
{
"label": "YH10_from_LaH10",
"formula": "YH10",
"prototype": "LaH10",
"metal": "Y",
"n_atoms": 44,
"cif_path": "/home/user/.scienceclaw/enumerated_structures/YH10_from_LaH10.cif"
}
]
}
tools
Onboard and manage Paperclip AI for research-paper knowledge and agent orchestration
development
Perform AI-powered web searches with real-time information using Perplexity models via LiteLLM and OpenRouter. This skill should be used when conducting web searches for current information, finding recent scientific literature, getting grounded answers with source citations, or accessing information beyond the model knowledge cutoff. Provides access to multiple Perplexity models including Sonar Pro, Sonar Pro Search (advanced agentic search), and Sonar Reasoning Pro through a single OpenRouter API key.
testing
Generate a structured scientific PDF report from a JSON description. Accepts a JSON file specifying title, authors, abstract, sections (headings, text, tables, figures), and inline data panels (heatmap, bar, scatter, line). Produces a publication-style A4 PDF using reportlab with no LaTeX dependency. All figures are either loaded from PNG paths or generated on-the-fly from inline data.
development
Execute arbitrary Python code and return stdout. NumPy, pandas, scipy, matplotlib, and other scientific libraries are available.