DEV Community

Cover image for I built 6 AI agent skills that run before my morning coffee. Here is what they caught last week.
tellmefrankie
tellmefrankie

Posted on

I built 6 AI agent skills that run before my morning coffee. Here is what they caught last week.

I built 6 AI agent skills that run before my morning coffee. Here is what they caught last week.

I wake up at 6:50am. By 7:00am, before I have opened Twitter or checked the news, four Claude Code skills have already run and sent me a Telegram summary.

This is what last Tuesday looked like:

=== MORNING BRIEFING — 2026-05-13 ===

OPTIONS FLOW SUMMARY
SPY  P/C: 0.44   [EXTREME BULLISH]
QQQ  P/C: 0.54   [BULLISH]
TEM  P/C: 0.50   [BULLISH]
RXRX P/C: 0.38   [EXTREME BULLISH]
IREN P/C: 0.83   [NEUTRAL]
XLI  P/C: 5.32   [OUTLIER — INSTITUTIONAL HEDGE SIGNAL] ⚠️

STOP-LOSS STATUS
TEM  $48.67 → stop at $49.75 [WATCH]
IREN $51.20 → stop at $50.00 [OK]

BRIEFING COMPLETE — 4 skills, 90 seconds
Enter fullscreen mode Exit fullscreen mode

That XLI line made me stop.


What I built and why

I have been managing a real-money stock portfolio since late 2025. Not a lot — a few positions, real capital, real risk. And I kept making the same mistake: spending 90 minutes every morning manually checking prices, reading options summaries, looking at charts, and then making decisions based on whatever I happened to notice.

The problem is not effort. The problem is coverage. Manual review has blind spots. I was watching individual names and missing the sector level entirely.

So I built four skills:

1. Options Flow Scanner

Pulls the full options chain for each ticker in my watchlist, calculates the put/call ratio, and classifies each reading:

< 0.40  → EXTREME BULLISH
0.40–0.60 → BULLISH  
0.60–1.20 → NEUTRAL
1.20–2.00 → CAUTIOUS
> 2.00  → BEARISH / HEDGE SIGNAL
> 3.00  → INSTITUTIONAL HEDGE SIGNAL
Enter fullscreen mode Exit fullscreen mode

The key part: it flags outliers against each instrument's own historical baseline. XLI's normal P/C sits around 0.8–1.1. At 5.32, the outlier flag fires even though the absolute threshold for "bearish" is lower.

2. Stop-Loss Monitor

Polls my positions every 15 minutes during market hours. If a price crosses a threshold, it sends a Telegram message immediately. No checking required.

I set TEM's stop at $49.75. It is currently at $48.67. The skill watches it so I do not have to.

3. Daily Investment Briefing

Nine waves of analysis in sequence:

  1. Overnight macro (futures, global markets)
  2. Options flow (from skill #1)
  3. Sentiment overlay
  4. Technical setup (support/resistance)
  5. Risk assessment
  6. Opportunity scan
  7. Alert triggers
  8. Trade ideas
  9. Execution checklist

Total runtime: 90 seconds. Output: one structured Telegram message.

4. Portfolio Greeks Dashboard

Tracks delta exposure, concentration by sector, and leverage across all open positions. The question it answers: "If the market drops 5% today, what happens to my book?" Knowing that before open is worth a lot.


The XLI signal

XLI is the Industrial Select Sector SPDR ETF. Aerospace, defense, machinery, transportation. Normal put/call ratio: 0.5–1.2.

Last Tuesday: 5.32.

At that level, someone is buying institutional-scale downside protection on industrials. That is not a retail trade. The signal could mean a macro hedge against cyclical slowdown, a specific catalyst hedge (tariff decision, budget), or a volatility play. I do not know which.

What I know: before this scanner, I would not have seen it.

I did not change any positions. One data point is not a thesis. But I noted it, set a watch trigger, and paid closer attention to industrial exposure for the next week.

That is the value: it interrupts complacency.


The technical setup

Each skill is a TypeScript module that runs via node-cron inside a single Node.js process. No Lambda, no queue, no Kubernetes. One pm2 start and it runs forever.

// Simplified options scanner core
async function scanTicker(ticker: string): Promise<FlowReading> {
  const chain = await fetchOptionsChain(ticker);
  const putVolume = chain.filter(c => c.type === "put").reduce((sum, c) => sum + c.volume, 0);
  const callVolume = chain.filter(c => c.type === "call").reduce((sum, c) => sum + c.volume, 0);
  const ratio = putVolume / callVolume;

  const historical = await getHistoricalBaseline(ticker);
  const isOutlier = ratio > historical.mean + (2 * historical.stdDev);

  return { ticker, ratio, classification: classify(ratio), isOutlier };
}
Enter fullscreen mode Exit fullscreen mode

The outlier detection is the part that caught XLI. Not "is the ratio high" — but "is this ratio unusual for this specific instrument."


What I got wrong first

I built the briefing skill first. It was beautiful and useless — comprehensive analysis of data I did not have a good way to source.

Then I built the options scanner. Then the stop-loss monitor. Then I rebuilt the briefing to use real data from the other skills.

The lesson: build the data layer first. The analysis layer is easy once you have reliable inputs.


Open source

The scanner and stop-loss monitor are on GitHub: github.com/tellmefrankie/news-engine

Pull requests welcome — especially for Discord alert support and Polygon.io free tier (both have open issues).


The scanner that caught this

The full bundle includes 4 production-tested skills:

  • Options Flow Scanner — flags unusual P/C ratios like the XLI 5.32 read
  • Stop-Loss Monitor — real-time price alerts via Telegram (caught my TEM position at $47.44)
  • Daily Investment Briefing — 9-wave morning analysis, runs in 90 seconds
  • Portfolio Greeks Dashboard — tracks concentration risk and leverage

I have been running these on a real portfolio for 6 months. Not a demo.

$29 one-time — no subscription · Install on Agensi →

If the price ever goes up, existing buyers keep the current version forever.

Every Monday I publish the top options signals from the live scanner. Free to follow: Options Anomaly Weekly

Not financial advice. Personal tooling and research. Do your own due diligence.

Top comments (0)