--- 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.