Agent skill

Compass Newembodiment

by NVlabs in NVlabs/COMPASS

Onboard a new robot platform to COMPASS: generate robot ArticulationCfg + per-embodiment envcfg, register in EmbodimentEnvCfgMap, smoke-test the spawn with --numenvs 1.

Apache-2.0Auto-check: notesTesting & QA

Install Compass Newembodiment

skills CLI
$ npx skills add NVlabs/COMPASS --skill compass-newembodiment -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install NVlabs/COMPASS compass-newembodiment --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/NVlabs/COMPASS.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/compass-newembodiment .claude/skills/compass-newembodiment && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
compass-newembodiment
GitHub stars
145
Token cost
~2k tokens
SKILL.md length
923 words
Files
1
Skills in repo
3
Repo updated
First seen
Licence
Apache-2.0

At a glance

Onboard a new robot platform to COMPASS: generate robot ArticulationCfg + per-embodiment envcfg, register in EmbodimentEnvCfgMap, smoke-test the spawn with --numenvs 1.

  • Works in 7 steps: Parse what the user already supplied → Ask only for what's missing… → Read the existing-pattern files → …
  • The user wants to add a new robot
  • SKILL.md covers When NOT to use this skill, Workflow, Reference: file map and Reference: base-class examples
  • Calls python

What it does

Compass Newembodiment is an agent skill from NVlabs/COMPASS. Onboard a new robot platform to COMPASS: generate robot ArticulationCfg + per-embodiment envcfg, register in EmbodimentEnvCfgMap, smoke-test the spawn with --numenvs 1. Use whenever the user wants to add a new robot, register an embodiment, or extend COMPASS with their platform. NOT for switching between built-in embodiments (use --embodiment) or for adding a new scene (the compass skill covers SAGE → register).

Its SKILL.md is about 2k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Testing & QA, covering QA and bug reports. The repository describes itself as: Cross-embOdiment Mobility Policy via ResiduAl RL and Skill Synthesis. The licence is Apache-2.0.

When your agent uses it

  • The user wants to add a new robot
  • Register an embodiment
  • Extend COMPASS with their platform

Example prompts

  • “/compass-newembodiment”

Requirements

  • Python 3
  • Docker
  • Pre-approved tools (allowed-tools): Bash, Read, Edit, Write, Grep, Glob, AskUserQuestion

Workflow steps

7 steps, taken from the step headings in SKILL.md.

  1. Parse what the user already supplied
  2. Ask only for what's missing (AskUserQuestion)
  3. Read the existing-pattern files
  4. Show the diff before writing
  5. Apply the changes
  6. Smoke test
  7. Document the new embodiment (optional)

What it can do on your machine

Read from SKILL.md and the folder at commit 8060f7c. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves these tools, so the agent can use them without asking each time:

    • Bash
    • Read
    • Edit
    • Write
    • Grep
    • Glob
    • AskUserQuestion

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • python

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Compass Newembodiment loads about 2k tokens when it runs. Until then it costs about 110 tokens; SKILL.md has 923 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~110
When it runs · the whole SKILL.md, loaded when a task matches
~2k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check: notes

The automated check noted patterns worth knowing about, such as sudo or a known installer.

  • NotePre-approves every shell command (allowed-tools: Bash)SKILL.md
    allowed-tools: Bash, Read, Edit, Write, Grep, Glob, AskUserQuestion

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from NVlabs/COMPASS at commit 8060f7c, republished under its Apache-2.0 licence (© NVlabs). 923 words, ~2,037 tokens.

