Skip to content
Back to skills

Crypto Tracker

BSecurity

Price and volume tracker for [REPLACE: TOKEN_SYMBOL] with anomaly alerts above [REPLACE: ALERT_THRESHOLD_PCT]% movement

  • 20 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added November 11, 2026
ai-agentsgoshellbashapi

Works with

  • api

Security analysis

B75/100
  • criticalSends environment variables or credentials to an external URL

Pro shows the line behind each finding and how to fix it

Scanned November 11, 2026

npx -y skills add MiroShark/miroshark-aeon --skill crypto-tracker --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Crypto Tracker?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Crypto Tracker
[![Security: B — Skills Directory](https://www.skillsdirectory.com/api/skills/miroshark-crypto-tracker/badge)](https://www.skillsdirectory.com/skills/miroshark-crypto-tracker)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: [REPLACE: SKILL_NAME]
description: Price and volume tracker for [REPLACE: TOKEN_SYMBOL] with anomaly alerts above [REPLACE: ALERT_THRESHOLD_PCT]% movement
metadata:
  category: crypto
  var: ""
  tags:
    - crypto
  requires:
    - COINGECKO_API_KEY?
---

> **${var}** — Optional. Pass a different CoinGecko ID to override the default. If empty, tracks the configured token.

Today is ${today}. Track [REPLACE: TOKEN_SYMBOL] price/volume and alert on anomalies.

## Steps

1. **Fetch current state** - query CoinGecko for the latest price, 24h change, 24h volume. The ID is `${var}` if set, else `[REPLACE: COINGECKO_ID]`: write it into the URL literally (the `<ID>` below). Key check: read the "Keys set for this run" line in your run notes, never a shell test (those are refused and cost a turn). With `COINGECKO_API_KEY` on that line, use the pro endpoint:

   ```bash
   ./secretcurl -s -o /tmp/token-price.json -w 'coingecko http=%{http_code}\n' -H "x-cg-pro-api-key: {COINGECKO_API_KEY}" "https://pro-api.coingecko.com/api/v3/simple/price?ids=<ID>&vs_currencies=usd&include_24hr_change=true&include_24hr_vol=true"
   ```

   Without it, use the keyless endpoint:

   ```bash
   curl -s -o /tmp/token-price.json -w 'coingecko http=%{http_code}\n' "https://api.coingecko.com/api/v3/simple/price?ids=<ID>&vs_currencies=usd&include_24hr_change=true&include_24hr_vol=true"
   ```

   Then read the reply with `jq '.["<ID>"]' /tmp/token-price.json`. If a `curl` GET is flaky, use **WebFetch** on the same URL as a fallback (there is no network sandbox; WebFetch is just a convenience for flaky public reads).

2. **Read prior state** — last 7 days of `memory/logs/YYYY-MM-DD.md` for previous prices and volumes (parse lines like `**[REPLACE: TOKEN_SYMBOL]**: price=$N, volume_24h=$N`).

3. **Detect anomalies** — flag if `|price_change_24h| >= [REPLACE: ALERT_THRESHOLD_PCT]%` OR if 24h volume is `>= 2x` the 7-day median.

4. **Write `output/articles/[REPLACE: SKILL_NAME]-${today}.md`** with:
   - Current price, 24h change, 24h volume
   - 7-day price chart (sparkline as `▁▂▃▅▇` characters)
   - Anomaly verdict: `QUIET` / `STEADY` / `ANOMALY` (and which fired)
   - Links: CoinGecko page, Etherscan / explorer page if you know the contract address

5. **Notify** — if `ANOMALY`, send via `./notify` with the verdict + 1-2 sentences of context. Stay silent on QUIET/STEADY days.

6. **Log** — append to `memory/logs/${today}.md`:
   ```
   ## [REPLACE: SKILL_NAME]
   - **[REPLACE: TOKEN_SYMBOL]**: price=$N, change_24h=$N%, volume_24h=$N
   - **Verdict**: QUIET | STEADY | ANOMALY:price | ANOMALY:volume
   ```

## Network note

CoinGecko's keyless endpoint occasionally rate-limits. There is no network sandbox — `curl` works; use **WebFetch** as the fallback when a `curl` GET is flaky.

**Shell shape.** Each Bash call is one allowed command (pipes are fine). The run refuses a call that sets a variable (`ID=...`, `URL=$(...)`), uses `if` / `for`, tests a key (`[ -n "$KEY" ]`), joins commands with `;`, `&&` or `||`, or redirects into a file (`> .token-cache.json`), and each refusal costs a model turn. So write the ID into each URL literally, save replies with `-o /tmp/<file>`, and write the article and the log with Write/Edit.

## Constraints

- Never spam. The `ALERT_THRESHOLD_PCT` gate is there to protect channel signal — don't lower it below 5%.
- Always cite sources in the article. Even a one-line link is better than no link.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

View all in ai-agents →

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.