smithery.ai

add-install-docker-ci-e2e

Adds install command in install script, Docker build stage in Dockerfile, and CI jobs for docker build and embodied e2e test when introducing a new model or environment in RLinf.

First seen Mar 19, 2026

Installation

$ npx skills add https://smithery.ai

Summary

  • Adds install command in install script, Docker build stage in Dockerfile, and CI jobs for docker build and embodied e2e test when introducing a new model or environment in RLinf.
  • Use when adding a new embodied model (e.g. dexbotic), new env (e.g. maniskill_libero), or new model+env combination that should be installable, dockerized, and tested in CI.

Similar popular skills

Related neighbors and high-traction skills in the same topics — useful to compare before installing.

Also in this package

Other skills from smithery.ai · top by installs.

npx skills add https://smithery.ai

Browse all from smithery.ai

More details

Agent compatibility

Declared targets from SKILL.md / docs. Unmarked agents are not listed — the skill may still install via the CLI.

Claude Code Not declared
Cursor Not declared
Codex Not declared
GitHub Copilot Not declared
Windsurf Not declared
Gemini CLI Not declared
Cline Not declared
OpenCode Not declared

Package contents

Files included with this skill beyond the listing page.

  • skill md SKILL.md 5,594 B
  • docs SUMMARY.md 402 B

History

  1. First seen on skills.sh
  2. First recorded snapshot · 1 installs

SKILL.md

Add Install, Docker Build, and CI for a New Model or Environment

Use this skill when adding a new model or new environment (or combination) to RLinf so that: (1) users can install it via requirements/install.sh, (2) a Docker image can be built for it (optional), (3) CI runs a Docker build and an end-to-end test.


1. Install script (requirements/install.sh)

  • Register model or env

- New model: add to SUPPORTEDMODELS (e.g. "dexbotic"). - New environment: add to SUPPORTEDENVS (e.g. "maniskill_libero").

  • Implement install logic

- New model: add install<model>model() that switches on ENVNAME and for each supported env: create venv, install common embodied deps, env-specific deps, and the model. Call it from the main case "$MODEL" (add a new modelname) branch that runs install<model>model). - New env only (no new model): either add a new env branch inside an existing install*model() or add install<env>env() and call it from the relevant model installers. If the env is used by installenvonly, add a branch in installenvonly for that env.

  • Help text

printhelp shows SUPPORTEDMODELS and SUPPORTED_ENVS; no change needed if you only added to those arrays.

See [reference.md](reference.md) for exact variable names and code patterns.


2. Dockerfile (docker/Dockerfile)

  • Base image

If the combo needs a different base (e.g. Ubuntu 20 for ROS/Franka), add: FROM <base> AS base-image-embodied-<target> Otherwise reuse: FROM nvidia/cuda:12.4.1-cudnn-devel-ubuntu22.04 AS base-image-embodied-<target>.

  • Build stage

Add a stage: - FROM embodied-common-image AS embodied-<target>-image - Single RUN for all installs: If the image installs multiple envs (multiple model+env or venvs), chain every install.sh call in one RUN with &&. Splitting installs across multiple RUN layers breaks uv’s hardlink mode (UVLINKMODE=hardlink), because the cache from the previous layer is not in the same layer for hardlinking. Example: RUN bash requirements/install.sh embodied --venv openvla --model openvla --env maniskilllibero && \ then bash requirements/install.sh embodied --venv openpi --model openpi --env maniskilllibero. - Any asset download/link in the same or a following RUN; then RUN echo "source \${UV_PATH}/<venv>/bin/activate" >> ~/.bashrc for default env.

  • Final stage

The last stage is FROM ${BUILDTARGET}-image AS final-image. Valid BUILDTARGET values are those that have a matching *-image stage (e.g. reason, embodied-maniskilllibero, embodied-dexbotic-maniskilllibero). Adding a new stage makes the new target valid; no change to the final stage line.

Naming: BUILDTARGET is typically embodied-<env> (e.g. embodied-maniskilllibero) or embodied-<env>-<model> when one image combines multiple models (e.g. behavior-openvlaoft). Match the pattern used by existing stages.


3. CI: Docker build (.github/workflows/docker-build.yml)

Add a job that builds the new image:

  • Job id: build-embodied-<target> (same <target> as in Dockerfile stage name, e.g. build-embodied-maniskill_libero).
  • Reuse the same steps as existing jobs: maximize storage, checkout, setup Docker Buildx, then build with BUILDTARGET=embodied-<target>, NOMIRROR=true, outputs: type=cacheonly, and a tag like rlinf:embodied-<target>.

Copy an existing build-embodied-* job and replace the target name. See [reference.md](reference.md).


4. CI: Embodied e2e test (.github/workflows/embodied-e2e-tests.yml)

  • Test config

Add a YAML config under tests/e2etests/embodied/ (e.g. <env><algo><model>.yaml). The e2e runner is trainembodied_agent.py with --config-name <name>; the config name is the filename without .yaml.

  • Workflow job

Add a job (e.g. embodied-<model>-<env>-test): - Checkout. - Create embodied environment: set UV*, any required path env vars (e.g. GR00TPATH, BEHAVIORPATH), then bash requirements/install.sh embodied --model <model> --env <env>. - Run test: source .venv/bin/activate, set REPOPATH, then bash tests/e2etests/embodied/run.sh <configname> (or run_async.sh if the test is async). Use a reasonable timeout-minutes. - Clean up: rm -rf .venv, uv cache prune, and any test-specific cleanup.

Use runs-on: embodied so the job runs on a runner with GPU/datasets. See existing jobs in the file for env vars and step order.


Checklist

  • Install script: Model in SUPPORTEDMODELS and/or env in SUPPORTEDENVS; install_* function and case "$MODEL" (or env) updated.
  • Dockerfile: base-image-embodied-<target> if needed; embodied-<target>-image stage with install.sh and default venv. If multiple envs: all install.sh calls chained in one RUN (for uv hardlink).
  • docker-build.yml: New job build-embodied-<target> with BUILD_TARGET=embodied-<target>.
  • E2e: Config YAML in tests/e2etests/embodied/; new job in embodied-e2e-tests.yml (install env, run run.sh <configname>, clean up).