mjlab-to-mjswan

mjlab-to-mjswan is a skill for Claude Code from ttktjmt/mjswan. It costs 0 tokens per session (4,228 once invoked), scanned A, original, Apache-2.0.

A procedure for moving an mjlab robotics task into mjswan, a browser app that runs and visualises the task with its trained policy.

In plain words
What is it for?
Use it to port a local or GitHub repository's mjlab task into a browser app, build it, and verify its behaviour.
Why use it?
It provides a controlled way to make the task traceable to ONNX and check that browser behaviour matches the original Python implementation.

Skill for Claude Code

Written for Claude Code: shipped in a Claude Code plugin. Also seen: mentions AGENTS.md.

Part of the mjswan plugin — 1 skill, 3 commands, 1 hook shipped together

Good fit Use it to port a local or GitHub repository's mjlab task into a browser app, build it, and verify its behaviour.

Compare 6 skills from other repositories ↓
Install with agentmods
npx agentmods add skills/ttktjmt/mjswan/mjlab-to-mjswan
Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

Any agent
npx skills add ttktjmt/mjswan --skill mjlab-to-mjswan
Clone the repo
git clone --depth 1 https://github.com/ttktjmt/mjswan

Made for: Claude Code.

Or install mjswan, the plugin that ships this one along with the rest of its 1 skill, 3 commands, 1 hook.

Wrote this? Show the measurements

A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.

agentmods badge for mjlab-to-mjswan

README.md
[![agentmods](https://agentmods.dev/badge/skills/ttktjmt/mjswan/mjlab-to-mjswan/github.svg)](https://agentmods.dev/skills/ttktjmt/mjswan/mjlab-to-mjswan)
Your own site
<a href="https://agentmods.dev/skills/ttktjmt/mjswan/mjlab-to-mjswan"><img src="https://agentmods.dev/badge/skills/ttktjmt/mjswan/mjlab-to-mjswan/github.svg" alt="Measured on agentmods" height="20"></a>

Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.

agentmods 80×15 button for mjlab-to-mjswan

Your own site · 80×15
<a href="https://agentmods.dev/skills/ttktjmt/mjswan/mjlab-to-mjswan"><img src="https://agentmods.dev/badge/skills/ttktjmt/mjswan/mjlab-to-mjswan.svg" alt="Reviewed on agentmods" width="80" height="20"></a>
Per session 0 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 4,228 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. A grade says what 26 rules found in the file — not that it is safe. Third-party audits
  • NVIDIA SkillSpector pass 7 Sept 2026
How audits are shown
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5.1 $0.00000 $0.04228
Opus 5 $0.00000 $0.02114
Sonnet 5 $0.00000 $0.00846
Haiku 4.5 $0.00000 $0.00423

Measured 5d ago against content hash d5ecc52b5941, method: parsed. Prices are Anthropic first-party input rates as of 2026-09-12, from the pricing page.

Security

Grade A, and why

mjlab-to-mjswan scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 5d ago.

The scan reads SKILL.md. This mod also ships 1 executable file (export_policy.py), listed below but not scanned — reading those needs a real analyzer, not pattern matching.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Nothing flagged

None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.

skills/mjlab-to-mjswan/SKILL.md · 264 lines

How it starts

The opening of the file, as written. The whole thing — 264 lines — stays where its author put it; the contents beside it link to each section on GitHub.

Port one mjlab task from a target repo into a browser app built by mjswan. The target is any repo that registers mjlab tasks, given as a local path or a GitHub URL.

Scope. Inside the target repo everything you write stays on the Python side: no TypeScript (ts_src), no ViewerConfig. mjswan itself is edited in exactly one case: a missing capability that is generic rather than task-specific, which step 8 turns into a pull request.

Ground rules

  • mjswan reimplements none of mjlab's term functions: a task's real observation / termination / event / command functions are traced to ONNX at build time and run in the browser beside the policy. A fix therefore means making mjlab's own function traceable, never rewriting its math.
  • When something fails, read the exception in full, then the module it came from in the installed package: python -c "import mjswan, pathlib; print(pathlib.Path(mjswan.__file__).parent)". That source is the only current truth.
  • Two fix attempts per term, then record it as skipped and move on. A partial port that builds and passes parity is the deliverable; all-or-nothing is not.

1. Acquire the target

A GitHub URL → git clone <url> ./<repo-name>, then work inside it. A local path → use it as is.

Then make mjswan importable from the same interpreter that can import the target's task registrations:

  • Repo already has an environment → add to it: uv pip install mjswan torch onnxruntime.
  • Fresh clone with nothing → uv venv && uv pip install -e . && uv pip install mjswan torch onnxruntime.
  • No uv available → install into the interpreter that already runs the target, against its own sys.prefix.

mjswan pins mujoco exactly and bounds requires-python. If the install fails on either, stop and report the resolver's output verbatim: resolving it is the user's call, not yours.

2. Find the task ids

Registration happens as an import side effect, and every repo does it differently: mjlab.tasks, a <pkg>/tasks/__init__.py, a src/tasks/ on sys.path, or a bootstrap_*() function that must be called, sometimes only after an env var or a data file is in place.

Read the full file on GitHub · 264 lines

Files

What ships with it

2 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 5d ago Changed · +16 lines d5ecc52b5941
  2. 11d ago First seen · 248 lines · 0 tokens per session scan A 1ca7419ab80e

Subscribe to this mod's changes

mjlab-to-mjswan is a skill published in the GitHub repository ttktjmt/mjswan (342 stars, last pushed yesterday), licensed Apache-2.0. It costs nothing until one of its globs matches a file; then it loads 4,228 tokens. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-09-01.

Related

Other skills, from other repositories

grpo-rl-training

Expert guidance for GRPO/RL fine-tuning with TRL for reasoning and task-specific model training.

davila7/claude-code-templates · 26 tokens

miles-rl-training

Provides guidance for enterprise-grade RL training using miles, a production-ready fork of slime. Use when training large MoE models with FP8/INT4, needing train-inference alignment, or requiring speculative RL for maximum throughput.

davila7/claude-code-templates · 51 tokens

torchforge-rl-training

Provides guidance for PyTorch-native agentic RL using torchforge, Meta's library separating infra from algorithms. Use when you want clean RL abstractions, easy algorithm experimentation, or scalable training with Monarch and TorchTitan.

davila7/claude-code-templates · 49 tokens

verl-rl-training

Provides guidance for training LLMs with reinforcement learning using verl (Volcano Engine RL). Use when implementing RLHF, GRPO, PPO, or other RL algorithms for LLM post-training at scale with flexible infrastructure backends.

davila7/claude-code-templates · 51 tokens

sdf

SDFormat/SDF model and world authoring, validation, and simulator handoff. Use for .sdf files, SDFormat XML, models, worlds, links, joints, poses, frames, inertials, visual/collision geometry, mesh URIs, sensors, lights, physics, plugins, includes, Gazebo, static SDF review, or simulator-specific metadata. Do not use…

earthtojake/text-to-cad · 88 tokens

tinker-fine-tuning

Provides guidance for fine-tuning LLMs using the Tinker cloud training API from Thinking Machines Lab. Use when running supervised fine-tuning, reinforcement learning (GRPO/PPO), or LoRA training on cloud GPUs via Tinker's managed infrastructure instead of local compute.

synthetic-sciences/openscience · 62 tokens