# Evening Prep You are given the following context for my day: $ARGUMENTS Please create a new note in the "Daily Notes" folder. * The title should be "Daily Note - YYYY-MM-DD" using today's date. * Below the title, link to the Weekly Note for the current week using format: `[[Weekly Note - Month Day, Year]]` where the date is the Sunday of the current week ## Step 1: read tomorrow's calendar events Use the Microsoft 365 connector's `outlook_calendar_search` tool to fetch tomorrow's events: * `afterDateTime`: tomorrow at 00:00, `beforeDateTime`: tomorrow at 23:59 * `query: "*"`, `order: "oldest"`, `limit: 25` 🚨 TIMEZONE: The connector returns times in **UTC** (ISO strings ending in `Z`). Convert each to Eastern Time before displaying — EDT = UTC−4 (mid-Mar to early-Nov), EST = UTC−5 otherwise. Flag any `isAllDay` events (PTO/OOO) as out-of-office rather than meetings. ## Step 1b: Check tomorrow's Runna workout Fetch the Runna ical feed (see CLAUDE.md "Data Sources") with `curl -sL ` and find the `VEVENT` whose `DTSTART` is tomorrow's date. * If one exists: the workout block is 9:00 AM + `X-WORKOUT-ESTIMATED-DURATION` (fall back to the high end of the duration range in `SUMMARY`/`DESCRIPTION` if that field is missing) + a 20-minute shower buffer after. * Check that block against tomorrow's calendar events from Step 1. If clear, note AJ is free for the workout and what time he's clear by. If a meeting falls inside the block, flag it by name and time so AJ can decide whether to move, shorten, or skip the workout. * If no workout is scheduled tomorrow, skip this silently — do not add a Workout section. ## Step 2: Under the **Agenda** heading Format my calendar events in a simple Markdown table with columns: Time (ET), Event Name, Owner, and Duration * Time should be the FIRST column * Put a star next to any events that overlap with other events * Put two !! next to any events starting before 9 AM ET or after 5 PM ET * Do not include personal appointments that don't affect my work day * My work day goes from 9 AM ET to 5:30 PM ET. Use this to determine my availability. Let me know how much unscheduled time I have. * Directly beneath the Agenda table, if Step 1b found a workout scheduled tomorrow, add a one-line **Workout** note stating whether the 9 AM block is clear or naming the conflicting meeting. ## Step 3: Get task data This Notion MCP has no filter/query tool and `view://` URLs aren't fetchable, so use the search → fetch → filter pattern (see CLAUDE.md "HOW TO QUERY THESE DATABASES"). Do NOT try to fetch views and do NOT print any "falling back" message. 1. **Get this week's focus projects** — read the current Weekly Note (`Weekly Notes/Weekly Note - .md`) and use its listed focus projects + weekly goals. (Only if that note is missing: `notion-search` the Projects collection `collection://2c0abd6c-450a-807a-a3d7-000b8d8aaecc` with `page_size: 25`, fetch the results in parallel, and keep those with `Focus this week` = `__YES__` and `Status` = "Active".) 2. **Find candidate tasks** — `notion-search` the Tasks collection `collection://2c0abd6c-450a-8085-80a0-000ba136a154` with `page_size: 25`, `max_highlight_length: 0`, and a `query` seeded with the focus-project names plus "blocking due this week suggested today". 3. **Fetch candidate task pages in parallel** to read their real properties (`Status`, `Suggested for today`, `Due date`, `Blocking`, `Priority`, `Project`). 4. **Filter & rank locally**: drop `Status` = "Done" or "Blocked". Rank the rest by (1) `Blocking` populated, (2) `Suggested for today` ≤ tomorrow, (3) soonest `Due date`. Format the note with the following sections: 1. Under **Suggested Tasks** list up to 3 tasks from the ranked set above (Blocking-others tasks always come first). For each, show the task name, related project, and a Notion link. 2. Under **Key Projects** list this week's focus projects with their weekly goal. - If a search legitimately returns no qualifying open tasks, say so plainly — never invent tasks to fill the list. ## Step 4: Mark Top Tasks in Notion The Tasks Tracker has a `Top Task` checkbox property and a `Top Tasks` view (filtered to `Top Task = true` AND `Status != Done`) for surfacing the current day's Big 3 at a glance. At most 3 tasks may be checked at any time. 1. Present the Suggested Tasks from Step 3 to AJ and let him confirm or swap any of them before finalizing. 2. `notion-search` the Tasks collection (`collection://2c0abd6c-450a-8085-80a0-000ba136a154`) filtered/queried for `Top Task` = true (or check the pages already known from recent notes) to find any tasks still marked from a prior day. 3. Any currently-marked task whose `Status` = "Done" gets `Top Task` set to false immediately — regardless of whether it's in today's agreed set (it can't be, since Step 3.4 already drops Done tasks). Don't wait for a replacement to unmark a completed task. 4. For each other currently-marked task that is NOT in today's agreed set, `notion-update-page` to set `Top Task` = false. 5. For each of the (up to 3) agreed tasks, `notion-update-page` to set `Top Task` = true. 6. Never have more than 3 tasks checked at once — unmark old ones before marking new ones. Note: this only unchecks stale Done tasks when an evening-prep run touches them. It isn't real-time — if AJ marks a task Done in Notion outside of this flow, the checkbox stays checked until the next evening-prep pass (though the `Top Tasks` view already filters out `Status = Done`, so it won't show there regardless). True real-time un-checking would need a native Notion automation (Settings → Automations → when Status is set to Done → uncheck Top Task), which isn't something these tools can create. ## Formatting Rules * Always provide a tl;dr summary at the top of the note * Add a "## Table of Contents" section after the frontmatter using Obsidian internal link syntax `[[#Heading Name]]` for all H2 sections * Include all major sections: tl;dr, Agenda, Suggested Tasks, Key Projects, Suggested Reading, etc. * Format all date displays as Month, Day Year