morning-report

morning-report is a skill for Claude Code, Codex from Tracer-Cloud/opensre. It costs 32 tokens per session (1,924 once invoked), scanned A, original, Apache-2.0.

A workflow for preparing a morning briefing from current weather data and news headlines, then delivering it as plain text.

In plain words
What is it for?
Use it for requests such as a morning report, daily brief, or weather-and-news update, including fetching the inputs, composing the summary, and offering scheduling.
Why use it?
It keeps live data collection separate from the written briefing and prevents unverified weather values or headlines from being presented.

Skill for Claude CodeCodex

Written for no agent in particular: nothing here depends on one.

Good fit Use it for requests such as a morning report, daily brief, or weather-and-news update, including fetching the inputs, composing the summary, and offering scheduling.

Compare 6 skills from other repositories ↓
Install with agentmods
npx agentmods add skills/tracer-cloud/opensre/morning_report
About the project

OpenSRE is an open-source framework for building AI agents that investigate and resolve production incidents using operational data and tools. It is for site reliability engineers who want customizable incident-response workflows, training, and evaluation on their own infrastructure.

Tracer-Cloud/opensre · 11,006 stars · on GitHub · discord.com

Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

Any agent
npx skills add Tracer-Cloud/opensre --skill morning_report
Clone the repo
git clone --depth 1 https://github.com/Tracer-Cloud/opensre

Made for: Claude Code, Codex.

Wrote this? Show the measurements

A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.

agentmods badge for morning-report

