Skip to content
Back to skills

Morning Prep

ASecurity

Daily morning scan by EYE - load the saved morning layout, screenshot each watchlist symbol, and summarise overnight pre-market state from those charts. Use when the user says "good morning" or "morning prep". Do NOT use this when the user asks for a brief built from a named strategy's own signals or decision table - a strategy-specific brief skill owns that, and this one computes nothing from an indicator.

  • 595 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added September 2, 2026
ai-agentsgoapi

Works with

  • api

Security analysis

A100/100

Scanned September 12, 2026

npx -y skills add FerroxLabs/wayland --skill morning-prep --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Morning Prep?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Morning Prep
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/ferroxlabs-morning-prep/badge)](https://www.skillsdirectory.com/skills/ferroxlabs-morning-prep)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: morning-prep
description: Daily morning scan by EYE - load the saved morning layout, screenshot each watchlist symbol, and summarise overnight pre-market state from those charts. Use when the user says "good morning" or "morning prep". Do NOT use this when the user asks for a brief built from a named strategy's own signals or decision table - a strategy-specific brief skill owns that, and this one computes nothing from an indicator.
---

# Morning Prep Workflow

You are running the user's daily pre-market routine on TradingView.

## Step 1: Pull the Watchlist

1. `watchlist_get` — read the active watchlist symbols. Membership comes from the symbols API, so it is complete even with the watchlist panel closed; prices are best effort and only attached when the panel is open, so check `quotes_available` before reading any price off it.
2. If empty, ask the user to import one via `watchlist_import` (they may have a JSON backup saved from a prior `watchlist_export`)

Example watchlist: `["ES1!", "NQ1!", "CL1!", "GC1!", "DXY", "BTCUSD"]`.

## Step 2: Restore Morning Layout (if saved)

1. `state_list` — check for a snapshot **named** "morning" or similar
2. If found: `state_restore` with `name` set to that snapshot name — this brings back the user's preferred indicators, drawings, timeframe, and chart type. It is DESTRUCTIVE: it makes the chart match the snapshot, so anything not in the snapshot is removed. Take a `state_snapshot` of the current chart first if it might be wanted back.
3. If not found: proceed with current chart state and offer to `state_snapshot` with `name` "morning" at the end

If `state_restore` fails with `CHART_LOADING`, wait ~2s and retry once.

## Step 3: Batch Screenshot the Watchlist

Use `batch_run` with `action: "screenshot"` and the full symbol list. This captures each symbol without manual `chart_set_symbol` loops.

```
batch_run({ symbols: <watchlist>, action: "screenshot" })
```

Screenshots save to `screenshots/` with timestamps — reference them in the summary.

## Step 4: Deep-Dive Top 5

Pick the 5 most-relevant symbols (user's main instruments, e.g., `ES1!`, `NQ1!`, `CL1!`, `GC1!`, `BTCUSD`). For each:

1. `chart_set_symbol` — switch the chart
2. `data_get_ohlcv` with `summary: true` — compact stats (overnight high/low, range, change%)
3. `quote_get` — the price held by the chart you just switched to. It is only as fresh as the
   chart's data connection and reports `success: true` on a stale bar, so check
   `tv_health_check` once before the loop and say so plainly if `datafeed.state` is
   `disconnected` rather than reading out prices that look current. `quote_batch` takes all
   five symbols in one call, does not touch the chart, and does not depend on that connection.

Keep OHLCV summary-only to avoid context bloat.

## Step 5: Indicator Pulse

For the top-5 only:

1. `data_get_study_values` — RSI, MACD, EMAs currently on chart
2. `data_get_pine_labels` with `study_filter` if the user runs a custom profiler (e.g., "Profiler", "Session Stats")

If `data_get_indicator` is needed and returns `source: "dom_fallback"`, note that inputs were read from DOM (less reliable than API) — flag any suspicious readings.

## Step 6: Summarize to Chat

Produce a compact briefing:

- **Overnight leaders/laggards** — from batch screenshots + OHLCV change%
- **Key levels in range** — pulled from `data_get_pine_lines` if a levels indicator is loaded
- **Bias per instrument** — one line each (e.g., "ES1! — holding above PDH 5812, bullish above 5800")
- **Watch items** — alerts firing near current price (use `alert_list` to cross-reference)

## Cleanup

Offer to `state_snapshot` with `name` `morning-<date>` so today's layout is reproducible tomorrow. If the user added throwaway drawings while prepping, `draw_clear` them before snapshotting.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…