Mechanical Sim logo

Mechanical Sim

Organization
svd-ai-lab
mechanical-sim

Use when driving Ansys Mechanical via PyMechanical (ansys-mechanical-core) through the sim runtime, or reading solved `.rst` files with DPF on the agent side. Covers boundary conditions, loads, solver execution, and result extraction. This is the physics-layer counterpart to workbench-sim (which orchestrates cells 1-3); mechanical-sim owns cells 4-6 of the Static Structural workflow. Observation commands (`uv run sim screenshot` / `uv run sim inspect`) are tightly coupled with both the PyMechanical gRPC client *and* the Mechanical.exe GUI window — always launch with `batch=False` so the window is on the desktop for live sessions.

Overview

Publishersvd-ai-lab
Repositorysim-cli
Skill namemechanical-sim
Stars
242
Forks
23
Bundled files
19
LicenseApache-2.0
Links
  • Markdown instructions

    A SKILL.md file the model loads on demand, so it only costs tokens when a request actually matches.

  • Works with any LLM

    AI skills are plain Markdown, not provider-specific code, so this works with GPT, Claude, Gemini, Grok, or a local model.

  • 19 bundled files

    Scripts, templates, and references the model can read while it works. Files are read-only and never executed.

  • Open source

    Published by svd-ai-lab on GitHub. Read the source before you install it.

Installation

Install the Mechanical Sim AI skill in TypingMind to use it with any LLM, or drop it into another agent that reads SKILL.md.

1

Install in TypingMind

TypingMind installs a skill straight from its GitHub folder — it reads SKILL.md, bundles the resource files, and stores the result locally.

  1. Open the app and go to Plugins → Skills.
  2. Choose "Install from GitHub".
  3. Paste the skill folder URL below and confirm.
    https://github.com/svd-ai-lab/sim-cli/tree/main/plugins/mechanical/src/sim_plugin_mechanical/_skills/mechanical
  4. Enable the skill in any chat where you want it available.
Plugins → Skills → Add skill → From GitHub URL, then paste the folder URL and press Continue.
2

Install in another agent

Any agent that reads the Agent Skills format can use this skill — copy the folder into that agent's skills directory.

Claude Code — .claude/skills
git clone --depth 1 https://github.com/svd-ai-lab/sim-cli.git /tmp/sim-cli
mkdir -p .claude/skills
cp -r /tmp/sim-cli/plugins/mechanical/src/sim_plugin_mechanical/_skills/mechanical .claude/skills/mechanical-sim
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable Mechanical Sim in any TypingMind chat and the model takes it from there. Its name and description sit in the system prompt, and the moment a request matches, the model loads the full instructions itself — you never invoke it by hand, and it costs no tokens until it is actually used.

The model loads Mechanical Sim on its own as soon as a request matches it.

Works with any AI model

AI skills are plain Markdown instructions rather than provider-specific code, so Mechanical Sim is not tied to the model it was written for. Install it once in TypingMind and use it with GPT-5, Claude, Gemini, Grok, DeepSeek, Mistral, Llama, or a local model you run yourself — all on your own API keys.

  • Loaded only when it is needed

    The system prompt carries just the name and description. The instructions are fetched on the first matching request, so an idle skill costs nothing.

  • Switch models mid-chat

    Because the skill is instructions rather than code, changing model does not break it — the next model reads the same SKILL.md.

Skill instructions

This is the SKILL.md content the model loads. Read it before installing — a skill is instructions your model will follow.

mechanical-sim

This file is the Ansys Mechanical index. Use DPF for solved .rst files on disk; use sim-cli/PyMechanical for live Mechanical sessions that mutate, solve, inspect, or update the GUI-backed project.

This is not the Abaqus plugin. Do not run Abaqus .inp decks or Abaqus/CAE scripts here. Use solver=abaqus for Dassault SIMULIA Abaqus; use solver=mechanical only for Ansys Mechanical / PyMechanical sessions.

The /connect response tells you which active layers apply:

json
"skills": {
  "root":               "<sim-skills>/mechanical",
  "active_sdk_layer":   "0.12",
  "active_solver_layer": "24.1"
}

Always read base/, then your active sdk/<version>/, then your active solver/<version>/. Later layers override earlier ones on identically-named files.


