Claude Cursor Skill

monte-carlo-asset-health

Check the health of a data table/asset using Monte Carlo. Activates on "how is table X", "check health of X", "is X healthy", "status of X", "check on X table", or any health/status question about a data asset.

LLM Mart · 0 points · 0 views 0 listing impressions 0 install-command copies
Virus-scanned Reviewed automatically before listing.

Full trust report

Download monte-carlo-data-mc-agent-toolkit-skills_asset-health-bcc7373.zip · 8 KB
Part of monte-carlo-data/mc-agent-toolkit — 20 skills

Install

skills CLI npx skills add https://github.com/monte-carlo-data/mc-agent-toolkit/tree/main/skills/asset-health
Claude Code claude plugin marketplace add https://llmmart.ai/marketplace.json && claude plugin install monte-carlo-data-mc-agent-toolkit@llmmart
Git git clone https://github.com/monte-carlo-data/mc-agent-toolkit.git

The skills CLI installs just this skill, for any of its supported agents. Claude Code installs the whole monte-carlo-data/mc-agent-toolkit collection as a plugin from our marketplace. Git is the plain clone.

README

Monte Carlo Asset Health Skill

Check the health of a data table using Monte Carlo — surfaces last activity, active alerts, monitoring coverage, importance, tags, and upstream dependency health in a single structured report.

Editor & Stack Compatibility

The skill works with any AI editor that supports MCP and the Agent Skills format — including Claude Code, Cursor, and VS Code.

All warehouses supported by Monte Carlo work with this skill.

Prerequisites

  • Claude Code, Cursor, VS Code or any editor with MCP support
  • Monte Carlo account with Viewer role or above

Setup

Via the mc-agent-toolkit plugin (recommended)

Install the plugin for your editor — it bundles the skill, MCP server, and permissions automatically. See the main README for editor-specific instructions.

Standalone

  1. Configure the Monte Carlo MCP server:

    claude mcp add --transport http monte-carlo-mcp https://integrations.getmontecarlo.com/mcp
    
  2. Install the skill:

    npx skills add monte-carlo-data/mc-agent-toolkit --skill asset-health
    

    Or copy directly:

    cp -r skills/asset-health ~/.claude/skills/asset-health
    

Usage

Ask about the health or status of any table:

  • "How is table orders_status doing?"
  • "Check health of dim_customers"
  • "What's the status of raw_events?"
  • "Check on volume_change table"

The skill will produce a structured health report with metrics, active alerts, monitor status, and upstream dependency health.

Skill manifest

Monte Carlo Asset Health Skill

This skill checks the health of a data asset using Monte Carlo's observability platform. It produces a structured health report covering freshness, alerts, monitoring coverage, importance, and upstream dependency health.

Monte Carlo tool routing (required): Always call Monte Carlo MCP tools through this plugin's bundled server, whose fully-qualified tool names are mcp__plugin_mc-agent-toolkit_monte-carlo-mcp__<tool> (e.g. mcp__plugin_mc-agent-toolkit_monte-carlo-mcp__get_alerts). Bare tool names used in this skill (get_alerts, search, get_table, …) refer to that bundled server. If the session also has a separately-configured monte-carlo-mcp server, do not route to it — it may point at a different endpoint or credentials.

REQUIRED: Read reference files before executing

You MUST read both reference files using the Read tool before making any MCP tool calls. These files are the source of truth for tool calls, parameters, and response interpretation. This file only defines when to activate and how to format the output.

  1. references/workflows.md (relative to this file) — exact tool calls, phases, and execution order
  2. references/parameters.md (relative to this file) — parameter conventions and field details

Do NOT make any MCP tool calls until you have read both files.

When to activate this skill

Activate when the user:

  • Asks about health: "how is table X doing?", "check health of X", "is X healthy?"
  • Asks about status: "what's the status of X?", "status of orders table"
  • Asks to check on a table: "check on X table", "check on X"
  • Asks about reliability, freshness, or quality of a specific asset
  • References a table in context of incident triage or change planning

