daily-plan

Installation
SKILL.md
Contains Hooks

This skill uses Claude hooks which can execute code automatically in response to events. Review carefully before installing.

Purpose

Generate your daily plan with full context awareness. Automatically gathers information from your calendar, tasks, meetings, relationships, and weekly progress to create a focused plan with genuine situational awareness.

Usage

  • /daily-plan — Create today's daily plan
  • /daily-plan tomorrow — Plan for tomorrow (evening planning)
  • /daily-plan --setup — Re-run integration setup

Tone Calibration

Before executing this command, read System/user-profile.yamlcommunication section and adapt tone accordingly (see CLAUDE.md → "Communication Adaptation").


Step 0: Demo Mode Check

Before anything else, check if demo mode is active:

  1. Read System/user-profile.yaml
  2. Check demo_mode value
  3. If demo_mode: true:
    • Display banner: "Demo Mode Active — Using sample data from System/Demo/"
    • Use demo paths and skip live integrations
  4. If demo_mode: false: Proceed normally

Step 1: Background Checks (Silent)

Run these silently without user-facing output:

  1. Update check: check_for_updates(force=False) - store notification if available
  2. Self-learning checks: Run changelog and learning review scripts if due
  3. Search index refresh: Run qmd update && qmd embed to refresh vault search index with any overnight changes (meetings processed, files edited, etc.). If qmd is not installed, skip silently.
  4. People index refresh: Call build_people_index from Work MCP. This keeps the People Directory current so person lookups throughout the day are fast. Takes <2 seconds.
  5. Innovation synthesis (silent): Call synthesize_changelog() and synthesize_learnings() from Improvements MCP. These run in background and populate the backlog — results are surfaced in Step 1.5 below.
  6. Granola check (silent): Granola meeting sync uses the desktop app's stored credentials automatically. No migration check needed.

Step 1.5: Innovation Spotlight (Concierge)

After background checks complete, check for noteworthy backlog activity:

  1. Call list_ideas(status="active", min_score=70) from Improvements MCP
  2. Check System/.synthesis-state.json for recent synthesis activity (last 7 days)
  3. If there are AI-authored or recently enriched ideas, pick the most impactful one

Surface as a brief spotlight in the plan output (1-2 lines max):

Innovation Spotlight: Claude Code shipped native memory (v2.1.32) — this could simplify idea-006 (Session Memory MCP). Run /dex-improve idea-006 to explore.

Rules:

  • Show at most 1 spotlight per daily plan (don't overwhelm)
  • Rotate through ideas — don't show the same one twice in a row
  • Only show if there's genuine "Why Now?" urgency (new evidence in last 7 days)
  • If no recent synthesis activity, skip this section entirely
  • Never block the plan for this — it's a helpful aside, not a gate

Step 2: Morning Journal Check (If Enabled)

If journaling.morning: true in user-profile.yaml, check for today's morning journal and prompt if missing.


Step 3: Monday Weekly Planning Gate

If today is Monday and week isn't planned, offer to run /week-plan first.


Step 4: Yesterday's Review Check (Soft Gate)

Check for yesterday's review and extract context (open loops, tomorrow's focus, blocked items).


Step 5: Context Gathering (ENHANCED)

Gather context from all available sources. This is where the magic happens.

5.1 Midweek Progress Check (NEW)

Use: get_week_progress()

This is critical for genuine situational awareness. Extract:

  • Day of week and days remaining
  • Weekly priority status (complete / in_progress / not_started)
  • Warnings for priorities with no activity

Surface this prominently:

"It's Wednesday. Here's where you are on this week's priorities:

  1. Ship pricing page — Complete (finished Monday)
  2. 🔄 Review proposal — In progress (2 of 5 tasks done)
  3. ⚠️ Customer interviews — Not started (no activity yet)

You have 2 days left this week. Priority 3 needs attention."

5.2 Calendar Capacity Analysis (NEW)

Use: analyze_calendar_capacity(days_ahead=1, events=[...from calendar MCP...])

Understand the shape of today:

  • Day type: stacked / moderate / open
  • Meeting count and hours
  • Free blocks available
  • Recommendation: What kind of work fits today

Surface this:

"📅 Today's shape: Moderate (4 meetings, 3 hours total)

