Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Compares today's BTC volume and price action against its 30-day baseline once a day, runs 4 anomaly checks (volume spike, oversized price move, price deviation from average, sustained volume trend), and when something is abnormal, interprets the combination in plain language — e.g. a volume spike with rising price reads as conviction buying, a volume spike with a flat price reads as accumulation before a move. Alerts on Telegram only when at least one check triggers.
.claude/skills/nearai-btc-anomaly-detector/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-07 | ✗→✓ | ▲ Improved | -46% | 0% |
| case-09 | ✗→✓ | ▲ Improved | -39% | 0% |
| case-10 | ✗→✓ | ▲ Improved | -45% | 0% |
| case-11 | ✗→✓ | ▲ Improved | -5% | 0% |
| case-16 | ✗→✓ | ▲ Improved | -13% | 0% |
You compare today's BTC market behavior against its own 30-day normal and alert the user when something is genuinely abnormal — with an interpretation, not just numbers.
HEARTBEAT_OK and stop — send no message.Fetch 30 days of BTC data with the http tool: https://api.coingecko.com/api/v3/coins/bitcoin/market_chart?vs_currency=usd&days=30. Extract daily prices and daily volumes.
When any check triggers, read the combination:
If none of these combinations fit cleanly, describe what triggered in plain terms instead of forcing a label.
Create a routine that runs every day at 6:00 PM UTC. The routine goal must contain these full steps as a self-contained prompt, because a routine does not keep any context from this conversation when it runs:
http tool.HEARTBEAT_OK and stop.Alert format:
🔍 BTC Anomaly Detected
[for each triggered check:]
⚡ [check name]: today's [X] vs 30-day normal [X] (~[X]x)
💰 Current price: $[X] ([24h change]%)
🧠 Read: [interpretation]show btc anomaly check — run all four checks right now and show the result even if nothing triggered| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→fail | 18,454 | 18,039 | -2% | 1 | 1 | 0% | 4,034 | 3,655 | -9% | 0 | 0 | — |
case-02 | fail→fail | 9,885 | 4,882 | -51% | 1 | 1 | 0% | 1,683 | 1,066 | -37% | 0 | 0 | — |
case-03 | fail→fail | 15,545 | 19,002 | +22% | 1 | 1 | 0% | 3,178 | 4,360 | +37% | 0 | 0 | — |
case-04 | pass→pass | 15,015 | 12,815 | -15% | 1 | 1 | 0% | 3,560 | 3,765 | +6% | 0 | 0 | — |
case-05 | pass→fail | 13,212 | 8,378 | -37% | 1 | 1 | 0% | 2,987 | 2,339 | -22% | 0 | 0 | — |
case-06 | pass→fail | 11,842 | 7,804 | -34% | 1 | 1 | 0% | 1,913 | 1,375 | -28% | 0 | 0 | — |
case-07 | fail→pass | 12,464 | 2,313 | -81% | 1 | 1 | 0% | 2,242 | 1,203 | -46% | 0 | 0 | — |
case-08 | pass→pass | 11,989 | 2,755 | -77% | 1 | 1 | 0% | 1,866 | 1,296 | -31% | 0 | 0 | — |
case-09 | fail→pass | 10,508 | 1,490 | -86% | 1 | 1 | 0% | 1,698 | 1,032 | -39% | 0 | 0 | — |
case-10 | fail→pass | 9,791 | 1,561 | -84% | 1 | 1 | 0% | 1,870 | 1,027 | -45% | 0 | 0 | — |
case-11 | fail→pass | 6,872 | 1,896 | -72% | 1 | 1 | 0% | 1,207 | 1,144 | -5% | 0 | 0 | — |
case-12 | pass→pass | 9,624 | 1,741 | -82% | 1 | 1 | 0% | 1,619 | 1,129 | -30% | 0 | 0 | — |
case-13 | pass→pass | 6,824 | 2,100 | -69% | 1 | 1 | 0% | 1,099 | 1,223 | +11% | 0 | 0 | — |
case-14 | pass→pass | 11,853 | 3,378 | -72% | 1 | 1 | 0% | 1,964 | 1,357 | -31% | 0 | 0 | — |
case-15 | pass→pass | 8,882 | 3,321 | -63% | 1 | 1 | 0% | 1,441 | 1,347 | -7% | 0 | 0 | — |
case-16 | fail→pass | 7,507 | 1,625 | -78% | 1 | 1 | 0% | 1,258 | 1,093 | -13% | 0 | 0 | — |
case-17 | pass→pass | 7,341 | 2,078 | -72% | 1 | 1 | 0% | 984 | 1,216 | +24% | 0 | 0 | — |
case-18 | pass→pass | 10,079 | 2,007 | -80% | 1 | 1 | 0% | 1,509 | 1,188 | -21% | 0 | 0 | — |
case-19 | pass→fail | 14,009 | 2,554 | -82% | 1 | 1 | 0% | 1,890 | 1,172 | -38% | 0 | 0 | — |
case-20 | fail→fail | 5,208 | 1,487 | -71% | 1 | 1 | 0% | 703 | 1,020 | +45% | 0 | 0 | — |
case-21 | pass→pass | 10,437 | 4,152 | -60% | 1 | 1 | 0% | 1,583 | 1,443 | -9% | 0 | 0 | — |
case-22 | fail→pass | 10,152 | 1,534 | -85% | 1 | 1 | 0% | 1,651 | 1,029 | -38% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted, and 20 counted toward the lift figure. The other 2 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +14 percentage points is the difference between those two pass rates over the 20 comparable cases. 3 cases got worse with the skill loaded, and they are included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.