price-alert — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited price-alert (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Parameterized price-alert management. The user can set, list, and cancel alerts on any ticker; they fire a Telegram push when the threshold hits.
price-alert/
├── SKILL.md # this file
├── alerts.json # active alert definitions (committed to git)
├── alerts_fired.log # append-only history of triggered alerts
├── scripts/
│ ├── add_alert.py # add new alert
│ ├── list_alerts.py # list all / active / fired
│ ├── cancel_alert.py # cancel by id, ticker, or --all
│ ├── check_alerts.py # run by GitHub Actions cron, sends Telegram
│ └── chat_handler.py # Option A chat path: poll Telegram + tool-use via Claude API
└── webhook/ # OPTIONAL Option B chat path (Cloudflare Worker)
├── worker.ts # TypeScript webhook handler (mirrors chat_handler.py)
└── wrangler.toml # CF Worker deploy configPrice scanning runs in GitHub Actions (.github/workflows/price-alerts.yml), which executes check_alerts.py every 2 minutes 24/7 and pushes Telegram notifications for any triggered alerts.
The bidirectional NL chat path has two interchangeable implementations — pick one per the latency you want:
telegram-chat.yml GH Actions cron polls Telegram every 2-5 min, runs chat_handler.py. Latency 2-15 min. $0. Setup: SETUP.md.webhook/worker.ts) receives Telegram webhook POSTs and processes instantly. Latency 1-3 sec. Still $0 (CF free tier 100k req/day). Setup: SETUP-WEBHOOK.md on top of basic SETUP.Both paths use the same Anthropic API and end up modifying the same alerts.json via GitHub. They are not used together — Option B replaces Option A entirely once you enable it.
| User says | → Action |
|---|---|
| "Alert me when GLW hits $140" | add_alert.py GLW below 140 |
| "Notify me if NVDA drops 10%" | add_alert.py NVDA drop 10 |
| "Watch SMH at $480" | add_alert.py SMH below 480 |
| "Alert if AAPL goes above $250" | add_alert.py AAPL above 250 |
| "GLW 跌到 140 通知我" | add_alert.py GLW below 140 |
| "NVDA 跌 10% 提醒我" | add_alert.py NVDA drop 10 |
| "List my alerts" / "我的 alerts" | list_alerts.py --active |
| "Cancel GLW alert" / "取消 GLW" | cancel_alert.py GLW |
| "Re-arm the GLW alert" | cancel_alert.py <id> --rearm |
After running any add/cancel, commit and push alerts.json so GitHub Actions sees the change on its next run.
# Absolute price thresholds
python add_alert.py TICKER below PRICE [--note "..."]
python add_alert.py TICKER above PRICE [--note "..."]
# Percentage moves (auto-anchors to current price unless --anchor specified)
python add_alert.py TICKER drop PCT [--note "..."] [--anchor PRICE]
python add_alert.py TICKER rise PCT [--note "..."] [--anchor PRICE]Always include --note when context is meaningful — it shows up in the Telegram message and helps you remember why you set it weeks later.
# AI glass substrate retracement watchlist
python add_alert.py GLW below 140 --note "AI glass tier 1 entry"
python add_alert.py ONTO below 210 --note "Inspection tools post-reset"
python add_alert.py LRCX below 240 --note "50DMA support"
python add_alert.py KLAC below 1500 --note "Conservative semicap entry"
# Macro flip warnings
python add_alert.py SPY drop 5 --note "Material pullback from current ATH"
python add_alert.py SMH drop 10 --note "Semi correction trigger"
# Take-profit alerts on long positions
python add_alert.py NVDA above 1300 --note "Target reached - consider trim"When an alert fires, the user receives:
🔻 PRICE ALERT: GLW
Current: $138.45
Trigger: $138.45 ≤ $140.00
52W high: $198.25 (-30.2% off)
52W low: $46.34
Note: AI glass tier 1 entry
Alert id: glw-below-a3b2c1
Set: 2026-05-10Required GitHub repo secrets:
TELEGRAM_BOT_TOKEN — from @BotFatherTELEGRAM_CHAT_ID — from https://api.telegram.org/bot<TOKEN>/getUpdatesWorkflow lives at .github/workflows/price-alerts.yml. Cron is */15 13-21 * * 1-5 (every 15 min during US trading hours, weekdays).
To trigger manually for testing: GitHub repo → Actions tab → "Price Alert Checker" → "Run workflow".
fired=true and won't re-trigger. To get the same alert again, run cancel_alert.py <id> --rearm.drop 10% from anchor $100 fires at $90 forever — even if the stock first drops to $85 and then rebounds to $95 before falling to $90 again. The first $90 cross fires it.alerts.json when alerts fire, keeping the source of truth in git.list_alerts.py --active.A fired alert is a trigger to research, not a buy signal. When the user receives an alert and asks "should I add now":
insider_ratio.py TICKER --window 30 — catch any pre-alert C-suite distribution that explains the drop."Look carefully" rule: alerts fire because of price moves; price moves often have a REASON. Don't add without finding the reason. If you can't articulate why the stock dropped to your alert price, you don't yet understand whether the bull thesis is intact.
To verify GitHub Actions is working without waiting for a real trigger:
add_alert.py SPY below 99999cancel_alert.py <id>~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.