# Morning Brief

> Pre-open market brief with macro context, watchlist price moves, recent company news, earnings-adjacent filing checks, and overnight prediction-market odds moves. Use when the user wants Hermes to deliver a standing morning market brief instead of asking on demand.

- Skill: `llmquant/morning-brief` (Agent Skill)
- Install (CLI): `npx skillmds@latest add llmquant/morning-brief`
- Raw SKILL.md: https://api.skillmd.com/api/skills/llmquant/morning-brief/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: llmquant (https://skillmd.com/u/llmquant)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/llmquant/morning-brief

---


# Morning Brief

Runs before the market opens and sends one concise brief. It answers:

1. What changed in the macro backdrop?
2. Which watched or held names moved?
3. What company news landed since the last brief?
4. Which names have earnings-adjacent filings to inspect?
5. Did Polymarket odds move on any flagged watchlist name, and does the news
   back the move?

This skill is orchestration only. For analysis method, install
[`LLMQuant/skills`](https://github.com/LLMQuant/skills).

## Model baseline

Use DeepSeek as the default Hermes model for this scheduled job. DeepSeek V4
Flash is enough for routine scan-and-summarize runs. Use a stronger DeepSeek
model only when the user asks for a deeper follow-up.

## MCP tools used

| Tool | Purpose | Credit / call |
|---|---|---|
| `personal_holdings` | Add the user's saved holdings to the watchlist | 0 |
| `macro_indicator_snapshot` | Latest readings for selected macro indicators | 0 |
| `equity_intraday_prices` | Recent 1h price context per watchlist ticker | 1 |
| `news_browse` | Recent company news for the watchlist | 2 |
| `sec_filing_browse` | Recent 8-K/10-Q filing metadata for the watchlist | 0 |
| `sec_filing_read` | Optional read of one or two flagged filings | 1 |
| `polymarket_event_browse` | Polymarket events tied to flagged watchlist names | 1 |
| `polymarket_price_history` | Overnight odds moves for those markets | 0 |

Use `news_browse` with up to 5 tickers per call. For larger watchlists, group
the names and stop when the message has enough signal for a morning brief.

## Prediction-market check

Anchor this on the watchlist, not on broad discovery. For each ticker the
brief flags for news or price action, check Polymarket for related markets:
`polymarket_event_browse` with the `asset` filter (or a keyword `q`), then
`polymarket_price_history` for anything that moved overnight. One line per
hit: the market, the odds move, and whether the day's news backs it.

The broader "which markets look interesting this morning" scan is its own
playbook — [`polymarket-watch`](../polymarket-watch/SKILL.md). Do not
duplicate it here. Never frame a market as worth buying; discipline rule 3
in `templates/SOUL.md` applies to odds as much as to stocks.

## Cron

```bash
hermes cron create "0 8 * * 1-5" "Run the morning-brief playbook with my watchlist, recent company news, macro context, and earnings-adjacent filing checks. Keep it source-linked and concise." \
  --skill morning-brief \
  --name "morning-brief" \
  --deliver telegram
```

On some Hermes versions (as of v0.18.x), cron expressions run in host-local time.
Still confirm the next-run time with `hermes cron list` after creating the
job. The scheduler does not know exchange holidays; a weekday market holiday
may produce a low-activity brief.

## Delivery

Telegram is the default delivery channel.

- `--deliver telegram` sends to the Telegram home channel after `/sethome`.
- `--deliver telegram:<chat_id>` targets a specific chat.
- For Slack, Discord, or other gateways, check the user's Hermes gateway
  syntax before scheduling.

## Cost of watching

Keep runs lean: check remaining credits before heavy calls, prefer a small
watchlist, and skip optional filing reads when credits are low. A smaller
watchlist or a few days a week instead of every weekday keeps daily use down.

## Output contract

Every delivered brief should include:

- as-of timestamp and local timezone;
- tickers checked;
- tool names used for factual claims;
- LLMQuant credits used and remaining credits if available;
- "No material news found" when `news_browse` returns no items;
- related Polymarket odds moves for flagged watchlist names, when any exist;
- a short no-advice disclaimer from `templates/SOUL.md`.

Do not present the filing scan as a true forward earnings calendar. It only
finds recent filings and reporting-window signals.

## Customize

- `watchlist.tickers`: edit in workspace `AGENTS.md`.
- `watchlist.macro_indicators`: keep this short; five indicators is enough.
- Prediction markets: this brief only checks markets tied to flagged
  watchlist names; the standalone morning scan lives in
  [`polymarket-watch`](../polymarket-watch/SKILL.md).
- Cadence: change weekdays to 2-3 selected days on Free.
- Depth: turn on `sec_filing_read` only when the news or metadata justifies it.
- Delivery: change `--deliver` to the channel the user checks first.

