morning-briefing
Generate comprehensive morning briefing with calendar, tasks, tickets, news, and weather. Saves to Obsidian, sends email with audio podcast attached.
What this skill does
# 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)
```bash
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)
```bash
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)
```bash
# 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
```bash
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
```bash
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:
```bash
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:
```bash
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. ExamiRelated in Image & Video
watch
IncludedWatch a video (URL or local path). Downloads with yt-dlp, extracts auto-scaled frames with ffmpeg, pulls the transcript from captions (or Whisper API fallback), and hands the result to Claude so it can answer questions about what's in the video.
physical-ai-defect-image-generation
IncludedUse when the user wants to orchestrate defect image generation, run associated setup, or handle outputs on OSMO. The Day 0 path handles cold-start with USD-to-ROI, image-edit augmentation, and AnomalyGen to create initial PCBA datasets. The Day 1 path performs inference and labeling on real images. This skill helps with first-time asset setup, creation of finetuning checkpoints, and configuring deployment. Trigger keywords: defect image generation, dig workflow, dig pipeline, defect image detection workflow, aoi pipeline, aoi anomalygen, usd2roi anomalygen, day 0 pcba, day 1 pcba, day 1 real-photo alignment, day 1 manual roi, metal surface anomaly, glass defect, anomalygen finetune, setup_pcb, setup_metal, setup_glass, setup_pretrained, dig setup, dig datasets, dig pretrained checkpoint, dig image-edit endpoint.
accelint-react-best-practices
IncludedReact performance optimization and best practices. ALWAYS use this skill when working with any React code - writing components, hooks, JSX; refactoring; optimizing re-renders, memoization, state management; reviewing for performance; fixing hydration mismatches; debugging infinite re-renders, stale closures, input focus loss, animations restarting; preventing remounting; implementing transitions, lazy initialization, effect dependencies. Even simple React tasks benefit from these patterns. Covers React 19+ (useEffectEvent, Activity, ref props). Triggers - useEffect, useState, useMemo, useCallback, memo, inline components, nested components, components inside components, re-render, performance, hydration, SSR, Next.js, useDeferredValue, combined hooks.
elevenlabs-agents
IncludedBuild conversational AI voice agents with ElevenLabs Platform using React, JavaScript, React Native, or Swift SDKs. Configure agents, tools (client/server/MCP), RAG knowledge bases, multi-voice, and Scribe real-time STT. Use when: building voice chat interfaces, implementing AI phone agents with Twilio, configuring agent workflows or tools, adding RAG knowledge bases, testing with CLI "agents as code", or troubleshooting deprecated @11labs packages, Android audio cutoff, CSP violations, dynamic variables, or WebRTC config. Keywords: ElevenLabs Agents, ElevenLabs voice agents, AI voice agents, conversational AI, @elevenlabs/react, @elevenlabs/client, @elevenlabs/react-native, @elevenlabs/elevenlabs-js, @elevenlabs/agents-cli, elevenlabs SDK, voice AI, TTS, text-to-speech, ASR, speech recognition, turn-taking model, WebRTC voice, WebSocket voice, ElevenLabs conversation, agent system prompt, agent tools, agent knowledge base, RAG voice agents, multi-voice agents, pronunciation dictionary, voice speed control, elevenlabs scribe, @11labs deprecated, Android audio cutoff, CSP violation elevenlabs, dynamic variables elevenlabs, case-sensitive tool names, webhook authentication
humanizer
IncludedHumanize AI-generated text by detecting and removing patterns typical of LLM output. Rewrites text to sound natural, specific, and human. Uses 28 pattern detectors, 560+ AI vocabulary terms across 3 tiers, and statistical analysis (burstiness, type-token ratio, readability) for comprehensive detection. Use when asked to humanize text, de-AI writing, make content sound more natural/human, review writing for AI patterns, score text for AI detection, or improve AI-generated drafts. Covers content, language, style, communication, and filler categories.
generating-mermaid-diagrams
IncludedSalesforce architecture diagrams using Mermaid with ASCII fallback. Use this skill when generating text-based diagrams for Salesforce architecture, OAuth flows, ERDs, integration sequences, or Agentforce structure. TRIGGER when: user says "diagram", "visualize", "ERD", or asks for sequence diagrams, flowcharts, class diagrams, or architecture visualizations in Mermaid. DO NOT TRIGGER when: user wants PNG/SVG image output (use generating-visual-diagrams), or asks about non-Salesforce systems.