eli-alvarado/us-watchlist-alerts

watchlist-manager

Manage a US stock/ETF watchlist file - add, remove, update, list and validate tickers with thesis, entry, price targets, stop, tags, and per-ticker alert rules.

소스 보기

사용 방법

  1. 설치 명령을 복사하고 자신의 에이전트 환경에 설치하기 전에 소스 패키지를 확인하세요.
  2. 필요한 도구, 인증 정보, 지원 환경은 원본 문서에서 확인하세요.
  3. 입력과 원하는 산출물을 설명하고 출처와 결과를 대조하세요.
npx skills add https://github.com/eli-alvarado/us-watchlist-alerts --skill watchlist-manager

시작 전 확인

  • 설치에는 모델 구독, API 한도, 파일 접근 권한이 포함되지 않습니다.
  • 별점 수와 설치 수는 활동 지표이며 독립적인 품질·보안 검증이 아닙니다.
원본 Skill 문서

원본 저장소의 제목, 예시, 코드, 표, 링크, 이미지를 유지해 표시합니다.

Watchlist 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

  1. $WATCHLIST_FILE if set, else ./watchlist.json in the working directory (YAML watchlist.yaml works if PyYAML is installed).
  2. If none exists, create it from examples/watchlist.json structure with an empty tickers list. Ask before overwriting an existing file.

Schema (version 1)

json
{
  "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)

scripts/ ships next to this SKILL.md after npx skills add. Run from this skill folder, or from a git clone (root scripts/ is the same files):

bash
python3 scripts/watchlist.py init
python3 scripts/watchlist.py init --empty
python3 scripts/watchlist.py add NVDA --thesis "AI capex" --entry 160 --target 190 --target 220 --stop 140 --tag ai --tag semis --alert price_below:150
python3 scripts/watchlist.py add NVDA --file swing.json --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

  1. 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.
  2. 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.
  3. Capture the why. If no thesis is given, ask once for a one-line reason; store "" if they decline. Don't invent a thesis.
  4. Suggest, don't impose, alerts. Reasonable defaults to offer: stop/target levels, earnings_within: 3, pct_move: 5 (last vs prior close). If they want a drop that trades through a % and then recovers, offer opt-in intraday_low_pct / intraday_extreme_pct and say those use session low/high, not last. Mention iv_above/intraday_range_pct only if they ask about vol or today's range — ATM IV is unofficial Yahoo, not IV rank. Only add what they agree to.
  5. 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. For side: long, stop < entry; for side: short, stop > entry.
  • settings.sessions if present is a non-empty list of regular / pre / after.
  • settings.extra_closures if present is ISO dates (YYYY-MM-DD) for unscheduled full-day closures.
  • Every alert type is 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").

관련 작업

같은 저장소의 Skills

더 많은 Skills

모든 Skills