When NOT to activate this skill

  • Profiling or exploring table data (row counts, column stats, distributions) → use explore-table
  • Creating or suggesting monitors → use monitoring-advisor
  • Active incident triage (investigating root cause of a firing alert) → use prevent skill Workflow 3

Health report format

CRITICAL: Only report data returned by the tools defined in references/workflows.md. Do NOT call additional tools, do NOT infer or fabricate metrics. Each row below specifies exactly which tool provides its value.

All sections (Active Alerts, Monitors, Upstream Issues, Recommendations) must always appear with their heading. Never omit a section — if there is no data, show the empty-state text defined below.

Never use emoji shortcodes (like :warning: or :arrow_up:). Use Unicode emoji characters directly (like ⚠️) or plain text. Shortcodes render as raw text in the terminal.

Always display URLs as bare URLs, never as markdown links (e.g., [text](url)).

{MC_WEBAPP_URL} appears throughout this template. Every occurrence must be replaced with the actual value returned by calling get_mc_webapp_url(). Never hardcode or guess this URL — it varies by environment.

Present results in this structure:

## Health Check: <table_name>

**Tags:** `tag1:value1`, `tag2:value2` (or "None" if no tags)
**Link:** {MC_WEBAPP_URL}/assets/{mcon}
**Warehouse:** snowflake-prod (Snowflake)
**Status: 🟢 Healthy / 🟡 Degraded / 🔴 Unhealthy** | **Importance:** 0.85 (key asset ⭐️)
**Avg Reads/Day:** ~538 | **Avg Writes/Day:** ~12

| Metric        | Value                          | Signal |
|---------------|--------------------------------|--------|
| Last Updated | Apr 6, 2025                    | 🟢 Recent    |
| Alerts        | 2 active                       | 🔴 Has alerts |
| Monitoring    | 3 active monitors              | 🟢 Monitored  |
| Upstream      | 1/3 sources unhealthy          | 🔴 Issues     |

### Active Alerts

| Date  | Type           | Priority | Status           | Link                                                    |
|-------|----------------|----------|------------------|---------------------------------------------------------|
| Apr 8 | Metric anomaly | P3       | Not acknowledged | {MC_WEBAPP_URL}/alerts/{alert_uuid} |
| Apr 7 | Freshness      | P2       | Acknowledged     | {MC_WEBAPP_URL}/alerts/{alert_uuid} |

If there are more than 5 active alerts, display only 5. Do NOT put the overflow
message inside the table as a row. Instead, put it as plain text on the line
immediately after the table:

There are N more alerts not shown for brevity

If there are zero active alerts, show:
No active alerts in the last 7 days.

### Monitors

| Type        | Name                                    | Incidents (7d) | Status              |
|-------------|-----------------------------------------|----------------|---------------------|
| TABLE       | Orders freshness and schema             | 3              | Running hourly      |
| METRIC      | Revenue row count                       | 0              | Never executed      |
| BULK_METRIC | Warehouse volume check                  | 21             | ⚠️ 1 table has errors |

If there are zero monitors, show:
No monitors configured for this table.

### Upstream Issues
- raw_orders — FRESHNESS alert: not updated in 8h
- raw_payments — healthy
- dim_customers — healthy

> Want me to check further upstream for **raw_orders**?

If there are no upstream dependencies, show:
No upstream dependencies found.

### Diagnosis

1-2 sentences summarizing what is causing the table to be unhealthy, or
confirming it is healthy. This should naturally lead into the recommendations.

Example (unhealthy):
Upstream table raw_orders has not been updated in 8 hours, which is likely
causing staleness in this table. There are also 2 unacknowledged alerts.

Example (healthy):
Table is healthy — no active alerts, monitored, and all upstream sources
are in good shape.

