Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Robotics multi-task and meta-reinforcement learning benchmark (Meta-World). Standardized continuous-control benchmark built on Gymnasium with MT1, MT10, MT50 multi-task suites and ML1, ML10, ML45 meta-learning suites. Supports synchronous and asynchronous vector execution. Use for robotic manipulation benchmarking, multi-task RL, meta-RL adaptation, and evaluating generalization across tasks and goals.
.claude/skills/mkurman-metaworld/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-13 | ✗→✓ | ▲ Improved | -33% | 0% |
| case-01 | ✗→✓ | ▲ Improved | -1% | 0% |
| case-02 | ✗→✓ | ▲ Improved | -8% | 0% |
| case-03 | ✗→✓ | ▲ Improved | -37% | 0% |
| case-07 | ✗→✓ | ▲ Improved | -27% | 0% |
-----|---------|------| | MT1 | Multi-task learning on one selected task family | 1 task | | MT10 | Multi-task learning across 10 manipulation tasks | 10 tasks | | MT50 | Broad multi-task benchmark | 50 tasks | | ML1-train/test | Meta-learning goal variation within one task family | 1 family | | ML10-train/test | Meta-learning across train/test task split | 10 train + 5 test | | ML45-train/test | Large-scale meta-learning split | 45 train + 5 test |
MT1:
pythonimport gymnasium as gym import metaworld env = gym.make("Meta-World/MT1", env_name="reach-v3", seed=42) obs, info = env.reset() action = env.action_space.sample() obs, reward, terminated, truncated, info = env.step(action)
MT10 synchronous vectorized:
pythonimport gymnasium as gym import metaworld envs = gym.make_vec("Meta-World/MT10", vector_strategy="sync", seed=42) obs, info = envs.reset() actions = envs.action_space.sample() obs, rewards, terminations, truncations, infos = envs.step(actions)
MT10 asynchronous vectorized:
pythonenvs = gym.make_vec("Meta-World/MT10", vector_strategy="async", seed=42)
MT50:
pythonenvs = gym.make_vec("Meta-World/MT50", vector_strategy="sync", seed=42)
ML1:
pythonimport gymnasium as gym import metaworld train_env = gym.make("Meta-World/ML1-train", env_name="reach-v3", seed=42) test_env = gym.make("Meta-World/ML1-test", env_name="reach-v3", seed=42)
ML10 / ML45:
pythontrain_envs = gym.make_vec("Meta-World/ML10-train", vector_strategy="sync", seed=42) test_envs = gym.make_vec("Meta-World/ML10-test", vector_strategy="sync", seed=42) train_envs = gym.make_vec("Meta-World/ML45-train", vector_strategy="async", seed=42) test_envs = gym.make_vec("Meta-World/ML45-test", vector_strategy="async", seed=42)
Build your own custom multi-task or meta-learning benchmark:
pythonimport gymnasium as gym import metaworld envs = gym.make_vec( "Meta-World/custom-mt-envs", vector_strategy="sync", envs_list=["reach-v3", "push-v3", "drawer-open-v3"], seed=42, ) meta_envs = gym.make_vec( "Meta-World/custom-ml-envs", vector_strategy="async", envs_list=["reach-v3", "push-v3", "window-open-v3"], seed=42, )
Single-task SAC / PPO:
pythonenv = gym.make("Meta-World/MT1", env_name="drawer-open-v3") # Train with Stable-Baselines3 SAC/PPO or CleanRL continuous-control PPO
Task-conditioned multi-task policy:
pythonenvs = gym.make_vec("Meta-World/MT10", vector_strategy="sync") # Use policy network with task ID appended to observation # Shared backbone + task-conditioned policy/value heads is common
Meta-RL loop:
python# Train on ML10-train, evaluate fast adaptation on ML10-test # Measure reward after K adaptation episodes/gradient steps
MT10/MT50 for multi-task RL and ML10/ML45 for meta-RL.| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-13 | fail→pass | 17,755 | 4,383 | -75% | 1 | 1 | 0% | 3,202 | 2,149 | -33% | 0 | 0 | — |
case-14 | pass→fail | 13,914 | 7,991 | -43% | 1 | 1 | 0% | 2,361 | 2,684 | +14% | 0 | 0 | — |
case-01 | fail→pass | 12,802 | 5,485 | -57% | 1 | 1 | 0% | 2,521 | 2,503 | -1% | 0 | 0 | — |
case-02 | fail→pass | 13,838 | 4,894 | -65% | 1 | 1 | 0% | 2,557 | 2,345 | -8% | 0 | 0 | — |
case-03 | fail→pass | 20,091 | 6,111 | -70% | 1 | 1 | 0% | 4,149 | 2,631 | -37% | 0 | 0 | — |
case-04 | pass→pass | 10,347 | 5,410 | -48% | 1 | 1 | 0% | 1,791 | 2,417 | +35% | 0 | 0 | — |
case-05 | pass→pass | 7,768 | 7,830 | +1% | 1 | 1 | 0% | 1,443 | 2,899 | +101% | 0 | 0 | — |
case-06 | pass→fail | 9,129 | 5,791 | -37% | 1 | 1 | 0% | 1,644 | 2,366 | +44% | 0 | 0 | — |
case-07 | fail→pass | 16,660 | 5,427 | -67% | 1 | 1 | 0% | 3,058 | 2,241 | -27% | 0 | 0 | — |
case-08 | fail→pass | 12,061 | 2,363 | -80% | 1 | 1 | 0% | 1,995 | 1,776 | -11% | 0 | 0 | — |
case-09 | fail→pass | 7,773 | 3,375 | -57% | 1 | 1 | 0% | 1,299 | 1,896 | +46% | 0 | 0 | — |
case-10 | fail→pass | 20,352 | 8,236 | -60% | 1 | 1 | 0% | 3,574 | 2,860 | -20% | 0 | 0 | — |
case-11 | fail→pass | 14,777 | 3,961 | -73% | 1 | 1 | 0% | 2,849 | 2,078 | -27% | 0 | 0 | — |
case-12 | fail→pass | 15,296 | 5,072 | -67% | 1 | 1 | 0% | 2,912 | 2,356 | -19% | 0 | 0 | — |
case-15 | pass→pass | 18,859 | 10,733 | -43% | 1 | 1 | 0% | 2,936 | 3,045 | +4% | 0 | 0 | — |
case-16 | fail→pass | 16,328 | 15,081 | -8% | 1 | 1 | 0% | 2,579 | 3,953 | +53% | 0 | 0 | — |
case-17 | pass→pass | 15,511 | 12,700 | -18% | 1 | 1 | 0% | 2,588 | 3,479 | +34% | 0 | 0 | — |
case-18 | pass→pass | 14,305 | 6,447 | -55% | 1 | 1 | 0% | 2,341 | 2,491 | +6% | 0 | 0 | — |
case-19 | fail→pass | 13,451 | 4,298 | -68% | 1 | 1 | 0% | 2,441 | 2,137 | -12% | 0 | 0 | — |
case-20 | pass→pass | 17,632 | 15,716 | -11% | 1 | 1 | 0% | 2,790 | 3,861 | +38% | 0 | 0 | — |
case-21 | pass→pass | 14,942 | 16,708 | +12% | 1 | 1 | 0% | 2,321 | 4,191 | +81% | 0 | 0 | — |
case-22 | pass→pass | 15,171 | 15,499 | +2% | 1 | 1 | 0% | 2,516 | 4,039 | +61% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted. The headline lift of +45 percentage points is the difference between those two pass rates over the 22 comparable cases. 2 cases got worse with the skill loaded, and they are included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.