Cantera Ignition Delay
K-Dense-AI/scientific-agent-skills
Runs Cantera constant-volume or constant-pressure ignition simulations and reports temperature-based ignition delay with mechanism provenance and checks.
Create and modify physics simulations using the Elodin Python SDK.
$ npx skills add elodin-sys/elodin --skill elodin-simulation -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install elodin-sys/elodin elodin-simulation --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/elodin-sys/elodin.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.cursor/skills/elodin-simulation .claude/skills/elodin-simulation && 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 "elodin-simulation" agent skill from https://github.com/elodin-sys/elodin/tree/main/.cursor/skills/elodin-simulation into .claude/skills/elodin-simulation/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "elodin-simulation", 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/elodin-sys/elodin/tree/main/.cursor/skills/elodin-simulationType 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 elodin-sys/elodin --skill elodin-simulation -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install elodin-sys/elodin elodin-simulation --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/elodin-sys/elodin.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.cursor/skills/elodin-simulation .agents/skills/elodin-simulation && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "elodin-simulation" agent skill from https://github.com/elodin-sys/elodin/tree/main/.cursor/skills/elodin-simulation into .agents/skills/elodin-simulation/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "elodin-simulation", 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 elodin-sys/elodin --skill elodin-simulation -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install elodin-sys/elodin elodin-simulation --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/elodin-sys/elodin.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.cursor/skills/elodin-simulation .cursor/skills/elodin-simulation && 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 "elodin-simulation" agent skill from https://github.com/elodin-sys/elodin/tree/main/.cursor/skills/elodin-simulation into .cursor/skills/elodin-simulation/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "elodin-simulation", 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/elodin-sys/elodin.git --path .cursor/skills/elodin-simulation--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 elodin-sys/elodin --skill elodin-simulation -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install elodin-sys/elodin elodin-simulation --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/elodin-sys/elodin.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.cursor/skills/elodin-simulation .gemini/skills/elodin-simulation && 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 "elodin-simulation" agent skill from https://github.com/elodin-sys/elodin/tree/main/.cursor/skills/elodin-simulation into .gemini/skills/elodin-simulation/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "elodin-simulation", 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 elodin-sys/elodin elodin-simulationInstalls 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 elodin-sys/elodin --skill elodin-simulation -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/elodin-sys/elodin.git skills-src && mkdir -p .github/skills && cp -r skills-src/.cursor/skills/elodin-simulation .github/skills/elodin-simulation && 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 "elodin-simulation" agent skill from https://github.com/elodin-sys/elodin/tree/main/.cursor/skills/elodin-simulation into .github/skills/elodin-simulation/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "elodin-simulation", 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 elodin-sys/elodin --skill elodin-simulation -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install elodin-sys/elodin elodin-simulation --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/elodin-sys/elodin.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.cursor/skills/elodin-simulation .opencode/skills/elodin-simulation && 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 "elodin-simulation" agent skill from https://github.com/elodin-sys/elodin/tree/main/.cursor/skills/elodin-simulation into .opencode/skills/elodin-simulation/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "elodin-simulation", 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.
elodin-simulationCreate and modify physics simulations using the Elodin Python SDK.
Elodin Simulation is an agent skill from elodin-sys/elodin. Create and modify physics simulations using the Elodin Python SDK. Use when writing or editing simulation Python files, defining components or systems, spawning entities, configuring 6DOF physics, setting up visualization or assets (GLB, schematics, skyboxes, terrains), or integrating with SITL/HITL workflows.
Its SKILL.md is about 4.1k tokens, which your agent loads only when the skill is triggered. The skill folder holds 2 other files (for example `api-reference.md` and `examples.md`).
It sits in Research & Science, covering Physical and earth sciences. It works with Python. The repository describes itself as: Elodin simulation and flight software monorepo. The licence is Apache-2.0.
4 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 3bc1d99. 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.
Shell commands in SKILL.md call:
gitnixjustuvpippythonFrom the folder's file list and the shell code blocks in SKILL.md.
Links to these hosts (documentation or services it may open):
docs.elodin.systemsFrom 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.
Elodin Simulation loads about 4.1k tokens when it runs. Until then it costs about 82 tokens; SKILL.md has 1,185 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); files beside SKILL.md are not scanned.
The full file from elodin-sys/elodin at commit 3bc1d99, republished under its Apache-2.0 licence (© elodin-sys). 1,185 words, ~4,086 tokens.
.claude/skills/elodin-simulation/SKILL.md (or your agent's skills folder). This skill also uses 2 other files; get the full folder from GitHub.Elodin is a JAX-based simulation platform for aerospace and physical systems. Simulations are Python scripts that define a World, spawn entities with components, compose systems, and run.
pip install -U elodin # Released SDK
elodin editor sim.py # Run with 3D visualization
elodin run sim.py # Headless execution
python sim.py bench --profile # Performance profilingEvery simulation follows this pattern:
import elodin as el
import jax.numpy as jnp
# 1. Create world
w = el.World()
# 2. Spawn entities with archetypes
w.spawn(el.Body(
world_pos=el.SpatialTransform(linear=jnp.array([0.0, 0.0, 10.0])),
inertia=el.SpatialInertia(mass=1.0),
), name="ball")
# 3. Define systems
@el.map
def gravity(f: el.Force, inertia: el.Inertia) -> el.Force:
return f + el.SpatialForce(linear=inertia.mass() * jnp.array([0.0, 0.0, -9.81]))
# 4. Compose and run
sys = el.six_dof(sys=gravity, integrator=el.Integrator.Rk4)
w.run(sys, simulation_rate=120.0)Data containers defined with typing.Annotated + el.Component:
import typing as ty
Wind = ty.Annotated[
jax.Array,
el.Component("wind", el.ComponentType(el.PrimitiveType.F64, (3,)),
metadata={"element_names": "x,y,z"}),
]Built-in spatial types (WorldPos, WorldVel, Force, Inertia, WorldAccel) already carry component metadata — no ComponentType needed.
Group components into spawnable bundles:
@el.dataclass
class Satellite(el.Archetype):
world_pos: el.WorldPos
world_vel: el.WorldVel
inertia: el.Inertia
reaction_wheels: ReactionWheelCmdel.Body is the built-in archetype providing WorldPos, WorldVel, Inertia, Force, WorldAccel.
Three decorator levels — choose the simplest that fits:
| Decorator | Use when | Graph queries? |
|---|---|---|
@el.map | Simple per-entity transform, vectorized | No |
@el.map_seq | Need jax.lax.cond short-circuit behavior | No |
@el.system | Need Query.map, GraphQuery.edge_fold, or multi-query | Yes |
@el.map
def drag(vel: el.WorldVel) -> el.Force:
return el.SpatialForce(linear=-0.01 * vel.linear())
@el.system
def gravity(graph: el.GraphQuery[GravityEdge],
q: el.Query[el.WorldPos, el.Inertia]) -> el.Query[el.Force]:
return graph.edge_fold(q, q, el.Force, el.SpatialForce(), compute_gravity)Chain systems with the pipe operator — order matters:
sys = sensors | kalman_filter | control | el.six_dof(sys=effectors)el.six_dof() integrates forces/torques into position and velocity:
el.six_dof(
sys=effectors, # Systems computing el.Force
integrator=el.Integrator.Rk4, # or Integrator.SemiImplicit
time_step=1/300.0, # Optional: override simulation step
)Inertia is body-frame; all other quantities are world-frame.
Model relationships (gravity, constraints, springs) between entities:
GravityEdge = ty.Annotated[el.Edge, el.Component("gravity_edge")]
w.spawn(el.Archetype(edge=GravityEdge(el.Edge(body_a_id, body_b_id))), name="a_to_b")
@el.system
def gravity(graph: el.GraphQuery[GravityEdge],
q: el.Query[el.WorldPos, el.Inertia]) -> el.Query[el.Force]:
return graph.edge_fold(
left_query=q, right_query=q,
return_type=el.Force, init_value=el.SpatialForce(),
fold_fn=lambda acc, pos_a, m_a, pos_b, m_b: acc + compute(pos_a, m_a, pos_b, m_b),
)Elodin uses Featherstone spatial vectors. Key types:
| Type | Shape | Represents |
|---|---|---|
SpatialTransform | (7,) | Quaternion (4) + position (3) |
SpatialMotion | (6,) | Angular vel (3) + linear vel (3) |
SpatialForce | (6,) | Torque (3) + force (3) |
SpatialInertia | (7,) | Inertia diagonal (3) + mass (1) + padding (3) |
Quaternion operations: Quaternion.from_axis_angle(), q @ vector (rotate), q.inverse(), q.integrate_body(omega).
assets/)Simulations load meshes, schematics, skyboxes, themes, and terrains from a single asset root. Paths in KDL (glb path=…, icon path=…) are relative to that root.
Where it lives (resolution order):
$ELODIN_ASSETS — explicit override (absolute or cwd-relative)<sim_entry_dir>/assets — next to main.py / the sim entrypoint<cwd>/assetsassets/ directoryRepo examples usually run from the Elodin checkout root and use the shared tree at assets/ (many .glb files live at the root of that tree). For a standalone sim, put an assets/ folder beside main.py, or set ELODIN_ASSETS.
When the sim records with db_path=… or ELODIN_DB_PATH, that tree is ingested once into {db}/assets/ and KDL local paths become db:… for portable replay. See the elodin-db skill and DB Asset Server.
Only create the subtrees you need. Keys preserve subdirectories; there is no hard schema beyond these conventions:
assets/
# GLB meshes — flat at root (repo default) or under meshes/ / models/
f22.glb
meshes/rocket.glb # also fine; reference as path="meshes/rocket.glb"
models/jet.glb # docs/tests often use models/
schematics/ # KDL panels / window sub-schematics
main.kdl # conventional active schematic key after ingest
telemetry.kdl # window path="telemetry.kdl" → stored under schematics/
skyboxes/
manifest.ron # required for named skybox name="…"
desert_night.cubemap.ktx2
color_schemes/ # optional UI themes (not copied into DB by name alone)
default_dark.json
default_light.json
terrains/
planar/<region>/ # world_mesh region="<region>"
region.toml # optional; built-in presets exist
config.tc # preprocess output
data/height/<tile>.bin
data/albedo/<tile>.bin
spherical/ # globe-style terrain| Folder | Purpose | Referenced by |
|---|---|---|
(root) / meshes/ / models/ | GLB / custom .png icons | glb path="…", icon path="…" |
schematics/ | KDL schematics & window subtrees | Active key schematics/main.kdl; window path="…" |
skyboxes/ | Cubemap skyboxes | skybox name="…" + manifest.ron |
color_schemes/ | Editor theme JSON | theme scheme=… (local only; built-ins need no files) |
terrains/ | Planar / spherical world_mesh atlases | world_mesh "death_valley" etc. |
Agent tips:
path="edu-450-v2-drone.glb"), not filesystem paths outside it..elodin-ingested and __index__/ are DB-internal.sphere, box, …) and icon builtin=… need no asset files.ELODIN_ASSETS before changing KDL.Define 3D objects and camera views in KDL files or inline:
object_3d ball.world_pos {
sphere radius=0.2 { color 25 50 255 }
}
object_3d aircraft.world_pos {
glb path="f22.glb" scale=0.01 rotate="(0, 90, 0)"
}
viewport name=Chase pos="drone.world_pos.translate(-5, -5, 3)" look_at="drone.world_pos"cam = el.Panel.viewport(track_entity=sat_id, fov=45.0, hdr=True, name="3D")
graph = el.Panel.graph(el.GraphEntity(sat_id, *el.Component.index(el.WorldPos)[:4]), name="Position")
w.spawn(el.Panel.vsplit(cam, graph), name="main_view")The reference SITL example is examples/betaflight-sitl/ (Betaflight flight controller in lockstep over UDP, recorded to a portable DB whose assets/ tree makes it replayable anywhere).
Use pre_step/post_step callbacks with StepContext for lockstep synchronization:
def post_step(tick: int, ctx: el.StepContext):
data = ctx.component_batch_operation(reads=["drone.accel", "drone.gyro"])
motors = flight_controller.step(accel=data["drone.accel"], gyro=data["drone.gyro"])
ctx.write_component("drone.motor_command", motors)
w.run(sys, simulation_rate=1000.0, post_step=post_step, db_path="sitl_data")Mark components as externally controlled to prevent simulation overwrite:
ThrustCmd = ty.Annotated[jax.Array,
el.Component("thrust_cmd", el.ComponentType.F64, metadata={"external_control": "true"})]The Cranelift backend transparently interns baked StableHLO constants over 1 MB. For large immutable lookup tables, aero maps, ephemerides, terrain grids, or other constants, capture the JAX array in the system closure:
aero_table = jnp.asarray(aero_grid)
@el.map
def aero_force(v: el.WorldVel, f: el.Force) -> el.Force:
coeff = aero_table[0, 0]
return f + el.SpatialForce(linear=-coeff * v.linear())During StableHLO parsing, large dense<"0x..."> blobs are moved into the content-addressed mmap cache. Multiple processes compiling the same constant map the same cache file, so Monte Carlo campaigns avoid paying N copies of the table in resident memory.
For campaign structure and memory reporting, use the native campaign runner:
elodin monte-carlo run examples/monte-carlo/main.py \
--campaign examples/monte-carlo/campaign.toml \
--spec examples/monte-carlo/spec.toml \
--out dbs/monte-carlo-demoDeclare tunable parameters with el.monte_carlo.params_spec(...), read the
current row with el.monte_carlo.params(...), and optionally emit scalar outputs
with el.monte_carlo.result(...). Each run writes a separate DB path. The
runner pins ELODIN_CACHE_DIR for all workers and auto-sizes workers/runtime
threads from available CPUs when unset. For SITL campaigns, register external
controllers with world.recipe(...); the campaign runner injects worker-slot
ports into every process via ELODIN_MONTE_CARLO_* environment variables.
Campaign startup reaps pre-existing elodin and elodin-db processes by
default to avoid stale editor/database sessions colliding with worker ports;
use --keep-existing only when intentionally managing those processes yourself.
Per-run stdout/stderr lands in runs/<run_id>/logs/, and the runner injects
ELODIN_SIM_SUMMARY_JSON so each run writes a structured timing snapshot. At
campaign end, the native runner prints and writes campaign_summary.txt with
an aggregated version of the standard elodin simulation summary block plus
CPU/RAM/disk rollups. Use --memory-probe only for shared-constant PSS proof
runs; it enables expensive /proc/<pid>/smaps sampling and writes
memory.json/processes.csv.
| Mode | Command | Backend | Use |
|---|---|---|---|
| Editor (GUI) | elodin editor sim.py | cranelift (default) | Development with 3D visualization |
| Headless | elodin run sim.py | cranelift (default) | CI/CD, batch processing |
| JAX backend | w.run(sys, backend="jax-cpu") | JAX | When cranelift doesn't support certain JAX ops |
| GPU backend | w.run(sys, backend="jax-gpu") | JAX GPU | Large parallel workloads |
| JAX-only | w.to_jax(sys) | JAX | RL training, jax.vmap batching |
| Compiled | w.build(sys) | cranelift (default) | Maximum performance |
| Real-time | w.run(sys, simulation_rate=120.0, generate_real_time=True) | cranelift (default) | Match wall-clock time |
| DB-connected | w.run(sys, db_addr="0.0.0.0:2240") | cranelift (default) | External clients + Editor |
Backend selection: The backend parameter defaults to "cranelift" — a pure-Rust StableHLO JIT that runs the entire tick as a single native function call, with no Python in the hot loop. Use "jax-gpu" for high-parallelism workloads that benefit from GPU execution. For tiny worlds, the CPU cranelift backend is usually fastest because kernel launch and device-transfer overhead dominates compute.
Use examples/n-body/main.py as the canonical benchmark. It runs the supported backends (cranelift, jax-cpu, jax-gpu) side-by-side:
nix develop --command ELODIN_BACKEND=jax-gpu elodin run examples/n-body/main.pyTo compare backends, run the same command with ELODIN_BACKEND set to each of:
cranelift, jax-cpu, jax-gpu.
from elodin.j2 import J2 # Simple oblate Earth
from elodin.egm08 import EGM08 # High-fidelity spherical harmonics
model = EGM08(max_degree=64) # <2.5ms at degree <=250
force = model.compute_field(x, y, z, mass)When changes to the simulation pipeline (Noxpr graph, cranelift-mlir compilation, shape handling, etc.) might alter numeric output, use a database-export diff to detect regressions. The process:
git stash && git checkout main
nix develop
just install
# Run the sim, writing to a dedicated DB path
BALL_DB_PATH=dbs/ball-main uv run examples/ball/main.py bench --ticks 2000
# Export to flat CSVs (--flatten splits vector columns)
elodin-db export --format csv --flatten --output exports/ball-main dbs/ball-mainThe BALL_DB_PATH env var is read by examples/ball/main.py and passed to
world().run(..., db_path=...). Other examples can be wired the same way.
git checkout <branch> && git stash pop
nix develop
just install
BALL_DB_PATH=dbs/ball-branch uv run examples/ball/main.py bench --ticks 2000
elodin-db export --format csv --flatten --output exports/ball-branch dbs/ball-branch# Quick pass/fail for every physics component:
for f in ball.world_pos.csv ball.world_vel.csv ball.force.csv ball.wind.csv ball.world_accel.csv; do
echo -n "$f: "
diff <(cut -d',' -f2- exports/ball-main/$f) \
<(cut -d',' -f2- exports/ball-branch/$f) | wc -l
doneZero diff lines = bit-for-bit identical physics. Non-zero tells you which component diverged. Inspect the first differing row to find the tick where divergence starts and whether it is a large discrete jump (logic bug) or gradual drift (floating-point).
| Pattern | Likely cause |
|---|---|
| All zeros | Physics preserved -- safe to land |
| One component diverges at tick 1 | Compilation or shape bug -- the compiled VMFB computes something different |
| Gradual drift accumulating over ticks | Floating-point evaluation order changed (e.g., different StableHLO structure) |
Only wind diverges | Random-key generation changed (seed dtype, PRNG semantics) |
--ticks 2000 (not 1200) to expose drifts that accumulate.ball -- single-entity (batch1 path), uses el.Seed (U64) + random.keydrone -- multi-entity, uses sensor_tick (U64)cube-sat -- JAX backend (backend="jax-cpu"), covers the non-IREE pathELODIN_IREE_DUMP_DIR=/tmp/debug before running.rm -rf dbs/ball-main dbs/ball-branch exports/.© elodin-sys, 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
SKILL.md and 2 other files in .cursor/skills/elodin-simulation of elodin-sys/elodin.
Open the folder on GitHubat commit 3bc1d99
Elodin Simulation 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 |
|---|---|---|---|---|---|---|
| Elodin Simulation this skillelodin-sys/elodin | 547 | — | ~4.1k | Automated safety check: Pass | Apache-2.0 | |
| Cantera Ignition DelayK-Dense-AI/scientific-agent-skills | 48k | 2 repos | ~2.2k | Automated safety check: Pass | MIT | |
| AstropyzLanqing/codex-claude-academic-skills | 4.6k | 14 repos | ~2.9k | Automated safety check: Pass | BSD-3-Clause | |
| Climate DsHongjian01/ClimWorkflow | 102 | — | ~1.2k | Automated safety check: Pass | Custom licence | |
| FluidSim CFD Simulationsdavila7/claude-code-templates | 32k | 10 repos | ~2.3k | Automated safety check: Pass | MIT | |
| Chemgraphargonne-lcf/ChemGraph | 162 | — | ~743 | Automated safety check: Pass | Apache-2.0 |
K-Dense-AI/scientific-agent-skills
Runs Cantera constant-volume or constant-pressure ignition simulations and reports temperature-based ignition delay with mechanism provenance and checks.
zLanqing/codex-claude-academic-skills
Comprehensive Python library for astronomy and astrophysics.
Hongjian01/ClimWorkflow
ClimWorkflow climate-data workflow: map a natural-language climate goal to Plan-Agent / Data-Agent / Coding-Agent roles, then call the 7-tool DAG (optional read-only validate after report).
davila7/claude-code-templates
Runs computational fluid dynamics simulations with the FluidSim Python framework: 2D and 3D Navier-Stokes, shallow water and stratified flow solvers plus output analysis.
argonne-lcf/ChemGraph
Use ChemGraph Python and CLI workflows, agent-written batch scripts, and attached chemistry MCP tools.
K-Dense-AI/scientific-agent-skills
Rowan is a cloud-native molecular modeling and medicinal-chemistry workflow platform with a Python API.
elodin-sys/elodin
Compare two git branches (usually the current branch vs main) by running every example on each, capturing exit codes, logs, and editor screenshots, then diffing the results.
elodin-sys/elodin
Work with the Cranelift JIT MLIR backend. An agent skill from elodin-sys/elodin.
elodin-sys/elodin
Work with Elodin-DB, the time-series telemetry database. An agent skill from elodin-sys/elodin.
elodin-sys/elodin
Develop and contribute to the Elodin codebase. An agent skill from elodin-sys/elodin.
elodin-sys/elodin
Contribute to the Elodin Editor, the 3D viewer and graphing tool.
elodin-sys/elodin
Run the Elodin Editor without a physical display in Gamescope, take screenshots, and record video through PipeWire and GStreamer.
Works with
Categories
Create and modify physics simulations using the Elodin Python SDK. Elodin Simulation is an agent skill from elodin-sys/elodin. Create and modify physics simulations using the Elodin Python SDK.
Elodin Simulation fits situations like: editing simulation Python files; defining components; spawning entities; configuring 6DOF physics.
Run `npx skills add elodin-sys/elodin --skill elodin-simulation -a claude-code`. Or copy the skill folder (.cursor/skills/elodin-simulation in elodin-sys/elodin) into .claude/skills/elodin-simulation in your project. Claude Code loads it when a task matches its description.
Run `npx skills add elodin-sys/elodin --skill elodin-simulation -a codex`. Or copy the skill folder (.cursor/skills/elodin-simulation in elodin-sys/elodin) into .agents/skills/elodin-simulation 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 elodin-sys/elodin --skill elodin-simulation -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/elodin-simulation, .gemini/skills/elodin-simulation, .github/skills/elodin-simulation and .opencode/skills/elodin-simulation in your project.
Going by SKILL.md and its folder, Elodin Simulation needs the command-line tools its instructions call (git, nix, just, uv, pip and python). Our summary lists: Python 3.
SKILL.md names 1 domain. As links in the text: docs.elodin.systems. 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. Review the folder before installing.
Elodin Simulation 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.
About 4.1k tokens (SKILL.md is roughly 16k 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 Elodin Simulation: Cantera Ignition Delay (K-Dense-AI/scientific-agent-skills, 48k stars), Astropy (zLanqing/codex-claude-academic-skills, 4.6k stars), Climate Ds (Hongjian01/ClimWorkflow, 102 stars) and FluidSim CFD Simulations (davila7/claude-code-templates, 32k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
elodin-sys (a GitHub organization) maintains it in elodin-sys/elodin, which has 547 GitHub stars. The repository holds 14 skills in this directory. The repository was last updated on October 7, 2026.
Source: elodin-sys/elodin on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.