### Recommendations
- Investigate upstream raw_orders freshness — likely root cause of this table's staleness
- Acknowledge or investigate the 2 active alerts

If there are no recommendations, show:
No recommendations — table looks healthy.

Metric definitions — exact data sources

Each metric row MUST use only the specified data source. Do not add, infer, or embellish values beyond what the tool returns.

Metric Data source What to show Signal
Last Updated get_table → last_updated_on Date of last data update (e.g., "Apr 6, 2025") 🟢 Recent (within 7 days) / 🟡 Stale (older than 7 days)
Alerts get_alerts → count "N active" or "No active alerts" 🔴 Has alerts / 🟢 No alerts
Monitoring get_monitors → count where is_paused is false "N active monitors" or "0 active monitors (M paused)". Include relevant details from monitor fields (incident counts, error counts, types). 🟢 Monitored (≥1 active) / 🔴 Unmonitored (0 active)
Upstream get_asset_lineage (upstream) + Phase 3 checks "N/M sources unhealthy" or "All N sources healthy" 🔴 Issues (any unhealthy) / 🟢 Healthy (all healthy)

Importance is shown next to the Status line (not in the metrics table). Source: get_table → importance_score + is_important. Show "X.XX (key asset ⭐️)" if key asset or importance > 0.8, otherwise just "X.XX".

Avg Reads/Day and Avg Writes/Day are shown below the Status line. Source: get_table → table_stats.avg_reads_per_active_day and table_stats.avg_writes_per_active_day.

Do NOT include downstream data. This skill only queries upstream lineage.

Status determination

  • 🔴 Unhealthy: Any active alerts on the asset (from get_alerts with statuses ["NOT_ACKNOWLEDGED", "ACKNOWLEDGED", "WORK_IN_PROGRESS"] — see parameters.md)
  • 🟡 Degraded: No active alerts, but 0 active monitors on a high-importance asset (importance > 0.8 or key asset)
  • 🟢 Healthy: No active alerts and has at least 1 active monitor

Tags

Display tags from the search tool's properties field. Show as inline badges: key:value. If no tags exist, show "None". Always include the Tags line.

Warehouse

Display the warehouse name and type from the search result. Always include this line.

Recommendations

Only include recommendations derivable from collected data:

  • Upstream health issues that may be root causes
  • Active alerts that need acknowledgment or investigation
  • Do NOT recommend specific monitor types — that is outside this skill's scope
