name: oee-analysis
description: Compute and plot OEE — a 7-day trend chart with target/threshold lines, an overlay of telemetry alarms and downtime stops, plus a flat CSV export. Saves /tmp/oee-trend--line--.png + .csv.
enabled: true
Instructions
Use this skill whenever Frank asks for an OEE trend, a chart, "what does the week look like?", or any "show me, don't tell me" view of production. This is the computation surface — it uses code_interpreter against the numbers returned by azure-iot. Do NOT do mental math on OEE values; always send the numbers through this skill.
Workflow
- Pull OEE rows via
iot_get_oee(plant_id="P-CLE", line="<line>", date_from="<7 days ago>", date_to="<today>"). - Pull downtime events via
iot_list_downtime_events(plant_id="P-CLE", line="<line>", since="<7 days ago>")— used as tick marks on the chart. - (Optional, only for the spindle story) Pull telemetry via
iot_get_telemetry("DEV-3001", since="<window>")— used as the secondary axis on the chart. - Pass the three JSON blobs into
code_interpreterwith the analysis script — DO NOT retype any numbers. - The script writes:
/tmp/oee-trend-<plant_slug>-line-<N>-<date>.png— chart/tmp/oee-trend-<plant_slug>-line-<N>-<date>.csv— flat OEE for the brief
- Reference both file paths in your response so file-sharing picks them up.
Reference script (oee_analysis.py)
The full script is in scripts/oee_analysis.py in this skill's directory. Read it once with file_read, then invoke via code_interpreter — DO NOT inline the script body in your response.
The script signature:
python /app/use-cases/plant-floor-supervisor/skills/oee-analysis/scripts/oee_analysis.py \
--plant-id P-CLE \
--line "Line 3 — Precision" \
--date 2026-06-09 \
--oee-json '<JSON returned by iot_get_oee>' \
--downtime-json '<JSON returned by iot_list_downtime_events, optional>' \
--telemetry-json '<JSON returned by iot_get_telemetry, optional>' \
--out-dir /tmp
Outputs to stdout: a 1-line summary of trend direction and the file paths. Outputs to disk: the .png + .csv.
Chart conventions
- Solid line: daily OEE % over the window
- Dashed horizontal: target (e.g. 80%)
- Shaded band:
watchzone (target-5 to target), light yellow - Shaded band below:
investigatezone (<target-5), light red - Vertical tick marks: each downtime event (height = duration_minutes / 10, max 5px)
- Secondary axis (only if --telemetry-json): vibration overlay on the same x-axis — for the spindle story
When NOT to use
- A single-day OEE number — just cite
iot_get_oeeinline; don't build the chart for one row. - Computing variance on financial spend (that's a different persona).