Free blocks:

  • 8:00-9:30 AM (90 min) — Morning focus time
  • 2:00-4:00 PM (120 min) — Afternoon block

Recommendation: Good for medium tasks and meeting prep. Deep work fits the 2-4pm block."

5.3 Meeting Intelligence (NEW)

For each meeting today:

Use: get_meeting_context(meeting_title="...", attendees=[...])

Get genuine context, not just attendee names:

  • Related project: What project is this connected to?
  • Project status: What's outstanding? What's blocked?
  • Outstanding tasks with attendees: What do you owe them? What do they owe you?
  • Prep suggestions: What should you review before this meeting?

Surface this with surprise and delight:

"📍 Meeting: Acme Quarterly Review (2pm with Sarah Chen, Mike Ross)

Related project: Acme Implementation (Phase 2)

  • Status: On track, but pricing section still in draft
  • Outstanding: You owe Sarah the pricing proposal

Prep suggestion: Review proposal draft, prepare pricing options. Block 30 min before this meeting?"

5.4 Commitment Tracking (NEW)

Use: get_commitments_due(date_range="today")

Surface things you said you'd do:

"⚡ Commitments due today:

  • You told Mike you'd get back to him by Wednesday (from Monday 1:1)
  • Follow up on competitive analysis (from Acme meeting)"

5.5 Task Scheduling Suggestions (NEW)

Use: suggest_task_scheduling(include_all_tasks=False, calendar_events=[...])

Match tasks to available time based on effort classification:

"📋 Scheduling suggestions:

Task Effort Suggested Time
Write Q1 strategy doc Deep work (2-3h) Tomorrow (you have a 3h morning block)
Review Sarah's proposal Medium (1h) Today 2-3pm (before Acme meeting)
Reply to Mike Quick (15min) Between meetings

⚠️ Heads up: You have 2 deep work tasks but today's too fragmented. Consider protecting tomorrow morning."

5.6 Semantic Context Enrichment (if QMD available)

This step runs automatically when QMD is installed via /enable-semantic-search. It adds a semantic search layer on top of the standard context gathering to surface connections that keyword search misses.

Check if QMD MCP tools are available by calling qmd_status. If available:

  1. For each meeting today, run:

    qmd_search(query="[meeting topic] [attendee names]", limit=3)
    

    Surface: past discussions, related decisions, relevant commitments that share meaning but not keywords with this meeting. Example: a meeting about "customer onboarding" finds notes about "activation rates" and "time to value".

  2. For each weekly priority that's lagging, run:

    qmd_search(query="[priority description]", limit=3)
    

    Surface: vault content that advances or relates to this priority but wouldn't appear in a keyword search. Especially useful for finding forgotten context about stalled work.

  3. Cross-topic connection scan:

    qmd_search(query="[today's key themes combined]", limit=5)
    

    Surface: unexpected connections between today's meetings, tasks, and priorities. This is where semantic search shines — finding that a 2pm customer call relates to a PRD you wrote last month using completely different terminology.

  4. Merge with existing context — only add genuinely new insights. Don't duplicate what Steps 5.1-5.5 already found. Mark semantic results with their source so the plan output can distinguish them.

What this enables in the plan output:

  • Meeting context sections include "Also relevant:" with thematically related past discussions
  • Priority recommendations cite relevant vault content discovered by meaning
  • "Heads Up" section catches connections between seemingly unrelated items
  • Focus recommendations are informed by deeper vault knowledge

If QMD is not available: Skip silently. Steps 5.1-5.5 and 5.7 provide full context via standard methods.


5.7 Reminders Completion Sync (Dex Today → Dex)

Check if any tasks were completed on phone since the last plan:

Use: reminders_list_completed(list_name="Dex Today")

For each completed item:

  • Match to a Dex task by title
  • Update task status via Work MCP: update_task_status(task_title="...", status="d")
  • Surface what was synced:

"📱 Synced from phone:

  • ✅ "Follow up with Hero Coders" — marked done in Dex"

If nothing to sync: Skip silently.

5.8 Email Intelligence (if Gmail connected)

Check System/integrations/config.yaml for google-workspace.enabled: true.

If enabled and MCP healthy:

  1. Get unread count and priority emails from monitored labels
  2. Flag emails needing reply (> 48h since received, from key contacts in 05-Areas/People/)
  3. Surface email threads with today's meeting attendees