Files (mc-agent-toolkit)
  • references
    • parameters.md 4.1 KB
      # MCP Parameter Notes
      
      Parameter details for the MCP tools used by the asset-health skill. Only covers
      the tools relevant to this skill's workflows.
      
      ---
      
      ## `get_alerts` — use snake_case parameters
      
      ```
      created_after
      created_before
      order_by
      table_mcons
      statuses
      ```
      
      Always provide `created_after` and `created_before`. Max window is 60 days.
      Pass ISO 8601 timestamps computed from the current date — e.g. for a 7-day
      window ending now: `created_after="2026-07-03T00:00:00Z"`,
      `created_before="2026-07-10T00:00:00Z"` (use the actual current date).
      
      When requesting active alerts, pass these three statuses:
      
      ```
      statuses: ["NOT_ACKNOWLEDGED", "ACKNOWLEDGED", "WORK_IN_PROGRESS"]
      ```
      
      Response field mapping for the alert table:
      - **Date** → `createdTime`
      - **Type** → `alert_types` (array, e.g., "Volume", "Metric anomaly", "Freshness")
      - **Priority** → `priority` (e.g., "P1", "P2", "P3")
      - **Status** → `status` (e.g., "Not acknowledged", "Acknowledged", "Work in progress")
      - **Link** → construct as `<MC_WEBAPP_URL>/alerts/<uuid>` where `MC_WEBAPP_URL`
        comes from `get_mc_webapp_url()` (called in Phase 1). Display as bare URL.
      
      ---
      
      ## `search` — finding the right table identifier
      
      MC uses MCONs (Monte Carlo Object Names) as table identifiers. Always use
      `search` first to resolve a table name to its MCON before calling `get_table`,
      `get_asset_lineage`, or `get_alerts`.
      
      ```
      search(query="orders_status") → returns mcon, full_table_id, warehouse, properties
      ```
      
      The `properties` field contains tags (key-value pairs) associated with the asset.
      
      ---
      
      ## `get_table` — table metadata and stats
      
      Pass the MCON as: `mcon="<mcon>"` (single string, not an array).
      
      Key response fields used by this skill:
      - `last_updated_on` — timestamp of the most recent data update (for Last Updated metric)
      - `importance_score` — float 0-1 (for Importance in header)
      - `is_important` — boolean, true if key asset (for ⭐️ indicator)
      - `table_stats.avg_reads_per_active_day` — average reads per active day
      - `table_stats.avg_writes_per_active_day` — average writes per active day
      
      ---
      
      ## `get_monitors` — checking if monitors are paused
      
      When filtering by table, pass MCONs via the `mcons` parameter (not `table_mcons`).
      Check the `is_paused` field (boolean) on each monitor. Only count monitors where
      `is_paused` is false as active coverage.
      
      Response field mapping for the monitors table:
      - **Type** → `monitor_type` (e.g., "TABLE", "METRIC", "BULK_METRIC")
      - **Name** → `name` or `description`
      - **Incidents (7d)** → `seven_days_incident_count`
      - **Status** → derive from: `is_paused`, `next_execution_time`, `prev_execution_time`,
        `seven_days_error_count`, `seven_days_timeout_count`
        - If `is_paused` is true → "Paused"
        - If `prev_execution_time` is null → "Never executed"
        - If `seven_days_error_count` > 0 → "⚠️ N errors"
        - Otherwise → "Running" (include schedule info from `next_execution_time` if available)
      
      ---
      
      ## `get_mc_webapp_url` — get Monte Carlo base URL
      
      Takes no arguments. Returns the regionalized base URL of the Monte Carlo web app
      (e.g., `https://getmontecarlo.com` — the actual value depends on the customer's
      environment). Call once in Phase 1 and store the result. Use it to construct all
      Monte Carlo links — never hardcode the base URL:
      - Assets/tables: `{result}/assets/{mcon}`
      - Alerts: `{result}/alerts/{alert_uuid}`
      
      ---
      
      ## `get_asset_lineage` — direction and edge interpretation
      
      Pass `direction` as `"UPSTREAM"` or `"DOWNSTREAM"` (uppercase).
      Pass `mcons` as an array even for a single asset: `mcons=["<mcon>"]`.
      
      Returns paginated edges (default 100 per page) where `source` and `target` are
      MCONs representing data flow direction: `source` feeds data into `target`.
      
      If `has_more` is true in the response, follow pagination using `next_offset` to
      get remaining edges. For upstream health checks, all parents must be discovered
      before Phase 3 can run — do not skip pages.
      
      For an **UPSTREAM** query on asset X:
      - Edges have `source = <upstream_parent>`, `target = X` (or intermediate nodes)
      - Extract unique MCONs from the `source` field to get the upstream parents
      - Exclude the queried asset's own MCON from the parent list
      
    • workflows.md 4.5 KB
      # Workflow Details
      
      Detailed step-by-step instructions for the Monte Carlo Asset Health skill.
      Referenced from the main SKILL.md — consult when executing the workflow.
      
      ---
      
      ## Asset Health Check
      
      When the user asks about the health or status of a data asset, run this sequence.
      
      ### Phase 1 — Resolve the asset
      
      Run both calls in parallel:
      
      ```
      search(query="<table_name>")
      → Returns MCON, full_table_id, and properties (tags)
      
      get_mc_webapp_url()
      → Returns the base Monte Carlo webapp URL (MC_WEBAPP_URL)
      ```
      
      Save the webapp URL for constructing alert links later.
      
      Save the MCON for subsequent calls. Save properties for the Tags line in the
      report. If multiple results are returned, present them in a table with these
      exact columns and ask which one they want to check. Do not pick one automatically
      or make assumptions.
      
      ```
      | # | Table (full_table_id) | Warehouse | Importance | Key Asset |
      |---|----------------------|-----------|------------|-----------|
      | 1 | db:schema.table      | my-wh     | 0.99       | Yes       |
      ```
      
      Every row must include the Warehouse column.
      
      ### Phase 2 — Gather health metrics (ALL in parallel)
      
      Run all 4 calls in a single turn:
      
      ```
      get_table(mcon="<mcon>")
      → last updated, row count, importance score, is_important (key asset flag)
      
      get_alerts(created_after="<7 days ago>", created_before="<now>", table_mcons=["<mcon>"], statuses=["NOT_ACKNOWLEDGED", "ACKNOWLEDGED", "WORK_IN_PROGRESS"])
      → active alerts on this asset
      
      get_monitors(mcons=["<mcon>"])
      → monitor configs — check status field for paused vs active
      
      get_asset_lineage(mcons=["<mcon>"], direction="UPSTREAM", hops=1)
      → 1-hop upstream parent assets
      ```
      
      For the `get_alerts` time range, compute ISO 8601 timestamps from the current
      date — e.g. `created_before` = now (`2026-07-10T00:00:00Z`) and `created_after`
      = 7 days earlier (`2026-07-03T00:00:00Z`), using the actual current date.
      
      ### Phase 3 — Check upstream health (ALL parents in parallel)
      
      Check at most **10** upstream parents. If there are more than 10, check the first
      10 and note: "N more upstream parents not checked — ask to see more."
      
      For each upstream parent, run both calls in parallel:
      
      ```
      get_table(mcon="<parent_mcon>")
      → freshness, importance
      
      get_alerts(created_after="<7 days ago>", created_before="<now>", table_mcons=["<parent_mcon>"], statuses=["NOT_ACKNOWLEDGED", "ACKNOWLEDGED", "WORK_IN_PROGRESS"])
      → active alerts on this parent
      ```
      
      All parents are checked in parallel with each other. Each parent's `get_table` and
      `get_alerts` are also parallel (no dependency between them).
      
      ### Phase 4 — Synthesize the health report
      
      Assemble findings into the report format defined in SKILL.md:
      
      1. **Tags** — from `search` properties. Omit line if none.
      2. **Status** — determine from alerts and monitoring:
         - 🔴 if any alerts returned (the statuses filter already limits to active alerts)
         - 🟡 if no alerts but 0 active monitors on a high-importance asset
         - 🟢 otherwise
      4. **Metrics table** — freshness, volume, alerts, monitoring, importance, upstream
      5. **Active Alerts** — list each with type and status
      6. **Upstream Issues** — list each parent with health status
         - If any parent is unhealthy, ask: "Want me to check further upstream for **\<parent\>**?"
      7. **Recommendations** — only facts derivable from data:
         - Upstream issues that may explain this asset's problems
         - Alerts needing attention
      
      ### Monitoring assessment
      
      When evaluating monitors from `get_monitors`:
      
      - Count only **active** (non-paused) monitors
      - A paused monitor does NOT count as active coverage
      - Report: "N active monitors" or "N monitors (M paused)"
      - Signal: ≥1 active = 🟢, 0 active = 🔴
      
      ---
      
      ## Upstream Drill-Down
      
      When the user requests deeper upstream investigation for a specific parent:
      
      ### Phase 1 — Get upstream of the specified parent
      
      ```
      get_asset_lineage(mcons=["<parent_mcon>"], direction="UPSTREAM", hops=1)
      → 1-hop upstream of the parent (grandparents of the original asset)
      ```
      
      ### Phase 2 — Check grandparent health (ALL in parallel)
      
      For each grandparent:
      
      ```
      get_table(mcon="<grandparent_mcon>")
      get_alerts(created_after="<7 days ago>", created_before="<now>", table_mcons=["<grandparent_mcon>"], statuses=["NOT_ACKNOWLEDGED", "ACKNOWLEDGED", "WORK_IN_PROGRESS"])
      ```
      
      ### Phase 3 — Report
      
      Present findings for this hop. If any grandparent has issues, again ask:
      "Want me to check further upstream for **\<grandparent\>**?"
      
      Each drill-down is exactly 1 hop. Never auto-cascade. Always wait for user request.
      
  • README.md 1.5 KB
    # Monte Carlo Asset Health Skill
    
    Check the health of a data table using Monte Carlo — surfaces last activity, active alerts, monitoring coverage, importance, tags, and upstream dependency health in a single structured report.
    
    ## Editor & Stack Compatibility
    
    The skill works with any AI editor that supports MCP and the Agent Skills format — including Claude Code, Cursor, and VS Code.
    
    All warehouses supported by Monte Carlo work with this skill.
    
    ## Prerequisites
    
    - Claude Code, Cursor, VS Code or any editor with MCP support
    - Monte Carlo account with Viewer role or above
    
    ## Setup
    
    ### Via the mc-agent-toolkit plugin (recommended)
    
    Install the plugin for your editor — it bundles the skill, MCP server, and permissions automatically. See the [main README](../../README.md#installing-the-plugin-recommended) for editor-specific instructions.
    
    ### Standalone
    
    1. Configure the Monte Carlo MCP server:
       ```
       claude mcp add --transport http monte-carlo-mcp https://integrations.getmontecarlo.com/mcp
       ```
    
    2. Install the skill:
       ```bash
       npx skills add monte-carlo-data/mc-agent-toolkit --skill asset-health
       ```
    
       Or copy directly:
       ```bash
       cp -r skills/asset-health ~/.claude/skills/asset-health
       ```
    
    ## Usage
    
    Ask about the health or status of any table:
    
    - "How is table orders_status doing?"
    - "Check health of dim_customers"
    - "What's the status of raw_events?"
    - "Check on volume_change table"
    
    The skill will produce a structured health report with metrics, active alerts, monitor status, and upstream dependency health.
    
  • SKILL.md 8.6 KB
    ---
    name: monte-carlo-asset-health
    description: Check the health of a data table/asset using Monte Carlo. Activates on "how is table X", "check health of X", "is X healthy", "status of X", "check on X table", or any health/status question about a data asset.
    bucket: Trust
    version: 1.0.0
    ---
    
    # Monte Carlo Asset Health Skill
    
    This skill checks the health of a data asset using Monte Carlo's observability
    platform. It produces a structured health report covering freshness, alerts,
    monitoring coverage, importance, and upstream dependency health.
    
    > **Monte Carlo tool routing (required):** Always call Monte Carlo MCP tools through this plugin's
    > bundled server, whose fully-qualified tool names are
    > `mcp__plugin_mc-agent-toolkit_monte-carlo-mcp__<tool>` (e.g.
    > `mcp__plugin_mc-agent-toolkit_monte-carlo-mcp__get_alerts`). Bare tool names used in this skill
    > (`get_alerts`, `search`, `get_table`, …) refer to that bundled server. If the session also has a
    > separately-configured `monte-carlo-mcp` server, do **not** route to it — it may point at a
    > different endpoint or credentials.
    
    ## REQUIRED: Read reference files before executing
    
    **You MUST read both reference files using the Read tool before making any MCP
    tool calls.** These files are the source of truth for tool calls, parameters,
    and response interpretation. This file only defines when to activate and how to
    format the output.
    
    1. `references/workflows.md` (relative to this file) — exact tool calls, phases, and execution order
    2. `references/parameters.md` (relative to this file) — parameter conventions and field details
    
    **Do NOT make any MCP tool calls until you have read both files.**
    
    ## When to activate this skill
    
    Activate when the user:
    
    - Asks about health: "how is table X doing?", "check health of X", "is X healthy?"
    - Asks about status: "what's the status of X?", "status of orders table"
    - Asks to check on a table: "check on X table", "check on X"
    - Asks about reliability, freshness, or quality of a specific asset
    - References a table in context of incident triage or change planning
    
    ## When NOT to activate this skill
    
    - **Profiling or exploring table data** (row counts, column stats, distributions) → use `explore-table`
    - **Creating or suggesting monitors** → use `monitoring-advisor`
    - **Active incident triage** (investigating root cause of a firing alert) → use prevent skill Workflow 3
    
    ## Health report format
    
    **CRITICAL: Only report data returned by the tools defined in `references/workflows.md`.
    Do NOT call additional tools, do NOT infer or fabricate metrics. Each row below
    specifies exactly which tool provides its value.**
    
    **All sections (Active Alerts, Monitors, Upstream Issues, Recommendations) must
    always appear with their heading.** Never omit a section — if there is no data,
    show the empty-state text defined below.
    
    **Never use emoji shortcodes** (like `:warning:` or `:arrow_up:`). Use Unicode
    emoji characters directly (like ⚠️) or plain text. Shortcodes render as raw text
    in the terminal.
    
    **Always display URLs as bare URLs**, never as markdown links (e.g., `[text](url)`).
    
    **`{MC_WEBAPP_URL}` appears throughout this template.** Every occurrence must be
    replaced with the actual value returned by calling `get_mc_webapp_url()`. Never
    hardcode or guess this URL — it varies by environment.
    
    Present results in this structure:
    
    ```
    ## Health Check: <table_name>
    
    **Tags:** `tag1:value1`, `tag2:value2` (or "None" if no tags)
    **Link:** {MC_WEBAPP_URL}/assets/{mcon}
    **Warehouse:** snowflake-prod (Snowflake)
    **Status: 🟢 Healthy / 🟡 Degraded / 🔴 Unhealthy** | **Importance:** 0.85 (key asset ⭐️)
    **Avg Reads/Day:** ~538 | **Avg Writes/Day:** ~12
    
    | Metric        | Value                          | Signal |
    |---------------|--------------------------------|--------|
    | Last Updated | Apr 6, 2025                    | 🟢 Recent    |
    | Alerts        | 2 active                       | 🔴 Has alerts |
    | Monitoring    | 3 active monitors              | 🟢 Monitored  |
    | Upstream      | 1/3 sources unhealthy          | 🔴 Issues     |
    
    ### Active Alerts
    
    | Date  | Type           | Priority | Status           | Link                                                    |
    |-------|----------------|----------|------------------|---------------------------------------------------------|
    | Apr 8 | Metric anomaly | P3       | Not acknowledged | {MC_WEBAPP_URL}/alerts/{alert_uuid} |
    | Apr 7 | Freshness      | P2       | Acknowledged     | {MC_WEBAPP_URL}/alerts/{alert_uuid} |
    
    If there are more than 5 active alerts, display only 5. Do NOT put the overflow
    message inside the table as a row. Instead, put it as plain text on the line
    immediately after the table:
    
    There are N more alerts not shown for brevity
    
    If there are zero active alerts, show:
    No active alerts in the last 7 days.
    
    ### Monitors
    
    | Type        | Name                                    | Incidents (7d) | Status              |
    |-------------|-----------------------------------------|----------------|---------------------|
    | TABLE       | Orders freshness and schema             | 3              | Running hourly      |
    | METRIC      | Revenue row count                       | 0              | Never executed      |
    | BULK_METRIC | Warehouse volume check                  | 21             | ⚠️ 1 table has errors |
    
    If there are zero monitors, show:
    No monitors configured for this table.
    
    ### Upstream Issues
    - raw_orders — FRESHNESS alert: not updated in 8h
    - raw_payments — healthy
    - dim_customers — healthy
    
    > Want me to check further upstream for **raw_orders**?
    
    If there are no upstream dependencies, show:
    No upstream dependencies found.
    
    ### Diagnosis
    
    1-2 sentences summarizing what is causing the table to be unhealthy, or
    confirming it is healthy. This should naturally lead into the recommendations.
    
    Example (unhealthy):
    Upstream table raw_orders has not been updated in 8 hours, which is likely
    causing staleness in this table. There are also 2 unacknowledged alerts.
    
    Example (healthy):
    Table is healthy — no active alerts, monitored, and all upstream sources
    are in good shape.
    
    ### Recommendations
    - Investigate upstream raw_orders freshness — likely root cause of this table's staleness
    - Acknowledge or investigate the 2 active alerts
    
    If there are no recommendations, show:
    No recommendations — table looks healthy.
    
    ```
    
    ### Metric definitions — exact data sources
    
    Each metric row MUST use only the specified data source. Do not add, infer, or
    embellish values beyond what the tool returns.
    
    | Metric | Data source | What to show | Signal |
    |--------|------------|-------------|--------|
    | **Last Updated** | `get_table` → `last_updated_on` | Date of last data update (e.g., "Apr 6, 2025") | 🟢 Recent (within 7 days) / 🟡 Stale (older than 7 days) |
    | **Alerts** | `get_alerts` → count | "N active" or "No active alerts" | 🔴 Has alerts / 🟢 No alerts |
    | **Monitoring** | `get_monitors` → count where `is_paused` is false | "N active monitors" or "0 active monitors (M paused)". Include relevant details from monitor fields (incident counts, error counts, types). | 🟢 Monitored (≥1 active) / 🔴 Unmonitored (0 active) |
    | **Upstream** | `get_asset_lineage` (upstream) + Phase 3 checks | "N/M sources unhealthy" or "All N sources healthy" | 🔴 Issues (any unhealthy) / 🟢 Healthy (all healthy) |
    
    **Importance** is shown next to the Status line (not in the metrics table). Source:
    `get_table` → `importance_score` + `is_important`. Show "X.XX (key asset ⭐️)" if
    key asset or importance > 0.8, otherwise just "X.XX".
    
    **Avg Reads/Day** and **Avg Writes/Day** are shown below the Status line. Source:
    `get_table` → `table_stats.avg_reads_per_active_day` and `table_stats.avg_writes_per_active_day`.
    
    **Do NOT include downstream data.** This skill only queries upstream lineage.
    
    ### Status determination
    
    - **🔴 Unhealthy:** Any active alerts on the asset (from `get_alerts` with statuses `["NOT_ACKNOWLEDGED", "ACKNOWLEDGED", "WORK_IN_PROGRESS"]` — see `parameters.md`)
    - **🟡 Degraded:** No active alerts, but 0 active monitors on a high-importance
      asset (importance > 0.8 or key asset)
    - **🟢 Healthy:** No active alerts and has at least 1 active monitor
    
    ### Tags
    
    Display tags from the `search` tool's `properties` field. Show as inline badges:
    `key:value`. If no tags exist, show "None". Always include the Tags line.
    
    ### Warehouse
    
    Display the warehouse name and type from the `search` result. Always include this line.
    
    ### Recommendations
    
    Only include recommendations derivable from collected data:
    - Upstream health issues that may be root causes
    - Active alerts that need acknowledgment or investigation
    - Do NOT recommend specific monitor types — that is outside this skill's scope
    

Comments (0)

Sign in to join the conversation.

No comments yet.

Reviews (0)

No reviews yet.

Related