Chapter 2: Morning Brief — Your Daily Dashboard
The morning-brief skill does one thing: generates a comprehensive start-of-day briefing. Calendar, tasks, email status, newsletter pipeline, project health, dropped items from previous days. Everything in one output, from one command.
The design principle behind it is what the skill file calls the “Executive Dashboard” pattern — a single entry point for daily context, with unified state across domains, that degrades gracefully when any one source fails.
The Skill File
The frontmatter looks like this:
---
name: morning-brief
description: Start-of-day executive briefing with calendar, tasks, email, newsletter status, project health, and memory-supported context.
user-invocable: true
---
The user-invocable: true flag means it shows up in Claude Code’s autocomplete when you type /morning.
What It Pulls In
The skill instructs Claude to gather data from ten sources in parallel:
Calendar — uses AppleScript via osascript to pull today’s events from Apple Calendar. Not a copy-paste; Claude actually queries the calendar app directly. The skill includes the full AppleScript block so Claude knows exactly how to call it.
Pending tasks — two sources. Apple Reminders (via the reminders CLI) for overdue tasks and tasks due today, and Obsidian task files for project-specific items. The skill includes the jq filters for parsing the Reminders JSON output.
Newsletter pipeline — Kit.com broadcasts via the kit CLI, plus the Obsidian drafts folder and topic pipeline file. Shows what’s in progress, what’s scheduled, and what’s just an idea.
Email status — unread counts across accounts, with thresholds: under 10 is normal, over 25 means run a triage session.
Oracle book queue — a file in ~/.claude/ that tracks books pending processing through my reading workflow.
Dropped tasks — reads the five most recent daily notes and identifies tasks that appeared unchecked in two or more of them. Surfaces the things that keep getting pushed.
Memory-supported context — for the top priorities identified, searches the vault for related prior work. Helps with the “what was I doing with this last time?” problem.
Project portfolio health — counts active projects, flags any that haven’t been touched in seven days, and counts items in the incubation queue.
Life context — school calendar events, family calendar items for today and tomorrow, administrative deadlines.
Social briefing — pulls Hacker News top stories, vault clippings, and recent newsletter content, filters to relevant topics, and formats them for quick scan.
The Output Format
The output is structured as a fixed-format briefing:
═══════════════════════════════════════════════════════
MORNING BRIEF - [Today's Date] ([Day of Week])
═══════════════════════════════════════════════════════
## Executive Summary
State: [Good/Busy/Needs Attention]
Focus: [Today's primary focus area]
Blockers: [Critical issues or None]
### Calendar
[Time] - [Event] @ [Location]
└─ Context: [Related vault notes if found]
### Tasks
[Overdue count, today's tasks, backlog count]
### Project Health
[Active count, stale projects, incubation items]
...
The fixed format matters. You want the same structure every morning so you can scan it quickly rather than reading it.
The Error Handling Philosophy
This skill touches a lot of external systems. The skill file includes explicit instructions for when things fail:
“If a tool fails, try the fallback. If all fallbacks fail, report ‘Unable to check [X]’ and continue. Never let one section’s failure block the entire briefing.”
That’s intentional design. A morning briefing that fails because your calendar app is slow is useless. Graceful degradation means you still get the 90% that worked.
How to Customise It
The skill is written for my setup — Obsidian vault at a specific path, Apple Calendar, Kit.com for newsletters. You’ll need to adjust:
Vault paths — change the Obsidian paths in the Tasks and Newsletter sections to match your vault structure. Look for references to 04 Domains/ and 02 Daily/.
Calendar app — the skill uses AppleScript for Apple Calendar. If you use Google Calendar, you’d replace that section with a different API call.
Task sources — if you don’t use Apple Reminders, remove that section and adjust the Tasks output format.
Newsletter tool — if you’re not on Kit.com, remove the kit broadcasts list call and replace with whatever your tool exposes.
Sections you don’t need — the Oracle book queue and social briefing sections are specific to my workflow. Delete them if they don’t apply.
The skill file is designed to be modular — each numbered section (1 through 11) is independent. You can remove, replace, or reorder sections without breaking the others.
Installing It
mkdir -p ~/.claude/skills/morning-brief
# Copy the SKILL.md from github.com/aplaceforallmystuff
Then invoke with /morning-brief at the start of any session.
The next chapter covers log-to-daily — the skill that captures what the morning brief helped you accomplish.
Check Your Understanding
Answer all questions correctly to complete this module.
1. What design principle does morning-brief follow for handling failures?
2. Why does morning-brief use a fixed output format every day?
3. How does morning-brief surface tasks that keep getting pushed?