nvidia/simulation_skill
Run, monitor, and control simulations. Use when executing simulations, checking progress, or stopping running simulations. Supports foreground and background execution, progress monitoring, and process management.
npx skills add https://github.com/NVIDIA/GenerativeAIExamples --skill simulation_skill
This skill provides tools for executing and managing simulations.
The Simulation skill enables agents to:
Runs a simulation and, on failure, automatically parses PRT errors, optionally consults RAG (simulator_manual, simulator_examples), and produces a fixed DATA file. Implemented as a chain: run_simulation in parallel with PRT wait + error parsing; if errors are found, extract keyword, call RAG tools if config is available, then create a fixed DATA file (e.g. \*_FIXED.DATA).
Implementation: simulator_agent/tools/self_heal_chain.py
Usage (script):
python -m simulator_agent.tools.self_heal_chain \
--prt-loc-dir /path/to/output/ \
--data-file /path/to/CASE.DATA \
[--config /path/to/config.yaml] \
[--output-file /path/to/output/]
Parameters: data_file, output_dir (optional), num_mpi_processes (default: 1, for MPI parallel runs with np>1).
When to use:
Runs a simulation from a DATA file. Supports both foreground (wait for completion) and background (return immediately) execution.
Usage:
run_simulation(
data_file: str,
output_dir: Optional[str] = None,
num_threads: int = 1,
num_mpi_processes: int = 1,
additional_args: Optional[str] = None,
background: bool = True
) -> str
Parameters:
data_file: Path to the simulator input (DATA) file to runoutput_dir: Optional output directory (default: same directory as DATA file)num_threads: Number of threads for parallel simulation (default: 1)num_mpi_processes: Number of MPI processes (np). When > 1, runs via mpirun -np N flow ... (default: 1). Set OPM_MPI_LAUNCHER=mpiexec to use mpiexec instead.additional_args: Optional additional command-line argumentsbackground: If True, start and return immediately. If False, wait for completion and return full report including return code, stdout, stderr, and parsed PRT errors on failure.Example:
run_simulation(
data_file="SPE1CASE1_AGENT_GENERATED.DATA",
output_dir="/path/to/output",
num_threads=4,
background=False
)
Returns:
When to use:
Monitors the progress of a running simulation by reading the PRT file.
Usage:
monitor_simulation(
output_dir: str,
tail_lines: int = 80,
use_llm_summary: bool = False,
llm_model: Optional[str] = None
) -> str
Parameters:
output_dir: Directory containing simulation output files (must contain .PRT file)tail_lines: Number of lines to read from end of PRT file (default: 80)use_llm_summary: If True, use LLM to summarize the PRT tail (default: False)llm_model: Optional LLM model override for summaryExample:
monitor_simulation(
output_dir="/path/to/output",
tail_lines=100,
use_llm_summary=True
)
Returns: Simulation status (running/completed/failed) and PRT tail content, optionally with LLM summary.
When to use:
Stops a running simulation by process ID.
Usage:
stop_simulation(
pid: int,
output_dir: Optional[str] = None,
force: bool = False
) -> str
Parameters:
pid: Process ID of the simulation to stopoutput_dir: Optional output directory with run metadataforce: If True, use SIGKILL (force kill). If False, use SIGTERM (graceful shutdown).Example:
stop_simulation(
pid=12345,
output_dir="/path/to/output",
force=False
)
Returns: Confirmation message with PID, signal used, and metadata update status.
When to use:
This skill integrates with the Simulator Agent's decision tree (TOOL_DECISION_TREE.md):
run_and_heal (optionally after HITL confirm)
parse_simulation_input_file → simulator_manual → simulator_examples → modify_simulation_input_file → run_and_heal
User confirms → run_and_heal
run_and_heal → (auto-fix if failed) → summarize
monitor_simulation (via LLM choice)
stop_simulation (via LLM choice)
Tools are implemented as LangChain tools with Pydantic input schemas. The skill uses:
All tools return descriptive error messages if:
OPM_PROJECT_ROOT: Used to resolve paths in Docker environmentsOPM_FLOW_EXTRA_ARGS: Additional arguments passed to Flow (e.g., --CheckSatfuncConsistency=0)Take nvidia/simulation_skill from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.