About watchlist-manager
watchlist-manager is a skill for maintaining a single watchlist file for US-market tickers, read by the price-alerts and watchlist-brief skills. It validates entries and supports adding, updating, removing, listing, and showing them; it does not place or modify trades.
Key features
- 01Manage a shared watchlist file
- 02Add, update, remove, and inspect tickers
- 03Validate symbols and alert settings
- 04Store levels, tags, and investment thesis
- 05Write changes atomically with the script
Use cases
- 01Maintain tickers used by alert skills
- 02Record entry, stop, and target levels
- 03Review or filter watchlist entries
- 04Validate a watchlist before use
Install
Copy the command and run it in a terminal.
npx skills add https:/ / github.com/ eli-alvarado/ us-watchlist-alerts --skill watchlist-managerAfter installing, type/watchlist-managerin Claude Code to confirm it loaded.
Details
From the project READMEWatchlist Manager (US markets)
Maintains a single source-of-truth watchlist file that the price-alerts and watchlist-brief skills read.
Informational tool only. Never place, modify, or cancel a trade. Editing the watchlist is not trading.
File location
$WATCHLIST_FILEif set, else./watchlist.jsonin the working directory (YAMLwatchlist.yamlworks if PyYAML is installed).- If none exists, create it from
examples/watchlist.jsonstructure with an emptytickerslist. Ask before overwriting an existing file.
Schema (version 1)
{
"version": 1,
"settings": { "cooldown_minutes": 240, "rearm_pct": 0.5, "sessions": ["regular"],
"volume_spike_multiple": 2.0, "near_52w_pct": 2.0, "earnings_days": 3,
"max_alerts_per_run": 20, "extra_closures": [], "stale_after_seconds": 900 },
"tickers": [{
"symbol": "NVDA", // required, uppercase; class shares as BRK.B or BRK-B
"side": "long", // long | short | watch
"added": "2026-10-15",
"thesis": "AI datacenter capex",
"entry": 160.0, "targets": [190.0, 220.0], "stop": 140.0,
"tags": ["ai", "semis"],
"alerts": [ {"type": "price_below", "value": 150, "cooldown_minutes": 60} ],
"notes": ""
}]
}
Alert type values and their value meaning are documented in skills/price-alerts/SKILL.md.
A stop implies a stop_hit alert and targets imply target_hit automatically.
Operations (prefer the script; it validates and writes atomically)
Run from the repo root (or wherever this skill is installed; scripts live in scripts/):
python scripts/watchlist.py add NVDA --thesis "AI capex" --entry 160 --target 190 --target 220 --stop 140 --tag ai --tag semis --alert price_below:150
python scripts/watchlist.py update NVDA --stop 145
python scripts/watchlist.py update NVDA --tag megacap --alert rsi_above:75 --append
python scripts/watchlist.py remove NVDA
python scripts/watchlist.py list [--tag semis]
python scripts/watchlist.py show NVDA
python scripts/watchlist.py validate
If Python is unavailable, edit the JSON by hand following the schema and the validation rules below.
Workflow
- Resolve the ticker. Uppercase it. If the user gives a company name, confirm the symbol (e.g. "Alphabet" -> GOOGL or GOOG?). Reject non-US listings or say they are unsupported by default data.
- Sanity-check with a live quote:
python scripts/quotes.py NVDA. If the user's stop is above price for a long (or target below), point it out and ask. - Capture the why. If no thesis is given, ask once for a one-line reason; store
""if they decline. Don't invent a thesis. - Suggest, don't impose, alerts. Reasonable defaults to offer: stop/target levels,
earnings_within: 3,pct_move: 5. Mentioniv_above/intraday_range_pctonly if the user asks about volatility or today's range — and say ATM IV is unofficial Yahoo, not IV rank. Only add what the user agrees to. - Write, validate, confirm. Show the resulting entry (symbol, entry, stop, targets, alerts) in one compact line.
Validation rules
- Symbol matches
^[A-Z]{1,5}([.-][A-Z]{1,2})?$; no duplicates. entry,stop,targets[]are numbers. Forside: long, stop < entry; forside: short, stop > entry.settings.sessionsif present is a non-empty list ofregular/pre/after.settings.extra_closuresif present is ISO dates (YYYY-MM-DD) for unscheduled full-day closures.- Every alert
typeis a known type.
Listing format
Compact table: Ticker | Side | Entry | Stop | Targets | Tags | Thesis. Add a live price column only if the user asks or you're already fetching quotes.
Don'ts
- Don't delete tickers without explicit instruction; for "clean up my list" propose removals first.
- Don't give buy/sell recommendations. You may describe levels and risk (e.g. "stop is 12% below entry").