skills/lula-description-generator/SKILL.md
Generates Lula robot description YAML from a URDF file for Isaac Sim motion planning (CuMotion/RMPflow/Lula), including automatic collision sphere generation via mesh repair + voxelisation + medial-axis sphere packing
npx skillsauth add hkqai/MatClaw lula-description-generatorInstall 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.
Generates Lula robot description YAML files from URDF files for use with Isaac Sim's CuMotion / RMPflow / Lula motion planning backends.
A Lula description file configures:
The collision spheres are the hardest part to create manually. Isaac Sim's built-in sphere generator frequently fails on non-watertight meshes. This skill automates sphere generation using:
lula_generate_robot_description(
urdf_path, # absolute path to URDF
output_path=None, # defaults to <urdf_dir>/<name>_lula_description.yaml
mesh_search_paths=None, # extra dirs for mesh resolution (incl. package:// URIs)
controlled_joint_names=None, # explicit cspace list; auto-detected if omitted
max_spheres_per_link=16, # 8–32 is typical; more = tighter fit but slower planning
voxel_fraction=0.04, # 4% of max bounding-box dim; lower = finer but slower
skip_sphere_links=None, # links to exclude from sphere generation (virtual frames)
)
Returns: success, output_path, cspace, num_links_with_spheres,
total_spheres, warnings, summary.
Use urdf_inspect to understand the robot structure before generating:
package:// URIs need search paths)?For manipulator arms, the c-space is typically the arm joints only
(NOT gripper fingers). Gripper joints should appear in cspace_to_urdf_rules
as fixed entries.
Example: UR5e — c-space is 6 revolute joints:
controlled_joint_names=["shoulder_pan_joint", "shoulder_lift_joint",
"elbow_joint", "wrist_1_joint",
"wrist_2_joint", "wrist_3_joint"]
Example: Piper — 6-DOF arm (joint1–joint6); gripper joints (joint7, joint8)
go in cspace_to_urdf_rules:
controlled_joint_names=["joint1", "joint2", "joint3", "joint4", "joint5", "joint6"]
When controlled_joint_names is omitted, ALL non-fixed joints are included.
If the URDF uses package:// URIs, provide mesh_search_paths pointing to
the directory that contains the package folder. For example:
URDF: package://piper_description/meshes/base_link.STL
workspace: /home/user/ws/piper_isaac_sim/
→ mesh_search_paths=["/home/user/ws/piper_isaac_sim"]
For relative mesh paths (e.g. UR5e), the URDF directory is searched
automatically — no mesh_search_paths needed.
result = lula_generate_robot_description(
urdf_path="/abs/path/to/robot.urdf",
controlled_joint_names=[...],
mesh_search_paths=[...], # only if needed
max_spheres_per_link=16,
)
Check result["warnings"] for any links where sphere generation failed or
meshes could not be found. These links will be absent from collision_spheres.
Open the generated YAML and verify:
Tools → Robotics → Lula Robot Description Editor) — load the YAML and use
the 3D viewport to verify coverage.Common tuning knobs:
max_spheres_per_link (e.g. 24–32) for better coverage on complex links.voxel_fraction (e.g. 0.02) for finer mesh sampling on thin geometry.skip_sphere_links and hand-author their spheres if
the automatic result is poor.max_spheres_per_link ≥ 24.warnings.acceleration_limits and jerk_limits are
heuristic estimates. For production use, replace with values from the robot
datasheet or identify them via system identification.api_version: 1.0
cspace:
- joint1
- joint2
default_q: [0.0, 0.0]
acceleration_limits: [15.0, 10.0]
jerk_limits: [7500.0, 5000.0]
cspace_to_urdf_rules:
- {name: finger_joint, rule: fixed, value: 0.0}
collision_spheres:
- base_link:
- center: [0.0, 0.0, 0.05]
radius: 0.047
- link1:
- center: [0.0, 0.0, 0.1]
radius: 0.04
File → Import → URDFTools → Robotics → Lula Robot Description Editorcspace_to_urdf_rulestools
Analyze thermodynamic stability of inorganic materials by routing between two workflows: a cheap Materials Project-backed lookup path for known compositions, and a custom self-consistent MLIP hull workflow for novel or structure-specific materials. Use this skill whenever the user asks whether a material is stable, requests energy above hull, decomposition products, polymorph context, or wants to include stability as a screening criterion. This skill is intended to become the single orchestration layer for stability analysis, with workflow branching handled in the skill rather than inside an MCP tool.
development
Professional skill for setting up, executing, and debugging VASP DFT calculations using the Atomic Simulation Environment (ASE).
tools
Pre-import validation and auto-fix for URDF files targeting Isaac Sim / USD
tools
Intelligent synthesis route planning for inorganic materials. Use this skill whenever the user needs a synthesis protocol.