MCPInstall

trader-alerts

Price Alerts. Rings when a price, a stop or the opening bell hits. Turns the trade plan into three alerts in one go (the stop, the target and "flat by close" at your flat-by time), plus above / below / stop / target levels, percent moves from the previous close, any time of day, and the NYSE opening bell, each ringing once so you are not spammed. Knows NYSE hours with the 2026 and 2027 holidays and 1:00 p.m. early closes, works out New York time itself, fetches free delayed quotes (Yahoo chart JSON, Stooq CSV) one ticker at a time, and writes trader/prices.json for sizing and the risk check. Use when the user says "alert me when", "tell me if TSLA hits", "watch my stop", "watch my trade", "remind me to close by 3:55", "is the market open", "when does the market open", "get me a price", or right after /trader-exit writes a plan.

Installs
88
Last 24h
+16
Trending rank
#6639
Security
Not audited

Install

Works with every agent the skills CLI supports.

npx skills add https://github.com/jakeschincariol/day-trader-skill --skill trader-alerts
  1. 01

    Install

    Run the command in your project. The CLI asks which agents to install for.

  2. 02

    Describe the task

    Ask your agent for something this skill covers. It loads trader-alerts automatically when relevant.

  3. 03

    Review the result

    The agent follows the SKILL.md steps, scripts and references bundled with the skill.

SKILL.md

The instructions your agent reads when the skill is triggered.

trader-alerts

Price Alerts watches the numbers so the user does not have to stare at a chart. An alert is information, never an order: when a stop alert rings, nothing is sold by this skill. With a bracket order the stop-loss and the take-profit already sit at the broker and do the work; the alerts tell the user what happened and when it is time to be flat.

${CLAUDE_SKILL_DIR} below is this skill's folder (where this SKILL.md lives).

python3 "${CLAUDE_SKILL_DIR}/alerts.py" clock                          # NYSE open or closed, next open
python3 "${CLAUDE_SKILL_DIR}/alerts.py" add --from-plan                # stop, target, flat by close from trader/plan.json
python3 "${CLAUDE_SKILL_DIR}/alerts.py" add --opening-bell
python3 "${CLAUDE_SKILL_DIR}/alerts.py" add --symbol TSLA --stop 358.32
python3 "${CLAUDE_SKILL_DIR}/alerts.py" add --symbol TSLA --target 370.04
python3 "${CLAUDE_SKILL_DIR}/alerts.py" add --at 15:55 --label "flat by close" --before-close
python3 "${CLAUDE_SKILL_DIR}/alerts.py" add --symbol KO --pct 3
python3 "${CLAUDE_SKILL_DIR}/alerts.py" check                          # exit 0 = something rang
python3 "${CLAUDE_SKILL_DIR}/alerts.py" quote TSLA --write             # -> trader/prices.json
python3 "${CLAUDE_SKILL_DIR}/alerts.py" quote --holdings --write       # portfolio + plan tickers
python3 "${CLAUDE_SKILL_DIR}/alerts.py" list
python3 "${CLAUDE_SKILL_DIR}/alerts.py" reset tsla-plan-stop

--now "2026-10-19 15:55" pins the clock (New York time); --offline DIR reads saved quote files instead of the network.

What it reads and writes

filewhat
trader/plan.jsonthe trade from trader-exit, for add --from-plan
trader/alerts.jsonthe rules (alerts.example.json in this folder)
trader/state/alerts.jsonwhich rules rang and when, so each rings once
trader/prices.jsonthe latest quotes, merged in, for trader-budget and trader-risk
trader/portfolio.jsonthe tickers held, for quote --holdings

Rule types

typerings whenrings again
above / targetprice at or above priceafter reset, or on its own if "rearm": true and the price fell back
below / stopprice at or below pricesame
pct_movemoved pct percent from the previous close (or ref), optional direction up or downonce per day at most
timethe New York clock passed at ("15:55") on a trading dayonce per trading day
opening_bellthe NYSE is openonce per trading day

