drilling-operations-analyst
SkillDev toolsQuantitative drilling performance analysis across the well lifecycle covering wellbore positioning, drilling efficiency, and economics. Use when asked to 'calculate a wellbore survey', 'run minimum curvature', 'compute MSE', 'analyze drilling efficiency', 'parse a daily drilling report', 'plot a mud weight window', 'track cost per foot', 'classify NPT', or 'benchmark wells against offsets', or any drilling optimization, trajectory, or well-planning analysis request
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the drilling-operations-analyst skill
What this skill tells your AI
The instructions your AI receives, as published by amazon-quick/amazon-quick-official-catalog in skills/energy-utilities/drilling-operations-analyst/SKILL.md and read by ahel’s review.
Overview
Drilling Operations Analyst provides quantitative analysis of drilling performance across the well lifecycle. It applies standard petroleum engineering methods for wellbore positioning (minimum curvature), drilling efficiency (mechanical specific energy), economics (cost per foot and non-productive time tracking), and wellbore stability (mud weight window). It parses unstructured daily drilling reports into structured data, benchmarks wells against offsets using normalized metrics, and returns actionable optimization recommendations. Use it for survey calculations, drilling efficiency analysis, report parsing, mud weight window plots, and portfolio benchmarking. Calculations run in Python; the full formulas and reference implementations live in references/petroleum-engineering-methods.md.
Workflow
<Definition - Reference Methods>
All formulas and reference Python implementations for this skill live in references/petroleum-engineering-methods.md: minimum curvature, mechanical specific energy, cost per foot, mud weight window, non-productive time, ROP models, and benchmarking statistics. Read that file before performing any calculation and use its equations exactly. Do not re-derive or approximate them from memory.
</Definition - Reference Methods>
<Definition - Minimum Curvature Method>
The SPE standard method for computing wellbore position between two survey stations by modeling the path as a circular arc. Produces TVD, north/east offsets, dogleg severity, vertical section, and closure. Full equations and code: references/petroleum-engineering-methods.md.
</Definition - Minimum Curvature Method>
<Definition - Mechanical Specific Energy (MSE)>
The energy required to destroy a unit volume of rock (Teale, 1965), in psi. Compared against confined compressive strength (CCS) to detect drilling dysfunction. Full equations and code: references/petroleum-engineering-methods.md.
</Definition - Mechanical Specific Energy (MSE)>
<Definition - Cost Per Foot (CPF)>
An economic performance metric combining bit, rig, trip, and drilling costs over footage drilled, reported per bit run, per hole section, and per well. Formula: references/petroleum-engineering-methods.md.
</Definition - Cost Per Foot (CPF)>
<Definition - Mud Weight Window>
The safe operating envelope in equivalent mud weight (ppg) between pore pressure (lower bound plus trip margin) and fracture gradient (upper bound minus surge margin). Formula: references/petroleum-engineering-methods.md.
</Definition - Mud Weight Window>
<Definition - Non-Productive Time (NPT)>
Time that does not advance well construction, classified by IADC standard categories. Includes invisible lost time (ILT) measured against offset P10 performance. Categories and formula: references/petroleum-engineering-methods.md.
</Definition - Non-Productive Time (NPT)>
<Workflow - Verify Reference Values description="Verify every time-varying value before any calculation uses it." tools=[web_search, url_fetch, get_current_time] triggers=["Before any calculation in any workflow", "When a formation strength, benchmark, rig rate, price, or regulatory limit is needed"]
-
[Agent] List the values the requested analysis needs and split them into stable (formula constants, unit conversions) and time-varying (formation strengths, offset or fleet benchmarks, rig rates, prices, regulatory or DLS limits). Validate: Each needed value is classified as stable or time-varying. If fails: Re-list until every value is classified.
-
[Decide] For each time-varying value, is it user-supplied, uploaded, or already verified this session?
- Yes for all: proceed to the calling workflow.
- No for any: continue to step 3.
-
[Agent] For each unverified time-varying value, get the current date with get_current_time, then verify the value with web_search or url_fetch against an authoritative source. Validate: Each value has a verified source (a URL fetched this session or a user-provided figure). If fails: Per Rule 1, stop and ask the user to provide or confirm the value before continuing.
</Workflow - Verify Reference Values>
<Workflow - Survey Calculation description="Calculate wellbore position from directional survey data using the minimum curvature method." tools=[run_python, file_read, open_in_session_tab, web_search, url_fetch, get_current_time] triggers=["calculate survey", "wellbore position", "minimum curvature", "plot trajectory", "survey stations"]
-
[Agent] Run <Workflow - Verify Reference Values> for any planned-trajectory or DLS-limit values this analysis will compare against. Validate: All time-varying comparison values are verified or user-provided. If fails: Stop per Rule 1 and ask the user.
-
[Agent] Load the survey file with file_read. Identify the MD, inclination (INC or I), and azimuth (AZ or A) columns and their units (degrees vs radians). Confirm MD is strictly increasing and values are physically plausible per Rule 6. Validate: Columns identified, units known, MD monotonic, inclination 0 to 180, azimuth 0 to 360. If fails: Report the specific invalid rows and ask the user to correct or confirm the azimuth reference.
-
[Agent] Read the minimum curvature equations and implementation in
references/petroleum-engineering-methods.mdand run them in run_python to produce TVD, north/east offsets, DLS, vertical section, closure distance, and closure azimuth for each station. Compute departure from plan if a planned trajectory is provided. Validate: Output has one row per station with no NaN in TVD, NS, EW, or DLS. If fails: Re-check unit conversion and the ratio-factor small-angle branch, then rerun. -
[Agent] Present the survey table as a spreadsheet (via canvas_xlsx) and the trajectory as charts (plan view, section view, and DLS vs depth via highcharts with html_design). Open the deliverables with open_in_session_tab. Validate: The table and charts exist and are opened in a session tab. If fails: Regenerate the missing deliverable and reopen.
</Workflow - Survey Calculation>
<Workflow - MSE Analysis description="Calculate mechanical specific energy to identify drilling dysfunction and optimize parameters." tools=[run_python, file_read, open_in_session_tab, web_search, url_fetch, get_current_time] triggers=["MSE", "mechanical specific energy", "drilling efficiency", "dysfunction", "optimize ROP"]
-
[Agent] Run <Workflow - Verify Reference Values> for the formation confined compressive strength (CCS) used as the efficiency baseline. Validate: CCS values are verified or user-provided per interval. If fails: Stop per Rule 1 and ask the user for the CCS profile.
-
[Agent] Load drilling data with file_read (depth or time, WOB, RPM, torque, ROP, bit diameter) and identify units. Note whether the torque is surface or downhole (see Gotchas). Validate: All required columns present with known units. If fails: Report missing columns and ask the user.
-
[Agent] Read the MSE equations in
references/petroleum-engineering-methods.mdand compute MSE per data point in run_python, using the surface-torque form only when downhole torque is unavailable. Validate: MSE computed for every valid row; rows with ROP <= 0 are marked NaN, not zero. If fails: Re-check units and the bit-area term, then rerun. -
[Agent] Flag intervals where MSE divided by CCS exceeds 2.5 and name the probable dysfunction mode from the methods file signatures. Recommend WOB, RPM, or flow-rate adjustments to move MSE toward the CCS baseline. Validate: Each flagged interval has a named probable mode and a recommendation. If fails: Re-evaluate the signature table for that interval.
-
[Agent] Present an MSE-vs-depth chart with the formation-strength overlay and highlighted dysfunction zones (highcharts with html_design), and open it with open_in_session_tab. Validate: Chart exists and is opened. If fails: Regenerate and reopen.
</Workflow - MSE Analysis>
<Workflow - Daily Drilling Report Parsing description="Extract structured drilling data from daily drilling reports." tools=[file_read_pdf, file_read_docx, file_read_image, run_python, open_in_session_tab] triggers=["parse DDR", "daily drilling report", "extract drilling data", "morning report"]
-
[Agent] Identify the report format (PDF, DOCX, image, or structured spreadsheet) and read it with the matching reader (file_read_pdf, file_read_docx, file_read_image, or file_read). Validate: Content extracted and non-empty. If fails: Report the unreadable file and ask for an alternative format.
-
[Agent] Extract the key fields: report date, well, rig, operator; 24-hour activity by time block; start and end depth and footage; drilling parameters (WOB, RPM, torque, flow rate, standpipe pressure); mud properties (weight in and out, funnel viscosity, PV, YP, gels); bit record (type, IADC code, hours, footage, dull grade); BHA; costs; and NPT events with duration and classification. Validate: Each field is either populated or explicitly marked as not present. If fails: Mark the field as missing rather than inferring.
-
[Agent] Structure the extracted data into a standard schema, one row per day. Flag any field parsed with confidence below 0.8 per Rule 7. Validate: Low-confidence extractions are flagged, not silently accepted. If fails: Re-scan the source text for the flagged field.
-
[Agent] Compute derived metrics in run_python (cumulative footage and cost, rolling 3-day average ROP, NPT percent, average connection time) and write the result to a spreadsheet via canvas_xlsx, then open it with open_in_session_tab. Validate: Spreadsheet created with derived metrics and opened. If fails: Regenerate the spreadsheet and reopen.
</Workflow - Daily Drilling Report Parsing>
<Workflow - Mud Weight Window Analysis description="Generate a pore pressure and fracture gradient plot with the safe operating envelope." tools=[run_python, file_read, open_in_session_tab, web_search, url_fetch, get_current_time] triggers=["mud weight window", "pore pressure", "fracture gradient", "kick tolerance", "wellbore stability"]
-
[Agent] Run <Workflow - Verify Reference Values> for pore pressure, fracture gradient, overburden, and any trip or surge margin that differs from the 0.5 ppg defaults. Validate: All gradient inputs and margins are verified or user-provided. If fails: Stop per Rule 1 and ask the user for the drilling program values.
-
[Agent] Load formation data with file_read (TVD, pore pressure, fracture gradient, overburden). Accept gradients or absolute pressures, converting pressures using 0.052 times TVD. Validate: Inputs loaded with consistent units and TVD increasing. If fails: Report the inconsistency and ask the user.
-
[Agent] Read the mud weight window formula in
references/petroleum-engineering-methods.mdand compute minimum mud weight, maximum mud weight, and window width per depth in run_python. Identify pinch points and the casing setting depth where the window narrows below about 0.5 ppg. Validate: Window width computed at every depth and pinch points identified. If fails: Re-check the margin values and rerun. -
[Agent] Present the mud weight window chart (TVD inverted on the y-axis, ppg on the x-axis) showing pore pressure, fracture gradient, overburden, planned mud weight, casing shoes, and formation tops, with safe, caution, and danger zones color coded (highcharts with html_design). Open it with open_in_session_tab. Validate: Chart exists with all curves and is opened. If fails: Regenerate and reopen.
</Workflow - Mud Weight Window Analysis>
<Workflow - Portfolio Benchmarking description="Compare drilling performance across multiple wells using normalized metrics." tools=[file_read, run_python, open_in_session_tab, start_task, get_task_result, web_search, url_fetch, get_current_time] triggers=["benchmark", "compare wells", "offset analysis", "days vs depth", "performance comparison"]
-
[Agent] Run <Workflow - Verify Reference Values> for any external benchmark, price, or fleet reference used in the comparison. Validate: External reference values are verified or user-provided. If fails: Stop per Rule 1 and ask the user.
-
[Agent] Load the multi-well dataset with file_read (well names, spud dates, section depths, time stamps, costs, NPT events). Validate: Dataset loaded with at least two wells and the required columns. If fails: Report missing wells or columns and ask the user.
-
[Agent] Build normalized days-vs-depth curves per Rule 11 (spud-date aligned, section by section, NPT excluded for the clean curve) in run_python. For large datasets, spawn per-well computation as background tasks with start_task and collect them with get_task_result. Validate: A normalized curve exists for every well. If fails: Re-run the missing wells, reading any errored task result first.
-
[Agent] Compute statistical benchmarks (P10, P50, P90 curves; best-in-class ROP by interval; NPT percent distribution and top causes; CPF by section and well; connection and tripping benchmarks) and fit the learning curve from the methods file. Validate: Each benchmark statistic is produced with its units. If fails: Re-check the input grouping and rerun.
-
[Agent] Present a benchmark report with ranked well performance, gap analysis against P10, and specific improvement recommendations, as a spreadsheet (canvas_xlsx) plus charts (highcharts with html_design). Open the deliverables with open_in_session_tab. Validate: Report and charts exist and are opened. If fails: Regenerate the missing deliverable and reopen.
</Workflow - Portfolio Benchmarking>
Signals
- GitHub stars
- 49
- Forks
- 2
- Last commit
- Sep 2026
Advanced
- Catalog kind
- skill
- Gateway key
drilling-operations-analyst- Source
- github.com/amazon-quick/amazon-quick-official-catalog