diff --git a/_skill-index.md b/_skill-index.md index 29554ba..e4be09d 100644 --- a/_skill-index.md +++ b/_skill-index.md @@ -31,10 +31,10 @@ description: Master index of all skills in your robot assistant system. Your ass ## Skills ### Daily Briefing -**Purpose:** Produces a morning overview of your day — calendar, tasks, deadlines, and anything else you need to know. -**Triggers:** "run my briefing," "morning briefing," "what's my day look like," "what's on deck" +**Purpose:** Pulls today's active tasks from Vikunja, reviews the daily note for targets and stretch goals, deduplicates across both sources, 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" **File:** `skills/daily-briefing/SKILL.md` -**Dependencies:** Calendar MCP connector (when set up) +**Dependencies:** `vik` CLI, daily notes at `~/notes/dn_YYMMDD.md`, weekly notes at `~/notes/week_YYMMDD.md` ### Shutdown Routine **Purpose:** Reviews the day, checks what's outstanding, and previews tomorrow. diff --git a/daily-briefing/SKILL.md b/daily-briefing/SKILL.md index f47f4c5..d05e392 100644 --- a/daily-briefing/SKILL.md +++ b/daily-briefing/SKILL.md @@ -1,16 +1,17 @@ --- name: daily-briefing -description: Morning briefing that pulls today's tasks from Vikunja via vik and gives a clear picture of what's on deck. +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, show what matters today. +One command to start the day. Pull tasks, review the daily note, check gratitude, and surface the weekly theme. ## When to Use @@ -18,31 +19,66 @@ Run this at the start of your day. ## Instructions -1. Run `vik task today` to get tasks due or starting today. -2. Run `vik task upcoming --due-only --days 2` to check for tasks with a due date in the next 2 days. -3. Produce the briefing below. +### Step 1: Gather data -### Output Format +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 the weekly note (see Step 4 for filename logic) + +### Step 2: Deduplicate tasks + +Combine tasks from Vikunja and the daily note's "target tasks" and "I could also" sections into a single 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** -[Tasks from `vik task today`. Numbered list.] +[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.] -**Overdue** -[Any tasks past their due date. Flag these clearly.] +**In Vikunja but not in daily note** +[Only show if there are tasks from vik that didn't match anything in the daily note.] -**Due Soon** -[Tasks from `vik task upcoming --due-only --days 2` that are not already in Today's Tasks. Only show this section if results exist.] +**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. -- Overdue items always appear, even if the list is long. -- Only show upcoming tasks if they have a due date within 2 days — don't surface tasks based on start date alone. -- If there are no tasks in a section, omit that section header. - ---- - -*Customized in Video 7 via the assembler.* +- 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.