First principles

  1. Workbench orchestrates, Mechanical computes. PyWorkbench drives Engineering Data / Geometry / Model. PyMechanical drives Setup / Solution / Results. Do not try to define boundary conditions via Workbench scripting — that belongs here.

  2. Observation is SDK+GUI coupled. Every uv run sim exec is a mechanical.run_python_script(code) call that mutates Mechanical's in-memory model. Mechanical's window on the desktop redraws after each call. Therefore uv run sim screenshot (which grabs the desktop) always reflects the current SDK state. This coupling only works with batch=False — so the driver defaults to GUI mode. Confirm both ui_mode == "gui" and batch == false from inspect session.summary before relying on screenshots for GUI sync.

  3. Scripts run inside Mechanical's IronPython interpreter. Globals ExtAPI, DataModel, Model, Quantity, Tree are already available — do NOT import ansys.mechanical. The last expression's string form is what run_python_script returns, so end snippets with a json.dumps(...) literal to get structured output.

  4. ExtAPI.DataModel.Project is the root. From there: .Model → the scene; .Model.Analyses[0] → the first analysis; .Model.Geometry → bodies; .Model.Mesh → meshing controls; .Model.Materials → material assignments.


base/ — always relevant

PathWhat's there
base/reference/pymechanical_api.mdPyMechanical SDK surface: launch_mechanical, run_python_script, download_project, file transfer. Read first.
base/reference/scripting_tree.mdMechanical's IronPython scripting tree: ExtAPI, DataModel, Model, Tree, common traversal patterns.
base/reference/capability_discovery.mdGeneric method/feature discovery before adding analyses, BCs, results, or solve logic. Use this when the workflow differs from known snippets.
base/reference/bc_scoping.mdBoundary condition scoping: creating Selection objects, NamedSelection, face IDs, ISelectionInfo. This is the #1 source of errors.
base/reference/solve_control.mdTriggering solve (analysis.Solution.Solve(True)), monitoring state, reading solve messages.
base/reference/result_extraction.mdTraversing analysis.Solution to pull deformation/stress values, exporting to CSV, using .rst files.
base/reference/observation_commands.mdHow sim's observation commands couple with Mechanical. Read this before using uv run sim inspect / uv run sim screenshot against a Mechanical session.
base/snippets/Numbered snippets (01_smoke through 06_extract_results). Each ends with a json.dumps(...) literal for structured output.
base/workflows/static_structural/End-to-end walk through cells 4-6, continuing where workbench-sim left off.
base/workflows/model_review_loop.mdRequired checkpoint loop: inspect health, project identity, model summary, then run one bounded snippet.
base/workflows/debug_failed_exec.mdFailure triage loop for scoping, selections, mesh, solve, and result extraction failures.
base/workflows/workbench_handoff.mdWorkbench-to-Mechanical checklist for Static Structural workflows.
base/known_issues.mdQuirks: Chinese locale gRPC, batch-mode stdin, IronPython Unicode, Selection vs ISelectionInfo.

sdk/<active_sdk_layer>/

  • sdk/0.12/ — PyMechanical 0.12 (works with Ansys 24.1–25.2).
    • notes.md — launch_mechanical(version=241, batch=False), wait_till_mechanical_is_ready.

solver/<active_solver_layer>/

  • solver/24.1/ — Ansys Mechanical 24.1.
    • notes.md — scripting namespace: which ExtAPI members exist in 24.1.

Hard constraints

  1. Never launch with batch=True unless the user has explicitly asked for headless mode. sim's observation commands need the GUI.
  2. Never import ansys.mechanical.* inside a snippet that goes through run_python_script. The interpreter is Mechanical's embedded IronPython — the Python SDK is the wrong side of the wire.
  3. Always end snippets with json.dumps(...) to get structured stdout. run_python_script returns only the last expression's repr.
  4. Workbench skill owns cells 1-3. If the user asks for geometry import or material definition, hand back to workbench-sim.
  5. Never trust raw names or paths as public evidence. Return counts, booleans, self-created ASCII tags, or sanitized strings from snippets.
  6. Discover live capabilities before coding a new workflow. Use mechanical.capabilities, mechanical.object.properties:*, and official PyMechanical scripting docs to confirm available analysis, BC, result, and solve APIs. Do not infer physics support from AnalysisType strings alone.
  7. Observe long-running work out-of-band. During solves, updates, imports, or hangs, use screenshots and file/message polling while the SDK call is blocked. Read base/reference/observation_commands.md before starting any expected long-running operation.

