cleaned up to use 365 connector instead of json
This commit is contained in:
@@ -6,12 +6,12 @@ Please create a new note in the "Daily Notes" folder.
|
|||||||
* The title should be "Daily Note - YYYY-MM-DD" using today's date.
|
* 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
|
* 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 from:
|
## Step 1: read tomorrow's calendar events
|
||||||
/Users/aj.siegel/OneDrive - ServiceNow/BoxData/CalendarEvents_YYYYMMDD.json
|
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`
|
||||||
|
|
||||||
Where YYYMMDD is tomorrow's date
|
🚨 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.
|
||||||
|
|
||||||
Parse the JSON to extract tomorrow's calendar events (times are already in Eastern Time).
|
|
||||||
|
|
||||||
## Step 2: Under the **Agenda** heading
|
## Step 2: Under the **Agenda** heading
|
||||||
Format my calendar events in a simple Markdown table with columns: Time (ET), Event Name, Owner, and Duration
|
Format my calendar events in a simple Markdown table with columns: Time (ET), Event Name, Owner, and Duration
|
||||||
@@ -23,18 +23,17 @@ Format my calendar events in a simple Markdown table with columns: Time (ET), Ev
|
|||||||
Let me know how much unscheduled time I have.
|
Let me know how much unscheduled time I have.
|
||||||
|
|
||||||
## Step 3: Get task data
|
## Step 3: Get task data
|
||||||
Fetch Notion data using these URLs. Run all three in parallel:
|
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. **Blocking tasks** — fetch view://2c0abd6c-450a-8060-b247-000c30138b80 (pre-filtered: Blocking populated + not Done)
|
1. **Get this week's focus projects** — read the current Weekly Note (`Weekly Notes/Weekly Note - <Sunday's date>.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. **Daily planning tasks** — fetch view://2c0abd6c-450a-8064-869a-000cf1f5a919 (pre-filtered: incomplete tasks sorted by Suggested for today)
|
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. **Focus projects** — fetch view://2c0abd6c-450a-806e-a2c9-000c8aa14a44 (pre-filtered: Focus this week = true)
|
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`.
|
||||||
If the view fetches fail, fall back to fetching the full databases:
|
|
||||||
- Tasks: https://www.notion.so/solutioninnovation/2c0abd6c450a805098d3cc0e7d3dfccf (data source: collection://2c0abd6c-450a-8085-80a0-000ba136a154)
|
|
||||||
- Projects: https://www.notion.so/solutioninnovation/2c0abd6c450a8090aca3e0b2b0373c17 (data source: collection://2c0abd6c-450a-807a-a3d7-000b8d8aaecc)
|
|
||||||
|
|
||||||
Format the note with the following sections:
|
Format the note with the following sections:
|
||||||
1. Under **Suggested Tasks** look at all tasks not complete and identify up to 3 tasks with a suggestedForToday of tomorrow or earlier, or tasks that are blocking others. Ignore tasks with a status of Blocked. Add these to a list.
|
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.
|
||||||
|
|
||||||
|
|
||||||
## Formatting Rules
|
## Formatting Rules
|
||||||
|
|||||||
@@ -12,13 +12,10 @@ Please create a new note in the "Weekly Notes" folder.
|
|||||||
The title should be "Weekly Note - Month, Day Year" using today's date.
|
The title should be "Weekly Note - Month, Day Year" using today's date.
|
||||||
|
|
||||||
## Step 2: Review Notion data and create the note
|
## Step 2: Review Notion data and create the note
|
||||||
Fetch these in parallel:
|
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.
|
||||||
- **Active projects** — fetch view://2c0abd6c-450a-8053-b2e8-000caaf77931 (pre-filtered: Active status)
|
|
||||||
- **This week's tasks** — fetch view://2c0abd6c-450a-80ce-9fa7-000c27dd9719 (pre-filtered: incomplete, sorted by Suggested for today)
|
|
||||||
|
|
||||||
If view fetches fail, fall back to the full database URLs:
|
1. **Active projects** — `notion-search` the Projects collection `collection://2c0abd6c-450a-807a-a3d7-000b8d8aaecc` with `page_size: 25`, `max_highlight_length: 0`. Fetch the returned pages **in parallel**, then keep those with `Status` = "Active" and `Type` ≠ "Personal".
|
||||||
- Projects: https://www.notion.so/solutioninnovation/2c0abd6c450a8090aca3e0b2b0373c17
|
2. **This week's tasks** — `notion-search` the Tasks collection `collection://2c0abd6c-450a-8085-80a0-000ba136a154` with `page_size: 25`, `max_highlight_length: 0`, seeding `query` with the active-project names plus "due this week blocking". Fetch the results in parallel and drop anything with `Status` = "Done".
|
||||||
- Tasks: https://www.notion.so/solutioninnovation/2c0abd6c450a805098d3cc0e7d3dfccf
|
|
||||||
|
|
||||||
List all active projects and ask me which 3 I want to prioritize for the upcoming week.
|
List all active projects and ask me which 3 I want to prioritize for the upcoming week.
|
||||||
If there isn't a weekly goal for the selected projects, ask me to write one.
|
If there isn't a weekly goal for the selected projects, ask me to write one.
|
||||||
@@ -30,18 +27,26 @@ Format the note with the following sections:
|
|||||||
1. **Priorities for this week** - List the three projects I selected with their weekly goal.
|
1. **Priorities for this week** - List the three projects I selected with their weekly goal.
|
||||||
2. **Key tasks** - List all tasks that are due this week. Order by due date and blocker status. Show the task name, related project, type, and effort level. Provide a link to the task in Notion.
|
2. **Key tasks** - List all tasks that are due this week. Order by due date and blocker status. Show the task name, related project, type, and effort level. Provide a link to the task in Notion.
|
||||||
|
|
||||||
## Step 3: Generate my reading list
|
## Step 3: Review the week's calendar
|
||||||
Then, query the Reading List database using view://2c4abd6c-450a-80c1-9cda-000c5fa5bcc8 (pre-filtered: Status = To Read or In Progress).
|
Use the Microsoft 365 connector's `outlook_calendar_search` tool to fetch the upcoming week's events:
|
||||||
If the view fetch fails, fall back to: https://www.notion.so/solutioninnovation/2c4abd6c450a80cbae55c440dd9e2427
|
* `afterDateTime`: this coming Monday at 00:00, `beforeDateTime`: Friday 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 reasoning about them — EDT = UTC−4 (mid-Mar to early-Nov), EST = UTC−5 otherwise. Exclude "NDS Design Readiness & Refinement" meetings, and treat `isAllDay` events (PTO/OOO) as out-of-office.
|
||||||
|
|
||||||
|
Use AJ's work day (9 AM–5:30 PM ET) and these events to estimate how much unscheduled time exists across the week — this feeds the reading suggestions below.
|
||||||
|
|
||||||
|
## Step 4: Generate my reading list
|
||||||
|
Using the same search → fetch → filter pattern: `notion-search` the Reading List collection `collection://2c4abd6c-450a-804a-809a-000bc77d02c1` with `page_size: 25`, `max_highlight_length: 0`. Fetch the returned pages in parallel and keep those with `Status` = "To Read" or "In Progress". (Don't fetch `view://` URLs.)
|
||||||
|
|
||||||
3. Under **Suggested Reading** recommend 2 articles that fit the available time blocks:
|
3. Under **Suggested Reading** recommend 2 articles that fit the available time blocks:
|
||||||
- Look at the unscheduled time blocks to determine what reading time is appropriate
|
- Look at the unscheduled time across the week (from Step 3) to determine what reading time is appropriate
|
||||||
- Match articles based on Read time field:
|
- Match articles based on Read time field:
|
||||||
* Short = <5 minutes (fits in small gaps)
|
* Short = <5 minutes (fits in small gaps)
|
||||||
* Medium = <15 minutes (needs decent gap)
|
* Medium = <15 minutes (needs decent gap)
|
||||||
* Long = >15 minutes (needs larger block)
|
* Long = >15 minutes (needs larger block)
|
||||||
- For each article show: Title, Topic, Read time, and URL
|
- For each article show: Title, Topic, Read time, and URL
|
||||||
- Briefly explain why these articles fit tomorrow's schedule
|
- Briefly explain why these articles fit the week's schedule
|
||||||
|
|
||||||
|
|
||||||
## Formatting Rules
|
## Formatting Rules
|
||||||
|
|||||||
23
CLAUDE.md
23
CLAUDE.md
@@ -11,7 +11,7 @@ This is an Obsidian vault - a personal knowledge management system based on mark
|
|||||||
|
|
||||||
* Always add relevant tags to each file
|
* Always add relevant tags to each file
|
||||||
* Notes can be informal in tone, I am a casual guy
|
* Notes can be informal in tone, I am a casual guy
|
||||||
* You can fetch calendar information in /Users/aj.siegel/OneDrive - ServiceNow/BoxData/CalendarEvents_YYYYMMDD.json wheree YYYYMMDD is the date of interest.
|
* Fetch calendar information via the Microsoft 365 connector (`outlook_calendar_search` tool). See the Data Sources section for details.
|
||||||
* My work day is 9:00 AM - 5:30 PM ET
|
* My work day is 9:00 AM - 5:30 PM ET
|
||||||
|
|
||||||
## Context
|
## Context
|
||||||
@@ -67,20 +67,19 @@ When creating or modifying notes:
|
|||||||
- Link integrity matters - renaming files may break existing links unless done through Obsidian's rename feature
|
- Link integrity matters - renaming files may break existing links unless done through Obsidian's rename feature
|
||||||
|
|
||||||
## Data Sources
|
## Data Sources
|
||||||
* You have access to a OneDrive folder with AJ's calendar for the current day and the next day
|
* **Calendar — Microsoft 365 connector**: Use the `outlook_calendar_search` tool (Microsoft 365 MCP) to fetch AJ's calendar events. Search with `afterDateTime`/`beforeDateTime` for the day(s) of interest, `query: "*"`, and `order: "oldest"`.
|
||||||
* IMPORTANT: Use the startET and endET fields to get the times in my local time zone.
|
* 🚨 IMPORTANT — TIMEZONE: The connector returns all times in **UTC** (ISO strings ending in `Z`). Convert to AJ's local Eastern Time before displaying or doing any time math. EDT = UTC−4 (mid-Mar to early-Nov), EST = UTC−5 (rest of year). Example: `2026-05-29T16:30:00Z` → 12:30 PM ET (EDT).
|
||||||
|
* `isAllDay: true` events (PTO, OOO, etc.) and `showAs: "oof"`/`"free"` indicate AJ may be out — call these out, don't count them as meetings.
|
||||||
* ALWAYS exclude "NDS Design Readiness & Refinement" meetings from calendar displays and time calculations.
|
* ALWAYS exclude "NDS Design Readiness & Refinement" meetings from calendar displays and time calculations.
|
||||||
* Notion MCP – Projects: https://www.notion.so/solutioninnovation/2c0abd6c450a8090aca3e0b2b0373c17 — All active projects with Status, Focus This Week checkbox, and weekly goals. Data source: `collection://2c0abd6c-450a-807a-a3d7-000b8d8aaecc`
|
* Notion MCP – Projects: https://www.notion.so/solutioninnovation/2c0abd6c450a8090aca3e0b2b0373c17 — All active projects with Status, Focus This Week checkbox, and weekly goals. Data source: `collection://2c0abd6c-450a-807a-a3d7-000b8d8aaecc`
|
||||||
* Notion MCP – Task Tracker: https://www.notion.so/solutioninnovation/2c0abd6c450a805098d3cc0e7d3dfccf — All units of work with: Name and Status, Blocking (multi-select of people waiting on AJ), Deadline dates, Project relation, Key Contact, Priority, Effort Estimate, Energy Type. Data source: `collection://2c0abd6c-450a-8085-80a0-000ba136a154`
|
* Notion MCP – Task Tracker: https://www.notion.so/solutioninnovation/2c0abd6c450a805098d3cc0e7d3dfccf — All units of work with: Name and Status, Blocking (multi-select of people waiting on AJ), Deadline dates, Project relation, Key Contact, Priority, Effort Estimate, Energy Type. Data source: `collection://2c0abd6c-450a-8085-80a0-000ba136a154`
|
||||||
* IMPORTANT: Always fetch these databases using the full `https://www.notion.so/solutioninnovation/...` URL — bare UUIDs and collection:// URIs will fail. The collection:// URIs can be used as `data_source_url` in searches after the initial fetch.
|
* 🚨 HOW TO QUERY THESE DATABASES — on AJ's **Notion Plus seat**, the MCP grants no server-side filter/query tool. `query_data_sources` is described but not callable — it requires an **Enterprise plan with Notion AI**. Revisit only if AJ moves to that tier. `view://…` URLs are NOT fetchable, and `fetch` on a `collection://…` returns only the schema (no rows). Do NOT attempt either, and never print a "view fetch failed, falling back" message. Use this 3-step pattern instead:
|
||||||
* Useful pre-filtered views in Tasks Tracker:
|
1. **Find candidate pages** — call `notion-search` with `data_source_url` set to the collection URI, a work-focused `query`, `page_size: 25`, `max_highlight_length: 0`. Collections: Tasks = `collection://2c0abd6c-450a-8085-80a0-000ba136a154`, Projects = `collection://2c0abd6c-450a-807a-a3d7-000b8d8aaecc`. This returns page IDs/titles only — NOT property values.
|
||||||
* **Blocking others**: `view://2c0abd6c-450a-8060-b247-000c30138b80` — tasks with Blocking populated, not Done
|
2. **Read properties** — `notion-fetch` each returned page ID, **batched in parallel**. Page fetches return all properties (`Status`, `Due date`, `Suggested for today`, `Blocking`, `Priority`, `Project`, and for projects `Focus this week`, `Weekly goal`, etc.).
|
||||||
* **Daily planning**: `view://2c0abd6c-450a-8064-869a-000cf1f5a919` — all incomplete tasks sorted by Suggested for today
|
3. **Filter & sort locally** — drop anything with `Status` = "Done". For tasks, rank: (1) `Blocking` populated, (2) `Suggested for today` ≤ target date, (3) soonest `Due date`. For projects, keep `Focus this week` = `__YES__` and `Status` = "Active" (exclude `Type` = "Personal").
|
||||||
* **This week**: `view://2c0abd6c-450a-80ce-9fa7-000c27dd9719` — incomplete tasks sorted by Suggested for today
|
* `notion-search` is **semantic** (ranked by relevance, not status), so seed `query` with this week's focus-project names plus terms like "blocking due this week" to surface the right open items. Relation fields like `Blocking` aren't text-searchable, so confirm them only after fetching the page.
|
||||||
* Useful pre-filtered views in Projects:
|
* EFFICIENCY: the weekly focus projects + goals are written into the current Weekly Note every Sunday. In daily/evening planning, read those from the Weekly Note (a local `.md` file) instead of re-scanning the Projects DB.
|
||||||
* **This week's focus**: `view://2c0abd6c-450a-806e-a2c9-000c8aa14a44` — projects with Focus this week = true
|
* CRITICAL: Base ALL suggestions on this real fetched data, never on examples. When planning, prioritize: 1) tasks with `Blocking` populated (priority #1), 2) deadlines this week, 3) tasks tied to `Focus this week` projects, ignoring `Status` = "Done".
|
||||||
* **Active**: `view://2c0abd6c-450a-8053-b2e8-000caaf77931` — Active status projects only
|
|
||||||
* CRITICAL: Always read these resources when planning. Check: 1. Which tasks have Blocking field populated (priority #1) 2. Which deadlines are this week 3. Which projects have Focus This Week = true 4. Task Status (ignore Done tasks) Base ALL suggestions on this real data, not examples.
|
|
||||||
|
|
||||||
## Your job
|
## Your job
|
||||||
*When AJ asks "help me plan today" or "what should I focus on":
|
*When AJ asks "help me plan today" or "what should I focus on":
|
||||||
|
|||||||
Reference in New Issue
Block a user