Skip to content
Back to skills

Dm Control

ASecurity

"Use DeepMind dm_control for MuJoCo simulation, Control Suite

  • 247 stars
  • 0 votes
  • 0 copies
  • 5 views
  • Added September 8, 2026
developmentpythongogitapibackenddocumentation

Works with

  • api

Security analysis

A92/100
  • mediumInstalls packages at runtime which could introduce malicious dependencies

Pro scans all 20 files and shows the line behind each finding

Scanned September 8, 2026

npx -y skills add VectorSpaceLab/AREX-Skill --skill dm-control --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Dm Control?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Dm Control
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/vectorspacelab-dm-control/badge)](https://www.skillsdirectory.com/skills/vectorspacelab-dm-control)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: dm-control
description: "Use DeepMind dm_control for MuJoCo simulation, Control Suite
  environments, PyMJCF models, Composer tasks, rendering, and high-level
  locomotion/manipulation workflows."
metadata:
  disco-role: operating
disable-model-invocation: true
license: Apache 2.0
---

# dm-control

Use this repo skill when a task involves Google's `dm_control` package: DeepMind Control Suite environments, MuJoCo simulation through `dm_control.mujoco`, PyMJCF model construction, Composer custom tasks, locomotion/manipulation task families, pixel observations, viewer launchers, or rendering backend troubleshooting.

## First checks

- Install public releases with `pip install dm_control`; install unreleased source with `pip install git+https://github.com/google-deepmind/dm_control.git`.
- Do **not** use editable installs for normal use. `dm_control` generates legacy MuJoCo bindings during installation, and editable installs can leave `dm_control.mujoco.wrapper.mjbindings` partially initialized.
- Run [scripts/check_dm_control_install.py](scripts/check_dm_control_install.py) for an installed-package smoke check that imports core modules, loads one Control Suite task, builds a tiny PyMJCF model, and optionally probes rendering.
- Run [scripts/list_dm_control_tasks.py](scripts/list_dm_control_tasks.py) to list installed Control Suite and manipulation task registries before choosing names.
- Read [references/installation-and-backends.md](references/installation-and-backends.md) when a task needs installation, MuJoCo/OpenGL backend selection, optional rendering, or Blender exporter constraints.
- Read [references/package-overview.md](references/package-overview.md) for the component map, API entry points, and how the sub-skills fit together.
- Read [references/troubleshooting.md](references/troubleshooting.md) for cross-cutting install/import, task selection, backend, and package-data failures.

## Route by task

| User task | Read next |
|---|---|
| Load a Control Suite benchmark, step an environment, inspect action/observation specs, use wrappers, or create a random rollout | [suite-rl-workflows](sub-skills/suite-rl-workflows/SKILL.md) |
| Build, parse, compose, export, compile, step, or inspect a MuJoCo/MJCF model with PyMJCF or `dm_control.mujoco.Physics` | [mjcf-mujoco-models](sub-skills/mjcf-mujoco-models/SKILL.md) |
| Create a custom Composer `Entity`, `Task`, observable, variation, arena, robot, or `composer.Environment` | [composer-environments](sub-skills/composer-environments/SKILL.md) |
| Use high-level locomotion, soccer, walker, mocap, prop, or manipulation task families | [locomotion-manipulation](sub-skills/locomotion-manipulation/SKILL.md) |
| Render frames, use pixel observations, launch the viewer, choose `MUJOCO_GL`, diagnose headless OpenGL, or reason about the Blender exporter | [rendering-viewer-assets](sub-skills/rendering-viewer-assets/SKILL.md) |

## Operating defaults

1. Prefer installed-package imports over source-tree assumptions. The public distribution name and import package are both `dm_control`.
2. Start from CPU/non-rendering simulation unless the user explicitly needs images, camera observations, a viewer, EGL, OSMesa, GLFW, or Blender export.
3. Validate task names from registries before loading them: `suite.TASKS_BY_DOMAIN`, `suite.ALL_TASKS`, `manipulation.ALL`, and `manipulation.TAGS`.
4. For RL loops, use `dm_env.TimeStep` semantics: reset first, sample actions within `action_spec()`, step until `time_step.last()`, and inspect `reward`, `discount`, and observation keys.
5. For custom environments, decide whether the request is a ready-made task selection problem (`suite` / manipulation / locomotion) or a model/task-construction problem (`mjcf` / Composer).
6. Keep rendering failures separate from simulation failures. A Control Suite task can reset/step correctly even when GLFW warns that `DISPLAY` is missing; only pixel/render/viewer tasks require backend fixes.
7. When using cameras or pixel wrappers on headless Linux, try `MUJOCO_GL=egl` first when a compatible NVIDIA/EGL stack is available; use OSMesa only when system OSMesa libraries are installed; use GLFW only with a display.
8. Treat `dm_control.blender.mujoco_exporter` as optional and system-mutating: it requires Blender, and add-on installation should be an explicit user choice.

## Minimal smoke snippets

```python
from dm_control import suite
import numpy as np

env = suite.load('cartpole', 'balance')
time_step = env.reset()
action_spec = env.action_spec()
action = np.zeros(action_spec.shape, dtype=action_spec.dtype)
time_step = env.step(action)
print(time_step.reward, time_step.discount, time_step.observation.keys())
```

```python
from dm_control import mjcf

model = mjcf.RootElement(model='smoke')
model.worldbody.add('geom', name='floor', type='plane', size=[1, 1, 0.1])
physics = mjcf.Physics.from_mjcf_model(model)
physics.step()
print(physics.model.nbody, physics.data.time)
```

## Verification notes

- Safe native verification should prefer small CPU cases first: Control Suite registry/loading, PyMJCF model compilation, MuJoCo named access/math, Composer environment reset/step, and manipulation registry tasks.
- Rendering native checks are backend-specific. Use the bundled render probe before asserting pixel observations or viewer behavior.
- Long locomotion, mocap, soccer, GUI, Blender, benchmark-scale, or data-download workflows should be treated as optional or documentation-backed unless the user provides runtime budget and dependencies.

Files in this skill

  • SKILL.md5.4 KB
  • references/installation-and-backends.md4.2 KB
  • references/package-overview.md5.2 KB
  • references/repo-provenance.md2.4 KB
  • references/repo-routing-metadata.json510 B
  • references/troubleshooting.md5 KB
  • scripts/check_dm_control_install.py4.5 KB
  • scripts/list_dm_control_tasks.py2.4 KB
  • sub-skills/composer-environments/SKILL.md4.3 KB
  • sub-skills/composer-environments/references/composer-api-reference.md11.7 KB
  • sub-skills/composer-environments/references/observables-and-variation.md11.9 KB
  • sub-skills/composer-environments/references/troubleshooting.md10.4 KB
  • sub-skills/composer-environments/scripts/composer_minimal_task.py7.5 KB
  • sub-skills/locomotion-manipulation/SKILL.md2.7 KB
  • sub-skills/locomotion-manipulation/references/locomotion-reference.md6 KB
  • sub-skills/locomotion-manipulation/references/manipulation-reference.md5 KB
  • sub-skills/locomotion-manipulation/references/troubleshooting.md4.5 KB
  • sub-skills/locomotion-manipulation/scripts/list_locomotion_manipulation.py5.4 KB
  • sub-skills/mjcf-mujoco-models/SKILL.md3.8 KB
  • sub-skills/mjcf-mujoco-models/references/mujoco-physics-reference.md8.4 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.