Required protocol

If the user's question is about an existing solved project (a .rst on disk), use DPF on the agent side; do not launch Mechanical at all.

Before every Mechanical script:

  1. Read base/workflows/model_review_loop.md and inspect session.health, mechanical.project.identity, and mechanical.model.summary.
  2. For any workflow not already proven by a local snippet, read base/reference/capability_discovery.md and inspect mechanical.capabilities before adding setup objects.
  3. Check base/known_issues.md for the operation you are about to do.
  4. If this is a Workbench handoff, read base/workflows/workbench_handoff.md and confirm Mechanical sees the expected analysis and non-empty geometry.
  5. For long-running solve/update/import steps, capture a screenshot before the call, then monitor with screenshots and available solver files/messages until it completes or clearly fails.
  6. Run one bounded snippet, ending with json.dumps(...).
  7. Inspect last.result, mechanical.model.summary, and mechanical.messages after solve/result failures. In GUI mode, use a screenshot as visual confirmation after significant tree changes.
  8. If execution fails, switch to base/workflows/debug_failed_exec.md before trying another full script.

Bundled files

The model reads these on demand while the skill is loaded. They are exposed as readable files and are never executed.

Frequently asked questions

What does the Mechanical Sim AI skill do?

Use when driving Ansys Mechanical via PyMechanical (ansys-mechanical-core) through the sim runtime, or reading solved `.rst` files with DPF on the agent side. Covers boundary conditions, loads, solver execution, and result extraction. This is the physics-layer counterpart to workbench-sim (which orchestrates cells 1-3); mechanical-sim owns cells 4-6 of the Static Structural workflow. Observation commands (`uv run sim screenshot` / `uv run sim inspect`) are tightly coupled with both the PyMechanical gRPC client *and* the Mechanical.exe GUI window — always launch with `batch=False` so the win...

Why use Mechanical Sim on TypingMind?

Because you install it once and use it with any model. Mechanical Sim is plain Markdown rather than provider-specific code, so the same skill runs on GPT-5, Claude, Gemini, Grok, or a local model — and you can switch model mid-chat without it breaking. TypingMind runs on your own API keys, so you pay providers directly instead of a per-seat subscription, and your skills and chats stay in your own storage.

How do I install Mechanical Sim in TypingMind?

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/svd-ai-lab/sim-cli/tree/main/plugins/mechanical/src/sim_plugin_mechanical/_skills/mechanical. TypingMind reads its SKILL.md and bundles its files and installs it as a skill you can enable per chat.

Which AI models can use Mechanical Sim?

Any model you connect in TypingMind. AI skills are plain Markdown instructions rather than provider-specific code, so GPT, Claude, Gemini, Grok, and local models can all load this skill when a request matches it.

How many AI models can I use with Mechanical Sim?

As many as you like. As long as a model supports skills, you can use Mechanical Sim with it — GPT, Claude, Gemini, Grok, DeepSeek, Mistral, Llama and more — all on TypingMind with your own API keys.

Is the Mechanical Sim AI skill free?

Yes. It is published on GitHub by svd-ai-lab under the Apache-2.0 license. You only pay your own AI provider for the tokens you use.

What are AI skills?

An AI skill is a reusable instruction bundle that teaches an AI model how to do one specific task. It follows the open Agent Skills format: a SKILL.md file with a name and description, plus any scripts, templates or reference files the model may need. The model reads the instructions only when your request matches the skill, so an installed skill costs nothing until it is used.

How are AI skills different from plugins or MCP servers?

A plugin or MCP server gives a model new tools to call — code that runs somewhere and returns a result. An AI skill gives the model knowledge and process instead: how to approach a task, which steps to follow, what good output looks like. Skills are plain Markdown, so they need no server, no API key and no runtime, and they work with any model.

View all

Set up your own AI workspace now

Get notified about new features and future giveaways by subscribing to our newsletter 👇