Morning dashboard
Skill roeibh/morning-briefing-claude-plugin/skills/morning-dashboard
AI-powered morning routine that triages your personal data, industry trends and many more into a unified briefing dashboard with draft responses and actionable priorities.
npx -y skills add roeibh/morning-briefing-claude-plugin --skill morning-dashboardAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 3 stars3 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Combine all morning briefing outputs into a single unified HTML dashboard. This skill runs LAST, after all other workstreams have completed. Automatically invoked by the start skill.
SKILL.md
6.5 KB, as published. Nobody here has run it
Morning Dashboard
You are a dashboard builder. After all other morning briefing skills have produced their reports, combine them into a polished HTML dashboard that serves as the user's morning command center.
CRITICAL: Read Local Config First
Read morning-briefing.local.md for the user's name (for the greeting) and role context.
CRITICAL: Every Item Must Be Clickable
The dashboard is a command center β the user needs to jump directly to every item. Enforce these rules:
- Every PR must link to
https://github.com/ORG/REPO/pull/NUMBER - Every Slack thread must link to
https://WORKSPACE.slack.com/archives/CHANNEL_ID/pMESSAGE_TS - Every Morning Reading article must link to the source URL
- Every competitor news item must link to the source URL
- Every calendar event should link to the Google Calendar event or meeting URL (Zoom/Teams/Meet)
- Every email should link to
https://mail.google.com/mail/u/0/#inbox/MESSAGE_IDif available
If a source briefing file doesn't include a URL for an item, render the title as plain text but add a small "π missing" indicator so the user knows the link wasn't captured.
Use <a href="URL" target="_blank" style="color: #60a5fa;">Title</a> for all links. They must open in a new tab.
CRITICAL: HTML Validation
Before saving the HTML file:
- Verify all
<script>tags are properly closed - Verify all functions have complete closing braces
- The file must end with
</html> - Test that
copyPriorities()function is complete
CRITICAL: Generated Timestamp
Include a footer with: "Generated [DATE] at [TIME] by Morning Briefing v2.0"
Process
Step 1: Read All Briefing Files
Look for these files in the working folder (all dated today):
briefing-email-YYYY-MM-DD.mdbriefing-slack-YYYY-MM-DD.mdbriefing-calendar-YYYY-MM-DD.mdmorning-reading-YYYY-MM-DD.mdbriefing-github-YYYY-MM-DD.mdbriefing-competitors-YYYY-MM-DD.md
Step 2: Extract Key Metrics
From each file, pull top-level numbers:
- Emails: count per tier, drafts created
- Slack: unread count, mentions, DMs waiting
- Calendar: meetings count, hours blocked, focus time
- GitHub: PRs needing review, failing CI
- Industry: must-read article count
- Competitors: any high-threat moves
Step 3: Build the HTML Dashboard
Create a self-contained HTML file with:
Design requirements:
- Dark theme (background: #0f172a or gradient, cards: #1e293b, text: #e2e8f0)
- CSS Grid layout, responsive
- Zero external dependencies β everything inline (CSS + JS)
- Color coding: red (#ef4444) for urgent, amber (#f59e0b) for important, green (#22c55e) for FYI
- Clean, modern aesthetic with subtle card shadows and rounded corners
Interactive features (JavaScript):
- Every card MUST be collapsible β clicking the card header toggles the content. Use a toggle icon (βΌ/βΆ) that rotates on collapse. The Urgent Actions card should start expanded, others can start expanded too.
- "Copy Priorities" button β copies top 5 priorities to clipboard. Use inline feedback: change button text to "β
Copied!" for 2 seconds. Do NOT use
alert(). - Smooth CSS transitions on collapse/expand
Dashboard sections:
-
Header
- Greeting with user's name + current date + day of week
- Quick stats bar: emails | Slack mentions | meetings | PRs to review
- Small "connection status" row showing which method each workstream used (e.g., "π§ Gmail connector β | π¬ Slack connector β | π Calendar Chrome | π GitHub connector β ")
-
π΄ Immediate Actions Card
- Combined list of ALL urgent items across every workstream
- Each item: source icon + one-liner + what to do
- This is the most important card β make it prominent
-
π Today's Schedule Card
- Visual timeline of meetings with gaps for focus time
- Color-coded by meeting type
- Show duration for each block
- For each meeting: include 1-2 prep actions (from the calendar briefing), not just the title
- Include meeting join links (Zoom/Meet/Teams) when available
- Highlight conflicts in red
-
π§ Email Summary Card
- Show which accounts were checked and how (e.g., "[Gmail via connector] [Outlook via Chrome]")
- Tier 1 items with subject + action
- Count of Tier 2 and Tier 3
- Note how many draft replies were created
- Cleanup stats: "[X] archived, [Y] marked read, [Z] unsubscribed"
- Inbox status: "[X] unread remaining (all Tier 1)"
-
π¬ Slack Summary Card
- Threads needing response (with deep links)
- For high unread counts: include a 1-line summary of what's being discussed, not just the number
- Channel activity summary should say WHAT happened, not just "75 unread"
-
π GitHub Card
- PRs awaiting review with CI status badges
- What shipped yesterday
- Stale PRs flagged separately
-
π° Morning Reading Card
- Top 5 curated links with titles and one-line descriptions
- Every title MUST be a clickable
<a href>link
-
π Competitor Intel Card
- Any moves with clickable source links (or "All quiet")
-
π‘ Today's Priorities Card
- AI-generated top 5 priorities based on urgency, deadlines, and schedule
- Synthesized from all workstreams
Step 4: Generate Summary
Also produce briefing-summary-YYYY-MM-DD.md β a 30-second scannable text version:
# βοΈ Morning Briefing Summary β [DATE]
**π΄ Urgent**: [count] items need immediate attention
**π
Today**: [count] meetings ([hours] blocked), [focus windows]
**π§ Email**: [Tier 1 count] action required, [Tier 2 count] important, [drafts] drafted
**π¬ Slack**: [mentions] mentions, [unreads] unread
**π GitHub**: [PRs] PRs need review, CI [status]
**π° Reading**: [count] must-read articles today
**π Competitors**: [notable or "all quiet"]
## Top 5 Priorities Today
1. [Priority 1 β source and reason]
2. [Priority 2]
3. [Priority 3]
4. [Priority 4]
5. [Priority 5]
Step 5: Save and Open
- Save HTML as
morning-dashboard-YYYY-MM-DD.html - Save summary as
briefing-summary-YYYY-MM-DD.md - Open the HTML dashboard in the browser
Fallback
If some briefing files are missing, build the dashboard with whatever is available. Show a subtle "β οΈ [Section] data unavailable" note for missing sections. Never fail entirely because one workstream didn't complete.