morning-briefing

Generate comprehensive morning briefing with calendar, tasks, tickets, news, and weather. Saves to Obsidian, sends email with audio podcast attached.

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "morning-briefing" with this command: npx skills add krishagel/geoffrey/krishagel-geoffrey-morning-briefing

Morning Briefing Workflow

Overview

Generates a daily morning briefing and delivers it three ways:

  1. Terminal: Summary displayed immediately
  2. Obsidian: Full briefing saved to daily note
  3. Email: Briefing text + audio podcast attachment

Location

  • Gig Harbor, WA - Use for weather queries

Phase 1: Gather Data

Execute these data gathering steps:

1.1 Calendar (Today's Events)

cd /Users/hagelk/non-ic-code/geoffrey/skills/google-workspace && bun calendar/list_events.js psd --today

Returns JSON with today's events including:

  • Event summary, location, start/end times
  • Attendees and response status
  • Hangout/meet links

Account: Use psd for work calendar

1.2 OmniFocus Tasks (Due & Flagged)

osascript -l JavaScript /Users/hagelk/non-ic-code/geoffrey/skills/morning-briefing/scripts/get_due_flagged.js

Returns tasks that are:

  • Due today or overdue
  • Flagged
  • Available (not blocked, not deferred to future)

1.3 Recent Emails (Last 24 Hours)

# Get yesterday's date in Gmail query format
YESTERDAY=$(date -v-1d +%Y/%m/%d)
cd /Users/hagelk/non-ic-code/geoffrey/skills/google-workspace && bun gmail/list_messages.js psd --query "in:inbox after:$YESTERDAY" --max 15

Returns recent inbox messages with:

  • From, subject, date, snippet
  • Whether read or unread
  • Thread ID for context
  • Labels array

Filtering: Only show emails still in inbox (not already labeled/processed).

  • Emails with custom labels (Label_XXXXX) have been sorted and should be excluded
  • Exception: Include emails with SaneCC or SaneLater labels (worth knowing about)
  • System labels (UNREAD, INBOX, CATEGORY_*, IMPORTANT) don't count as "processed"

Philosophy: Any email still in inbox from last 24 hours needs attention, read or not.

Account: Use psd for work email

1.4 Open Freshservice Tickets

bun /Users/hagelk/non-ic-code/geoffrey/skills/freshservice-manager/scripts/list_tickets.js '{"workspace_id": 2, "filter": "new_and_my_open"}'

Returns open tickets assigned to or created by user in Technology workspace.

1.5 Pending Approvals

bun /Users/hagelk/non-ic-code/geoffrey/skills/freshservice-manager/scripts/get_approvals.js requested

Returns service requests awaiting approval.

1.6 Weather

Use WebSearch:

Gig Harbor WA weather today forecast

Extract:

  • Current conditions
  • High/low temperature
  • Precipitation chance
  • Any alerts

1.7 EdTech News (with Synopses)

Use WebSearch:

K-12 education technology news past 24 hours January 2026

For each article found (3-5 articles):

  1. Use WebFetch to read the full article
  2. Extract a 2-3 sentence synopsis covering:
    • What happened / what's new
    • Why it matters for K-12 education
    • Key takeaway or action item

Freshness check: Verify article dates before including. Only include articles published within the last 24 hours. Skip older articles even if they appear in results.

Topics to cover:

  • EdTech product launches and updates
  • School technology policy changes
  • Cybersecurity in schools
  • Digital learning trends

1.8 AI News (with Synopses)

Use WebSearch:

artificial intelligence news past 24 hours January 2026 latest

For each article found (3-5 articles):

  1. Use WebFetch to read the full article
  2. Extract a 2-3 sentence synopsis covering:
    • What's the development
    • Industry impact
    • Relevance to education/work

Freshness check: Verify article dates before including. Only include articles published within the last 24 hours. Skip older articles even if they appear in results.

Topics to cover:

  • Major AI model releases and capabilities
  • AI policy and regulation
  • Enterprise AI adoption
  • AI research breakthroughs

1.9 K-12 Leadership News (with Synopses)

Use WebSearch:

K-12 school leadership superintendent news past 24 hours January 2026

For each article found (2-3 articles):

  1. Use WebFetch to read the full article
  2. Extract a 2-3 sentence synopsis covering:
    • Policy or leadership development
    • Impact on districts/schools
    • Relevance to CIO/technology leadership

Freshness check: Verify article dates before including. Only include articles published within the last 24 hours. Skip older articles even if they appear in results.

Topics to cover:

  • State and federal education policy
  • Superintendent and board news
  • School funding and budgets
  • Workforce and staffing trends

1.9b School Safety & Security News (with Synopses)

Use WebSearch:

K-12 school safety security news past 24 hours January 2026

For each article found (3 articles):

  1. Use WebFetch to read the full article
  2. Extract a 2-3 sentence synopsis covering:
    • What happened / what's new
    • Impact on school safety practices
    • Key takeaway for districts

Freshness check: Verify article dates before including. Only include articles published within the last 24 hours. Skip older articles even if they appear in results.

Topics to cover:

  • School security incidents and responses
  • Safety policy changes
  • Emergency preparedness
  • Mental health and threat assessment
  • Physical security technology

1.10 Technology Team EOD Messages (Last Business Day) - DETAILED

Get end-of-day check-in messages from the Technology Staff space:

cd /Users/hagelk/non-ic-code/geoffrey/skills/google-workspace && bun chat/get_eod_messages.js psd spaces/AAAAxOtpv10 last-business-day

CRITICAL - NO HALLUCINATION:

  • ONLY use names that appear in the sender field of the script output
  • If script returns no messages, say "No EOD messages found"
  • If script returns messages with sender IDs instead of names, display the ID (e.g., "users/12345...")
  • NEVER invent names, locations, or accomplishments
  • Copy-paste approach: treat script output as source of truth

Before extracting team data:

  1. Examine the raw JSON output from the script
  2. List the exact sender values returned
  3. Use ONLY those names - no paraphrasing, no "improving"

CRITICAL: Extract FULL details from each team member's EOD message. Look for messages that contain "Today:" prefix - these are the detailed EOD summaries.

For each team member who posted an EOD summary:

  1. Name: Who posted (use EXACTLY the name from sender field)
  2. Location(s): Where they worked (WFH, DCRC, school sites)
  3. Key accomplishments: Specific tasks completed (not just "tickets")
  4. Notable items: Interesting problems solved, projects worked on
  5. Issues/blockers: Any problems mentioned

Example extraction from raw message:

Brad White:
- Location: TSD (Tech Services)
- Accomplished: Packaged Cinema 4D plugin for deployment, fixed OAuth blocking for Maxon App sign-in, created SwiftDialog notification for plugin installs, used Claude Code for first time to create Installomator label for Godot game engine
- Notable: Working on Unity deployment troubleshooting, burning comp time leaving early

Note: If today is Monday, "last business day" = Friday (or Thursday if Friday was a holiday).

1.10b Safety & Security Team EOD Messages (Last Business Day)

Get end-of-day check-in messages from the Safety & Security Staff space:

cd /Users/hagelk/non-ic-code/geoffrey/skills/google-workspace && bun chat/get_eod_messages.js psd spaces/AAAAFpQaAnA last-business-day

Space: PSD Safety & Security Team

CRITICAL - NO HALLUCINATION:

  • ONLY use names that appear in the sender field of the script output
  • If script returns no messages, say "No EOD messages found"
  • If script returns messages with sender IDs (e.g., "users/12345...") instead of names:
    • Display as: Unknown (users/123456...) - [Location from message content]
    • Add note: "Name not in mapping - update chat_user_mapping.json"
  • NEVER invent names, locations, or accomplishments
  • Copy-paste approach: treat script output as source of truth

Before extracting team data:

  1. Examine the raw JSON output from the script
  2. List the exact sender values returned
  3. Use ONLY those names - no paraphrasing, no "improving"

Extract using same format as Technology Team - names, locations, accomplishments, issues.

Note: If today is Monday, "last business day" = Friday (or Thursday if Friday was a holiday).

1.11 Team Completed Tickets (Last Business Day)

Get tickets closed by the Technology team on the last business day:

# First get the last business day
LAST_BIZ_DAY=$(bun /Users/hagelk/non-ic-code/geoffrey/skills/morning-briefing/scripts/get_last_business_day.js | jq -r '.date')

# Then get daily summary for that date
bun /Users/hagelk/non-ic-code/geoffrey/skills/freshservice-manager/scripts/get_daily_summary.js "$LAST_BIZ_DAY"

CRITICAL - NO HALLUCINATION:

  • ONLY use agent names that appear in the byAgent section of script output
  • Use EXACTLY the ticket counts returned by the script
  • NEVER invent names or ticket counts
  • If an agent's name shows as ID or email, display it as-is

Before reporting ticket stats:

  1. Examine the raw JSON output from get_daily_summary.js
  2. List the exact agent names from byAgent field
  3. Use ONLY those names and counts

Returns:

  • Total tickets closed
  • Breakdown by agent
  • Breakdown by category (Password Reset, Chromebook, etc.)
  • Automated vs agent-resolved

Workspace: Technology (workspace_id: 2)

1.12 Ticket Trends Analysis

Compare last business day to previous days for trends:

# Get last 5 business days of summaries for trend analysis
# The get_daily_summary.js script supports date parsing
bun /Users/hagelk/non-ic-code/geoffrey/skills/freshservice-manager/scripts/get_daily_summary.js "last monday"
bun /Users/hagelk/non-ic-code/geoffrey/skills/freshservice-manager/scripts/get_daily_summary.js "last tuesday"
# etc.

Analyze for:

  • Volume trends (increasing/decreasing)
  • Category spikes (sudden increase in specific issue types)
  • Agent workload distribution
  • Unusual patterns

1.13 Software Development Workspace Tickets

Get open tickets in the Software Development workspace:

bun /Users/hagelk/non-ic-code/geoffrey/skills/freshservice-manager/scripts/search_tickets.js "status:2 OR status:3" 13

Returns all open (status:2) and pending (status:3) tickets in the Software Development workspace.

Workspace ID: 13 (Software Development) Note: This is the user's internal software development bug tracker for AI Studio and other PSD applications.

1.14 Legislative Activity (Last Business Day)

Get K-12 education bills with activity since the last business day:

# Get lookback info and bills to check
bun /Users/hagelk/non-ic-code/geoffrey/skills/legislative-tracker/scripts/get_recent_bill_activity.js --last-business-day

This returns:

  • Date range to check (last business day → today)
  • List of ~143 confirmed education bill IDs
  • WebFetch instructions for each bill

Workflow:

  1. Get the output from get_recent_bill_activity.js
  2. WebFetch each bill URL (batch 5-6 in parallel for speed)
  3. Extract latest action date from each bill page
  4. Filter to bills where latest_action_date >= lookback_start
  5. Apply priority framework (HIGH/MEDIUM/LOW based on district impact)
  6. Include summary of what each bill does

On Monday: Lookback starts on Friday (or earlier if Friday was a holiday), so includes all weekend activity (hearings, votes, committee actions).

Example URLs to WebFetch:

  • https://app.leg.wa.gov/billsummary?BillNumber=1020&Year=2025
  • https://app.leg.wa.gov/billsummary?BillNumber=5038&Year=2025

Note: Only include bills that actually had activity. If no bills moved, output "No legislative activity since [date]".

Phase 2: Generate Briefing

2.1 Analyze & Prioritize

Review gathered data and identify:

  • Conflicts: Overlapping calendar events
  • Urgencies: Overdue tasks, high-priority tickets
  • Themes: Patterns across data sources

2.2 Format Markdown Briefing

Use this structure:

# Daily Briefing - [DATE]

## Weather
[Current conditions, high/low, precipitation]

## Today's Calendar
| Time | Event | Location |
|------|-------|----------|
| ... | ... | ... |

**Conflicts/Notes**: [any issues]

## Priority Tasks
### Due Today
- [ ] Task 1
- [ ] Task 2

### Flagged
- [ ] Task 3

### Overdue
- [ ] Task 4 (due [date])

## Recent Emails (Last 24h)
[X emails in inbox from last 24 hours]

### Needs Response
- From: [sender] - [subject] (snippet)
- From: [sender] - [subject] (snippet)

### FYI/Notifications
- [sender] - [subject]

## Freshservice
### Technology Tickets: [count] open
[Top 3-5 tickets by priority/age]

### Software Development Tickets: [count] open
[List tickets in Software Dev workspace]

### Pending Approvals: [count]
[List with ticket #, requester, summary]

## Team Activity (Last Business Day: [DAY, DATE])

**Data Source Verification (REQUIRED):**
- Technology EOD script returned: [X] messages from [list exact sender names from JSON]
- Safety & Security EOD script returned: [X] messages from [list exact sender names from JSON]
- Freshservice daily summary returned: [X] tickets by [list exact agent names from JSON]

*Use ONLY the names listed above. Never invent or paraphrase names.*

### Technology Team EOD Summaries

**[Name from sender field]** - [Location(s)]
- [Key accomplishment 1 - be specific about what they did]
- [Key accomplishment 2]
- [Notable: any interesting problems solved or projects]

**[Name from sender field]** - [Location(s)]
- [Key accomplishment 1]
- [Key accomplishment 2]
- [Issues: any blockers or problems mentioned]

*[Continue for each team member who posted an EOD summary]*

### Safety & Security Team EOD Summaries

**[Name from sender field]** - [Location(s)]
- [Key accomplishment 1]
- [Key accomplishment 2]
- [Notable: any issues or incidents handled]

*If sender shows as user ID (users/12345...), display: **Unknown (users/12345...)** - [Location]*

*[Continue for each team member who posted an EOD summary]*

### Tickets Completed by Team: [count]
| Agent | Tickets | Top Categories |
|-------|---------|----------------|
| [Name from byAgent field] | X | Password Reset (Y), Chromebook (Z) |

### Ticket Trends
- Volume: [up/down/stable] vs previous days
- Notable patterns: [any spikes or anomalies]

## EdTech News

### [Article Title 1] - [Source]
[2-3 sentence synopsis: what happened, why it matters, key takeaway]

### [Article Title 2] - [Source]
[2-3 sentence synopsis]

### [Article Title 3] - [Source]
[2-3 sentence synopsis]

## AI News

### [Article Title 1] - [Source]
[2-3 sentence synopsis: what's the development, industry impact, relevance]

### [Article Title 2] - [Source]
[2-3 sentence synopsis]

### [Article Title 3] - [Source]
[2-3 sentence synopsis]

## K-12 Leadership News

### [Article Title 1] - [Source]
[2-3 sentence synopsis: policy/leadership development, impact, relevance to tech leadership]

### [Article Title 2] - [Source]
[2-3 sentence synopsis]

## School Safety & Security News

### [Article Title 1] - [Source]
[2-3 sentence synopsis: what happened, impact on safety practices, takeaway for districts]

### [Article Title 2] - [Source]
[2-3 sentence synopsis]

### [Article Title 3] - [Source]
[2-3 sentence synopsis]

## Legislative Activity ([Last Biz Day] - Today)

[X] education bills had movement:

### 🔴 HIGH Priority

#### [Bill ID] - [Short Title]
**Action**: [What happened - hearing, vote, committee action, etc.]
**Summary**: [1-2 sentences: what the bill does, potential district impact]

### 🟡 MEDIUM Priority

#### [Bill ID] - [Short Title]
**Action**: [What happened]
**Summary**: [1-2 sentences]

### 🟢 LOW Priority
- [Bill ID]: [Action type] - [One line summary]

*No legislative activity since [date]* - if no bills moved

## Quick Stats
- Calendar events: X
- Tasks overdue: X | Due today: X | Flagged: X
- Open tickets (Tech): X
- Open tickets (Software Dev): X
- Pending approvals: X
- Recent emails (24h): X
- Team tickets closed [last biz day]: X
- News articles: EdTech (X) | AI (X) | Leadership (X)
- Legislative bills with activity: X

2.3 Generate Podcast Script (Extended Format)

Transform the briefing into a comprehensive conversational audio script:

  • First person, casual professional tone
  • 10-15 minutes speaking time (~1500-2000 words)
  • Address listener directly ("Here's what you need to know today...")

Required Sections (in order):

  1. Opening (~100 words)

    • Day, date, weather summary
    • Quick preview of key items
  2. Calendar & Schedule (~150 words)

    • Today's events with context
    • Highlight key meetings/events
    • Note any conflicts or prep needed
  3. Tasks & Priorities (~150 words)

    • Overdue items that need attention
    • Due today items
    • Flagged priorities
  4. Tickets & Service Desk (~150 words)

    • Open Technology tickets
    • Software Development tickets
    • Pending approvals
  5. Team Activity - DETAILED (~400 words)

    • What the Technology team accomplished on last business day
    • Highlight 3-5 team members by name with specifics
    • Notable projects, interesting problems solved
    • What the Safety & Security team accomplished
    • Overall ticket closure stats

    CRITICAL - NO HALLUCINATION:

    • Use ONLY names from the script output sender fields
    • Use ONLY ticket counts from the get_daily_summary.js output
    • If script returned no messages, say "No EOD messages were posted"
    • NEVER invent names, locations, or accomplishments
  6. EdTech News (~200 words)

    • 2-3 articles with synopses
    • Why each matters for K-12
  7. AI News (~200 words)

    • 2-3 articles with synopses
    • Industry impact and relevance
  8. K-12 Leadership News (~150 words)

    • 1-2 articles with synopses
    • Policy/leadership implications

8b. School Safety & Security News (~150 words)

  • 2-3 articles with synopses
  • Safety practices and district implications
  1. Legislative Update (~150 words)

    • Bills that had hearings, votes, or readings since last business day
    • Highlight any with direct district impact (fiscal, operational, staffing)
    • Note upcoming hearing dates if relevant
    • On Mondays, include weekend activity summary
  2. Closing (~100 words)

    • Top 3 priorities for the day
    • Sign off

Style Guidelines:

  • Use team members' first names when discussing their work
  • Include specific details (not "worked on tickets" but "resolved 34 Chromebook repairs")
  • Transition smoothly between sections
  • Add brief commentary/analysis on news items

Save to /tmp/morning_briefing_podcast.txt

Phase 3: Create Podcast

uv run --with mlx-audio --with pydub /Users/hagelk/non-ic-code/geoffrey/skills/local-tts/scripts/generate_audio.py \
  --file /tmp/morning_briefing_podcast.txt \
  --voice af_heart \
  --output ~/Desktop/morning_briefing_[DATE].mp3

Voice Selection: af_heart (warm, friendly - good for morning briefing) Note: Uses local MLX TTS (Kokoro model) - no API costs

Phase 3.5: Generate Infographic (MANDATORY)

CRITICAL: The infographic MUST be generated. Do not skip this phase.

Create a visual summary infographic using the image-gen skill.

3.5.1 Build Infographic Prompt

Based on gathered data, construct a prompt for the infographic:

Create an infographic summarizing a daily work briefing for [DATE].

Visual concept: A clean dashboard layout with distinct sections for different data categories.

Key data to display:
- Weather: [conditions], High [X]°F, Low [Y]°F
- Calendar: [X] events today, highlight: [key meeting]
- Tasks: [X] overdue, [Y] due today, [Z] flagged
- Tickets: [X] Technology open, [Y] Software Dev open
- Team Activity: [X] tickets closed by team yesterday
- Emails: [X] in inbox from last 24h

Style: Professional, clean design with PSD brand colors (navy blue #003366, gold accent #FFD700).
Flat design, clear sections, modern sans-serif typography.

Layout: Horizontal 16:9, organized as a dashboard with weather top-left, calendar top-right,
tasks and tickets in middle row, team stats at bottom.

Title: "Daily Briefing - [DATE]"
Subtitle: "Gig Harbor, WA"

3.5.2 Generate Image

uv run /Users/hagelk/non-ic-code/geoffrey/skills/image-gen/scripts/generate.py \
  "[infographic prompt]" \
  ~/Desktop/morning_briefing_[DATE].png \
  16:9 \
  2K

Settings:

  • Aspect ratio: 16:9 (landscape dashboard)
  • Size: 2K (ensures text readability)
  • Output: ~/Desktop/morning_briefing_[DATE].png

Phase 4: Save to Obsidian

4.1 Copy Infographic to Obsidian Assets

cp ~/Desktop/morning_briefing_[DATE].png \
  ~/Library/Mobile\ Documents/iCloud~md~obsidian/Documents/Personal_Notes/Geoffrey/Daily\ Briefings/assets/

4.2 Add Infographic to Briefing Markdown

At the top of the briefing (after the title), add:

![Daily Briefing Infographic](assets/morning_briefing_[DATE].png)

4.3 Save Briefing File

Use Obsidian MCP tools:

  1. Check if daily note exists:

    mcp__obsidian-vault__get_vault_file
    filename: "Geoffrey/Daily Briefings/[YYYY-MM-DD].md"
    
  2. Create or update:

    mcp__obsidian-vault__create_vault_file
    filename: "Geoffrey/Daily Briefings/[YYYY-MM-DD].md"
    content: [full briefing markdown with infographic embed]
    

File path pattern: Geoffrey/Daily Briefings/YYYY-MM-DD.md

Fallback (if MCP unavailable): Write directly to iCloud path:

/Users/hagelk/Library/Mobile Documents/iCloud~md~obsidian/Documents/Personal_Notes/Geoffrey/Daily Briefings/[YYYY-MM-DD].md

Phase 5: Send Email (HTML with Inline Infographic)

5.1 Generate HTML Email Body

Create a professional HTML email (NOT markdown). Use the template at skills/morning-briefing/templates/email.html as reference.

Key HTML structure:

<!DOCTYPE html>
<html>
<head>
  <style>
    body { font-family: -apple-system, BlinkMacSystemFont, sans-serif; max-width: 600px; margin: 0 auto; }
    .header { text-align: center; border-bottom: 2px solid #003366; padding: 16px; }
    .stat-box { background: #f8f9fa; padding: 12px; text-align: center; }
    /* ... more styles from template ... */
  </style>
</head>
<body>
  <!-- Infographic at TOP - referenced via cid:briefing_image -->
  <img src="cid:briefing_image" alt="Daily Briefing" style="width: 100%; max-width: 600px; border-radius: 8px; margin-bottom: 20px;">

  <div class="header">
    <h1 style="color: #003366;">Daily Briefing</h1>
    <p>[DAY_OF_WEEK], [DATE_FORMATTED]</p>
  </div>

  <!-- Weather, Stats, Calendar, Tasks, Team, News sections -->
  <!-- See templates/email.html for full structure -->

  <div style="background: #e8f4f8; padding: 16px; border-radius: 8px; margin-top: 20px;">
    <strong>Attachments:</strong><br>
    🎧 Audio Podcast (~10-15 min)<br>
    📊 Infographic (also shown above)
  </div>

  <p style="text-align: center; color: #666; font-size: 12px;">
    Full briefing: Obsidian/Geoffrey/Daily Briefings/[DATE].md
  </p>
</body>
</html>

CRITICAL: The <img src="cid:briefing_image"> displays the infographic inline at the top of the email.

Save to /tmp/morning_briefing_email.html

5.2 Send with Inline Image + Attachments

cd /Users/hagelk/non-ic-code/geoffrey/skills/google-workspace && bun gmail/send_with_attachments.js psd \
  --to "hagelk@psd401.net" \
  --subject "Daily Briefing - [DATE]" \
  --body-file /tmp/morning_briefing_email.html \
  --html \
  --inline-image "~/Desktop/morning_briefing_[DATE].png" \
  --attachments "~/Desktop/morning_briefing_[DATE].mp3"

Options explained:

  • --html - Treat body as HTML (required for formatting)
  • --inline-image - Embeds image at top of email (referenced as cid:briefing_image)
  • --attachments - Additional files to attach (podcast)

Result:

  • Infographic displays INLINE at top of email (visible without downloading)
  • Podcast attached for download
  • Email renders nicely in Gmail with professional styling

Output

Return standardized summary:

## Summary
Generated daily briefing for [DATE]

## Actions
- Gathered calendar events: X
- Gathered tasks: X (Y due today, Z flagged)
- Gathered Technology tickets: X open, Y approvals pending
- Gathered Software Dev tickets: X open
- Gathered team EOD messages: X from [last business day]
- Gathered team completed tickets: X from [last business day]
- Weather: [conditions]
- News: X headlines
- Generated podcast: ~/Desktop/morning_briefing_[DATE].mp3
- Saved to Obsidian: Geoffrey/Daily Briefings/[DATE].md
- Email: [sent/skipped - reason]

## Status
[Status emoji] [Complete/Partial]

## Quick View
[2-3 line summary of most important items]

Error Handling

Missing Google Workspace Scripts

If calendar/email scripts don't exist:

  • Skip those sections
  • Note "Integration pending" in output
  • Continue with available data sources

OmniFocus Not Running

Status: Partial
Note: OmniFocus not running - task data unavailable

Freshservice API Error

Status: Partial
Note: Freshservice API error - ticket data unavailable

Local TTS Generation Failed

Status: Partial
Note: Audio generation failed - check mlx-audio setup
Briefing saved to Obsidian without podcast

Dependencies

Skill/ToolRequired ForFallback
google-workspaceCalendar, email, team EODSkip sections
omnifocus-managerTasksSkip section
freshservice-managerTickets, approvals, team statsSkip section
local-ttsAudio podcastText-only briefing
obsidian-vault (MCP)Save briefingDisplay only
WebSearchNews, weatherSkip sections

Configuration

User Preferences

  • Location: Gig Harbor, WA (weather)
  • Work Email: psd account
  • Technology Workspace: workspace_id: 2
  • Software Dev Workspace: workspace_id: 13
  • Technology Chat Space: spaces/AAAAxOtpv10 (Technology Staff Check-Ins & Logs)
  • Safety & Security Chat Space: spaces/AAAAFpQaAnA (PSD Safety & Security Team)
  • Voice: af_heart (warm, friendly - local Kokoro TTS)
  • Podcast Length: 10-15 minutes (~1500-2000 words)

Customization

Users can request:

  • "Skip news" - omit news section
  • "No podcast" - text only
  • "Just calendar and tasks" - minimal briefing

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

General

browser-control

No summary provided by upstream source.

Repository SourceNeeds Review
General

google-workspace

No summary provided by upstream source.

Repository SourceNeeds Review
General

omnifocus-manager

No summary provided by upstream source.

Repository SourceNeeds Review
General

local-tts

No summary provided by upstream source.

Repository SourceNeeds Review