A rule with "date" is watched on that New York date only; --from-plan rules carry the plan's date, so yesterday's stop never rings today. A time rule with "before_close": true moves 3 hours earlier on a 1:00 p.m. early close, so "flat by close" at 15:55 rings at 12:55 on those days.

Quotes

  • yahoo (default): query2.finance.yahoo.com/v8/finance/chart/<TICKER>, an unofficial free JSON endpoint, one request per ticker, half a second apart. On a 429 it waits and tries once more; on a 429 or a 5xx after that it tries query1. It identifies itself as day-trader-skill/2.0.
  • stooq: stooq.com/q/l/?s=tsla.us&f=sd2t2ohlcv&h&e=csv, Stooq's free CSV. It answered 404 on 2026-10-13; the parser stays for when it is back.
  • Free quotes are unofficial, delayed and can lag. They are fine for alerts and for checking a size, not for timing an order. The broker's price is the one that fills. Each price in trader/prices.json keeps its quote time, and trader-risk only uses one under 15 minutes old.
  • If both are down, read the price from the broker connector (Alpaca get_stock_snapshot, IBKR get_price_snapshot) and write it into trader/prices.json as {"as_of": "...Z", "prices": {"TSLA": 366.48}}.

The NYSE clock

Regular session 9:30 a.m. to 4:00 p.m. New York time, closed on weekends and on these holidays, from nyse.com/markets/hours-calendars (read 2026-10-13):

  • 2026: Jan 1, Jan 19, Feb 16, Apr 3 (Good Friday), May 25, Jun 19, Jul 3 (Independence Day observed), Sep 7, Nov 26, Dec 25. Early close 1:00 p.m. on Nov 27 and Dec 24.
  • 2027: Jan 1, Jan 18, Feb 15, Mar 26 (Good Friday), May 31, Jun 18 (Juneteenth observed), Jul 5 (Independence Day observed), Sep 6, Nov 25, Dec 24 (Christmas observed). Early close 1:00 p.m. on Nov 26.

Daylight saving time is worked out in the tool, so it needs no time zone files and ignores the computer's own zone. For any other year it says the holiday list is unknown.

Steps

  1. Right after trader-exit writes the plan, run add --from-plan. Confirm the three alerts back to the user: the stop, the target and the flat-by time.
  2. Run check while the trade is open: every few minutes from a Claude scheduled task or /loop. Each run fetches only the tickers in today's rules and rings each alert once. A check reads the latest delayed quote; it is not a live feed, and a price can pass a level between two checks.
  3. Tell the user what rang in one line each. A stop or target alert means the bracket order has probably filled: check get_open_position and record the fill with trader-broker. "Flat by close" means close anything still open: trader-broker flatten, then trader-risk, then the user's yes. Never act for them.

Example: the reel

TSLA on Monday 2026-10-19: entry 364.18 at 10:15 AM, stop 358.32, target 370.04, flat by 15:55. add --from-plan writes tsla-plan-stop, tsla-plan-target and tsla-flat-by for that day. A check at 10:53 reads the real 10:52 quote, 366.48, between the stop and the target:

NYSE OPEN (2026-10-19 10:53 New York, regular session).
Nothing hit. 3 rule(s) watched today, TSLA $366.48.

At 3:55 PM:

ALERT Flat by close: it is 15:55 New York (set for 15:55), the market closes at 16:00. If TSLA is still
open, close it: trader-broker flatten --symbol TSLA builds the sell ticket, then trader-risk and your yes.

It rings once. The next morning the plan's three alerts are no longer watched; with add --opening-bell, the bell rings at 9:30.

Rules

  • An alert is a fact about a price or the clock. Say it as a fact.
  • Never present a quote as live. Free quotes are delayed and unofficial.
  • Confirm every new rule back to the user: ticker, type, level, day.

What it never does

