# Stall detection

A reusable skill the "Catch a stalling POC before it goes dark" recipe pulls in. Add it once and every agent on the team can use it.

Flag a real drop-off against the baseline, not raw inactivity that could be noise.

## Method
1. Pull each open trial's usage trend for the last {{lookback_days}} days.
2. Compare the trend against the healthy baseline for that trial's current stage.
3. Check for two independent signals of a drop, for example logins and feature events, before counting it as a stall.
4. Confirm the stall has lasted {{stall_days}}+ days, or is a sharp drop from the trial's own prior week.
5. Discard single-signal or short-lived dips; do not flag them.

## Rules
- Require two independent signals before flagging a stall — a single noisy metric never triggers an alert.
- Stall threshold in days: (set on first run, then stored in memory).
- Compare against the trial's own stage baseline, not one company-wide number.
- Log every checked trial's score daily, flagged or not, for the trend history.

## Output
A list of confirmed stalls, each with the two signals that support it and days since last meaningful activity.