Download SKILL.mdSave it as .claude/skills/compass-newembodiment/SKILL.md (or your agent's skills folder).
name
compass-newembodiment
description
Onboard a new robot platform to COMPASS: generate robot ArticulationCfg + per-embodiment env_cfg, register in EmbodimentEnvCfgMap, smoke-test the spawn with --num_envs 1. Use whenever the user wants to add a new robot, register an embodiment, or extend COMPASS with their platform. NOT for switching between built-in embodiments (use --embodiment) or for adding a new scene (the `compass` skill covers SAGE → register).
allowed-tools
Bash, Read, Edit, Write, Grep, Glob, AskUserQuestion

You walk a user through onboarding a new robot platform to COMPASS — generating the right config files, registering the embodiment, and verifying the robot spawns correctly. The handbook's extending.md is the canonical written guide; this skill is the operational sibling that does the work interactively.

This skill assumes the docker-as-venv environment from the compass skill — source ./docker/activate already done, container up. If the user hasn't set that up, recommend /compass first.

When NOT to use this skill

  • The user wants to switch between built-in embodiments (carter / h1 / spot / g1 / digit) → just use --embodiment <name> on run.py. No code change needed.
  • The user is adding a new scene (USD), not a new robot → that's /compass (Register Scene).
  • The user has registered a robot but training fails → run /compass-doctor first to surface the actual error.

Workflow

Step 1: Parse what the user already supplied

A user prompt like "add a new robot called Galileo at /workspace/galileo.usd, similar to Spot" already contains three of the four fields the skill needs. Extract them first; only ask about what's missing or genuinely ambiguous. Don't re-ask for things the user already said — that's the dialogue-bot trap.

The four fields:

  • Robot name (lowercase identifier like galileo; used in CLI flags and config keys).
  • USD path (absolute or repo-relative; the asset that will be spawned).
  • Base-class to inherit from (which existing pattern to mirror). See "Base-class choice" below.
  • (Optional) display name for docs (e.g., "Galileo").
Step 2: Ask only for what's missing (AskUserQuestion)

If any of the three required fields are missing or ambiguous, ask in one batch. Sample question structure:

FieldQuestionOptions
Robot name"What's the robot's identifier?"free text (default: lowercase the user's name)
USD path"Where's the robot's USD file?"free text (suggest checking ./assets/usd/ first)
Base-class"Which existing robot's pattern is the best fit?"wheeled (carter), quadruped (spot), humanoid (h1, g1, digit)

For the base-class question, surface the trade-off in the option descriptions:

  • wheeled: single base, velocity over base; simplest to onboard. Mirror carter.
  • quadruped: articulated legs, ABS-style controller. Mirror spot.
  • humanoid: full body; more complex action space. Mirror h1 (or g1/digit for smaller form factors).
Step 3: Read the existing-pattern files

Before generating anything, read the two files that match the user's base-class choice:

Base classRobot blockEnv cfg file
wheeledcarter block in compass/rl_env/exts/mobility_es/mobility_es/config/robots.pycompass/rl_env/exts/mobility_es/mobility_es/config/carter_env_cfg.py
quadrupedspot block in same robots.pycompass/rl_env/exts/mobility_es/mobility_es/config/spot_env_cfg.py
humanoidh1 block in same robots.pycompass/rl_env/exts/mobility_es/mobility_es/config/h1_env_cfg.py

Read both top-to-bottom. Don't skim — joint names, action term wiring, and reward shaping all come from this file. Confirming the reference exists before writing keeps you from generating content based on outdated assumptions.

Step 4: Show the diff before writing

Generate a preview of what will be created or modified:

  1. New ArticulationCfg block to be appended to compass/rl_env/exts/mobility_es/mobility_es/config/robots.py. Mirror the matching reference, swap robot name + USD path + joint config.
  2. New file: compass/rl_env/exts/mobility_es/mobility_es/config/<robot_name>_env_cfg.py. Mirror the matching reference; swap class name (e.g., <RobotName>GoalReachingEnvCfg), scene.robot to point at the new ArticulationCfg, action term to whatever joint controller fits.
  3. Edit run.py:
    • Add import: from mobility_es.config.<robot_name>_env_cfg import <RobotName>GoalReachingEnvCfg.
    • Add row to EmbodimentEnvCfgMap: '<robot_name>': <RobotName>GoalReachingEnvCfg, (around line 116–122).
  4. Optional gin update: if the user wants <robot_name> to be the default embodiment, edit configs/shared.gin's embodiment field. By default, leave existing default in place and let the user pass --embodiment <robot_name> on the CLI.

Show the user each preview block (or unified diff). Ask for confirmation before writing.

Anti-pattern guard: never silently write multi-file scaffolding. Robot onboarding is high-blast-radius — wrong joint counts or an inverted action sign can cause the robot to flail into the floor in simulation. The diff-then-confirm gate is non-negotiable.

Show full SKILL.md (325 more words)Show less
Step 5: Apply the changes

After confirmation, write the files and edit run.py. Use the Edit tool for run.py (one Edit per insertion: import + map row). Use Write for the new env_cfg.py. For robots.py, use Edit to append the new ArticulationCfg block at the end (read the file first to find the right insertion point — the last existing config).

Step 6: Smoke test

Verify the robot spawns by running training with --num_envs 1 and without --headless so the user can see the robot appear:

bash
python run.py \
  -c configs/train_config.gin \
  --enable_cameras \
  -o /tmp/<robot_name>_smoke \
  -b ./assets/x_mobility.ckpt \
  --logger tensorboard \
  --embodiment <robot_name> \
  --environment warehouse_single_rack \
  --num_envs 1

Use run_in_background: true. Tell the user to watch the GUI:

  1. Robot spawns at the configured initial pose (typically (0, 0, ~1.0)).
  2. Robot doesn't immediately fall through the floor (z-init too low) or shoot up (z-init too high).
  3. First PPO iteration completes without joint-controller errors in the log.

If the robot misbehaves, route to /compass-doctor for a deeper diagnostic. Common first-onboarding issues:

  • Z-init too low → robot clips through floor → bump init_state.pos[2].
  • Joint names mismatch → ArticulationCfg fails to load → recheck against the USD's joint hierarchy.
  • Action term sign flipped → robot drives backwards → invert sign in the action term.
Step 7: Document the new embodiment (optional)

Once smoke test passes, suggest the user add their robot to docs/handbook/extending.md (under "Built-in embodiments" or as a new subsection). This is optional — many users keep their custom embodiment private. Don't push the doc change if the user is in a hurry; just flag it for later.


Reference: file map

FileWhat changes
compass/rl_env/exts/mobility_es/mobility_es/config/robots.pyAppend new ArticulationCfg block
compass/rl_env/exts/mobility_es/mobility_es/config/<robot_name>_env_cfg.pyNew file (mirror matching base-class reference)
run.pyAdd import; add EmbodimentEnvCfgMap row (~L116–122)
configs/shared.ginOptional default override; usually leave alone
docs/handbook/extending.mdOptional doc update (suggest, don't enforce)

Reference: base-class examples

  • Wheeled (carter): see carter block at robots.py:23 and carter_env_cfg.py.
  • Quadruped (spot): see spot block at robots.py:275 and spot_env_cfg.py.
  • Humanoid (h1): see h1 block at robots.py:72 and h1_env_cfg.py.

For canonical written guidance (joint config, controller selection, reward shaping), the handbook's extending.md covers depth this skill won't replicate.

© NVlabs, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in .claude/skills/compass-newembodiment of NVlabs/COMPASS.

Open the folder on GitHubat commit 8060f7c

Compare with similar skills

Compass Newembodiment next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Compass Newembodiment compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Compass Newembodiment this skillNVlabs/COMPASS145—~2kAutomated safety check: NotesApache-2.0
Reproduce Chat Statesdifferent-ai/openwork24k—~673Automated safety check: PassCustom licence
Dynamo Jira TicketDynamoDS/Dynamo2k—~1.1kAutomated safety check: PassApache-2.0
Moav E2EMotherofallVPNs/MoaV448—~1.9kAutomated safety check: NotesMIT
Creating A Coral TaskHuman-Agent-Society/CORAL1.1k—~2.2kAutomated safety check: PassApache-2.0
Launch Rlmarin-community/marin3.9k—~894Automated safety check: PassApache-2.0

Similar skills

  • Reproduce Chat States

    different-ai/openwork

    Fires known chat states in the running OpenWork desktop app, such as provider errors, retries and tool steps, so you can check how each renders.

    24k GitHub stars~673 tokensUpdated today
    Testing & QAAuto-check passed
  • Dynamo Jira Ticket

    DynamoDS/Dynamo

    Create structured Jira tickets for Dynamo from bug reports, failing tests, or feature requests.

    2k GitHub stars~1.1k tokensUpdated today
    Testing & QAAuto-check passed
  • Moav E2E

    MotherofallVPNs/MoaV

    Run and debug MoaV's end-to-end tests — real protocol connectivity (client-test.sh) and the moav CLI smoke test — against a LIVE server, via the self-hosted e2e workflow or a local test VPS.

    448 GitHub stars~1.9k tokensUpdated 2 days ago
    Testing & QAAuto-check: notes
  • Creating A Coral Task

    Human-Agent-Society/CORAL

    Author a new CORAL task — the three pieces that must line up (task.yaml, seed/, a packaged grader/), the coral init → coral validate → smoke-test loop, and how to pick a grader pattern (stdout…

    1.1k GitHub stars~2.2k tokensUpdated 1 mo ago
    Testing & QAAuto-check passed
  • Launch Rl

    marin-community/marin

    Define, validate, submit, or restart a Marin SkyRL experiment through its artifact main.

    3.9k GitHub stars~894 tokensUpdated today
    Testing & QAAuto-check passed
  • Actionbook Web Test

    actionbook/actionbook

    Run browser-based web tests against websites using Actionbook CLI.

    1.6k GitHub stars~9.7k tokensUpdated 1 mo ago
    Testing & QAAuto-check passed

More from NVlabs/COMPASS

  • Compass

    NVlabs/COMPASS

    Front-door for COMPASS — training, evaluation, SAGE scene workflows (search / USD conversion / scene registration), and OSMO cloud submission.

    145 GitHub stars~5.4k tokensUpdated yesterday
    Auto-check: notes
  • Compass Doctor

    NVlabs/COMPASS

    Diagnose why COMPASS isn't working: container, GPU, activated shell, assets, Isaac Sim init, checkpoint validity.

    145 GitHub stars~1.4k tokensUpdated yesterday
    Auto-check: notes

Categories

Questions about Compass Newembodiment

What does Compass Newembodiment do?

Onboard a new robot platform to COMPASS: generate robot ArticulationCfg + per-embodiment envcfg, register in EmbodimentEnvCfgMap, smoke-test the spawn with --numenvs 1. Compass Newembodiment is an agent skill from NVlabs/COMPASS. Onboard a new robot platform to COMPASS: generate robot ArticulationCfg + per-embodiment envcfg, register in EmbodimentEnvCfgMap, smoke-test the spawn with --numenvs 1.

When should I use Compass Newembodiment?

Compass Newembodiment fits situations like: the user wants to add a new robot; register an embodiment; extend COMPASS with their platform.

How do I install Compass Newembodiment in Claude Code?

Run `npx skills add NVlabs/COMPASS --skill compass-newembodiment -a claude-code`. Or copy the skill folder (.claude/skills/compass-newembodiment in NVlabs/COMPASS) into .claude/skills/compass-newembodiment in your project. Claude Code loads it when a task matches its description.

How do I install Compass Newembodiment in Codex?

Run `npx skills add NVlabs/COMPASS --skill compass-newembodiment -a codex`. Or copy the skill folder (.claude/skills/compass-newembodiment in NVlabs/COMPASS) into .agents/skills/compass-newembodiment in your project. Codex loads it when a task matches its description.

Can I use Compass Newembodiment in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add NVlabs/COMPASS --skill compass-newembodiment -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/compass-newembodiment, .gemini/skills/compass-newembodiment, .github/skills/compass-newembodiment and .opencode/skills/compass-newembodiment in your project.

What does Compass Newembodiment need to run?

Going by SKILL.md and its folder, Compass Newembodiment needs the command-line tools its instructions call (python). Our summary lists: Python 3; Docker. Its frontmatter pre-approves these tools: Bash, Read, Edit, Write, Grep, Glob, AskUserQuestion.

Does Compass Newembodiment access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Compass Newembodiment safe to install?

Our automated static check of SKILL.md found notes only (pre-approves every shell command (allowed-tools: bash)), nothing it rates as a warning. It is not a guarantee. Review the folder before installing.

What licence does Compass Newembodiment use?

Compass Newembodiment is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Compass Newembodiment use?

About 2k tokens (SKILL.md is roughly 8.1k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Compass Newembodiment?

Skills that share tags, products or a category with Compass Newembodiment: Reproduce Chat States (different-ai/openwork, 24k stars), Dynamo Jira Ticket (DynamoDS/Dynamo, 2k stars), Moav E2E (MotherofallVPNs/MoaV, 448 stars) and Creating A Coral Task (Human-Agent-Society/CORAL, 1.1k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Compass Newembodiment?

NVlabs (a GitHub organization) maintains it in NVlabs/COMPASS, which has 145 GitHub stars. The repository holds 3 skills in this directory. The repository was last updated on October 8, 2026.

Source: NVlabs/COMPASS on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.