README.md
[![agentmods](https://agentmods.dev/badge/skills/tracer-cloud/opensre/morning_report.svg)](https://agentmods.dev/skills/tracer-cloud/opensre/morning_report)
Your own site
<a href="https://agentmods.dev/skills/tracer-cloud/opensre/morning_report"><img src="https://agentmods.dev/badge/skills/tracer-cloud/opensre/morning_report.svg" alt="Measured on agentmods" height="20"></a>
Per session 32 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 1,924 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 1 finding. A grade says what 26 rules found in the file — not that it is safe. Third-party audits
  • NVIDIA SkillSpector pass 7 Sept 2026
How audits are shown
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5.1 $0.00032 $0.01924
Opus 5 $0.00016 $0.00962
Sonnet 5 $0.00006 $0.00385
Haiku 4.5 $0.00003 $0.00192

Measured 3d ago against content hash 374b24f8fccf, method: parsed. Prices are Anthropic first-party input rates as of 2026-09-08, from the pricing page.

Security

Grade A, and why

morning-report scanned grade A with 1 finding against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 3d ago.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Makes network callslowCapability

Not a fault in itself. Listed so you know the mod talks to something, and to what.

`curl` dump be the final answer. The user only ever sees the composed
core/agent_harness/prompts/skills/morning_report/SKILL.md · 115 lines

How it starts

The opening of the file, as written. The whole thing — 115 lines — stays where its author put it; the contents beside it link to each section on GitHub.

══════════════════════════════════════════════════════════ MORNING REPORT SKILL #1 — weather + daily news briefing: ══════════════════════════════════════════════════════════ Recognize a request for a morning briefing — "morning report", "morning briefing", "daily brief", "give me my morning update", "weather and news summary", or similar — as a weather+news briefing YOU own end-to-end. This is a DATA-DEPENDENT chain (see the COMPOUND TURN RULE box): fetch the raw inputs first with read-only shell commands, WAIT for their results, then YOU compose, deliver, and offer the schedule (steps 3–5). Do NOT start an investigation for this request — that produces a second, unrelated "status report" after the briefing. Never fabricate weather values or headlines, and never emit the compose/deliver step in the same response as the fetches.

OUTPUT MUST BE HUMAN-READABLE — NEVER RAW MARKUP. The fetched feed is raw RSS/XML/HTML; it is INTERMEDIATE data only. NEVER present the raw feed, XML tags, CDATA blocks, or angle-bracket markup to the user, and NEVER let a raw curl dump be the final answer. The user only ever sees the composed plain-text briefing produced in the final step. The news fetch below already strips the feed down to plain-text headline lines so nothing but readable text comes back. STEP LABELING RULES (UX) — the fetches below run quiet, so narrate the 5 steps:

  • Before every step's tool calls, emit this exact header format as assistant text in the SAME response as the tool calls, then one short status sentence:

    [n/5]

  • Steps 1–2 fire as one parallel batch; label that batch with the combined header ### [1-2/5] Fetch weather + headlines.
  • After a step's tool results are in, state its outcome in one line (start it with ✓ on success, ✗ plus what failed otherwise) before the next step's header (e.g. ### [4/5] Deliver to Slack).
  • Use each step's own number as n; never renumber mid-run. The composed briefing itself (step 3) and the schedule offer's response_text (step 5) stay exactly as specified below — headers narrate around them, never replace them.

Steps, in order:

  1. Fetch today's weather with shell_run. Use quiet=true so the $ curl line and raw stdout stay off the user's screen — they only need the composed briefing in step 3, not the same weather line twice. Use the city the user named; if none is given, use their configured/default city, else omit the location: → shell_run(command="curl -s 'wttr.in/?format=%l:+%c+%t,+feels+%f,+%h+humidity,+wind+%w'", quiet=true)
  2. Fetch current headlines with shell_run as PLAIN TEXT — extract just the headline titles from the feed, drop the channel title, and cap the list. Also quiet=true (same reason: intermediate fetch, not the user-facing answer). Do NOT fetch the raw feed without this extraction pipeline: → shell_run(command="curl -s 'https://feeds.bbci.co.uk/news/rss.xml' | grep -oE '<!\[CDATA\[[^]]*\]\]>' | sed -E 's/<!\[CDATA\[//; s/\]\]>//' | sed '1d' | head -n 8", quiet=true)
  3. After BOTH tool results are in, compose a clean, human-readable briefing from the ACTUAL fetched data. Required format — Markdown/plain text only, no HTML/XML, no links, no angle brackets: Good morning! Here is your briefing. Weather — : <one-line conditions from step 1> Top headlines:
    • <headline 1, one short sentence>
    • <headline 2>
    • ... (3–5 bullets total)
  4. ALWAYS DELIVER TO SLACK — as the FINAL action of this skill you MUST send the WHOLE composed briefing (both the weather/temperature line AND the news headlines, exactly as formatted in step 3) to Slack via slack_send_message, even when the user did NOT explicitly ask to send it anywhere. This is a DATA-DEPENDENT step: emit it on the response AFTER the two fetches, with the full composed plain-text briefing in message — never raw feed markup, never a partial report, never a "preparing…" placeholder. The Slack webhook is bound to a single preconfigured channel, so do NOT ask which channel to use. If the user names another platform (e.g. "post it to telegram"), ALSO deliver there with telegram_send_message; Slack stays the default sink. Skip a platform only if it is not connected. If neither delivery tool is available, defer to the "Delivery tool unavailable" rule above instead of fabricating a command. Examples:
  • "give me my morning report" → shell_run(command="curl -s 'wttr.in/Amsterdam?format=%l:+%c+%t,+feels+%f,+%h+humidity,+wind+%w'", quiet=true) + shell_run(command="curl -s 'https://feeds.bbci.co.uk/news/rss.xml' | grep -oE '<!\[CDATA\[[^]]*\]\]>' | sed -E 's/<!\[CDATA\[//; s/\]\]>//' | sed '1d' | head -n 8", quiet=true) [both this turn — independent fetches] → (observe both results) → slack_send_message(message="<the FULL composed plain-text weather + headlines briefing>") [next turn — mandatory Slack delivery]
  • "morning briefing for Berlin and post it to telegram" → shell_run(command="curl -s 'wttr.in/Berlin?format=%l:+%c+%t,+feels+%f,+%h+humidity,+wind+%w'", quiet=true) + shell_run(command="curl -s 'https://feeds.bbci.co.uk/news/rss.xml' | grep -oE '<!\[CDATA\[[^]]*\]\]>' | sed -E 's/<!\[CDATA\[//; s/\]\]>//' | sed '1d' | head -n 8", quiet=true) [both this turn] → (observe both results) → slack_send_message(message="") + telegram_send_message(message="") [next turn — Slack always + Telegram because the user named it]

Read the full file on GitHub · 115 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 3d ago Changed · +2 lines 374b24f8fccf
  2. 4d ago Changed · -1 lines 68d0bd0d653e
  3. 8d ago First seen · 114 lines · 32 tokens per session scan A f01737a5f032

Subscribe to this mod's changes

morning-report is a skill published in the GitHub repository Tracer-Cloud/opensre (11,006 stars, last pushed today), licensed Apache-2.0. It adds 32 tokens to every session and 1,924 once invoked, about $0.0002 per session on Opus 5. A static security scan graded it A with 1 finding (makes network calls). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.

Related

Other skills, from other repositories