It never places, cancels or changes an order, never claims a quote is live, and never predicts where a price is going.

Safety

  • Education and tooling, not financial advice. A PASS is a rules check, not a recommendation.
  • Paper trading by default ("paper": true). Going live is the user's own decision, in their own config.
  • Nothing in this pack places an order except trader-broker, and only when all three hold: trader-risk passed that exact order today, the user typed an explicit yes for that one order in the chat, and the user clicked Allow once on Claude's own card because the order tool is set to "Needs approval" (Customize > Connectors > tool permissions). Never set an order tool to "Always allow".
  • No options, margin, short selling or leverage unless the config allows it and the user confirms.
  • Broker keys live in environment variables or the Claude Desktop config, never in the chat.

FAQ

What does the trader-alerts skill do?

Price Alerts. Rings when a price, a stop or the opening bell hits. Turns the trade plan into three alerts in one go (the stop, the target and "flat by close" at your flat-by time), plus above / below / stop / target levels, percent moves from the previous close, any time of day, and the NYSE opening bell, each ringing once so you are not spammed. Knows NYSE hours with the 2026 and 2027 holidays and 1:00 p.m. early closes, works out New York time itself, fetches free delayed quotes (Yahoo chart JSON, Stooq CSV) one ticker at a time, and writes trader/prices.json for sizing and the risk check. Use when the user says "alert me when", "tell me if TSLA hits", "watch my stop", "watch my trade", "remind me to close by 3:55", "is the market open", "when does the market open", "get me a price", or right after /trader-exit writes a plan.

How do I install trader-alerts?

Run npx skills add https://github.com/jakeschincariol/day-trader-skill --skill trader-alerts in your project. The skills CLI detects the agents you use and copies the skill into the right folder. For Claude Code you can also place the skill folder at ~/.claude/skills/trader-alerts/ (personal) or .claude/skills/trader-alerts/ (project).

Which AI agents can use trader-alerts?

Any agent that supports the open Agent Skills format (a folder with a SKILL.md file), including Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, Windsurf, Cline, OpenCode and more.

Is trader-alerts safe to install?

No partner security audit is available yet. Skills can run commands and scripts, so read the SKILL.md and any bundled files before installing.

Who maintains trader-alerts?

It is published by jakeschincariol in jakeschincariol/day-trader-skill. It has 88 recorded installs.

More from jakeschincariol/day-trader-skill

View all →

trader-timemachine

jakeschincariol/day-trader-skill

Time Machine. Replays every possible outcome of a trade before you risk a dollar: 10,000 simulated sessions plus every past time the setup fired. Takes the plan from trader-exit (entry, stop, target), rebuilds the rest of the day 10,000 times from the stock's own 5-minute bars over the last 60 days, and re-runs the same rule on every past session. Prints the odds of target first, stop first, or neither by the close, where the price sits at the close, the average R, the history, and one honest verdict, then hands off to /trader-budget. Use when the user says "run the time machine", "replay this trade", "what are the odds", "simulate this trade", "monte carlo", "backtest this setup", "how often does this hit the target", "is this a coin flip", or after /trader-exit writes a plan, before /trader-budget.

trader-entry

jakeschincariol/day-trader-skill

Entry Timer. Watches a setup bar by bar and tells you the moment to get in. Reads free Yahoo 1-minute or 5-minute bars, builds the opening range (the first 15 minutes by default) and calls the entry on the first completed bar that CLOSES above the range high, or above a level you give it (like a 20-day high from the scanner), with an optional volume check. Says waiting and how far, triggered with the time and the price, expired, or not open yet, and writes trader/entry.json for /trader-exit. Long side only. It never places an order. Use when the user says "tell me when to get in", "watch TSLA", "has it broken out", "did it break the opening range", "entry signal", "time my entry", "check my watchlist", or after /trader-scanner and /trader-news, before /trader-exit.

92 installs

trader-scanner

jakeschincariol/day-trader-skill

