Imported from nvidia/skills (
skills/i4h-workflow-create/SKILL.md). Install upstream withnpx skills add nvidia/skills --skill i4h-workflow-create. Copyright stays with the author (Apache-2.0).
Create a Blank i4h Workflow
Purpose
Create a complete runnable blank Workflow without searching for an existing Workflow or booting Isaac Sim.
Instructions
- Resolve the checkout using
I4H_WORKFLOWSwhen set; otherwise use the current git root. If neither containsworkflows/i4h_workflows, use the checkout resolver from the repositoryAGENTS.md. - Choose a lowercase snake_case Workflow id.
- Select exactly one approved product specialty:
laparoscopic-robotics,ultrasound-robotics,endoluminal-robotics, orhospital-automation-robotics. - Generate the blank Workflow and run the static validation below.
If the request does not identify a specialty, ask the user to choose one; do not infer a product category from the workflow name alone.
Run:
./scripts/create_blank_environment.py <workflow_id> --specialty <specialty>
This is the only authoring utility that generates workflow-specific source. It rejects an existing public workflow id in any specialty before dry-run output or file creation. It writes the fixed empty templates that establish the design boundary; later scene and task code is written by the coding agent. Use --dry-run to preview its output, --description TEXT to customize the scene-manifest description, and --validate to run the focused static checks after creation. Do not combine --dry-run and --validate.
The script refuses to overwrite files and creates only:
./
├── arena/i4h_arena/assets/<workflow_id>.py
├── arena/i4h_arena/scenes/<workflow_id>.py
├── arena/i4h_arena/scenes/manifest/<workflow_id>.yaml
├── workflows/i4h_workflows/<specialty>/<workflow_id>.py
└── workflows/tests/test_<workflow_id>_contract.py
The result contains a ground plane, dome light, no embodiment or declared robots, no task-specific objects or cameras, and one idle mode. Its contract test verifies durable Workflow and manifest invariants rather than asserting that the Scene stays blank, so later Scene, Task, and run-mode authoring does not require rewriting the test. Do not inspect robot assets, choose a policy, create Task manifests, load upstream Isaac Sim skills, or launch the simulator during blank creation.
Utility
| Command | Purpose | Arguments |
|---|---|---|
./scripts/create_blank_environment.py |
Create the complete overwrite-safe blank Workflow | <workflow_id> --specialty <specialty> [--description TEXT] [--dry-run] [--validate] |
Validate
Run only fast static checks:
./scripts/create_blank_environment.py <workflow_id> --specialty <specialty> --validate
When the Workflow already exists because it was created without --validate, run the equivalent checks directly:
cd "$(git rev-parse --show-toplevel)"
./run.sh show <workflow_id> --mode idle
./run.sh lint <workflow_id> --mode idle
./run.sh lint --all
workflows/.venv/bin/python -m pytest workflows/tests/test_<workflow_id>_contract.py -q
arena/.venv/bin/python -m pytest arena/tests/test_scene.py -q
--validate requires the workflow and Arena environments; run ./setup.sh first if either is missing. It verifies the generated contract and the shared zero-DOF blank-scene runtime adapter without launching Isaac Sim. If a component virtual environment is elsewhere, use that component's Python for its direct test command. Do not run visible or dynamic validation unless the user explicitly requests it.
Troubleshooting
- If the checkout cannot be resolved, set
I4H_WORKFLOWSto the existing repository root or use the resolver inAGENTS.md. - If generation reports that the workflow id already exists, report its specialty source and ask whether to edit it or use a different id; never overwrite, relocate, or duplicate it.
- If
--validatereports a missing component environment, run./setup.shand repeat the same validation.
Prerequisites
Require a writable root-level i4h-workflows checkout and Python 3.11 or newer. Static --validate also requires the workflow and Arena component environments.
Limitations
This skill creates only the five-file idle scaffold. It does not add an embodiment, task behavior, policy, cameras, or task-specific assets, and it does not visibly validate the Scene.
Continue
Treat creation as the first stage of an incremental workflow:
- Create the blank Workflow scaffold with this skill: blank Scene, scene manifest, and idle-only Workflow.
- Use
i4h-workflow-scene-editto add and visibly verify assets, robots, cameras, layout, and physics, then bake the confirmed Scene. - Define behavior only after the user provides a concrete goal and success condition. Reuse compatible Tasks; create a focused Task only when the behavior is new. Do not create an empty placeholder Task.
- Add rule-based, teleop, replay, or policy modes only when requested and only when their Task and action contracts are runnable.
- Validate every newly enabled mode with the owning stage skill.
The blank Workflow is intentionally useful before behavior exists: its shared idle Task opens the Scene for authoring, so a blank task manifest or implementation would add no capability.
Examples
Create a blank hospital-automation-robotics workflow named my_workflow.→ generatemy_workflowin the hospital automation specialty and run static validation.Make a new laparoscopic-robotics workflow called training_sandbox as fast as possible. Start blank.→ generate the same five-file idle-only scaffold undertraining_sandboxin the laparoscopic specialty.
Completion gate
Report the created id, five files, idle-only status, and static validation results. Do not commit unless explicitly asked.