# Morning Message

> Writes Ben's daily Reuters News Apps morning message.

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

---


# Morning Message

Generates Ben's daily good-morning message for the Reuters News Applications Desk Teams channel. The message follows a strict format with four or five lines. The message is them shared with Ben via Telegram. He will tidy it up and post it to Teams himself.

## Message Format

```
☀️ Good morning from <LOCATION>. It is <DAY_OF_WEEK>, <MONTH> <DAY>. The news time is <TIME>.
📰 The top story on Chartbeat is "<HEADLINE>"
🗓️ <NEWS_PEGS>
🪿 <SCHEDULE>
🏃 <RUN_LINE>  (only if Ben ran that morning)
```

### Line-by-line rules

1. **Greeting & location** — Always starts with "Good morning from". The
   location is usually one of:
   - `the Thomson Reuters Building at 3 Times Square` (the office)
   - `Studio 4D in moneymaking Manhattan` (home studio)
   - A train, plane, or conference venue when traveling
   Ask Ben where he is if not obvious. Include the day of week, full date
   (e.g. "Wednesday, May 14"), and current time formatted as `H:MM a.m.` or
   `H:MM p.m.` (AP style — lowercase, periods, no leading zero).

2. **Chartbeat top story** — Fetch the #1 story using the chartbeat skill:
   ```bash
   {{HOME}}/bin/chartbeat-top-stories.sh stories 1
   ```
   Extract just the headline and wrap it in quotes with a hyperlink over the entire headline text.

3. **News pegs** — Mention any known news pegs for the day (economic data
   releases, scheduled events, team member assignments like "Grant has a
   forecast"). If none are known, use: `I don't know of any pegs today.`
   Ask Ben if you are unsure.

4. **Schedule** — Lead with the gaggle (daily 2 p.m. Eastern meeting). Default is
   `We gaggle at 2 p.m. Eastern.` Then append any other meetings Ben mentions.
   If Ben cannot make gaggle, note that instead. This 2 p.m. default replaced
   the old 11 a.m. default after Casey Miller moved to Los Angeles.

5. **Run line** (optional) — If Ben ran that morning, add a line describing
   the distance and route. Check the runs log for today's date:
   Use the Google Workspace MCP `read_sheet_values` on the Runs Log spreadsheet (`1ybViNc3uJp9Be7Os5Cryu6E83VTxB0ZqWPRYYiQAMfA`), passing `user_google_email: "kip@palewi.re"`. Do not use `gog`.
   Use natural phrasing like "I ran 10k over the Queensborough Bridge and back."
   If no run is logged for today, omit this line entirely.

## Workflow

1. Ask Ben for anything you don't already know:
   - Where is he today? (office, home, traveling)
   - Any news pegs or special schedule items?
2. Fetch the Chartbeat top story.
3. Check the runs log for today.
4. Check today's calendar for meetings:
   ```bash
   vdirsyncer sync && khal list today
   ```
5. Assemble the message and share it here in Telegram by default.

## Style Notes

- Use AP style for times: `8:42 a.m.`, not `8:42 AM` or `08:42`
- Day of week and month are spelled out: `Wednesday, May 14`
- The Chartbeat headline is wrapped in straight double quotes with a hyperlink over it
- Emoji go at the start of each line with a space after
- Keep the tone casual and direct — this is a team chat, not a memo
- The gaggle emoji is always 🪿 (goose)
- The default gaggle time is `2 p.m. Eastern`, not 11 a.m.
- Preserve the format as separate visible lines. In Telegram rich text, insert literal newline characters between every emoji-led item; do not let the message collapse into one paragraph.
- If using rich HTML for the Chartbeat link, keep each emoji-led item separated by a literal newline, or wrap each item in its own block element such as `<p>...</p>`.
- Do not add sign-offs or pleasantries beyond the format

## Examples

### Typical office day

```
☀️ Good morning from the Thomson Reuters Building at 3 Times Square. It is Wednesday, May 14. The news time is 8:35 a.m.
📰 The top story on Chartbeat is "Fed signals rate decision is approaching as inflation cools"
🗓️  Grant has a forecast this morning.
🪿  We gaggle at 2 p.m. Eastern. I have my regular meeting with Simon at 12.
```

### Home day with a run

```
☀️ Good morning from Studio 4D in moneymaking Manhattan. It is Thursday, May 7. The news time is 9:02 a.m.
📰 The top story on Chartbeat is "US and Iran explore short-term deal to end fighting"
🗓️  I don't know of any pegs today.
🪿  We gaggle at 2 p.m. Eastern. I have a GitHub tech meeting at 1. I'll walk into the office shortly.
🏃 I ran 10k over the Queensborough Bridge and back.
```

### Travel day

```
☀️ Good morning from Acela 2910, which left New York Penn Station this morning at 5:27 a.m. It is Tuesday, May 5. The news time is 7:58 a.m.
📰 The top story on Chartbeat is "Middle East truce in doubt as US and Iran fight for control of Strait of Hormuz"
🗓️  Grant has some forecasts this morning.
🪿  I'll be presenting at RESPONSIBLE BUSINESS USA 2026 this morning, so I can't make the 2 p.m. Eastern gaggle. You should go on without me.
```

## Notes

- This skill only **generates** the message. Ben reviews, tweaks, and posts it
  himself.
- In a direct Telegram chat with Ben, share the assembled morning message in
  the chat by default after drafting it. Do not make him ask twice.
- The Chartbeat headline changes constantly — fetch it right before assembling.
- If the chartbeat script fails, ask Ben to supply the headline manually.
- News pegs and schedule details beyond the calendar often require Ben's input.
  Don't guess — ask.