Chart Scanner. Scans thousands of charts for setups: opening-range breakouts, flags, oversold bounces. Builds the list of US-listed common stocks, ordinary shares and ADRs from Nasdaq Trader's symbol directories, runs a pre-market scan of daily closes (20-day closing-high breakout, bull flag, reclaimed the 20-day average, oversold, oversold bounce) and an intraday opening-range breakout scan on 5-minute bars, then writes trader/watchlist.json for trader-news and trader-entry. Free Yahoo data, bar by bar. Use when the user says "scan the market", "find me setups", "what is breaking out", "opening range breakouts", "scan for bull flags", "oversold stocks", "pre-market scan", "build my watchlist", "what should I look at today", or at the start of a trading day before /trader-news.

trader-exit

jakeschincariol/day-trader-skill

Exit Planner. Sets your stop and your target before you enter, so you know when to get out. Reads the entry from trader-entry (or a price you give), puts the stop at the opening-range midpoint by default (or the range low, your price, a percent, or a multiple of the ATR), rounds it down to the cent, and sets the target at 2R (or 1R, or your price). Refuses a stop at or above the entry, a target at or below it, or a stop too tight to survive the spread, and says why. Writes trader/plan.json for the Time Machine, the Budget Manager and Price Alerts. Long side only. Use when the user says "where's my stop", "set my stop and target", "plan the exit", "when do I get out", "stop loss", "what's my R", "risk reward", or right after /trader-entry triggers, before /trader-timemachine.

trader-risk

jakeschincariol/day-trader-skill

Risk Manager. Checks every trade against your limits and stops anything over them, before it can reach the broker. For a day trade: a stop is required, the loss at the stop must fit your max loss per trade (measured from the higher of the plan's entry and a fresh price), reward:risk must meet your minimum, the day's total risk must fit your daily loss limit, no more than your trades per day, and no new entries outside your entry window or when the market is closed. It also keeps the basics: blocked tickers, order size, position cap, cash buffer, margin, short sales, options and crypto, malformed or bad bracket orders, duplicates and a daily order limit. Getting out is never blocked by a day limit. Prints PASS or BLOCK with the reason and records the verdicts so trader-broker only shows an order that passed. Use when the user says "check my order", "is this safe", "risk check", "does this break my rules", "can I take this trade", "how much have I risked today", or before /trader-broker,

trader-analyst

jakeschincariol/day-trader-skill

The Earnings Analyst. Reads a company's reported numbers straight from SEC EDGAR (XBRL company facts from its 10-Qs and 10-Ks, plus the latest earnings 8-K and its press release) and sums up what changed: revenue, gross, operating and net margins, net income and diluted EPS, quarter by quarter, each against the same quarter a year earlier, with the trailing twelve months. Reads an earnings call transcript when you paste one. Use when the user says "how did Tesla's earnings look", "analyze the earnings", "what changed this quarter", "is revenue growing", "check the 10-Q", "compare margins", "sum up the call", "does it report this week", or before trading a stock around its earnings.

Popular code quality & workflow skills

View category →

grill-me

mattpocock/skills

A relentless interview to sharpen a plan or design.

Scan a codebase for deepening opportunities, present them as a visual HTML report, then grill through whichever one you pick.

handoff

mattpocock/skills

Compact the current conversation into a handoff document for another agent to pick up.

domain-modeling

mattpocock/skills

Build and sharpen a project's domain model. Use when discussing codebase terminology, writing or editing a GLOSSARY.md, or recording or editing an ADR.

codebase-design

mattpocock/skills

Shared vocabulary for designing deep modules. Use when the user wants to design or improve a module's interface, find deepening opportunities, decide where a seam goes, make code more testable or AI-navigable, or when another skill needs the deep-module vocabulary.

diagnosing-bugs

mattpocock/skills

Diagnosis loop for hard bugs and performance regressions. Use when the user says "diagnose"/"debug this", or reports something broken/throwing/failing/slow.