US Market Briefing
by @kevinksaji
Generate US pre-market outlooks and post-market recaps in a fixed 3-section format using finance news plus structured market-data pages for index snapshots a...
clawhub install us-market-briefingπ About This Skill
name: us-market-briefing version: 1.1.5 description: Generate US pre-market outlooks and post-market recaps in a fixed 3-section format using finance news plus structured market-data pages for index snapshots and top gainers/losers. Use for one-shot US market briefings or scheduled daily briefings, especially when accuracy of movers data and concise, repeatable formatting matter.
US Market Briefing
Use the fixed production templates in references/templates.md.
Use scripts/is-us-market-holiday.py for deterministic 2026 US market-closure checks in automation, with references/us-market-holidays-2026.md as the human-readable source of truth.
Modes
1) Quick Start (default)
Use this for immediate, one-shot briefings.
2) Automation Mode (optional)
Use this when the user asks for scheduled delivery.
cron jobs only.crontab, /etc/crontab) and do not configure external schedulers/services.Output Rules
γUSγ: (<+/-percent>%) .Sources: section at the bottom.π.Source Collection Rules
web_search before drafting each briefing.web_search calls and up to 6 web_fetch reads.web_fetch only on relevant finance/news links from trusted domains.Price Data Accuracy Rules
BIGGEST MOVERS (TOP 5 GAINERS / TOP 5 LOSERS), use a structured movers source first, then use news/articles to explain the driver.https://finance.yahoo.com/markets/stocks/gainers/
2. Yahoo Finance losers page: https://finance.yahoo.com/markets/stocks/losers/
3. Nasdaq market activity pages when Yahoo is unavailable
4. MarketWatch or another major structured movers page if the first two sources are unavailable
Concrete Lookup Procedure
Use this exact procedure for post-market movers:
1. Fetch Yahoo Finance gainers page: https://finance.yahoo.com/markets/stocks/gainers/
2. Fetch Yahoo Finance losers page: https://finance.yahoo.com/markets/stocks/losers/
3. From each page, extract the top_gainers or top_losers dock module entries and capture at least:
- ticker
- company name
- regular market price
- regular market change percent
4. Use the first 5 valid rows from the gainers module as Top 5 Gains.
5. Use the first 5 valid rows from the losers module as Top 5 Losses.
6. For each selected ticker, run targeted news search for the driver using trusted sources, for example:
-
-
-
- or the company press release if no strong article exists
7. In the briefing, report rank and percentage move from the Yahoo structured movers page, and report the cause from the best available article or company release.
8. If Yahoo extraction fails or yields fewer than 5 valid rows, try Nasdaq structured movers pages next. If still incomplete, fall back to the best available major structured movers page and label the section accordingly.
9. Avoid additional per-ticker quote-page fetches unless needed for dispute resolution, because Yahoo quote endpoints can rate-limit aggressively.
Validation Notes
top_gainers and top_losers module rows.429 under repeated direct access, so the preferred workflow is page-level movers extraction first, not per-symbol quote scraping.Templates
Pre-Market Briefing
US PRE-MARKET OUTLOOKFUTURES SNAPSHOT
2. KEY DEVELOPMENTS AFFECTING TODAYβS MARKET
3. TICKERS TO WATCHPost-Market Briefing
US POST-MARKET RECAPPOST-MARKET SNAPSHOT
2. BIGGEST MOVERS (TOP 5 GAINERS / TOP 5 LOSERS)
3. MARKET SENTIMENT & FLOW SUMMARYData Fallback Rules
If a preferred dataset is unavailable, do not fail silently:
Optional Monthly Budget Guardrail
Use only when the user requests spend/request caps.
Tracker file: memory/market-briefing-usage.json (workspace-local)
1000 requests.limit in the JSON file.used to 0 and roll month forward.used >= limit, return a short limit-reached notice instead of researching.used by 1.JSON shape:
{
"month": "YYYY-MM",
"used": 0,
"limit": 1000
}
Market-Open Guardrail for Automation
Before generating an automated briefing, determine whether the relevant US market session is a full market-closure day.
python3 skills/us-market-briefing/scripts/is-us-market-holiday.py YYYY-MM-DD using the relevant market date.status in {open, closed, early-close}.closed, do not produce a briefing and do not send a message.early-close as market-open unless Kevin says otherwise.Cron Automation Defaults (optional)
Default timezone: Asia/Singapore
Allow user overrides for timezone, run times, and weekday sets.
When creating/updating jobs, ensure payload prompts request:
references/templates.mdmemory/market-briefing-usage.jsonOutput Verbosity Profiles
compact (default): same 3 sections, fewer bullets.full: richer bullets/details while preserving same structure.