Include in plan:

"Email: [X] unread, [Y] need replies. [Z] threads with today's meeting attendees."

If unhealthy: skip silently (graceful degradation -- no error to user).

5.9 Teams Intelligence (if Teams connected)

Check System/integrations/config.yaml for teams.enabled: true.

If enabled and MCP healthy:

  1. Get unread messages from priority channels
  2. Surface DMs needing response
  3. Check for mentions

Include in plan:

"Teams: [X] unread chats, [Y] mentions. [Z] threads with today's meeting attendees."

If BOTH Slack and Teams enabled:

  • Show both digests, clearly labeled: "Slack: ..." and "Teams: ..."
  • Deduplicate if the same person appears in both (merge context, label the source)
  • Present side by side in the plan output under a combined "Chat Intelligence" heading

If unhealthy: skip silently (graceful degradation -- no error to user).

5.10a Mobile Capture Check (Dex Inbox)

Use: reminders_list_items(list_name="Dex Inbox")

If items found, surface:

📱 Captured on phone (3 items in Dex Inbox):

  1. "Follow up with Peter about roadmap" — captured yesterday 4:32pm
  2. "Look into Rovo for in-app guides" — captured today 2:15pm
  3. "Send Anastasia the productized offering doc" — captured today 11:45am

Triage these now? I'll help assign pillars and priorities.

Triage flow:

  • Present each item
  • Infer pillar (using existing smart pillar inference)
  • Confirm with user
  • Create task via Work MCP process_inbox_with_dedup
  • Mark Reminder as complete via reminders_complete_item

If Dex Inbox is empty: Skip silently (no "0 items captured" noise).

5.10b Standard Context Gathering

Also gather:

  • Calendar: Today's meetings with times and attendees
  • Tasks: P0, P1, started-but-not-completed, overdue
  • Week Priorities: This week's Top 3
  • Work Summary: Quarterly goals context (if enabled)
  • People: Context for meeting attendees
  • Self-Learning Alerts: Changelog updates, pending learnings

Step 6: Synthesis

Combine all gathered context into actionable recommendations:

Focus Recommendation

Generate 3 recommended focus items based on:

  • P0 tasks (highest weight)
  • Weekly priority alignment (especially lagging priorities!)
  • Meeting prep needs
  • Commitments due

The system should actively recommend, not just list:

"Based on your week progress and today's shape, I recommend focusing on:

  1. Prep for Acme meeting — Priority 2 is lagging and this meeting is critical
  2. Reply to Mike — Commitment due today
  3. Task X from Priority 1 — Keeps momentum on your shipped priority"

Meeting Prep (Enhanced)

For each meeting, show:

  • Who's attending + People/ context
  • Related project status
  • Outstanding tasks with attendees
  • Suggested prep time and what to prepare

Heads Up (Enhanced)

Flag potential issues:

  • Weekly priorities with no activity (midweek warning)
  • Commitments due today
  • Back-to-back meetings
  • P0 items with no time blocked
  • Deep work tasks with no suitable slot this week

Step 7: Generate Daily Plan

Create 07-Archives/Plans/YYYY-MM-DD.md:

---
date: YYYY-MM-DD
type: daily-plan
integrations_used: [calendar, tasks, people, work-intelligence]
---

# Daily Plan — {{Day}}, {{Month}} {{DD}}

## TL;DR
- {{1-2 sentence summary including week progress}}
- {{X}} meetings today, day is {{stacked/moderate/open}}
- {{Key focus area based on week priorities}}

---

## 📊 Week Progress (Midweek Check)

**Day {{X}} of 5** — {{days_remaining}} days left this week

| Priority | Status | Notes |
|----------|--------|-------|
| {{Priority 1}} | ✅ Complete | Finished {{day}} |
| {{Priority 2}} | 🔄 In progress | {{X}} of {{Y}} tasks done |
| {{Priority 3}} | ⚠️ Not started | Needs attention |

**This week's focus:** {{Recommendation based on lagging priorities}}

---

## 📅 Today's Shape

**Day type:** {{stacked/moderate/open}} ({{X}} meetings, {{Y}} hours)

