[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-nvidia-inputfileskill":3,"mdc--bl1ryq-key":45,"related-repo-nvidia-inputfileskill":899,"related-org-nvidia-inputfileskill":972},{"slug":4,"name":5,"fn":6,"description":7,"org":8,"tags":12,"stars":24,"repoUrl":25,"updatedAt":26,"license":27,"forks":28,"topics":29,"repo":40,"sourceUrl":43,"mdContent":44},"inputfileskill","input_file_skill","manage simulator input files","Parse, modify, validate, and patch simulator input files. Use when working with reservoir simulation input files, testing scenarios, or validating simulation configurations. This implementation supports reference format (.DATA); other simulators use different extensions (e.g., .afi, .DAT). Supports natural language modifications, keyword patching, and syntax validation.",{"slug":9,"name":10,"logoUrl":11,"githubOrg":10},"nvidia","NVIDIA","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fnvidia.png",[13,17,20,21],{"name":14,"slug":15,"type":16},"Validation","validation","tag",{"name":18,"slug":19,"type":16},"Configuration","configuration",{"name":10,"slug":9,"type":16},{"name":22,"slug":23,"type":16},"Simulation","simulation",4115,"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002FGenerativeAIExamples","2026-07-14T05:32:16.602719","Apache-2.0",1093,[30,31,32,33,34,35,36,37,38,39],"gpu-acceleration","large-language-models","llm","llm-inference","microservice","nemo","rag","retrieval-augmented-generation","tensorrt","triton-inference-server",{"repoUrl":25,"stars":24,"forks":28,"topics":41,"description":42},[30,31,32,33,34,35,36,37,38,39],"Generative AI reference workflows optimized for accelerated infrastructure and microservice architecture.","https:\u002F\u002Fgithub.com\u002FNVIDIA\u002FGenerativeAIExamples\u002Ftree\u002FHEAD\u002Findustries\u002Fenergy\u002Fsimulation-workflow-agent\u002Fsim_agent\u002Fsrc\u002Fsimulator_agent\u002Fskills\u002Finput_file_skill","---\nname: input_file_skill\ndescription: Parse, modify, validate, and patch simulator input files. Use when working with reservoir simulation input files, testing scenarios, or validating simulation configurations. This implementation supports reference format (.DATA); other simulators use different extensions (e.g., .afi, .DAT). Supports natural language modifications, keyword patching, and syntax validation.\nlicense: Apache-2.0\nmetadata:\n  author: sim-agent\n  version: \"1.0\"\n  category: simulator\ncompatibility: Requires simulator tools and Python environment with langchain, pydantic, and nvidia-ai-endpoints packages\n---\n\n# DATA File Processing Skill\n\nThis skill provides tools for working with simulator input files. The reference format uses .DATA as the primary input extension; other simulators use different extensions.\n\n## Overview\n\nThe DATA File Processing skill enables agents to:\n\n- **Parse** simulator input files to understand their structure and sections\n- **Modify** simulator input files using natural language instructions\n- **Validate** simulator input files for syntax and consistency\n- **Patch** specific keyword blocks without rewriting entire files\n\n## Tools\n\n### parse_simulation_input_file\n\nParses a simulator input file and returns its structure (sections found). Reference format uses .DATA extension.\n\n**Usage:**\n```python\nparse_simulation_input_file(file_path: str) -> str\n```\n\n**Example:**\n```\nparse_simulation_input_file(\"data\u002Fexample_cases\u002FSPE10\u002FCASE\u002FSPE10_TOPLAYER.DATA\")\n```\n\n**Returns:** A string listing all sections found (e.g., \"Sections found: HEADER, RUNSPEC, GRID, PROPS, SOLUTION, SUMMARY, SCHEDULE\")\n\n**When to use:** First step in scenario testing chain (TOOL_DECISION_TREE.md Section 2.4) or when user asks to parse\u002Flist sections of a simulator input file.\n\n### modify_simulation_input_file\n\nModifies a simulator input file based on natural language instructions. Can modify entire file or target specific keyword blocks.\n\n**Usage:**\n```python\nmodify_simulation_input_file(\n    file_path: str,\n    modifications: str,\n    output_path: Optional[str] = None,\n    llm_model: Optional[str] = None,\n    manual_context: Optional[str] = None,\n    example_context: Optional[str] = None,\n    target_keyword: Optional[str] = None\n) -> str\n```\n\n**Parameters:**\n- `file_path`: Path to the simulator input file to modify\n- `modifications`: Natural language description of changes (e.g., \"Increase water injection rate for well I1 to 55\")\n- `output_path`: Where to save modified file (default: overwrite original)\n- `llm_model`: Optional model override for LLM-based modifications\n- `manual_context`: Optional simulator manual excerpt for the relevant keyword\n- `example_context`: Optional example DATA snippets for the relevant keyword\n- `target_keyword`: If set, only this keyword block is edited; rest of file is copied unchanged\n\n**Example:**\n```\nmodify_simulation_input_file(\n    file_path=\"SPE1CASE1.DATA\",\n    modifications=\"Increase water injection rate for well I1 in WCONINJE to 55\",\n    output_path=\"SPE1CASE1_AGENT_GENERATED.DATA\",\n    target_keyword=\"WCONINJE\"\n)\n```\n\n**When to use:** In scenario test chain (Section 2.4) after parse_simulation_input_file → simulator_manual → simulator_examples, or when user requests modifications to a simulator input file.\n\n### patch_simulation_input_keyword\n\nPatches a specific keyword block in a simulator input file without modifying other parts. Useful for auto-fixes.\n\n**Usage:**\n```python\npatch_simulation_input_keyword(\n    file_path: str,\n    keyword: str,\n    output_path: str,\n    item_index: Optional[int] = None,\n    new_value: Optional[str] = None,\n    new_block_content: Optional[str] = None\n) -> str\n```\n\n**Parameters:**\n- `file_path`: Path to the simulator input file\n- `keyword`: Keyword to patch (e.g., WELLDIMS, TABDIMS)\n- `output_path`: Path for the new file (original is unchanged)\n- `item_index`: 1-based index of the numeric item to replace\n- `new_value`: New value for the item (used with item_index)\n- `new_block_content`: Exact new block content (keyword line + data). If set, item_index\u002Fnew_value are ignored.\n\n**Example:**\n```\npatch_simulation_input_keyword(\n    file_path=\"SPE1CASE1.DATA\",\n    keyword=\"WELLDIMS\",\n    output_path=\"SPE1CASE1_FIXED.DATA\",\n    item_index=1,\n    new_value=\"10\"\n)\n```\n\n**When to use:** In HITL apply fix flow (Section 2.2) for auto-fixes, or when only a specific keyword needs to be changed.\n\n## Workflow Integration\n\nThis skill integrates with the Simulator Agent's decision tree (TOOL_DECISION_TREE.md):\n\n1. **Scenario Test Chain (Section 2.4):**\n   ```\n   parse_simulation_input_file → simulator_manual → simulator_examples → modify_simulation_input_file → run_and_heal\n   ```\n\n2. **HITL Apply Fix (Section 2.2):**\n   ```\n   patch_simulation_input_keyword or modify_simulation_input_file → run_and_heal\n   ```\n\n## Implementation Details\n\nTools are implemented as LangChain tools with Pydantic input schemas. The skill uses:\n\n- **utils.py**: Shared utility functions for parsing, keyword finding, and LLM integration\n- **Tool modules**: Individual tool implementations in separate modules\n- **LLM integration**: Uses ChatOpenAI for natural language modifications\n\n## Error Handling\n\nAll tools return descriptive error messages if:\n- Files are not found\n- Syntax errors occur during parsing\n- LLM modifications fail\n- Validation checks fail\n\n## References\n\n- [OPM Flow Manual](references\u002FOPM_MANUAL.md) - Detailed keyword reference\n- [Tool Decision Tree](references\u002FTOOL_DECISION_TREE.md) - Routing logic\n- [Examples](references\u002FEXAMPLES.md) - Usage examples\n\n## Testing\n\nRun the test suite:\n\n```bash\npython -m simulator_agent.skills.input_file_skill.test --file path\u002Fto\u002Ftest.DATA\n```\n\nOr test individual tools:\n\n```bash\npython -m simulator_agent.skills.input_file_skill.test --file path\u002Fto\u002Ftest.DATA --tool parse_simulation_input_file\n```\n\nThe test script is located in `test.py` at the root of the skill directory.\n\n",{"data":46,"body":52},{"name":5,"description":7,"license":27,"metadata":47,"compatibility":51},{"author":48,"version":49,"category":50},"sim-agent","1.0","simulator","Requires simulator tools and Python environment with langchain, pydantic, and nvidia-ai-endpoints packages",{"type":53,"children":54},"root",[55,64,70,77,82,128,134,140,145,153,175,183,193,203,213,218,223,230,317,325,405,412,421,430,435,440,447,516,523,590,597,606,615,621,626,664,670,675,708,714,719,742,748,785,791,796,834,839,880,893],{"type":56,"tag":57,"props":58,"children":60},"element","h1",{"id":59},"data-file-processing-skill",[61],{"type":62,"value":63},"text","DATA File Processing Skill",{"type":56,"tag":65,"props":66,"children":67},"p",{},[68],{"type":62,"value":69},"This skill provides tools for working with simulator input files. The reference format uses .DATA as the primary input extension; other simulators use different extensions.",{"type":56,"tag":71,"props":72,"children":74},"h2",{"id":73},"overview",[75],{"type":62,"value":76},"Overview",{"type":56,"tag":65,"props":78,"children":79},{},[80],{"type":62,"value":81},"The DATA File Processing skill enables agents to:",{"type":56,"tag":83,"props":84,"children":85},"ul",{},[86,98,108,118],{"type":56,"tag":87,"props":88,"children":89},"li",{},[90,96],{"type":56,"tag":91,"props":92,"children":93},"strong",{},[94],{"type":62,"value":95},"Parse",{"type":62,"value":97}," simulator input files to understand their structure and sections",{"type":56,"tag":87,"props":99,"children":100},{},[101,106],{"type":56,"tag":91,"props":102,"children":103},{},[104],{"type":62,"value":105},"Modify",{"type":62,"value":107}," simulator input files using natural language instructions",{"type":56,"tag":87,"props":109,"children":110},{},[111,116],{"type":56,"tag":91,"props":112,"children":113},{},[114],{"type":62,"value":115},"Validate",{"type":62,"value":117}," simulator input files for syntax and consistency",{"type":56,"tag":87,"props":119,"children":120},{},[121,126],{"type":56,"tag":91,"props":122,"children":123},{},[124],{"type":62,"value":125},"Patch",{"type":62,"value":127}," specific keyword blocks without rewriting entire files",{"type":56,"tag":71,"props":129,"children":131},{"id":130},"tools",[132],{"type":62,"value":133},"Tools",{"type":56,"tag":135,"props":136,"children":138},"h3",{"id":137},"parse_simulation_input_file",[139],{"type":62,"value":137},{"type":56,"tag":65,"props":141,"children":142},{},[143],{"type":62,"value":144},"Parses a simulator input file and returns its structure (sections found). Reference format uses .DATA extension.",{"type":56,"tag":65,"props":146,"children":147},{},[148],{"type":56,"tag":91,"props":149,"children":150},{},[151],{"type":62,"value":152},"Usage:",{"type":56,"tag":154,"props":155,"children":160},"pre",{"className":156,"code":157,"language":158,"meta":159,"style":159},"language-python shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","parse_simulation_input_file(file_path: str) -> str\n","python","",[161],{"type":56,"tag":162,"props":163,"children":164},"code",{"__ignoreMap":159},[165],{"type":56,"tag":166,"props":167,"children":170},"span",{"class":168,"line":169},"line",1,[171],{"type":56,"tag":166,"props":172,"children":173},{},[174],{"type":62,"value":157},{"type":56,"tag":65,"props":176,"children":177},{},[178],{"type":56,"tag":91,"props":179,"children":180},{},[181],{"type":62,"value":182},"Example:",{"type":56,"tag":154,"props":184,"children":188},{"className":185,"code":187,"language":62},[186],"language-text","parse_simulation_input_file(\"data\u002Fexample_cases\u002FSPE10\u002FCASE\u002FSPE10_TOPLAYER.DATA\")\n",[189],{"type":56,"tag":162,"props":190,"children":191},{"__ignoreMap":159},[192],{"type":62,"value":187},{"type":56,"tag":65,"props":194,"children":195},{},[196,201],{"type":56,"tag":91,"props":197,"children":198},{},[199],{"type":62,"value":200},"Returns:",{"type":62,"value":202}," A string listing all sections found (e.g., \"Sections found: HEADER, RUNSPEC, GRID, PROPS, SOLUTION, SUMMARY, SCHEDULE\")",{"type":56,"tag":65,"props":204,"children":205},{},[206,211],{"type":56,"tag":91,"props":207,"children":208},{},[209],{"type":62,"value":210},"When to use:",{"type":62,"value":212}," First step in scenario testing chain (TOOL_DECISION_TREE.md Section 2.4) or when user asks to parse\u002Flist sections of a simulator input file.",{"type":56,"tag":135,"props":214,"children":216},{"id":215},"modify_simulation_input_file",[217],{"type":62,"value":215},{"type":56,"tag":65,"props":219,"children":220},{},[221],{"type":62,"value":222},"Modifies a simulator input file based on natural language instructions. Can modify entire file or target specific keyword blocks.",{"type":56,"tag":65,"props":224,"children":225},{},[226],{"type":56,"tag":91,"props":227,"children":228},{},[229],{"type":62,"value":152},{"type":56,"tag":154,"props":231,"children":233},{"className":156,"code":232,"language":158,"meta":159,"style":159},"modify_simulation_input_file(\n    file_path: str,\n    modifications: str,\n    output_path: Optional[str] = None,\n    llm_model: Optional[str] = None,\n    manual_context: Optional[str] = None,\n    example_context: Optional[str] = None,\n    target_keyword: Optional[str] = None\n) -> str\n",[234],{"type":56,"tag":162,"props":235,"children":236},{"__ignoreMap":159},[237,245,254,263,272,281,290,299,308],{"type":56,"tag":166,"props":238,"children":239},{"class":168,"line":169},[240],{"type":56,"tag":166,"props":241,"children":242},{},[243],{"type":62,"value":244},"modify_simulation_input_file(\n",{"type":56,"tag":166,"props":246,"children":248},{"class":168,"line":247},2,[249],{"type":56,"tag":166,"props":250,"children":251},{},[252],{"type":62,"value":253},"    file_path: str,\n",{"type":56,"tag":166,"props":255,"children":257},{"class":168,"line":256},3,[258],{"type":56,"tag":166,"props":259,"children":260},{},[261],{"type":62,"value":262},"    modifications: str,\n",{"type":56,"tag":166,"props":264,"children":266},{"class":168,"line":265},4,[267],{"type":56,"tag":166,"props":268,"children":269},{},[270],{"type":62,"value":271},"    output_path: Optional[str] = None,\n",{"type":56,"tag":166,"props":273,"children":275},{"class":168,"line":274},5,[276],{"type":56,"tag":166,"props":277,"children":278},{},[279],{"type":62,"value":280},"    llm_model: Optional[str] = None,\n",{"type":56,"tag":166,"props":282,"children":284},{"class":168,"line":283},6,[285],{"type":56,"tag":166,"props":286,"children":287},{},[288],{"type":62,"value":289},"    manual_context: Optional[str] = None,\n",{"type":56,"tag":166,"props":291,"children":293},{"class":168,"line":292},7,[294],{"type":56,"tag":166,"props":295,"children":296},{},[297],{"type":62,"value":298},"    example_context: Optional[str] = None,\n",{"type":56,"tag":166,"props":300,"children":302},{"class":168,"line":301},8,[303],{"type":56,"tag":166,"props":304,"children":305},{},[306],{"type":62,"value":307},"    target_keyword: Optional[str] = None\n",{"type":56,"tag":166,"props":309,"children":311},{"class":168,"line":310},9,[312],{"type":56,"tag":166,"props":313,"children":314},{},[315],{"type":62,"value":316},") -> str\n",{"type":56,"tag":65,"props":318,"children":319},{},[320],{"type":56,"tag":91,"props":321,"children":322},{},[323],{"type":62,"value":324},"Parameters:",{"type":56,"tag":83,"props":326,"children":327},{},[328,339,350,361,372,383,394],{"type":56,"tag":87,"props":329,"children":330},{},[331,337],{"type":56,"tag":162,"props":332,"children":334},{"className":333},[],[335],{"type":62,"value":336},"file_path",{"type":62,"value":338},": Path to the simulator input file to modify",{"type":56,"tag":87,"props":340,"children":341},{},[342,348],{"type":56,"tag":162,"props":343,"children":345},{"className":344},[],[346],{"type":62,"value":347},"modifications",{"type":62,"value":349},": Natural language description of changes (e.g., \"Increase water injection rate for well I1 to 55\")",{"type":56,"tag":87,"props":351,"children":352},{},[353,359],{"type":56,"tag":162,"props":354,"children":356},{"className":355},[],[357],{"type":62,"value":358},"output_path",{"type":62,"value":360},": Where to save modified file (default: overwrite original)",{"type":56,"tag":87,"props":362,"children":363},{},[364,370],{"type":56,"tag":162,"props":365,"children":367},{"className":366},[],[368],{"type":62,"value":369},"llm_model",{"type":62,"value":371},": Optional model override for LLM-based modifications",{"type":56,"tag":87,"props":373,"children":374},{},[375,381],{"type":56,"tag":162,"props":376,"children":378},{"className":377},[],[379],{"type":62,"value":380},"manual_context",{"type":62,"value":382},": Optional simulator manual excerpt for the relevant keyword",{"type":56,"tag":87,"props":384,"children":385},{},[386,392],{"type":56,"tag":162,"props":387,"children":389},{"className":388},[],[390],{"type":62,"value":391},"example_context",{"type":62,"value":393},": Optional example DATA snippets for the relevant keyword",{"type":56,"tag":87,"props":395,"children":396},{},[397,403],{"type":56,"tag":162,"props":398,"children":400},{"className":399},[],[401],{"type":62,"value":402},"target_keyword",{"type":62,"value":404},": If set, only this keyword block is edited; rest of file is copied unchanged",{"type":56,"tag":65,"props":406,"children":407},{},[408],{"type":56,"tag":91,"props":409,"children":410},{},[411],{"type":62,"value":182},{"type":56,"tag":154,"props":413,"children":416},{"className":414,"code":415,"language":62},[186],"modify_simulation_input_file(\n    file_path=\"SPE1CASE1.DATA\",\n    modifications=\"Increase water injection rate for well I1 in WCONINJE to 55\",\n    output_path=\"SPE1CASE1_AGENT_GENERATED.DATA\",\n    target_keyword=\"WCONINJE\"\n)\n",[417],{"type":56,"tag":162,"props":418,"children":419},{"__ignoreMap":159},[420],{"type":62,"value":415},{"type":56,"tag":65,"props":422,"children":423},{},[424,428],{"type":56,"tag":91,"props":425,"children":426},{},[427],{"type":62,"value":210},{"type":62,"value":429}," In scenario test chain (Section 2.4) after parse_simulation_input_file → simulator_manual → simulator_examples, or when user requests modifications to a simulator input file.",{"type":56,"tag":135,"props":431,"children":433},{"id":432},"patch_simulation_input_keyword",[434],{"type":62,"value":432},{"type":56,"tag":65,"props":436,"children":437},{},[438],{"type":62,"value":439},"Patches a specific keyword block in a simulator input file without modifying other parts. Useful for auto-fixes.",{"type":56,"tag":65,"props":441,"children":442},{},[443],{"type":56,"tag":91,"props":444,"children":445},{},[446],{"type":62,"value":152},{"type":56,"tag":154,"props":448,"children":450},{"className":156,"code":449,"language":158,"meta":159,"style":159},"patch_simulation_input_keyword(\n    file_path: str,\n    keyword: str,\n    output_path: str,\n    item_index: Optional[int] = None,\n    new_value: Optional[str] = None,\n    new_block_content: Optional[str] = None\n) -> str\n",[451],{"type":56,"tag":162,"props":452,"children":453},{"__ignoreMap":159},[454,462,469,477,485,493,501,509],{"type":56,"tag":166,"props":455,"children":456},{"class":168,"line":169},[457],{"type":56,"tag":166,"props":458,"children":459},{},[460],{"type":62,"value":461},"patch_simulation_input_keyword(\n",{"type":56,"tag":166,"props":463,"children":464},{"class":168,"line":247},[465],{"type":56,"tag":166,"props":466,"children":467},{},[468],{"type":62,"value":253},{"type":56,"tag":166,"props":470,"children":471},{"class":168,"line":256},[472],{"type":56,"tag":166,"props":473,"children":474},{},[475],{"type":62,"value":476},"    keyword: str,\n",{"type":56,"tag":166,"props":478,"children":479},{"class":168,"line":265},[480],{"type":56,"tag":166,"props":481,"children":482},{},[483],{"type":62,"value":484},"    output_path: str,\n",{"type":56,"tag":166,"props":486,"children":487},{"class":168,"line":274},[488],{"type":56,"tag":166,"props":489,"children":490},{},[491],{"type":62,"value":492},"    item_index: Optional[int] = None,\n",{"type":56,"tag":166,"props":494,"children":495},{"class":168,"line":283},[496],{"type":56,"tag":166,"props":497,"children":498},{},[499],{"type":62,"value":500},"    new_value: Optional[str] = None,\n",{"type":56,"tag":166,"props":502,"children":503},{"class":168,"line":292},[504],{"type":56,"tag":166,"props":505,"children":506},{},[507],{"type":62,"value":508},"    new_block_content: Optional[str] = None\n",{"type":56,"tag":166,"props":510,"children":511},{"class":168,"line":301},[512],{"type":56,"tag":166,"props":513,"children":514},{},[515],{"type":62,"value":316},{"type":56,"tag":65,"props":517,"children":518},{},[519],{"type":56,"tag":91,"props":520,"children":521},{},[522],{"type":62,"value":324},{"type":56,"tag":83,"props":524,"children":525},{},[526,536,547,557,568,579],{"type":56,"tag":87,"props":527,"children":528},{},[529,534],{"type":56,"tag":162,"props":530,"children":532},{"className":531},[],[533],{"type":62,"value":336},{"type":62,"value":535},": Path to the simulator input file",{"type":56,"tag":87,"props":537,"children":538},{},[539,545],{"type":56,"tag":162,"props":540,"children":542},{"className":541},[],[543],{"type":62,"value":544},"keyword",{"type":62,"value":546},": Keyword to patch (e.g., WELLDIMS, TABDIMS)",{"type":56,"tag":87,"props":548,"children":549},{},[550,555],{"type":56,"tag":162,"props":551,"children":553},{"className":552},[],[554],{"type":62,"value":358},{"type":62,"value":556},": Path for the new file (original is unchanged)",{"type":56,"tag":87,"props":558,"children":559},{},[560,566],{"type":56,"tag":162,"props":561,"children":563},{"className":562},[],[564],{"type":62,"value":565},"item_index",{"type":62,"value":567},": 1-based index of the numeric item to replace",{"type":56,"tag":87,"props":569,"children":570},{},[571,577],{"type":56,"tag":162,"props":572,"children":574},{"className":573},[],[575],{"type":62,"value":576},"new_value",{"type":62,"value":578},": New value for the item (used with item_index)",{"type":56,"tag":87,"props":580,"children":581},{},[582,588],{"type":56,"tag":162,"props":583,"children":585},{"className":584},[],[586],{"type":62,"value":587},"new_block_content",{"type":62,"value":589},": Exact new block content (keyword line + data). If set, item_index\u002Fnew_value are ignored.",{"type":56,"tag":65,"props":591,"children":592},{},[593],{"type":56,"tag":91,"props":594,"children":595},{},[596],{"type":62,"value":182},{"type":56,"tag":154,"props":598,"children":601},{"className":599,"code":600,"language":62},[186],"patch_simulation_input_keyword(\n    file_path=\"SPE1CASE1.DATA\",\n    keyword=\"WELLDIMS\",\n    output_path=\"SPE1CASE1_FIXED.DATA\",\n    item_index=1,\n    new_value=\"10\"\n)\n",[602],{"type":56,"tag":162,"props":603,"children":604},{"__ignoreMap":159},[605],{"type":62,"value":600},{"type":56,"tag":65,"props":607,"children":608},{},[609,613],{"type":56,"tag":91,"props":610,"children":611},{},[612],{"type":62,"value":210},{"type":62,"value":614}," In HITL apply fix flow (Section 2.2) for auto-fixes, or when only a specific keyword needs to be changed.",{"type":56,"tag":71,"props":616,"children":618},{"id":617},"workflow-integration",[619],{"type":62,"value":620},"Workflow Integration",{"type":56,"tag":65,"props":622,"children":623},{},[624],{"type":62,"value":625},"This skill integrates with the Simulator Agent's decision tree (TOOL_DECISION_TREE.md):",{"type":56,"tag":627,"props":628,"children":629},"ol",{},[630,647],{"type":56,"tag":87,"props":631,"children":632},{},[633,638],{"type":56,"tag":91,"props":634,"children":635},{},[636],{"type":62,"value":637},"Scenario Test Chain (Section 2.4):",{"type":56,"tag":154,"props":639,"children":642},{"className":640,"code":641,"language":62},[186],"parse_simulation_input_file → simulator_manual → simulator_examples → modify_simulation_input_file → run_and_heal\n",[643],{"type":56,"tag":162,"props":644,"children":645},{"__ignoreMap":159},[646],{"type":62,"value":641},{"type":56,"tag":87,"props":648,"children":649},{},[650,655],{"type":56,"tag":91,"props":651,"children":652},{},[653],{"type":62,"value":654},"HITL Apply Fix (Section 2.2):",{"type":56,"tag":154,"props":656,"children":659},{"className":657,"code":658,"language":62},[186],"patch_simulation_input_keyword or modify_simulation_input_file → run_and_heal\n",[660],{"type":56,"tag":162,"props":661,"children":662},{"__ignoreMap":159},[663],{"type":62,"value":658},{"type":56,"tag":71,"props":665,"children":667},{"id":666},"implementation-details",[668],{"type":62,"value":669},"Implementation Details",{"type":56,"tag":65,"props":671,"children":672},{},[673],{"type":62,"value":674},"Tools are implemented as LangChain tools with Pydantic input schemas. The skill uses:",{"type":56,"tag":83,"props":676,"children":677},{},[678,688,698],{"type":56,"tag":87,"props":679,"children":680},{},[681,686],{"type":56,"tag":91,"props":682,"children":683},{},[684],{"type":62,"value":685},"utils.py",{"type":62,"value":687},": Shared utility functions for parsing, keyword finding, and LLM integration",{"type":56,"tag":87,"props":689,"children":690},{},[691,696],{"type":56,"tag":91,"props":692,"children":693},{},[694],{"type":62,"value":695},"Tool modules",{"type":62,"value":697},": Individual tool implementations in separate modules",{"type":56,"tag":87,"props":699,"children":700},{},[701,706],{"type":56,"tag":91,"props":702,"children":703},{},[704],{"type":62,"value":705},"LLM integration",{"type":62,"value":707},": Uses ChatOpenAI for natural language modifications",{"type":56,"tag":71,"props":709,"children":711},{"id":710},"error-handling",[712],{"type":62,"value":713},"Error Handling",{"type":56,"tag":65,"props":715,"children":716},{},[717],{"type":62,"value":718},"All tools return descriptive error messages if:",{"type":56,"tag":83,"props":720,"children":721},{},[722,727,732,737],{"type":56,"tag":87,"props":723,"children":724},{},[725],{"type":62,"value":726},"Files are not found",{"type":56,"tag":87,"props":728,"children":729},{},[730],{"type":62,"value":731},"Syntax errors occur during parsing",{"type":56,"tag":87,"props":733,"children":734},{},[735],{"type":62,"value":736},"LLM modifications fail",{"type":56,"tag":87,"props":738,"children":739},{},[740],{"type":62,"value":741},"Validation checks fail",{"type":56,"tag":71,"props":743,"children":745},{"id":744},"references",[746],{"type":62,"value":747},"References",{"type":56,"tag":83,"props":749,"children":750},{},[751,763,774],{"type":56,"tag":87,"props":752,"children":753},{},[754,761],{"type":56,"tag":755,"props":756,"children":758},"a",{"href":757},"references\u002FOPM_MANUAL.md",[759],{"type":62,"value":760},"OPM Flow Manual",{"type":62,"value":762}," - Detailed keyword reference",{"type":56,"tag":87,"props":764,"children":765},{},[766,772],{"type":56,"tag":755,"props":767,"children":769},{"href":768},"references\u002FTOOL_DECISION_TREE.md",[770],{"type":62,"value":771},"Tool Decision Tree",{"type":62,"value":773}," - Routing logic",{"type":56,"tag":87,"props":775,"children":776},{},[777,783],{"type":56,"tag":755,"props":778,"children":780},{"href":779},"references\u002FEXAMPLES.md",[781],{"type":62,"value":782},"Examples",{"type":62,"value":784}," - Usage examples",{"type":56,"tag":71,"props":786,"children":788},{"id":787},"testing",[789],{"type":62,"value":790},"Testing",{"type":56,"tag":65,"props":792,"children":793},{},[794],{"type":62,"value":795},"Run the test suite:",{"type":56,"tag":154,"props":797,"children":801},{"className":798,"code":799,"language":800,"meta":159,"style":159},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","python -m simulator_agent.skills.input_file_skill.test --file path\u002Fto\u002Ftest.DATA\n","bash",[802],{"type":56,"tag":162,"props":803,"children":804},{"__ignoreMap":159},[805],{"type":56,"tag":166,"props":806,"children":807},{"class":168,"line":169},[808,813,819,824,829],{"type":56,"tag":166,"props":809,"children":811},{"style":810},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[812],{"type":62,"value":158},{"type":56,"tag":166,"props":814,"children":816},{"style":815},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[817],{"type":62,"value":818}," -m",{"type":56,"tag":166,"props":820,"children":821},{"style":815},[822],{"type":62,"value":823}," simulator_agent.skills.input_file_skill.test",{"type":56,"tag":166,"props":825,"children":826},{"style":815},[827],{"type":62,"value":828}," --file",{"type":56,"tag":166,"props":830,"children":831},{"style":815},[832],{"type":62,"value":833}," path\u002Fto\u002Ftest.DATA\n",{"type":56,"tag":65,"props":835,"children":836},{},[837],{"type":62,"value":838},"Or test individual tools:",{"type":56,"tag":154,"props":840,"children":842},{"className":798,"code":841,"language":800,"meta":159,"style":159},"python -m simulator_agent.skills.input_file_skill.test --file path\u002Fto\u002Ftest.DATA --tool parse_simulation_input_file\n",[843],{"type":56,"tag":162,"props":844,"children":845},{"__ignoreMap":159},[846],{"type":56,"tag":166,"props":847,"children":848},{"class":168,"line":169},[849,853,857,861,865,870,875],{"type":56,"tag":166,"props":850,"children":851},{"style":810},[852],{"type":62,"value":158},{"type":56,"tag":166,"props":854,"children":855},{"style":815},[856],{"type":62,"value":818},{"type":56,"tag":166,"props":858,"children":859},{"style":815},[860],{"type":62,"value":823},{"type":56,"tag":166,"props":862,"children":863},{"style":815},[864],{"type":62,"value":828},{"type":56,"tag":166,"props":866,"children":867},{"style":815},[868],{"type":62,"value":869}," path\u002Fto\u002Ftest.DATA",{"type":56,"tag":166,"props":871,"children":872},{"style":815},[873],{"type":62,"value":874}," --tool",{"type":56,"tag":166,"props":876,"children":877},{"style":815},[878],{"type":62,"value":879}," parse_simulation_input_file\n",{"type":56,"tag":65,"props":881,"children":882},{},[883,885,891],{"type":62,"value":884},"The test script is located in ",{"type":56,"tag":162,"props":886,"children":888},{"className":887},[],[889],{"type":62,"value":890},"test.py",{"type":62,"value":892}," at the root of the skill directory.",{"type":56,"tag":894,"props":895,"children":896},"style",{},[897],{"type":62,"value":898},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"items":900,"total":274},[901,908,924,940,956],{"slug":4,"name":5,"fn":6,"description":7,"org":902,"tags":903,"stars":24,"repoUrl":25,"updatedAt":26},{"slug":9,"name":10,"logoUrl":11,"githubOrg":10},[904,905,906,907],{"name":18,"slug":19,"type":16},{"name":10,"slug":9,"type":16},{"name":22,"slug":23,"type":16},{"name":14,"slug":15,"type":16},{"slug":909,"name":910,"fn":911,"description":912,"org":913,"tags":914,"stars":24,"repoUrl":25,"updatedAt":923},"plotskill","plot_skill","visualize simulation summary metrics","Plot and compare simulation summary metrics. Use when visualizing time-series results, comparing multiple cases, or analyzing production performance. Supports single and multi-metric plots, case comparisons, and automatic metric keyword resolution.",{"slug":9,"name":10,"logoUrl":11,"githubOrg":10},[915,918,921,922],{"name":916,"slug":917,"type":16},"Charts","charts",{"name":919,"slug":920,"type":16},"Data Visualization","data-visualization",{"name":10,"slug":9,"type":16},{"name":22,"slug":23,"type":16},"2026-07-14T05:32:19.171135",{"slug":925,"name":926,"fn":927,"description":928,"org":929,"tags":930,"stars":24,"repoUrl":25,"updatedAt":939},"ragskill","rag_skill","retrieve simulator documentation and examples","Retrieve information from simulator manual and example DATA files. Use when answering keyword format questions, syntax queries, or when looking up official documentation and working examples. Essential for understanding keyword definitions, parameter tables, and concrete usage patterns.",{"slug":9,"name":10,"logoUrl":11,"githubOrg":10},[931,934,935,938],{"name":932,"slug":933,"type":16},"Documentation","documentation",{"name":10,"slug":9,"type":16},{"name":936,"slug":937,"type":16},"Research","research",{"name":22,"slug":23,"type":16},"2026-07-14T05:32:15.32946",{"slug":941,"name":942,"fn":943,"description":944,"org":945,"tags":946,"stars":24,"repoUrl":25,"updatedAt":955},"resultsskill","results_skill","analyze simulation binary output files","Read and analyze simulation binary output files. Use when extracting summary data, grid properties, or running flow diagnostics (time-of-flight, tracer, allocation, F-Phi, Lorenz) from completed simulations.",{"slug":9,"name":10,"logoUrl":11,"githubOrg":10},[947,950,951,954],{"name":948,"slug":949,"type":16},"Data Analysis","data-analysis",{"name":10,"slug":9,"type":16},{"name":952,"slug":953,"type":16},"Performance","performance",{"name":22,"slug":23,"type":16},"2026-07-14T05:32:14.078951",{"slug":957,"name":958,"fn":959,"description":960,"org":961,"tags":962,"stars":24,"repoUrl":25,"updatedAt":971},"simulationskill","simulation_skill","run and monitor simulations","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.",{"slug":9,"name":10,"logoUrl":11,"githubOrg":10},[963,966,969,970],{"name":964,"slug":965,"type":16},"Automation","automation",{"name":967,"slug":968,"type":16},"Monitoring","monitoring",{"name":10,"slug":9,"type":16},{"name":22,"slug":23,"type":16},"2026-07-14T05:32:17.914931",{"items":973,"total":1125},[974,990,1007,1018,1030,1044,1057,1071,1082,1093,1107,1116],{"slug":975,"name":975,"fn":976,"description":977,"org":978,"tags":979,"stars":987,"repoUrl":988,"updatedAt":989},"nemoclaw-user-guide","retrieve NemoClaw documentation and configuration","Guides human users' AI agents to the NemoClaw docs MCP server and canonical Fern documentation in Markdown form. Use when users ask how to install, configure, operate, troubleshoot, secure, or learn NemoClaw with an AI coding assistant. Trigger keywords - nemoclaw docs, use nemoclaw with ai agent, nemoclaw mcp docs, nemoclaw install help, nemoclaw quickstart, nemoclaw markdown docs, llms.txt, agent skills.",{"slug":9,"name":10,"logoUrl":11,"githubOrg":10},[980,981,984],{"name":932,"slug":933,"type":16},{"name":982,"slug":983,"type":16},"MCP","mcp",{"name":985,"slug":986,"type":16},"Search","search",21777,"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002FNemoClaw","2026-07-20T06:00:01.461044",{"slug":991,"name":991,"fn":992,"description":993,"org":994,"tags":995,"stars":1004,"repoUrl":1005,"updatedAt":1006},"mcore-build-and-dependency","manage Megatron-LM development environments","Container-based dev environment setup and dependency management for Megatron-LM. Covers acquiring and launching the CI container, uv package management, and updating uv.lock.",{"slug":9,"name":10,"logoUrl":11,"githubOrg":10},[996,999,1002],{"name":997,"slug":998,"type":16},"Containers","containers",{"name":1000,"slug":1001,"type":16},"Deployment","deployment",{"name":1003,"slug":158,"type":16},"Python",17049,"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002FMegatron-LM","2026-07-27T06:06:11.249662",{"slug":1008,"name":1008,"fn":1009,"description":1010,"org":1011,"tags":1012,"stars":1004,"repoUrl":1005,"updatedAt":1017},"mcore-bump-base-image","update NVIDIA PyTorch base images","Bump the NVIDIA PyTorch base image (`nvcr.io\u002Fnvidia\u002Fpytorch:YY.MM-py3`) used by Megatron-LM CI. Covers the two pin sites (GitHub CI in `docker\u002F.ngc_version.dev` and GitLab CI in `.gitlab\u002Fstages\u002F01.build.yml`), the post-bump CI loop (re-run functional tests, refresh golden values, mark broken tests), and the gotchas that bit PRs",{"slug":9,"name":10,"logoUrl":11,"githubOrg":10},[1013,1016],{"name":1014,"slug":1015,"type":16},"CI\u002FCD","ci-cd",{"name":1000,"slug":1001,"type":16},"2026-07-14T05:25:59.97109",{"slug":1019,"name":1019,"fn":1020,"description":1021,"org":1022,"tags":1023,"stars":1004,"repoUrl":1005,"updatedAt":1029},"mcore-cicd","manage CI\u002FCD pipelines for Megatron-LM","CI\u002FCD reference for Megatron-LM. Covers CI pipeline structure, PR scope labels, triggering internal GitLab CI (which force-pushes the current branch to a pull-request\u002FBRANCH ref — always dry-run and verify the destination first; never run against shared or protected branches), and CI failure investigation.",{"slug":9,"name":10,"logoUrl":11,"githubOrg":10},[1024,1025,1026],{"name":1014,"slug":1015,"type":16},{"name":1000,"slug":1001,"type":16},{"name":1027,"slug":1028,"type":16},"GitHub","github","2026-07-27T06:06:12.278222",{"slug":1031,"name":1031,"fn":1032,"description":1033,"org":1034,"tags":1035,"stars":1004,"repoUrl":1005,"updatedAt":1043},"mcore-create-issue","investigate CI failures and create issues","Investigate a failing GitHub Actions run or job and create a GitHub issue for the failure.",{"slug":9,"name":10,"logoUrl":11,"githubOrg":10},[1036,1039,1040],{"name":1037,"slug":1038,"type":16},"Debugging","debugging",{"name":1027,"slug":1028,"type":16},{"name":1041,"slug":1042,"type":16},"Triage","triage","2026-07-14T05:25:57.442089",{"slug":1045,"name":1045,"fn":1046,"description":1047,"org":1048,"tags":1049,"stars":1004,"repoUrl":1005,"updatedAt":1056},"mcore-linting-and-formatting","lint and format Megatron-LM code","Linting and formatting for Megatron-LM. Covers running autoformat.sh, tools (ruff, black, isort, pylint, mypy), and code style rules.",{"slug":9,"name":10,"logoUrl":11,"githubOrg":10},[1050,1053],{"name":1051,"slug":1052,"type":16},"Best Practices","best-practices",{"name":1054,"slug":1055,"type":16},"Code Analysis","code-analysis","2026-07-14T05:25:56.18433",{"slug":1058,"name":1058,"fn":1059,"description":1060,"org":1061,"tags":1062,"stars":1004,"repoUrl":1005,"updatedAt":1070},"mcore-migrate-gpt-to-hybrid","migrate Megatron-LM models to HybridModel","Migration guide for moving Megatron Core GPTModel checkpoints, model providers, training commands, and layer mappings to HybridModel.",{"slug":9,"name":10,"logoUrl":11,"githubOrg":10},[1063,1066,1069],{"name":1064,"slug":1065,"type":16},"Machine Learning","machine-learning",{"name":1067,"slug":1068,"type":16},"Migration","migration",{"name":10,"slug":9,"type":16},"2026-07-17T06:07:11.777011",{"slug":1072,"name":1072,"fn":1073,"description":1074,"org":1075,"tags":1076,"stars":1004,"repoUrl":1005,"updatedAt":1081},"mcore-onboard-gb200-1node-tests","onboard functional tests for GB200","Onboard 1-node GitHub MR functional tests for GB200 from existing mr-scoped 2-node tests.",{"slug":9,"name":10,"logoUrl":11,"githubOrg":10},[1077,1080],{"name":1078,"slug":1079,"type":16},"QA","qa",{"name":790,"slug":787,"type":16},"2026-07-14T05:25:53.673039",{"slug":1083,"name":1083,"fn":1084,"description":1085,"org":1086,"tags":1087,"stars":1004,"repoUrl":1005,"updatedAt":1092},"mcore-run-on-slurm","launch distributed training jobs on SLURM","How to launch distributed Megatron-LM training jobs on a SLURM cluster. Covers a minimal sbatch skeleton, environment-variable setup for torch.distributed.run, CUDA_DEVICE_MAX_CONNECTIONS rules across hardware and parallelism modes, container conventions, monitoring, and per-rank failure diagnosis.",{"slug":9,"name":10,"logoUrl":11,"githubOrg":10},[1088,1089],{"name":1000,"slug":1001,"type":16},{"name":1090,"slug":1091,"type":16},"Infrastructure","infrastructure","2026-07-14T05:25:49.362534",{"slug":1094,"name":1094,"fn":1095,"description":1096,"org":1097,"tags":1098,"stars":1004,"repoUrl":1005,"updatedAt":1106},"mcore-split-pr","split pull requests to reduce review load","Split a PR into multiple PRs to reduce the number of required CODEOWNERS reviewer groups.",{"slug":9,"name":10,"logoUrl":11,"githubOrg":10},[1099,1102,1103],{"name":1100,"slug":1101,"type":16},"Code Review","code-review",{"name":1027,"slug":1028,"type":16},{"name":1104,"slug":1105,"type":16},"Pull Requests","pull-requests","2026-07-14T05:26:01.226578",{"slug":1108,"name":1108,"fn":1109,"description":1110,"org":1111,"tags":1112,"stars":1004,"repoUrl":1005,"updatedAt":1115},"mcore-testing","run and manage Megatron-LM tests","Test system for Megatron-LM. Covers test layout, recipe YAML structure, adding and running unit and functional tests, golden values, marker filters, and CI parity.",{"slug":9,"name":10,"logoUrl":11,"githubOrg":10},[1113,1114],{"name":1078,"slug":1079,"type":16},{"name":790,"slug":787,"type":16},"2026-07-14T05:25:54.928983",{"slug":1117,"name":1117,"fn":1118,"description":1119,"org":1120,"tags":1121,"stars":1004,"repoUrl":1005,"updatedAt":1124},"nightly-sync","manage nightly main-to-dev sync workflows","Domain knowledge for the nightly main-to-dev sync workflow. Covers merge strategy, CI architecture, failure investigation, and known issues.",{"slug":9,"name":10,"logoUrl":11,"githubOrg":10},[1122,1123],{"name":964,"slug":965,"type":16},{"name":1014,"slug":1015,"type":16},"2026-07-30T05:29:03.275638",496]