microsoft/monte-carlo-analysis
Use this skill whenever the user asks to run a Monte Carlo simulation, model risk or uncertainty with random sampling, estimate P5/P50/P95 outcomes, or produce a probability distribution for project timelines, portfolio returns, downtime, costs, or similar uncertain variables. Trigger on phrases like 'run a Monte Carlo', 'simulate outcomes', 'probability chart for best and worst case', or when they give min/most-likely/max (or mean/std) and want thousands of iterations. Do NOT trigger for deterministic forecasts with no uncertainty, or for generic charts unrelated to simulation.
npx skills add https://github.com/microsoft/cat-agent-skills --skill monte-carlo-analysis
Convert an unstructured risk question into a structured Monte Carlo run via the
bundled scripts/monte_carlo.py toolkit. Sample from the right distribution,
summarise percentiles, and return a histogram PNG plus spreadsheet export.
Offer an interactive HTML chart when the user asks for it.
yield, downtime, claims, etc.). If the user did not give enough numbers to
parameterise a distribution, stop and ask — do not invent bounds. Prompt
with the distribution options below.
base_modifier forportfolio / compounding style: outcome = base * (1 + return)).
mean and sigma. Highlight the Mean vs P50 gap when skew is large.
lambda(expected count per interval, e.g. outages per month).
shape (k) andscale (λ). Shape < 1 → infant mortality, = 1 → exponential, > 1 → wear-out.
alpha andbeta. Useful for proportions, conversion rates, or task-completion estimates.
scale (mean =1 / rate). Good for time between random events (calls, failures, requests).
10000. Prefer a clearchart_title and x_axis_label in the user's domain units (days, USD, hours).
Also produce when asked:
distribution parameter, a simulations count slider, and a P-threshold
calculator (P(outcome < X) = ?)
.xlsx workbook (requires openpyxl; otherwise point them to the CSV)import sys
sys.path.insert(0, "scripts")
from monte_carlo import simulate
result = simulate({
"distribution": "triangular",
"low": 12, "peak": 18, "high": 45,
"simulations": 10000,
"chart_title": "Cloud migration duration (days)",
"x_axis_label": "Days",
"html": True, # optional interactive Chart.js page with live controls
"excel": True, # optional .xlsx (falls back to CSV if openpyxl missing)
"out_prefix": "simulation",
})
# result keys: mean, p5, p50, p95, brief_summary, chart_path, csv_path, …
result["brief_summary"] from the toolkit; you may lightly rephrase it into
the user's domain (days, dollars, hours) without changing the numbers.
### Simulation Analytics Report
Ran {simulations} iterations ({distribution}).
| Metric | Value |
| --- | --- |
| P5 (risk baseline) | {p5} |
| P50 (median) | {p50} |
| P95 (upper) | {p95} |
| Mean | {mean} |
Histogram: {chart_path}
Raw iterations: {csv_path}
### Brief summary
{brief_summary}
charts and exports.
into chat.
scripts/monte_carlo.py — simulation engine, PNG, CSV/Excel, interactive HTMLreferences/cheatsheet.md — parameters, CLI, test promptsassets/sample_triangular.json — demo payload (project timeline)assets/sample_normal.json — demo payload (portfolio returns)assets/sample_lognormal.json — demo payload (skewed downtime)assets/sample_poisson.json — demo payload (event count per interval)assets/sample_weibull.json — demo payload (component lifetime)assets/sample_exponential.json — demo payload (time between arrivals)Take microsoft/monte-carlo-analysis 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.