This skill checks the whole portfolio against three hard thresholds, runway, ARR decline, and late reporting, and DMs the specific deal lead the moment a company trips one, numbers attached, so there's no back and forth to get context.
Setup
1. Download this Skill file: mcp-metric-alert.skill
2. Upload it in Claude under Settings > Capabilities > Skills.
3. You'll need a Deal Lead property in Visible first. This property is not enabled by by default, it's a custom property, so create one if you don't already have it (something like "Deal Lead" or "Point of Contact" works). If it exists under a different name, Claude will find it on first run.
4. On first run, Claude looks for how your workspace tracks Runway, ARR, and the deal lead field, and asks you to confirm anything it can't find on its own. That gets remembered so future runs skip straight to checking thresholds.
Running it
Tell Claude something like:
"Run the MCP metric alert"
"Check metric alerts"
Type the / command and find the skill
This doesn't run on a schedule by itself. It only checks when you actually trigger it. If you want something closer to real-time monitoring, you'll need to kick it off regularly yourself, a daily ask, a recurring task, or a reminder that prompts you to run it.
The three thresholds
Runway under 12 months (configurable).
ARR decline of more than 10% quarter over quarter (configurable).
Reporting more than 5 business days late, either unsubmitted past due or submitted late (configurable).
What it actually does
The instructions below are packaged into the skill file. You don't need them to use it, but here's what's happening under the hood.
Finding the right numbers. For runway, Claude always prefers a direct Runway metric if your workspace tracks one. It only calculates runway from Cash Balance divided by Net Monthly Burn when there's no direct metric to use, and if a company's burn is zero or negative, meaning they're cash-flow positive, it skips the runway check for that company rather than producing a meaningless number. For ARR, quarterly reporters get compared against their most recently submitted prior quarter, whatever quarter that actually is, since quarterly companies can legitimately report a few weeks late. Monthly reporters get compared against the value from 3 months back, with a smaller tolerance if that exact data point is missing. Either way, if a fallback comparison was used instead of a clean quarter-over-quarter match, the alert says exactly which two dates were compared.
Not guessing on missing data. If a company doesn't track what a threshold needs, that threshold just gets skipped for that company. No false alarms from incomplete data.
Avoiding repeat alerts, until something's actually worse. Once a threshold's been flagged, Claude won't send the same alert again on the next run. But it will re-alert if the underlying number has meaningfully worsened, runway dropping further, or a late report crossing another 5 business days without being submitted, so a company that's now 20 days late doesn't go quiet after the first DM at day 6.
Handling more than one deal lead. If a company has multiple people assigned as deal lead, each one gets their own DM. If one name can't be matched to a Slack user, that doesn't block sending to whoever else did match, it just gets called out in the summary.
The Slack DM
MCP Metric Alert: [Company Name] [Trigger type]: [specific numbers, e.g. "Runway is 8.2 months (Cash Balance $410K / Net Monthly Burn $50K), below the 12 month threshold"] [repeat for any additional triggers on this company] Pulled from Visible as of [today's date].
What lands in Visible
Every alert that actually gets sent also gets logged as a note on that company, tagged "Metric Alert" so it's easy to filter out from real call notes and relationship updates in the same feed. This note is what powers the no-repeat-alerts behavior, and it also means anyone looking at that company's record later, not just the deal lead who got the DM, can see an alert fired and why. If a DM couldn't be sent because the deal lead couldn't be matched, nothing gets logged for that one, so it stays live and keeps surfacing until the mapping issue is fixed.
When it's done
Claude tells you how many companies were scanned, how many new alerts went out (and to whom), how many were skipped as already-flagged, and any companies where a deal lead couldn't be matched.
Worth knowing
Reading from Visible is read-only. Sending the Slack DM and logging the note are the two actions that write anything, they're the whole point of the skill, so Claude does both without asking per run. The summary is there so you can catch a bad match quickly.
Claude won't infer a breach from incomplete data. If a needed metric is missing for a company, that threshold gets skipped and called out, not assumed.