**Free blocks:**
- {{Time range}}: {{Size}} — {{Recommended use}}

**Best for:** {{Quick tasks only / Medium tasks / Deep work opportunity}}

---

## ⚡ Commitments Due Today

- [ ] {{Commitment}} — from {{source}}
- [ ] {{Commitment}} — from {{source}}

---

## 🎯 Today's Focus

**If I only do three things today:**

1. [ ] {{Focus item 1}} — {{Pillar}} *(supports Week Priority #X)*
2. [ ] {{Focus item 2}} — {{Pillar}} *(supports Week Priority #Y)*
3. [ ] {{Focus item 3}} — {{Pillar}}

---

## 📍 Meetings (with Context)

### {{Time}} — {{Meeting Title}}

**Attendees:** {{Names}}
**Related project:** {{Project name}} ({{status}})
**Outstanding with them:**
- {{Task/commitment}}

**Prep needed:** {{What to review/prepare}}
**Suggested prep time:** {{Block X min before}}

---

### {{Time}} — {{Meeting Title}}

[Repeat for each meeting]

---

## 📋 Task Scheduling

| Task | Effort | Suggested Slot | Reason |
|------|--------|----------------|--------|
| {{Task}} | Deep work | {{Day/time}} | {{Reason}} |
| {{Task}} | Medium | {{Day/time}} | {{Reason}} |
| {{Task}} | Quick | Between meetings | Batch these |

{{If deep work capacity warning}}
> ⚠️ You have {{X}} deep work tasks but only {{Y}} suitable slots this week. Consider protecting time or deferring.

---

## ⚠️ Heads Up

- {{Warning about lagging weekly priority}}
- {{Commitment due today}}
- {{Back-to-back meetings}}
- {{Other flags}}

---

*Generated: {{timestamp}}*
*Week progress: {{X}}/{{Y}} priorities on track*

Step 7.5: Push Focus Tasks to Reminders (Dex → iPhone)

After generating the plan, push today's P0 and P1 focus tasks to Apple Reminders for native iOS notifications:

  1. Clear yesterday's items:

    Use: reminders_clear_completed(list_name="Dex Today")
    
  2. Push today's focus items: For each P0/P1 task in today's focus:

    Use: reminders_create_item(
        list_name="Dex Today",
        title="Task title",
        notes="From Dex daily plan",
        due_date="YYYY-MM-DD"
    )
    
  3. Confirm silently:

    "📱 Pushed 3 focus tasks to iPhone Reminders (Dex Today)"

If Reminders MCP unavailable: Skip silently.


Step 8: Track Usage (Silent)

Update System/usage_log.md to mark daily planning as used.

Analytics (Silent):

Call track_event with event_name daily_plan_completed and properties:

  • meetings_count: number of meetings today
  • tasks_surfaced: number of tasks shown
  • priorities_count: number of priorities

This only fires if the user has opted into analytics. No action needed if it returns "analytics_disabled".


Graceful Degradation

The plan works at multiple levels:

Full Context (All MCPs available)

  • Complete week progress, meeting intelligence, scheduling suggestions
  • Maximum "surprise and delight"

Partial Context (Work MCP only)

  • Week progress and task scheduling
  • No meeting context (prompt user to add manually)

Minimal Context (No MCPs)

  • Interactive flow asking about priorities
  • Basic daily note

MCP Dependencies (Updated)

Integration MCP Server Tools Used
Calendar dex-calendar-mcp calendar_get_today, calendar_get_events_with_attendees
Reminders dex-calendar-mcp reminders_list_items, reminders_complete_item, reminders_create_item, reminders_ensure_lists, reminders_list_completed, reminders_find_and_complete, reminders_clear_completed
Granola dex-granola-mcp get_recent_meetings
Work dex-work-mcp list_tasks, get_week_progress, get_meeting_context, get_commitments_due, analyze_calendar_capacity, suggest_task_scheduling
Improvements dex-improvements-mcp synthesize_changelog, synthesize_learnings, list_ideas
Google Workspace google-workspace-mcp Gmail query, email search (if enabled)
Teams teams-mcp teams_list_chats, teams_search_messages, teams_health_check (if enabled)
Related skills
Installs
2
Repository
davekilleen/dex
GitHub Stars
340
First Seen
Mar 7, 2026