diff --git a/_skill-index.md b/_skill-index.md index 29554ba..1599e92 100644 --- a/_skill-index.md +++ b/_skill-index.md @@ -25,16 +25,17 @@ description: Master index of all skills in your robot assistant system. Your ass | "write a POV doc," "create a proof of value document," "POV criteria," "proof of concept criteria," "generate a POC document" | **pov-doc** | | "submit an expense," "navan expense," "file an expense," "upload receipt" | **navan-expense** | | "update the SE radar report," "add a column to the SE report," "edit the vNotes report," "run the SE radar report," "check SE validation stage," "update technical validation" | **update-salesforce-tech-validation** | +| "create a meeting note," "make meeting notes," "add a meeting to my daily note," "set up a meeting note" | **meeting-notes** | --- ## 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. @@ -108,6 +109,12 @@ description: Master index of all skills in your robot assistant system. Your ass **File:** `skills/update-salesforce-tech-validation/SKILL.md` **Dependencies:** Chrome browser with active Salesforce session (Okta SSO) +### Meeting Notes +**Purpose:** Create and update meeting notes in `mt/` with the `YYMMDD-account-description.md` naming convention, and link them in the corresponding daily note under the meetings section. +**Triggers:** "create a meeting note," "make meeting notes," "add a meeting to my daily note," "set up a meeting note" +**File:** `skills/meeting-notes/SKILL.md` +**Dependencies:** None + --- ## Adding New Skills 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. diff --git a/meeting-notes/SKILL.md b/meeting-notes/SKILL.md new file mode 100644 index 0000000..58f7583 --- /dev/null +++ b/meeting-notes/SKILL.md @@ -0,0 +1,77 @@ +--- +name: meeting-notes +description: This skill should be used when the user asks to "create a meeting note," "make meeting notes," "set up a meeting note," "add a meeting to my daily note," or any request to create or update notes for an upcoming or past meeting. +version: 1.0.0 +--- + +# Meeting Notes + +Create and update meeting notes in the user's notes system. Meeting notes are individual markdown files linked from daily notes. + +## File Locations + +- **Meeting notes:** `~/notes/mt/` +- **Daily notes:** `~/notes/dn_YYMMDD.md` + +## Naming Convention + +Meeting note files use the format: + +``` +mt/YYMMDD-account-description.md +``` + +- `YYMMDD`: date of the meeting (two-digit year, zero-padded month and day) +- `account-description`: the account name or general topic, lowercase, hyphen-delimited +- Example: `260414-tdcj-demo.md`, `260209-berlick-1on1.md` + +If the user mentions a specific account that has an existing note in `~/notes/`, check if the account note has a wikilink to the meeting note under a meeting section. If so, also add a reverse link from the meeting note back to the account note. + +## Daily Note Link + +After creating the meeting note, link it in the corresponding daily note (`~/notes/dn_YYMMDD.md`) under the `## meetings` section: + +```markdown +## meetings +- [[mt/YYMMDD-account-description|Display Name]] +``` + +Use the meeting note's heading (usually `# Meeting Title`) as the display name. If the daily note does not exist yet, create it following the daily note template (see existing `dn_*.md` files for the format). + +## Meeting Note Template + +Use this structure when creating a new meeting note. Only include sections that have content. + +```markdown +# Meeting Title + +**Date:** YYYY-MM-DD +**Attendees:** (comma-separated list of people) + +## Agenda / Demo Flow / Topics +- (list of topics, agenda items, or demo flow steps) + +## Notes +- (key points, decisions, takeaways) + +## Next Steps +- [ ] (action items with owners if known) +``` + +Sections should be tailored to the meeting type: +- **Demos:** use "Demo Flow" instead of "Agenda" +- **1:1s:** use a simpler structure with key discussion points +- **Planning calls:** include "Planning Notes" and "Next Steps" +- **General meetings:** use "Agenda" and "Notes" + +## Updating Existing Meeting Notes + +If the user asks to update a meeting note that already exists: +1. Find it in `~/notes/mt/` by date and/or account name +2. Read the existing content +3. Append new information or edit existing sections as requested +4. Do not remove existing content unless explicitly asked + +## Finding Meeting Notes + +When the user references a meeting by account name or topic, search `~/notes/mt/` for matching files. You can also search account notes (e.g., `~/notes/NISD Northside ISD.md`) for wikilinks to meeting notes in the format `[[mt/...]]`.