Price Elasticity Calculator
revfactory/harness-100
A methodology for calculating price elasticity and deriving optimal pricing.
Calculate the full elastic tensor and mechanical properties (bulk modulus, shear modulus, Young's modulus, Poisson's ratio) using MLIPs.
$ npx skills add learningmatter-mit/AtomisticSkills --skill mat-elasticity -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install learningmatter-mit/AtomisticSkills mat-elasticity --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/learningmatter-mit/AtomisticSkills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/mat-elasticity .claude/skills/mat-elasticity && rm -rf skills-srcUse ~/.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/
Install the "mat-elasticity" agent skill from https://github.com/learningmatter-mit/AtomisticSkills/tree/main/skills/mat-elasticity into .claude/skills/mat-elasticity/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "mat-elasticity", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/learningmatter-mit/AtomisticSkills/tree/main/skills/mat-elasticityType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add learningmatter-mit/AtomisticSkills --skill mat-elasticity -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install learningmatter-mit/AtomisticSkills mat-elasticity --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/learningmatter-mit/AtomisticSkills.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/mat-elasticity .agents/skills/mat-elasticity && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "mat-elasticity" agent skill from https://github.com/learningmatter-mit/AtomisticSkills/tree/main/skills/mat-elasticity into .agents/skills/mat-elasticity/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "mat-elasticity", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add learningmatter-mit/AtomisticSkills --skill mat-elasticity -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install learningmatter-mit/AtomisticSkills mat-elasticity --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/learningmatter-mit/AtomisticSkills.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/mat-elasticity .cursor/skills/mat-elasticity && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "mat-elasticity" agent skill from https://github.com/learningmatter-mit/AtomisticSkills/tree/main/skills/mat-elasticity into .cursor/skills/mat-elasticity/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "mat-elasticity", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/learningmatter-mit/AtomisticSkills.git --path skills/mat-elasticity--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add learningmatter-mit/AtomisticSkills --skill mat-elasticity -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install learningmatter-mit/AtomisticSkills mat-elasticity --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/learningmatter-mit/AtomisticSkills.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/mat-elasticity .gemini/skills/mat-elasticity && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "mat-elasticity" agent skill from https://github.com/learningmatter-mit/AtomisticSkills/tree/main/skills/mat-elasticity into .gemini/skills/mat-elasticity/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "mat-elasticity", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install learningmatter-mit/AtomisticSkills mat-elasticityInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add learningmatter-mit/AtomisticSkills --skill mat-elasticity -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/learningmatter-mit/AtomisticSkills.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/mat-elasticity .github/skills/mat-elasticity && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "mat-elasticity" agent skill from https://github.com/learningmatter-mit/AtomisticSkills/tree/main/skills/mat-elasticity into .github/skills/mat-elasticity/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "mat-elasticity", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add learningmatter-mit/AtomisticSkills --skill mat-elasticity -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install learningmatter-mit/AtomisticSkills mat-elasticity --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/learningmatter-mit/AtomisticSkills.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/mat-elasticity .opencode/skills/mat-elasticity && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "mat-elasticity" agent skill from https://github.com/learningmatter-mit/AtomisticSkills/tree/main/skills/mat-elasticity into .opencode/skills/mat-elasticity/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "mat-elasticity", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
mat-elasticityCalculate the full elastic tensor and mechanical properties (bulk modulus, shear modulus, Young's modulus, Poisson's ratio) using MLIPs.
Mat Elasticity is an agent skill from learningmatter-mit/AtomisticSkills. Calculate the full elastic tensor and mechanical properties (bulk modulus, shear modulus, Young's modulus, Poisson's ratio) using MLIPs.
Its SKILL.md is about 2.6k tokens, which your agent loads only when the skill is triggered. The skill folder holds 7 other files, including scripts (for example `examples/Cu/README.md`, `examples/Cu/elasticity_results.json` and `scripts/calculate_elasticity.py`).
The repository describes itself as: Integrating AtomisticSkills into Agentic IDEs (Cursor, Claude Code, Codex, Google Antigravity, Hermes Agent, etc). The licence is MIT.
6 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 7f2d86d. It shows what the files ask for, not the result of running them.
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.
Ships 1 file in scripts/ (Python), which the agent can run.
From the folder's file list and the shell code blocks in SKILL.md.
Links to these hosts (documentation or services it may open):
github.comFrom URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Mat Elasticity loads about 2.6k tokens when it runs. Until then it costs about 38 tokens; SKILL.md has 1,262 words of instructions outside code blocks.
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.
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.
The full file from learningmatter-mit/AtomisticSkills at commit 7f2d86d, republished under its MIT licence (© learningmatter-mit). 1,262 words, ~2,582 tokens.
.claude/skills/mat-elasticity/SKILL.md (or your agent's skills folder). This skill also uses 4 other files; get the full folder from GitHub.This skill calculates the full elastic tensor ($C_{ij}$) and derived mechanical properties of crystalline materials using Machine Learning Interatomic Potentials (MLIPs). It applies a set of normal and shear strains, computes the resulting stresses, and fits the elastic constants via least-squares regression using MatCalc's ElasticityCalc.
Calculate the elastic tensor ($C_{ij}$) of a material by applying systematic deformations (normal and shear strains), computing the stress response with an MLIP, and extracting the full Voigt elastic tensor along with:
MACEWrapper, MatGLWrapper, or FAIRCHEMWrapper).matcalc is included in the mlip and fairchem environments.Elastic tensor calculations require accurate stress predictions across multiple deformed structures.
[!IMPORTANT]
- Use OMAT or MatPES trained models: These models (e.g.,
MACE-OMAT-0-small,CHGNet-MatPES-PBE,TensorNet-MatPES-r2SCAN) are trained with stress labels and provide reliable stress predictions.- Stress accuracy is critical: Unlike EOS (which only uses energies), elasticity calculations directly depend on stress tensors. Models trained without stress labels may give poor results.
Refer to the foundation-potentials skill for more details.
To calculate the elastic tensor, use the calculate_elasticity.py script:
${CLAUDE_SKILL_DIR}/../../venv/run mlip python ${CLAUDE_SKILL_DIR}/scripts/calculate_elasticity.py \
--structure path/to/structure.cif \
--model_type mace \
--model_name MACE-OMAT-0-small \
--norm_strains -0.01 -0.005 0.005 0.01 \
--shear_strains -0.06 -0.03 0.03 0.06 \
--relax_structure \
--output_dir research/my_folder/elasticityKey Parameters:
--norm_strains: Normal strain magnitudes applied (default: ±0.5%, ±1.0%)--shear_strains: Shear strain magnitudes applied (default: ±3%, ±6%)--relax_structure: Relax the structure before applying strains (recommended)--relax_deformed / --no-relax_deformed (default on): re-minimise the ions inside each deformed cell, with the cell held fixed. See Relaxed-ion versus clamped-ion below — this flag selects which of two physically distinct quantities you get, and the difference is not small.--fmax: Force convergence tolerance for relaxation (default: 0.1 eV/Å)[!TIP]
- For metals, the default strain magnitudes work well.
- For soft materials (polymers, molecular crystals), reduce strains to stay in the linear regime.
- For very hard materials (diamond, SiC), the default strains are fine since deformations remain small.
elasticity_results.json: Full results including:elastic_tensor_GPa: 6×6 Voigt elastic tensor in GPabulk_modulus_vrh_GPa: Bulk modulus (VRH) in GPashear_modulus_vrh_GPa: Shear modulus (VRH) in GPayoungs_modulus_GPa: Young's modulus in GPapoissons_ratio: Poisson's ratio (dimensionless)residuals_sum: Residual from the least-squares fit (lower is better)See examples/Cu/ for a copper elastic tensor calculation using MACE-OMAT-0-small.
${CLAUDE_SKILL_DIR}/../../venv/run mlip python ${CLAUDE_SKILL_DIR}/scripts/calculate_elasticity.py \
--structure ${CLAUDE_SKILL_DIR}/examples/Cu/Cu.cif \
--model_type mace \
--model_name MACE-OMAT-0-small \
--output_dir research/elasticity/Cuvenv/run <venv> ...):mlip for MACE and MatGL/CHGNet modelsfairchem for FairChem/UMA models--relax_structure (default on) relaxes the input cell before the strain scan, so the scan is centred on a stress-free reference — elastic constants are defined about zero stress, so this matters. --relax_deformed (default on) controls the per-deformation ion relaxation, which selects between two different physical quantities; see below.--symmetry flag enables it). This means all 21 independent components are fitted independently.Applying a strain to a crystal leaves internal degrees of freedom that the strain does not itself fix — the fractional coordinates of atoms on general Wyckoff positions. What you do with them decides which elastic constant you compute:
--relax_deformed (default) | --no-relax_deformed | |
|---|---|---|
| ions in the deformed cell | re-minimised at fixed cell | carried rigidly by the affine strain |
| quantity | relaxed-ion, a.k.a. equilibrium | clamped-ion, a.k.a. frozen-ion |
| physical meaning | second derivative of the energy minimised over the internal coordinates — what a real crystal exhibits | second derivative at frozen internal coordinates |
| cost | one ionic relaxation per deformation | one energy/stress evaluation per deformation |
Relaxed-ion is the default here because it is the macroscopic elastic constant: it is
what experiment measures and what the Materials Project and atomate2 elastic
workflows compute (ionic relaxation at fixed cell for every deformation). Note that
matcalc's own ElasticityCalc defaults relax_deformed_structures=False, so
inheriting that default silently gives the clamped-ion answer instead.
Clamped-ion is systematically stiffer, because freezing the ions suppresses the non-affine internal displacement that would otherwise relieve part of the strain. It is a reasonable fast screening choice, and it is exact only where symmetry leaves no internal degrees of freedom to relax (every atom on a special position, as in B1 or B2 binaries). Otherwise the gap is real: for Pnma CaMgSi it is 1.4% on the bulk modulus but 7.5% on the shear modulus, 7.3% on the Poisson ratio and 37% on the anisotropy index. Report which one you used.
Beyond the tensor and the VRH averages, the script reports the standard post-processing of an elastic tensor. Two of these are easy to get wrong by hand:
A^U = 5 G_V/G_R + B_V/B_R - 6 (Ranganathan &
Ostoja-Starzewski, PRL 101, 055504 (2008)), zero only for an isotropic crystal.
It needs the Voigt and Reuss bounds kept separate, so it cannot be recovered from the
VRH averages; the Voigt and Reuss bulk and shear moduli are reported alongside it.E(n) = 1 / (S_ijkl n_i n_j n_k n_l): along
[100], [010], [001], plus the global minimum and maximum over all directions
with the directions they occur in. Two traps here. Expanding the Voigt compliance to
S_ijkl requires a factor of 1/4 on shear-shear entries (S_1212 = S_66/4, not
S_66) and 1/2 on normal-shear — the stiffness expands with no factors, so the two
cannot share a helper. And the extrema of an anisotropic crystal need not lie on a
crystal axis: for CaMgSi the stiffest direction sits ~40° off a in the a–c
plane and is 13% stiffer than the stiffest axis, so scanning only the axes is wrong.Theta_D = (hbar/k_B)(6 pi^2 N/V)^(1/3) v_m. The mean is the harmonic-cube
mean over one longitudinal and two transverse branches, not the arithmetic mean of the
two branches (which runs ~20% high).G(n,m) = 1/(4 S_ijkl n_i m_j n_k m_l) with m in the plane normal to n. This is a
genuinely two-dimensional search — over the sphere and over the angle within each
plane — where Young's modulus needs only the sphere. min(C44, C55, C66) is not a
substitute: on an orthorhombic intermetallic it sits ~26% high.--acoustic_direction, from the eigenvalues of
the Christoffel matrix Gamma_ik(n) = C_ijkl n_j n_l. One quasi-longitudinal and two
quasi-transverse branches, and in an anisotropic crystal the transverse pair is not
degenerate — the slow branch can run >10% below the isotropic transverse velocity, so
the isotropic moduli cannot reproduce these.G/B.--pressure <GPa> relaxes cell and ions against a hydrostatic load first, so the whole
analysis is reported about a pressure-loaded reference. Two things to know:
FrechetCellFilter takes scalar_pressure in eV/ų; the flag is in GPa and
converts internally. Passing GPa straight into ASE applies ~160× the intended load.--pressure performs the loaded
relaxation itself and then disables relax_structure — otherwise the scan would be
re-centred back on the zero-pressure cell.Author: Bowen Deng Contact: GitHub @learningmatter-mit
© learningmatter-mit, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 4 other files (scripts) in skills/mat-elasticity of learningmatter-mit/AtomisticSkills.
Open the folder on GitHubat commit 7f2d86d
Mat Elasticity 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.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Mat Elasticity this skilllearningmatter-mit/AtomisticSkills | 175 | — | ~2.6k | Automated safety check: Pass | MIT | |
| Price Elasticity Calculatorrevfactory/harness-100 | 1.3k | — | ~1.3k | Automated safety check: Pass | Apache-2.0 | |
| CSS At Propertythedaviddias/Front-End-Checklist | 74k | — | ~602 | Automated safety check: Pass | MIT | |
| Logical Propertiesthedaviddias/Front-End-Checklist | 74k | — | ~526 | Automated safety check: Pass | MIT | |
| Price Elasticity Calculatorrevfactory/harness-100 | 1.3k | — | ~816 | Automated safety check: Pass | Apache-2.0 | |
| CSS Custom Propertiesthedaviddias/Front-End-Checklist | 74k | — | ~492 | Automated safety check: Pass | MIT |
revfactory/harness-100
A methodology for calculating price elasticity and deriving optimal pricing.
thedaviddias/Front-End-Checklist
A skill your agent uses when implementing animated gradients, complex CSS transitions that involve custom property values, or building a typed design token system where custom property misuse should…
thedaviddias/Front-End-Checklist
A skill your agent uses when reviewing stylesheets, component styles, and responsive behavior related to Use CSS logical properties for i18n and RTL support.
revfactory/harness-100
가격 탄력성을 계산하고 최적 가격을 도출하는 방법론. An agent skill from revfactory/harness-100.
thedaviddias/Front-End-Checklist
A skill your agent uses when reviewing stylesheets, component styles, and responsive behavior related to Use CSS custom properties for design tokens.
sickn33/agentic-awesome-skills
Calculates and validates end-of-line (EOL, SEOL, DEOL, TEOL) resistor loops for intrusion alarm panels (Honeywell, DSC, Paradox, Bosch) with wire gauge drop and state tables.
learningmatter-mit/AtomisticSkills
Define a docking search box (center coordinates + box dimensions in Angstroms) from a co-crystal ligand, binding-site residues, or a saved JSON specification.
learningmatter-mit/AtomisticSkills
Build a solvated, charge-neutralized protein-ligand complex for OpenMM molecular dynamics simulation.
learningmatter-mit/AtomisticSkills
Identify and rank ligandable pockets on a protein structure or model using geometry (fpocket) or an ML predictor (P2Rank).
learningmatter-mit/AtomisticSkills
Calculate homolytic and heterolytic bond dissociation energies (BDEs) for all single bonds in a molecule using MLIPs with RDKit fragmentation.
learningmatter-mit/AtomisticSkills
Generate molecular conformers with RDKit ETKDG, relax with MLIPs, and rank by energy with Boltzmann weighting.
learningmatter-mit/AtomisticSkills
Query multiple MOF databases (QMOF via MPContribs; ARC-MOF DB7/Majumdar et al.
Calculate the full elastic tensor and mechanical properties (bulk modulus, shear modulus, Young's modulus, Poisson's ratio) using MLIPs. Mat Elasticity is an agent skill from learningmatter-mit/AtomisticSkills. Calculate the full elastic tensor and mechanical properties (bulk modulus, shear modulus, Young's modulus, Poisson's ratio) using MLIPs.
Run `npx skills add learningmatter-mit/AtomisticSkills --skill mat-elasticity -a claude-code`. Or copy the skill folder (skills/mat-elasticity in learningmatter-mit/AtomisticSkills) into .claude/skills/mat-elasticity in your project. Claude Code loads it when a task matches its description.
Run `npx skills add learningmatter-mit/AtomisticSkills --skill mat-elasticity -a codex`. Or copy the skill folder (skills/mat-elasticity in learningmatter-mit/AtomisticSkills) into .agents/skills/mat-elasticity in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add learningmatter-mit/AtomisticSkills --skill mat-elasticity -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/mat-elasticity, .gemini/skills/mat-elasticity, .github/skills/mat-elasticity and .opencode/skills/mat-elasticity in your project.
Going by SKILL.md and its folder, Mat Elasticity needs Python for the scripts in its folder. Our summary lists: Python 3.
SKILL.md names 1 domain. As links in the text: github.com. This is read from the text; nothing was executed.
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.
Mat Elasticity is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.6k tokens (SKILL.md is roughly 10k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Mat Elasticity: Price Elasticity Calculator (revfactory/harness-100, 1.3k stars), CSS At Property (thedaviddias/Front-End-Checklist, 74k stars), Logical Properties (thedaviddias/Front-End-Checklist, 74k stars) and Price Elasticity Calculator (revfactory/harness-100, 1.3k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
learningmatter-mit (a GitHub organization) maintains it in learningmatter-mit/AtomisticSkills, which has 175 GitHub stars. The repository holds 129 skills in this directory. The repository was last updated on October 6, 2026.
Source: learningmatter-mit/AtomisticSkills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.