[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-nvidia-plotskill":3,"mdc--h0b68x-key":45,"related-repo-nvidia-plotskill":859,"related-org-nvidia-plotskill":932},{"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},"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},"nvidia","NVIDIA","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fnvidia.png",[13,17,18,21],{"name":14,"slug":15,"type":16},"Data Visualization","data-visualization","tag",{"name":10,"slug":9,"type":16},{"name":19,"slug":20,"type":16},"Simulation","simulation",{"name":22,"slug":23,"type":16},"Charts","charts",4115,"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002FGenerativeAIExamples","2026-07-14T05:32:19.171135","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\u002Fplot_skill","---\nname: plot_skill\ndescription: 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.\nlicense: Apache-2.0\nmetadata:\n  author: sim-agent\n  version: \"1.0\"\n  category: simulator\ncompatibility: Requires matplotlib and simulation output files (.SMSPEC). Uses EclReader for summary (Apache-2.0).\n---\n\n# Plotting Skill\n\nThis skill provides tools for visualizing and comparing simulation results.\n\n## Overview\n\nThe Plotting skill enables agents to:\n\n- **Plot** summary metrics from simulation outputs\n- **Compare** multiple cases on the same plot\n- **Visualize** time-series data (rates, cumulative production, etc.)\n- **Resolve** metric keywords automatically from user requests\n\n## Tools\n\n### plot_summary_metric\n\nPlots one or more summary metrics from simulation outputs on the same plot.\n\n**Usage:**\n```python\nplot_summary_metric(\n    output_dir: str,\n    metric_request: str,\n    manual_hint: Optional[str] = None,\n    save_path: Optional[str] = None\n) -> str\n```\n\n**Parameters:**\n- `output_dir`: Directory containing simulation output files (must contain .SMSPEC file)\n- `metric_request`: User request or summary keyword(s). For multiple metrics on one plot, use comma-separated keywords (e.g., \"FOPT, FWPT\" or \"FOPT,FWPT\")\n- `manual_hint`: Optional manual context or retrieved snippet to help map keywords\n- `save_path`: Optional path to save the plot image\n\n**Example:**\n```\nplot_summary_metric(\n    output_dir=\"\u002Fpath\u002Fto\u002Foutput\",\n    metric_request=\"FOPT, FWPT\",\n    save_path=\"\u002Fpath\u002Fto\u002Fplot.png\"\n)\n```\n\n**Returns:** Confirmation message with plot details and save path (if provided). Displays the plot.\n\n**When to use:** \n- After simulation run when user asks to plot results (TOOL_DECISION_TREE.md Section 3.1)\n- When user requests specific metrics (e.g., \"Plot cumulative oil production\")\n- For visualizing time-series data from completed simulations\n\n**Metric Keywords:**\nCommon summary keywords include:\n- `FOPT`: Cumulative oil production\n- `FOPR`: Oil production rate\n- `FWPT`: Cumulative water production\n- `FWPR`: Water production rate\n- `FGPT`: Cumulative gas production\n- `FGPR`: Gas production rate\n- `WBHP`: Well bottom-hole pressure\n- `WOPR`: Well oil production rate\n\n### plot_compare_summary_metric\n\nPlots a summary metric for two or more cases on the same axes for comparison.\n\n**Usage:**\n```python\nplot_compare_summary_metric(\n    output_dir: str,\n    metric_request: str,\n    case_stems: Optional[str] = None,\n    case_paths: Optional[str] = None,\n    save_path: Optional[str] = None\n) -> str\n```\n\n**Parameters:**\n- `output_dir`: Directory to save the plot and, when not using case_paths, directory containing .SMSPEC files to compare\n- `metric_request`: Summary keyword to compare (e.g., \"FOPT\" for cumulative oil, \"FOPR\" for oil rate)\n- `case_stems`: Comma-separated case name stems to compare (e.g., \"SPE10_TOPLAYER,SPE10_TOPLAYER_AGENT_GENERATED\"). If omitted and case_paths not set, all .SMSPEC files in output_dir are compared.\n- `case_paths`: Comma-separated paths to simulator input files (or .SMSPEC) for the cases to compare. Use when comparing cases from different directories (e.g., \"BASE\u002FSPE10.DATA,INFILL\u002FSPE10_INFILL.DATA\").\n- `save_path`: Optional path to save the comparison plot image\n\n**Example:**\n```\nplot_compare_summary_metric(\n    output_dir=\"\u002Fpath\u002Fto\u002Foutput\",\n    metric_request=\"FOPT\",\n    case_stems=\"SPE10_TOPLAYER,SPE10_TOPLAYER_AGENT_GENERATED\"\n)\n```\n\n**Returns:** Confirmation message with comparison plot details and save path (if provided). Displays the plot with different line styles for each case.\n\n**When to use:**\n- After running multiple cases when user asks to compare (Section 3.1)\n- For comparing baseline vs modified scenarios\n- When analyzing differences between simulation cases\n\n## Workflow Integration\n\nThis skill integrates with the Simulator Agent's decision tree (TOOL_DECISION_TREE.md):\n\n1. **Plot Results (Section 3.1):**\n   ```\n   User asks to plot → plot_summary_metric (if run_and_heal exists in history)\n   ```\n\n2. **Compare Cases (Section 3.1):**\n   ```\n   User asks to compare → plot_compare_summary_metric (if multiple cases available)\n   ```\n\n3. **After Simulation (Section 3.3):**\n   ```\n   run_and_heal → summarize → \"Do you want me to plot the results?\"\n   ```\n\n## Implementation Details\n\nTools are implemented as LangChain tools with Pydantic input schemas. The skill uses:\n\n- **EclReader**: Apache-2.0 reader for .SMSPEC\u002F.UNSMRY summary files\n- **Matplotlib**: For generating plots\n- **Metric resolution**: Automatic keyword mapping from user requests\n- **Time axis handling**: Supports both date-based and step-based time axes\n\n## Error Handling\n\nAll tools return descriptive error messages if:\n- Output directories are not found\n- .SMSPEC files are missing\n- Requested metrics are not available\n- Case files cannot be found\n- Plot generation fails\n\n## Metric Resolution\n\nThe tool automatically resolves metric keywords from user requests:\n- Direct keywords (e.g., \"FOPT\") are used as-is\n- Natural language (e.g., \"cumulative oil production\") is mapped to keywords\n- Manual hints from `simulator_manual` can help with keyword mapping\n- Multiple metrics can be plotted together using comma-separated keywords\n\n## References\n\n- [Tool Decision Tree](references\u002FTOOL_DECISION_TREE.md) - Routing logic\n- [Simulation Tools README](..\u002F..\u002Ftools\u002FREADME.md) - Detailed tool documentation\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 matplotlib and simulation output files (.SMSPEC). Uses EclReader for summary (Apache-2.0).",{"type":53,"children":54},"root",[55,64,70,77,82,128,134,140,145,153,221,229,276,284,294,304,312,330,340,431,436,441,448,508,515,570,577,586,595,602,620,626,631,686,692,697,740,746,751,779,785,790,821,827,853],{"type":56,"tag":57,"props":58,"children":60},"element","h1",{"id":59},"plotting-skill",[61],{"type":62,"value":63},"text","Plotting Skill",{"type":56,"tag":65,"props":66,"children":67},"p",{},[68],{"type":62,"value":69},"This skill provides tools for visualizing and comparing simulation results.",{"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 Plotting 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},"Plot",{"type":62,"value":97}," summary metrics from simulation outputs",{"type":56,"tag":87,"props":99,"children":100},{},[101,106],{"type":56,"tag":91,"props":102,"children":103},{},[104],{"type":62,"value":105},"Compare",{"type":62,"value":107}," multiple cases on the same plot",{"type":56,"tag":87,"props":109,"children":110},{},[111,116],{"type":56,"tag":91,"props":112,"children":113},{},[114],{"type":62,"value":115},"Visualize",{"type":62,"value":117}," time-series data (rates, cumulative production, etc.)",{"type":56,"tag":87,"props":119,"children":120},{},[121,126],{"type":56,"tag":91,"props":122,"children":123},{},[124],{"type":62,"value":125},"Resolve",{"type":62,"value":127}," metric keywords automatically from user requests",{"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},"plot_summary_metric",[139],{"type":62,"value":137},{"type":56,"tag":65,"props":141,"children":142},{},[143],{"type":62,"value":144},"Plots one or more summary metrics from simulation outputs on the same plot.",{"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","plot_summary_metric(\n    output_dir: str,\n    metric_request: str,\n    manual_hint: Optional[str] = None,\n    save_path: Optional[str] = None\n) -> str\n","python","",[161],{"type":56,"tag":162,"props":163,"children":164},"code",{"__ignoreMap":159},[165,176,185,194,203,212],{"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":175},"plot_summary_metric(\n",{"type":56,"tag":166,"props":177,"children":179},{"class":168,"line":178},2,[180],{"type":56,"tag":166,"props":181,"children":182},{},[183],{"type":62,"value":184},"    output_dir: str,\n",{"type":56,"tag":166,"props":186,"children":188},{"class":168,"line":187},3,[189],{"type":56,"tag":166,"props":190,"children":191},{},[192],{"type":62,"value":193},"    metric_request: str,\n",{"type":56,"tag":166,"props":195,"children":197},{"class":168,"line":196},4,[198],{"type":56,"tag":166,"props":199,"children":200},{},[201],{"type":62,"value":202},"    manual_hint: Optional[str] = None,\n",{"type":56,"tag":166,"props":204,"children":206},{"class":168,"line":205},5,[207],{"type":56,"tag":166,"props":208,"children":209},{},[210],{"type":62,"value":211},"    save_path: Optional[str] = None\n",{"type":56,"tag":166,"props":213,"children":215},{"class":168,"line":214},6,[216],{"type":56,"tag":166,"props":217,"children":218},{},[219],{"type":62,"value":220},") -> str\n",{"type":56,"tag":65,"props":222,"children":223},{},[224],{"type":56,"tag":91,"props":225,"children":226},{},[227],{"type":62,"value":228},"Parameters:",{"type":56,"tag":83,"props":230,"children":231},{},[232,243,254,265],{"type":56,"tag":87,"props":233,"children":234},{},[235,241],{"type":56,"tag":162,"props":236,"children":238},{"className":237},[],[239],{"type":62,"value":240},"output_dir",{"type":62,"value":242},": Directory containing simulation output files (must contain .SMSPEC file)",{"type":56,"tag":87,"props":244,"children":245},{},[246,252],{"type":56,"tag":162,"props":247,"children":249},{"className":248},[],[250],{"type":62,"value":251},"metric_request",{"type":62,"value":253},": User request or summary keyword(s). For multiple metrics on one plot, use comma-separated keywords (e.g., \"FOPT, FWPT\" or \"FOPT,FWPT\")",{"type":56,"tag":87,"props":255,"children":256},{},[257,263],{"type":56,"tag":162,"props":258,"children":260},{"className":259},[],[261],{"type":62,"value":262},"manual_hint",{"type":62,"value":264},": Optional manual context or retrieved snippet to help map keywords",{"type":56,"tag":87,"props":266,"children":267},{},[268,274],{"type":56,"tag":162,"props":269,"children":271},{"className":270},[],[272],{"type":62,"value":273},"save_path",{"type":62,"value":275},": Optional path to save the plot image",{"type":56,"tag":65,"props":277,"children":278},{},[279],{"type":56,"tag":91,"props":280,"children":281},{},[282],{"type":62,"value":283},"Example:",{"type":56,"tag":154,"props":285,"children":289},{"className":286,"code":288,"language":62},[287],"language-text","plot_summary_metric(\n    output_dir=\"\u002Fpath\u002Fto\u002Foutput\",\n    metric_request=\"FOPT, FWPT\",\n    save_path=\"\u002Fpath\u002Fto\u002Fplot.png\"\n)\n",[290],{"type":56,"tag":162,"props":291,"children":292},{"__ignoreMap":159},[293],{"type":62,"value":288},{"type":56,"tag":65,"props":295,"children":296},{},[297,302],{"type":56,"tag":91,"props":298,"children":299},{},[300],{"type":62,"value":301},"Returns:",{"type":62,"value":303}," Confirmation message with plot details and save path (if provided). Displays the plot.",{"type":56,"tag":65,"props":305,"children":306},{},[307],{"type":56,"tag":91,"props":308,"children":309},{},[310],{"type":62,"value":311},"When to use:",{"type":56,"tag":83,"props":313,"children":314},{},[315,320,325],{"type":56,"tag":87,"props":316,"children":317},{},[318],{"type":62,"value":319},"After simulation run when user asks to plot results (TOOL_DECISION_TREE.md Section 3.1)",{"type":56,"tag":87,"props":321,"children":322},{},[323],{"type":62,"value":324},"When user requests specific metrics (e.g., \"Plot cumulative oil production\")",{"type":56,"tag":87,"props":326,"children":327},{},[328],{"type":62,"value":329},"For visualizing time-series data from completed simulations",{"type":56,"tag":65,"props":331,"children":332},{},[333,338],{"type":56,"tag":91,"props":334,"children":335},{},[336],{"type":62,"value":337},"Metric Keywords:",{"type":62,"value":339},"\nCommon summary keywords include:",{"type":56,"tag":83,"props":341,"children":342},{},[343,354,365,376,387,398,409,420],{"type":56,"tag":87,"props":344,"children":345},{},[346,352],{"type":56,"tag":162,"props":347,"children":349},{"className":348},[],[350],{"type":62,"value":351},"FOPT",{"type":62,"value":353},": Cumulative oil production",{"type":56,"tag":87,"props":355,"children":356},{},[357,363],{"type":56,"tag":162,"props":358,"children":360},{"className":359},[],[361],{"type":62,"value":362},"FOPR",{"type":62,"value":364},": Oil production rate",{"type":56,"tag":87,"props":366,"children":367},{},[368,374],{"type":56,"tag":162,"props":369,"children":371},{"className":370},[],[372],{"type":62,"value":373},"FWPT",{"type":62,"value":375},": Cumulative water production",{"type":56,"tag":87,"props":377,"children":378},{},[379,385],{"type":56,"tag":162,"props":380,"children":382},{"className":381},[],[383],{"type":62,"value":384},"FWPR",{"type":62,"value":386},": Water production rate",{"type":56,"tag":87,"props":388,"children":389},{},[390,396],{"type":56,"tag":162,"props":391,"children":393},{"className":392},[],[394],{"type":62,"value":395},"FGPT",{"type":62,"value":397},": Cumulative gas production",{"type":56,"tag":87,"props":399,"children":400},{},[401,407],{"type":56,"tag":162,"props":402,"children":404},{"className":403},[],[405],{"type":62,"value":406},"FGPR",{"type":62,"value":408},": Gas production rate",{"type":56,"tag":87,"props":410,"children":411},{},[412,418],{"type":56,"tag":162,"props":413,"children":415},{"className":414},[],[416],{"type":62,"value":417},"WBHP",{"type":62,"value":419},": Well bottom-hole pressure",{"type":56,"tag":87,"props":421,"children":422},{},[423,429],{"type":56,"tag":162,"props":424,"children":426},{"className":425},[],[427],{"type":62,"value":428},"WOPR",{"type":62,"value":430},": Well oil production rate",{"type":56,"tag":135,"props":432,"children":434},{"id":433},"plot_compare_summary_metric",[435],{"type":62,"value":433},{"type":56,"tag":65,"props":437,"children":438},{},[439],{"type":62,"value":440},"Plots a summary metric for two or more cases on the same axes for comparison.",{"type":56,"tag":65,"props":442,"children":443},{},[444],{"type":56,"tag":91,"props":445,"children":446},{},[447],{"type":62,"value":152},{"type":56,"tag":154,"props":449,"children":451},{"className":156,"code":450,"language":158,"meta":159,"style":159},"plot_compare_summary_metric(\n    output_dir: str,\n    metric_request: str,\n    case_stems: Optional[str] = None,\n    case_paths: Optional[str] = None,\n    save_path: Optional[str] = None\n) -> str\n",[452],{"type":56,"tag":162,"props":453,"children":454},{"__ignoreMap":159},[455,463,470,477,485,493,500],{"type":56,"tag":166,"props":456,"children":457},{"class":168,"line":169},[458],{"type":56,"tag":166,"props":459,"children":460},{},[461],{"type":62,"value":462},"plot_compare_summary_metric(\n",{"type":56,"tag":166,"props":464,"children":465},{"class":168,"line":178},[466],{"type":56,"tag":166,"props":467,"children":468},{},[469],{"type":62,"value":184},{"type":56,"tag":166,"props":471,"children":472},{"class":168,"line":187},[473],{"type":56,"tag":166,"props":474,"children":475},{},[476],{"type":62,"value":193},{"type":56,"tag":166,"props":478,"children":479},{"class":168,"line":196},[480],{"type":56,"tag":166,"props":481,"children":482},{},[483],{"type":62,"value":484},"    case_stems: Optional[str] = None,\n",{"type":56,"tag":166,"props":486,"children":487},{"class":168,"line":205},[488],{"type":56,"tag":166,"props":489,"children":490},{},[491],{"type":62,"value":492},"    case_paths: Optional[str] = None,\n",{"type":56,"tag":166,"props":494,"children":495},{"class":168,"line":214},[496],{"type":56,"tag":166,"props":497,"children":498},{},[499],{"type":62,"value":211},{"type":56,"tag":166,"props":501,"children":503},{"class":168,"line":502},7,[504],{"type":56,"tag":166,"props":505,"children":506},{},[507],{"type":62,"value":220},{"type":56,"tag":65,"props":509,"children":510},{},[511],{"type":56,"tag":91,"props":512,"children":513},{},[514],{"type":62,"value":228},{"type":56,"tag":83,"props":516,"children":517},{},[518,528,538,549,560],{"type":56,"tag":87,"props":519,"children":520},{},[521,526],{"type":56,"tag":162,"props":522,"children":524},{"className":523},[],[525],{"type":62,"value":240},{"type":62,"value":527},": Directory to save the plot and, when not using case_paths, directory containing .SMSPEC files to compare",{"type":56,"tag":87,"props":529,"children":530},{},[531,536],{"type":56,"tag":162,"props":532,"children":534},{"className":533},[],[535],{"type":62,"value":251},{"type":62,"value":537},": Summary keyword to compare (e.g., \"FOPT\" for cumulative oil, \"FOPR\" for oil rate)",{"type":56,"tag":87,"props":539,"children":540},{},[541,547],{"type":56,"tag":162,"props":542,"children":544},{"className":543},[],[545],{"type":62,"value":546},"case_stems",{"type":62,"value":548},": Comma-separated case name stems to compare (e.g., \"SPE10_TOPLAYER,SPE10_TOPLAYER_AGENT_GENERATED\"). If omitted and case_paths not set, all .SMSPEC files in output_dir are compared.",{"type":56,"tag":87,"props":550,"children":551},{},[552,558],{"type":56,"tag":162,"props":553,"children":555},{"className":554},[],[556],{"type":62,"value":557},"case_paths",{"type":62,"value":559},": Comma-separated paths to simulator input files (or .SMSPEC) for the cases to compare. Use when comparing cases from different directories (e.g., \"BASE\u002FSPE10.DATA,INFILL\u002FSPE10_INFILL.DATA\").",{"type":56,"tag":87,"props":561,"children":562},{},[563,568],{"type":56,"tag":162,"props":564,"children":566},{"className":565},[],[567],{"type":62,"value":273},{"type":62,"value":569},": Optional path to save the comparison plot image",{"type":56,"tag":65,"props":571,"children":572},{},[573],{"type":56,"tag":91,"props":574,"children":575},{},[576],{"type":62,"value":283},{"type":56,"tag":154,"props":578,"children":581},{"className":579,"code":580,"language":62},[287],"plot_compare_summary_metric(\n    output_dir=\"\u002Fpath\u002Fto\u002Foutput\",\n    metric_request=\"FOPT\",\n    case_stems=\"SPE10_TOPLAYER,SPE10_TOPLAYER_AGENT_GENERATED\"\n)\n",[582],{"type":56,"tag":162,"props":583,"children":584},{"__ignoreMap":159},[585],{"type":62,"value":580},{"type":56,"tag":65,"props":587,"children":588},{},[589,593],{"type":56,"tag":91,"props":590,"children":591},{},[592],{"type":62,"value":301},{"type":62,"value":594}," Confirmation message with comparison plot details and save path (if provided). Displays the plot with different line styles for each case.",{"type":56,"tag":65,"props":596,"children":597},{},[598],{"type":56,"tag":91,"props":599,"children":600},{},[601],{"type":62,"value":311},{"type":56,"tag":83,"props":603,"children":604},{},[605,610,615],{"type":56,"tag":87,"props":606,"children":607},{},[608],{"type":62,"value":609},"After running multiple cases when user asks to compare (Section 3.1)",{"type":56,"tag":87,"props":611,"children":612},{},[613],{"type":62,"value":614},"For comparing baseline vs modified scenarios",{"type":56,"tag":87,"props":616,"children":617},{},[618],{"type":62,"value":619},"When analyzing differences between simulation cases",{"type":56,"tag":71,"props":621,"children":623},{"id":622},"workflow-integration",[624],{"type":62,"value":625},"Workflow Integration",{"type":56,"tag":65,"props":627,"children":628},{},[629],{"type":62,"value":630},"This skill integrates with the Simulator Agent's decision tree (TOOL_DECISION_TREE.md):",{"type":56,"tag":632,"props":633,"children":634},"ol",{},[635,652,669],{"type":56,"tag":87,"props":636,"children":637},{},[638,643],{"type":56,"tag":91,"props":639,"children":640},{},[641],{"type":62,"value":642},"Plot Results (Section 3.1):",{"type":56,"tag":154,"props":644,"children":647},{"className":645,"code":646,"language":62},[287],"User asks to plot → plot_summary_metric (if run_and_heal exists in history)\n",[648],{"type":56,"tag":162,"props":649,"children":650},{"__ignoreMap":159},[651],{"type":62,"value":646},{"type":56,"tag":87,"props":653,"children":654},{},[655,660],{"type":56,"tag":91,"props":656,"children":657},{},[658],{"type":62,"value":659},"Compare Cases (Section 3.1):",{"type":56,"tag":154,"props":661,"children":664},{"className":662,"code":663,"language":62},[287],"User asks to compare → plot_compare_summary_metric (if multiple cases available)\n",[665],{"type":56,"tag":162,"props":666,"children":667},{"__ignoreMap":159},[668],{"type":62,"value":663},{"type":56,"tag":87,"props":670,"children":671},{},[672,677],{"type":56,"tag":91,"props":673,"children":674},{},[675],{"type":62,"value":676},"After Simulation (Section 3.3):",{"type":56,"tag":154,"props":678,"children":681},{"className":679,"code":680,"language":62},[287],"run_and_heal → summarize → \"Do you want me to plot the results?\"\n",[682],{"type":56,"tag":162,"props":683,"children":684},{"__ignoreMap":159},[685],{"type":62,"value":680},{"type":56,"tag":71,"props":687,"children":689},{"id":688},"implementation-details",[690],{"type":62,"value":691},"Implementation Details",{"type":56,"tag":65,"props":693,"children":694},{},[695],{"type":62,"value":696},"Tools are implemented as LangChain tools with Pydantic input schemas. The skill uses:",{"type":56,"tag":83,"props":698,"children":699},{},[700,710,720,730],{"type":56,"tag":87,"props":701,"children":702},{},[703,708],{"type":56,"tag":91,"props":704,"children":705},{},[706],{"type":62,"value":707},"EclReader",{"type":62,"value":709},": Apache-2.0 reader for .SMSPEC\u002F.UNSMRY summary files",{"type":56,"tag":87,"props":711,"children":712},{},[713,718],{"type":56,"tag":91,"props":714,"children":715},{},[716],{"type":62,"value":717},"Matplotlib",{"type":62,"value":719},": For generating plots",{"type":56,"tag":87,"props":721,"children":722},{},[723,728],{"type":56,"tag":91,"props":724,"children":725},{},[726],{"type":62,"value":727},"Metric resolution",{"type":62,"value":729},": Automatic keyword mapping from user requests",{"type":56,"tag":87,"props":731,"children":732},{},[733,738],{"type":56,"tag":91,"props":734,"children":735},{},[736],{"type":62,"value":737},"Time axis handling",{"type":62,"value":739},": Supports both date-based and step-based time axes",{"type":56,"tag":71,"props":741,"children":743},{"id":742},"error-handling",[744],{"type":62,"value":745},"Error Handling",{"type":56,"tag":65,"props":747,"children":748},{},[749],{"type":62,"value":750},"All tools return descriptive error messages if:",{"type":56,"tag":83,"props":752,"children":753},{},[754,759,764,769,774],{"type":56,"tag":87,"props":755,"children":756},{},[757],{"type":62,"value":758},"Output directories are not found",{"type":56,"tag":87,"props":760,"children":761},{},[762],{"type":62,"value":763},".SMSPEC files are missing",{"type":56,"tag":87,"props":765,"children":766},{},[767],{"type":62,"value":768},"Requested metrics are not available",{"type":56,"tag":87,"props":770,"children":771},{},[772],{"type":62,"value":773},"Case files cannot be found",{"type":56,"tag":87,"props":775,"children":776},{},[777],{"type":62,"value":778},"Plot generation fails",{"type":56,"tag":71,"props":780,"children":782},{"id":781},"metric-resolution",[783],{"type":62,"value":784},"Metric Resolution",{"type":56,"tag":65,"props":786,"children":787},{},[788],{"type":62,"value":789},"The tool automatically resolves metric keywords from user requests:",{"type":56,"tag":83,"props":791,"children":792},{},[793,798,803,816],{"type":56,"tag":87,"props":794,"children":795},{},[796],{"type":62,"value":797},"Direct keywords (e.g., \"FOPT\") are used as-is",{"type":56,"tag":87,"props":799,"children":800},{},[801],{"type":62,"value":802},"Natural language (e.g., \"cumulative oil production\") is mapped to keywords",{"type":56,"tag":87,"props":804,"children":805},{},[806,808,814],{"type":62,"value":807},"Manual hints from ",{"type":56,"tag":162,"props":809,"children":811},{"className":810},[],[812],{"type":62,"value":813},"simulator_manual",{"type":62,"value":815}," can help with keyword mapping",{"type":56,"tag":87,"props":817,"children":818},{},[819],{"type":62,"value":820},"Multiple metrics can be plotted together using comma-separated keywords",{"type":56,"tag":71,"props":822,"children":824},{"id":823},"references",[825],{"type":62,"value":826},"References",{"type":56,"tag":83,"props":828,"children":829},{},[830,842],{"type":56,"tag":87,"props":831,"children":832},{},[833,840],{"type":56,"tag":834,"props":835,"children":837},"a",{"href":836},"references\u002FTOOL_DECISION_TREE.md",[838],{"type":62,"value":839},"Tool Decision Tree",{"type":62,"value":841}," - Routing logic",{"type":56,"tag":87,"props":843,"children":844},{},[845,851],{"type":56,"tag":834,"props":846,"children":848},{"href":847},"..\u002F..\u002Ftools\u002FREADME.md",[849],{"type":62,"value":850},"Simulation Tools README",{"type":62,"value":852}," - Detailed tool documentation",{"type":56,"tag":854,"props":855,"children":856},"style",{},[857],{"type":62,"value":858},"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":860,"total":205},[861,877,884,900,916],{"slug":862,"name":863,"fn":864,"description":865,"org":866,"tags":867,"stars":24,"repoUrl":25,"updatedAt":876},"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},[868,871,872,873],{"name":869,"slug":870,"type":16},"Configuration","configuration",{"name":10,"slug":9,"type":16},{"name":19,"slug":20,"type":16},{"name":874,"slug":875,"type":16},"Validation","validation","2026-07-14T05:32:16.602719",{"slug":4,"name":5,"fn":6,"description":7,"org":878,"tags":879,"stars":24,"repoUrl":25,"updatedAt":26},{"slug":9,"name":10,"logoUrl":11,"githubOrg":10},[880,881,882,883],{"name":22,"slug":23,"type":16},{"name":14,"slug":15,"type":16},{"name":10,"slug":9,"type":16},{"name":19,"slug":20,"type":16},{"slug":885,"name":886,"fn":887,"description":888,"org":889,"tags":890,"stars":24,"repoUrl":25,"updatedAt":899},"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},[891,894,895,898],{"name":892,"slug":893,"type":16},"Documentation","documentation",{"name":10,"slug":9,"type":16},{"name":896,"slug":897,"type":16},"Research","research",{"name":19,"slug":20,"type":16},"2026-07-14T05:32:15.32946",{"slug":901,"name":902,"fn":903,"description":904,"org":905,"tags":906,"stars":24,"repoUrl":25,"updatedAt":915},"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},[907,910,911,914],{"name":908,"slug":909,"type":16},"Data Analysis","data-analysis",{"name":10,"slug":9,"type":16},{"name":912,"slug":913,"type":16},"Performance","performance",{"name":19,"slug":20,"type":16},"2026-07-14T05:32:14.078951",{"slug":917,"name":918,"fn":919,"description":920,"org":921,"tags":922,"stars":24,"repoUrl":25,"updatedAt":931},"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},[923,926,929,930],{"name":924,"slug":925,"type":16},"Automation","automation",{"name":927,"slug":928,"type":16},"Monitoring","monitoring",{"name":10,"slug":9,"type":16},{"name":19,"slug":20,"type":16},"2026-07-14T05:32:17.914931",{"items":933,"total":1087},[934,950,967,978,990,1004,1017,1031,1044,1055,1069,1078],{"slug":935,"name":935,"fn":936,"description":937,"org":938,"tags":939,"stars":947,"repoUrl":948,"updatedAt":949},"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},[940,941,944],{"name":892,"slug":893,"type":16},{"name":942,"slug":943,"type":16},"MCP","mcp",{"name":945,"slug":946,"type":16},"Search","search",21777,"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002FNemoClaw","2026-07-20T06:00:01.461044",{"slug":951,"name":951,"fn":952,"description":953,"org":954,"tags":955,"stars":964,"repoUrl":965,"updatedAt":966},"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},[956,959,962],{"name":957,"slug":958,"type":16},"Containers","containers",{"name":960,"slug":961,"type":16},"Deployment","deployment",{"name":963,"slug":158,"type":16},"Python",17049,"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002FMegatron-LM","2026-07-27T06:06:11.249662",{"slug":968,"name":968,"fn":969,"description":970,"org":971,"tags":972,"stars":964,"repoUrl":965,"updatedAt":977},"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},[973,976],{"name":974,"slug":975,"type":16},"CI\u002FCD","ci-cd",{"name":960,"slug":961,"type":16},"2026-07-14T05:25:59.97109",{"slug":979,"name":979,"fn":980,"description":981,"org":982,"tags":983,"stars":964,"repoUrl":965,"updatedAt":989},"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},[984,985,986],{"name":974,"slug":975,"type":16},{"name":960,"slug":961,"type":16},{"name":987,"slug":988,"type":16},"GitHub","github","2026-07-27T06:06:12.278222",{"slug":991,"name":991,"fn":992,"description":993,"org":994,"tags":995,"stars":964,"repoUrl":965,"updatedAt":1003},"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},[996,999,1000],{"name":997,"slug":998,"type":16},"Debugging","debugging",{"name":987,"slug":988,"type":16},{"name":1001,"slug":1002,"type":16},"Triage","triage","2026-07-14T05:25:57.442089",{"slug":1005,"name":1005,"fn":1006,"description":1007,"org":1008,"tags":1009,"stars":964,"repoUrl":965,"updatedAt":1016},"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},[1010,1013],{"name":1011,"slug":1012,"type":16},"Best Practices","best-practices",{"name":1014,"slug":1015,"type":16},"Code Analysis","code-analysis","2026-07-14T05:25:56.18433",{"slug":1018,"name":1018,"fn":1019,"description":1020,"org":1021,"tags":1022,"stars":964,"repoUrl":965,"updatedAt":1030},"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},[1023,1026,1029],{"name":1024,"slug":1025,"type":16},"Machine Learning","machine-learning",{"name":1027,"slug":1028,"type":16},"Migration","migration",{"name":10,"slug":9,"type":16},"2026-07-17T06:07:11.777011",{"slug":1032,"name":1032,"fn":1033,"description":1034,"org":1035,"tags":1036,"stars":964,"repoUrl":965,"updatedAt":1043},"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},[1037,1040],{"name":1038,"slug":1039,"type":16},"QA","qa",{"name":1041,"slug":1042,"type":16},"Testing","testing","2026-07-14T05:25:53.673039",{"slug":1045,"name":1045,"fn":1046,"description":1047,"org":1048,"tags":1049,"stars":964,"repoUrl":965,"updatedAt":1054},"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},[1050,1051],{"name":960,"slug":961,"type":16},{"name":1052,"slug":1053,"type":16},"Infrastructure","infrastructure","2026-07-14T05:25:49.362534",{"slug":1056,"name":1056,"fn":1057,"description":1058,"org":1059,"tags":1060,"stars":964,"repoUrl":965,"updatedAt":1068},"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},[1061,1064,1065],{"name":1062,"slug":1063,"type":16},"Code Review","code-review",{"name":987,"slug":988,"type":16},{"name":1066,"slug":1067,"type":16},"Pull Requests","pull-requests","2026-07-14T05:26:01.226578",{"slug":1070,"name":1070,"fn":1071,"description":1072,"org":1073,"tags":1074,"stars":964,"repoUrl":965,"updatedAt":1077},"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},[1075,1076],{"name":1038,"slug":1039,"type":16},{"name":1041,"slug":1042,"type":16},"2026-07-14T05:25:54.928983",{"slug":1079,"name":1079,"fn":1080,"description":1081,"org":1082,"tags":1083,"stars":964,"repoUrl":965,"updatedAt":1086},"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},[1084,1085],{"name":924,"slug":925,"type":16},{"name":974,"slug":975,"type":16},"2026-07-30T05:29:03.275638",496]