assistant-skills/daily-briefing/SKILL.md

92 lines
4.3 KiB
Markdown

---
name: daily-briefing
description: Morning briefing that pulls today's tasks from Vikunja, reviews the daily note, checks gratitude, and surfaces the weekly theme.
triggers:
- run my briefing
- morning briefing
- what's my day look like
- what's on deck
- daily briefing
---
# Daily Briefing
One command to start the day. Pull tasks, review the daily note, check gratitude, and surface the weekly theme.
## When to Use
Run this at the start of your day.
**Audio overview mode:** If Connor asks for an audio briefing, "audio overview," or "morning brief as audio," produce the briefing as spoken-word audio using the [audio-summary](~/.openclaw/skills/audio-summary/SKILL.md) skill instead of text. Write the briefing to a temp file, generate the MP3 with edge-tts (en-US-AvaNeural, --volume=-90%), and deliver via `MEDIA:` + `[[audio_as_voice]]`. Also include a short text summary alongside the audio. Clean up temp files after.
## Instructions
### Step 1: Gather data
Run these in parallel:
- `vik t up 0` to get tasks active as of today from Vikunja
- Read today's daily note at `~/notes/dn_YYMMDD.md` (where YYMMDD is today's date)
- Read yesterday's daily note at `~/notes/dn_YYMMDD Yesterday.md` for any "what I should do today" or planning context
- Read the weekly note (see Step 4 for filename logic)
- Query yesterday's dictations from MongoDB (`notes.dictations`) for any planning or priority notes
**Dictations query:** Use the MongoDB skill. Query documents where `created_at` starts with yesterday's `YYMMDD` prefix. Read the `content` field of any dictations that mention tomorrow's plans, priorities, or tasks. Surface these in the briefing as a separate section ("Voice note priorities" or similar).
### Step 2: Combine and deduplicate
**Sources:** Vikunja tasks, today's daily note (target tasks + "I could also"), yesterday's daily note (forward-looking plans), and yesterday's dictations (planning notes).
Deduplicate all sources into a single task/priority list.
**Deduplication rules:**
- If a daily note task contains a Vikunja link like `https://tasks.connorrhodes.com/tasks/XXX`, match on that task ID against the Vikunja output
- If no task link/ID is present, match on title similarity
- When a task appears in both sources, present it once
- Note which source(s) each task came from (this helps Connor see if something is in Vikunja but not his daily note, or vice versa)
### Step 3: Produce the briefing
#### Output Format
**Daily Briefing — [Weekday, Month Day]**
**Today's Tasks**
[Combined, deduplicated list. Numbered. Group target tasks first, then "I could also" tasks. After each item, note the source in parentheses: vik, daily note, or both.]
**In Vikunja but not in daily note**
[Only show if there are tasks from vik that didn't match anything in the daily note.]
**In daily note but not in Vikunja**
[Only show if there are tasks from the daily note that didn't match anything in vik.]
### Step 4: Gratitude check
Check the `I'm grateful for` section in today's daily note.
- **If it has content (non-empty bullet points):** Display the gratitude entries under a "Gratitude" heading in the briefing.
- **If it's empty:** After the briefing output, ask Connor what he's grateful for today. Wait for his response, then edit the daily note file to fill in the `I'm grateful for` section with his answers.
### Step 5: Weekly theme
Read the weekly theme from the `# Theme` heading in the weekly note.
**Weekly note filename logic:**
- Calculate the Monday of the current week (ISO week, Monday = day 1)
- If today is Saturday or Sunday (ISO day 6 or 7), use the Monday of the *following* week instead
- The filename is `week_YYMMDD.md` using that Monday's date
- The file lives at `~/notes/week_YYMMDD.md`
Display the theme at the bottom of the briefing:
**This Week's Theme: *[theme text]***
[Include the one-line description if present]
**If no weekly note exists for the calculated date:** Include a notification line: "No weekly note found for this week." Still produce the rest of the briefing.
## Rules
- Keep it scannable. Short lines, clear sections.
- Don't editorialize. Present the tasks as written. Let Connor decide priorities.
- If a section has no items, omit that section header.
- Use the Edit tool (not Write) when updating the gratitude section in the daily note.
- Date calculations should use today's actual date, not hardcoded values.