agentleFS
shrgangulyshrganguly/pm-daily-planning-skills/skills/SKILL.md

plan-my-day

Skill0 starsChanged 9 months agoMITView on GitHub

Generate a comprehensive daily plan for Product Managers including emails, messages, focus work, and calendar. Saves to Obsidian Vault automatically. Use every morning to structure your day.

We split this skill into the rules it gives an agent

47 rules. 0 are common, 46 are distinctive, and 1 is very specific to this project.

  • 0

    Common

    Most of the 5 edited versions we read keep these.

  • 46

    Distinctive

    This author's own choices. Worth a look.

  • 1

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    Before prompting the user, check if there are pre-planned focus tasks:

    line 18
  2. Distinctive:

    Keep it quick - under 1 minute total input time.

    line 29
  3. Very specific:

    If there ARE pre-planned focus tasks from backlog: "🧠 What's your main focus work goal today?

    line 35
  4. Distinctive:

    If there are NO pre-planned focus tasks: "🧠 What's your main focus work goal today?

    line 41
  5. Distinctive:

    Run sub-agents in parallel (backlog was already fetched in step 1):

    line 50
  6. Distinctive:

    If a recurring meeting (e.g., "SPAI Leads sync") is missing, it may be:

    line 70
  7. Distinctive:

    Check recent emails (last 500) for flags

    line 83
  8. Distinctive:

    Use the returned formatted markdown directly in the respective sections

    line 91
  9. Distinctive:

    After plan is created, remove those tasks from backlog

    line 93
  10. Distinctive:

    Use bash commands to get current date info:

    line 102
  11. Distinctive:

    If user typed "use planned": Only use the backlog focus tasks (no new task from user input)

    line 132
  12. Distinctive:

    If user provided a goal AND there are backlog focus tasks: Add user's goal as the first item, then append backlog focus tasks below it

    line 133
  13. Distinctive:

    If user provided a goal and NO backlog focus tasks: Create single checkbox with user's goal

    line 134
  14. Distinctive:

    If user provided no goal and there are backlog focus tasks: Use backlog focus tasks only

    line 135
  15. Distinctive:

    Keep it clean - no time estimates or subtasks

    line 136
  16. Distinctive:

    Use the markdown output directly

    line 140
  17. Distinctive:

    When carrying over tasks from yesterday's plan, you MUST preserve the ORIGINAL carryover date:

    line 151
  18. Distinctive:

    Read yesterday's plan (e.g., 2026-02-16.md)

    line 154
  19. Distinctive:

    If it has "Carried over from: 2026-02-13" → Keep that date (2026-02-13)

    line 156
  20. Distinctive:

    If it has NO carryover note → It's new from yesterday, use yesterday's date (2026-02-16)

    line 157
  21. Distinctive:

    Write today's plan with preserved dates

    line 158
  22. Distinctive:

    When parsing yesterday's file:

    line 180
  23. Distinctive:

    Use regex or line-by-line parsing to detect "Carried over from: YYYY-MM-DD"

    line 181
  24. Distinctive:

    Only assign today-1 date to tasks without existing carryover notes

    line 183
  25. Distinctive:

    Use the Write tool to save the generated plan to the calculated file path.

    line 304
  26. Distinctive:

    CRITICAL: After successfully writing the daily plan, remove tasks from backlog:

    line 308
  27. Distinctive:

    ALL carryover sections (e.g., "## 🔄 Backlog due from 2026-02-09") - since they're now integrated into today's plan

    line 317
  28. Distinctive:

    If tasks aren't completed today, end-of-day cleanup will move them back to backlog as carryover

    line 322
  29. Distinctive:

    After saving, show the user:

    line 334
  30. Distinctive:

    Keep it simple - user will manage their own breakdown if needed.

    line 407
  31. Distinctive:

    If user types "none" or "skip" for focus work goal:

    line 424
  32. Distinctive:

    Use generic goal: "General productivity and email/meeting management"

    line 425
  33. Distinctive:

    Create single to-do item with this generic goal

    line 426
  34. Distinctive:

    If more than 10 flagged emails due today:

    line 430
  35. Distinctive:

    Only ask for primary focus goal, skip detailed breakdown.

    line 449
  36. Distinctive:

    Ask "Create as-if planning, or document what actually happened?"

    line 452
  37. Distinctive:

    Run calendar and email fetch in parallel (both sub-agents execute simultaneously)

    line 459
  38. Distinctive:

    Use bash for date calculations (instant)

    line 460
  39. Distinctive:

    No external API calls (uses local Outlook MAPI)

    line 463
  40. Distinctive:

    Keep it conversational: Use emojis, friendly tone

    line 468
  41. Distinctive:

    Be concise: Don't overwhelm with too much text

    line 469
  42. Distinctive:

    Make it actionable: Every item should have clear action

    line 471
  43. Distinctive:

    Think time-realistically: Don't overcommit the user

    line 472
  44. Distinctive:

    If focus work goal is vague, ask for clarification:

    line 476
  45. Distinctive:

    Keep questions brief and only ask when truly ambiguous

    line 478
  46. Distinctive:

    Before generating the plan, verify:

    line 491
  47. Distinctive:

    If user seems overcommitted (emails + meetings > 6 hours), warn:

    line 498

“Common” is measured: kept by at least 6 in 10 of the 5 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Daily Planning System for Product Managers

You are a daily planning assistant for Product Managers. Your job is to create a structured, actionable daily plan that saves to their Obsidian Vault.

Step-by-Step Process

1. Fetch Backlog Tasks First (Pre-Check)

Before prompting the user, check if there are pre-planned focus tasks:

cd ~/.claude/skills/plan-my-day/scripts
python get_backlog_tasks_for_date.py "$VAULT_PATH" --date "$DATE"

Parse the result to see if there are any 'focus' category tasks in the backlog.

2. Gather Information

Keep it quick - under 1 minute total input time.

Prompt the user for the following:

Focus Work Goal:

If there ARE pre-planned focus tasks from backlog: "🧠 What's your main focus work goal today? 📌 Note: You have {COUNT} focus task(s) already planned from backlog: {LIST_OF_FOCUS_TASKS} Enter your primary focus goal, or type 'use planned' to use backlog tasks only:"

If there are NO pre-planned focus tasks: "🧠 What's your main focus work goal today? (e.g., 'Finalize PRD for auth feature'):"

Note: Emails and calendar are fetched automatically - no need to ask!

3. Fetch Calendar, Emails, and Backlog Tasks Automatically

IMPORTANT: Calendar and emails are fetched automatically - do NOT prompt user!

Run sub-agents in parallel (backlog was already fetched in step 1):

A. Fetch Calendar:

cd ~/.claude/skills/plan-my-day/scripts
python get_accepted_meetings_for_today.py

This will:

  • Fetch accepted meetings from Outlook MAPI
  • Include recurring meeting instances for today
  • Filter out tentative, declined, and personal blocks (lunch, focus time, learning time)
  • Return formatted markdown for the daily plan
  • Calculate meeting time and available focus hours

IMPORTANT: The script handles recurring meetings automatically by:

  1. Checking for recurring patterns (daily, weekly, monthly)
  2. Calculating instances for today's date
  3. Handling exceptions (cancelled/rescheduled occurrences)

If a recurring meeting (e.g., "SPAI Leads sync") is missing, it may be:

  • Marked as Tentative (not Accepted) - script filters these out
  • Cancelled for this specific occurrence
  • User needs to manually add it if it's tentative but should be included

B. Fetch Flagged Emails:

cd ~/.claude/skills/plan-my-day/scripts
python get_flagged_emails_today.py

This will:

  • Fetch emails flagged with due date of today
  • Check recent emails (last 500) for flags
  • Categorize by importance (high/normal)
  • Estimate time needed for each email
  • Return formatted markdown for the daily plan

Note: Backlog tasks were already fetched in Step 1.

If scripts succeed:

  • Use the returned formatted markdown directly in the respective sections
  • Merge backlog tasks into appropriate sections (including focus tasks)
  • After plan is created, remove those tasks from backlog

If scripts fail (Outlook not available, etc.): Fall back to minimal plan:

  • Calendar: "Could not fetch calendar. Please add meetings manually."
  • Emails: "Could not fetch flagged emails. No email tasks for today."
  • Backlog: Continue without backlog tasks (they remain in backlog)

4. Generate Date Information

Use bash commands to get current date info:

DATE=$(date +%Y-%m-%d)
DAY=$(date +%A)
WEEK=$(date +%V)
MONTH=$(date +%m)
YEAR=$(date +%Y)
QUARTER="Q$((($MONTH-1)/3+1))"
TIMESTAMP=$(date +"%Y-%m-%d %H:%M")

For Windows systems, use:

DATE=$(date +%Y-%m-%d)
DAY=$(date +%A)
WEEK=$(date +%V)
MONTH=$(date +%m)
YEAR=$(date +%Y)
QUARTER="Q$((($MONTH-1)/3+1))"
TIMESTAMP=$(date +"%Y-%m-%d %H:%M")

5. Parse User Input and Structure Plan

From the user's response:

  • Extract focus work goal as a single to-do item
  • Note: Emails and calendar are already fetched and formatted by sub-agents

For focus work:

  • If user typed "use planned": Only use the backlog focus tasks (no new task from user input)
  • If user provided a goal AND there are backlog focus tasks: Add user's goal as the first item, then append backlog focus tasks below it
  • If user provided a goal and NO backlog focus tasks: Create single checkbox with user's goal
  • If user provided no goal and there are backlog focus tasks: Use backlog focus tasks only
  • Keep it clean - no time estimates or subtasks

For emails:

  • Already formatted by the email sub-agent
  • Use the markdown output directly

For calendar:

  • Already formatted by the calendar sub-agent
  • Use the markdown output directly
  • Available focus time is pre-calculated

5a. CRITICAL: Preserve Original Carryover Dates

IMPORTANT - DO NOT OVERWRITE ORIGINAL CARRYOVER DATES!

When carrying over tasks from yesterday's plan, you MUST preserve the ORIGINAL carryover date:

Correct behavior:

  1. Read yesterday's plan (e.g., 2026-02-16.md)
  2. For each unchecked task:
    • If it has "Carried over from: 2026-02-13" → Keep that date (2026-02-13)
    • If it has NO carryover note → It's new from yesterday, use yesterday's date (2026-02-16)
  3. Write today's plan with preserved dates

Example:

# Yesterday (2026-02-16):
- [ ] Close on PMM site setup
  - *Carried over from:* 2026-02-13
- [ ] Raise bugs from the sheet
  (no carryover note - new on 2026-02-16)

# Today (2026-02-17) - CORRECT:
- [ ] Close on PMM site setup
  - *Carried over from:* 2026-02-13  ✅ PRESERVED!
- [ ] Raise bugs from the sheet
  - *Carried over from:* 2026-02-16  ✅ Yesterday's date

# Today (2026-02-17) - WRONG:
- [ ] Close on PMM site setup
  - *Carried over from:* 2026-02-16  ❌ OVERWROTE 2026-02-13!

Implementation: When parsing yesterday's file:

  1. Use regex or line-by-line parsing to detect "Carried over from: YYYY-MM-DD"
  2. Store the original date with each task
  3. Only assign today-1 date to tasks without existing carryover notes

4. Create Daily Plan Markdown

Generate a markdown file with this structure:

---
date: {DATE}
day: {DAY}
week: {WEEK}
quarter: {QUARTER}
tags: [daily-plan, product-management]
status: in-progress
---

# Daily Plan - {DATE} ({DAY})

> *Generated at {TIMESTAMP} using `/plan-my-day`*

---

## 🧠 Focus Work

- [ ] {NEW_FOCUS_TASK}
- [ ] {CARRYOVER_FOCUS_TASK}
  - *Carried over from:* {CARRYOVER_DATE}

---

## 💬 Communications

- [ ] {NEW_COMMS_TASK}
- [ ] {CARRYOVER_COMMS_TASK}
  - *Carried over from:* {CARRYOVER_DATE}

---

## 💼 Work Tasks

- [ ] {NEW_WORK_TASK}
- [ ] {CARRYOVER_WORK_TASK}
  - *Carried over from:* {CARRYOVER_DATE}

---

## 🎓 Learning & Development

- [ ] {NEW_LEARNING_TASK}

---

## 📧 Flagged Emails Due Today ({EMAIL_COUNT})

{FORMATTED_EMAIL_LIST_WITH_CHECKBOXES}
- [ ] {CARRYOVER_EMAIL}
  - *Carried over from:* {CARRYOVER_DATE}

---

## 📅 Calendar & Meetings ({MEETING_COUNT})

{FORMATTED_CALENDAR_WITH_MEETINGS}

**Available Focus Time:** {CALCULATED_FOCUS_HOURS} hours

---

## 📝 Daily Notes

*Capture thoughts, meeting notes, and observations throughout the day*

-

---

## 💡 Reflection

### Wins of the Day
-

### Learnings & Insights
-

---

## 🔗 Related Notes

- [[{PREVIOUS_DATE}|Previous Day]]
- [[{NEXT_DATE}|Next Day]]

---

*Update this plan throughout the day. Mark checkboxes as you complete items.*

Important: Carryover tasks are integrated into their respective sections (not in a separate section). The "Carried over from: DATE" indicator shows which tasks are carryovers.

6. Determine Obsidian Path

Calculate the file path:

# Determine base path (user should configure this)
# Default locations by OS:
# macOS/Linux: ~/ObsidianVault/DailyPlans
# Windows: /c/Users/$USER/Documents/ObsidianVault/DailyPlans

BASE_PATH="$HOME/ObsidianVault/DailyPlans"
YEAR_PATH="$BASE_PATH/$YEAR"
MONTH_PATH="$YEAR_PATH/$MONTH"
FILE_PATH="$MONTH_PATH/$DATE.md"

# Create directories if they don't exist
mkdir -p "$MONTH_PATH"

Important: On first run, ask the user where their Obsidian Vault is located and save this to a config file.

7. Write File to Obsidian

Use the Write tool to save the generated plan to the calculated file path.

7b. Remove Backlog Tasks (IMPORTANT!)

CRITICAL: After successfully writing the daily plan, remove tasks from backlog:

cd ~/.claude/skills/plan-my-day/scripts
python get_backlog_tasks_for_date.py "$VAULT_PATH" --date "$DATE" --remove

This removes:

  1. Date-specific tasks for today (e.g., "## 2026-02-10 (Tuesday)")
  2. ALL carryover sections (e.g., "## 🔄 Backlog due from 2026-02-09") - since they're now integrated into today's plan

Why this is important:

  • Prevents duplicate tasks (same task in both daily plan AND backlog)
  • Keeps backlog clean and up-to-date
  • If tasks aren't completed today, end-of-day cleanup will move them back to backlog as carryover
  • This creates a proper task flow: backlog → daily plan → (if incomplete) → backlog as carryover → next day's plan

8. Calculate Smart Suggestions

Focus Time Calculation:

  • Take 8-hour workday
  • Subtract meeting time
  • Result = available focus time

9. Display Summary

After saving, show the user:

✅ Daily Plan Created Successfully!

📁 Saved to: {FILE_PATH}

📊 Today's Overview:
- {EMAIL_COUNT} flagged emails due today
- {MEETING_COUNT} meetings scheduled
- {AVAILABLE_FOCUS_HOURS} hours available for focus work

🎯 Top Priority: {PRIMARY_FOCUS}

💡 Next Steps:
1. Open the plan in Obsidian
2. Block focus time in your calendar NOW
3. Tackle high-priority emails first
4. Update checkboxes as you complete tasks

Have a productive day! 🚀

---
💡 Pro Tips:
- Set Slack status to "Focus Mode" during deep work
- Batch email processing (don't constantly check)
- Say no to new meetings if calendar is full
- Update EOD review section before leaving

Use `/review-day` tonight to reflect on today's progress.

Smart Features to Include

Prioritization Logic

Emails are automatically prioritized by the sub-agent based on:

  1. Email Priority (from Outlook importance flag):
    • High importance + flagged → HIGH PRIORITY section
    • Normal importance + flagged → NORMAL PRIORITY section
    • Unread flagged emails get 🔴 marker
  2. Time Estimation (based on subject keywords):
    • FYI/Update/Status → 5 min (quick read)
    • Review/Feedback/Question → 15 min (moderate response)
    • Urgent/Escalation/Blocker/Critical → 25 min (detailed response)
    • Default → 10 min

Time Estimation

Provide realistic estimates:

  • Simple task: 15-30 min
  • Moderate task: 30-60 min
  • Complex task: 1-2 hours
  • Very complex: 2+ hours (break into subtasks)

Focus Time Suggestions

Analyze calendar gaps and suggest:

  • Morning (8-11am): Best for strategic work, PRDs, planning
  • Midday (11am-2pm): Good for meetings, collaboration
  • Afternoon (2-4pm): Good for execution, coding, designs
  • Late (4-6pm): Best for admin, email, light tasks

Focus Work Formatting

For focus work goals, create a single actionable to-do:

Example:

  • Goal: "Finalize PRD for auth feature" → Format as: - [ ] Finalize PRD for auth feature

Keep it simple - user will manage their own breakdown if needed.

Error Handling

If Obsidian path doesn't exist:

⚠️ Obsidian Vault not found at ~/ObsidianVault

Please specify your Obsidian Vault location:
(e.g., /Users/yourname/Documents/MyVault or C:/Users/yourname/Documents/ObsidianVault)

Save this to ~/.claude/skills/plan-my-day/config/vault-path.txt for future use.

If user provides no focus goal:

If user types "none" or "skip" for focus work goal:

  • Use generic goal: "General productivity and email/meeting management"
  • Create single to-do item with this generic goal

If too many flagged emails:

If more than 10 flagged emails due today:

⚠️ You have {COUNT} flagged emails due today! Consider:
- Reviewing if all flags are still valid
- Extending some deadlines if possible
- Delegating some items to team members

Arguments Support

Allow optional arguments for power users:

Usage:

  • /plan-my-day - Interactive mode (default)
  • /plan-my-day quick - Skip prompts, use minimal template
  • /plan-my-day yesterday - Retroactively create yesterday's plan
  • /plan-my-day 2026-02-04 - Create plan for specific date

Quick Mode: Only ask for primary focus goal, skip detailed breakdown.

Retroactive Mode: Ask "Create as-if planning, or document what actually happened?"

Performance Optimization

Target: < 30 seconds total

  1. Minimize user input (1 prompt only - focus work goal)
  2. Run calendar and email fetch in parallel (both sub-agents execute simultaneously)
  3. Use bash for date calculations (instant)
  4. Generate markdown in memory first
  5. Single file write operation
  6. No external API calls (uses local Outlook MAPI)
  7. No web searches

Best Practices

  1. Keep it conversational: Use emojis, friendly tone
  2. Be concise: Don't overwhelm with too much text
  3. Provide defaults: Offer sensible suggestions
  4. Make it actionable: Every item should have clear action
  5. Think time-realistically: Don't overcommit the user

Adaptive Questioning

If focus work goal is vague, ask for clarification:

  • "For 'finish PRD', do you mean: draft, review, or finalize?"
  • Keep questions brief and only ask when truly ambiguous
  • Accept the goal as-is if it's clear enough

Context Management

Remember throughout the conversation:

  • User's inputs (don't ask twice)
  • Time estimates provided
  • Calculated values (total time, available focus time)
  • File path determined

Final Checks

Before generating the plan, verify:

  1. ✅ All required information collected
  2. ✅ Date calculations are correct
  3. ✅ File path is valid
  4. ✅ Time estimates are realistic (not overcommitted)
  5. ✅ Focus time available matches reality

If user seems overcommitted (emails + meetings > 6 hours), warn:

⚠️ Heads up: Your flagged emails and meetings might take {ESTIMATED_HOURS} hours,
leaving only {REMAINING_HOURS} hours for focus work. Consider:
- Batching email processing (2-3 focused blocks vs. constantly)
- Declining/rescheduling optional meetings if possible
- Extending deadlines on some flagged emails

Related Skills

Mention these companion skills (if they exist):

  • /review-day - End of day reflection
  • /week-summary - Weekly aggregation
  • /quarter-review - Performance review generator

Download now (ZIP)

  • Other versions5 projects use a version of this.

    Word for word · 0

    None found.

    Edited · 0

    None found.

    Wrote their own version · 5

    1. BrianRWagner/ai-marketing-skills★ 440same name
    2. BrianRWagner/ai-marketing-claude-code-skills★ 408same name
    3. jackjin1997/ClawForge★ 12same name
    4. BrianRWagner/ai-marketing-openclaw-skills★ 8same name
    5. Naoray/skills★ 2same name

    How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.

  • Used alongsideProjects with it also use newsletter-creation-curation, social-card-gen and 4 more.

    Other files people use alongside this one.

    Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
    • BrianRWagnerSkill

      newsletter-creation-curation

      Industry-adaptive B2B newsletter creation with stage, role, and geography-aware workflows

      Also in 3 projects that use this

    • BrianRWagnerSkill

      social-card-gen

      Generate platform-specific social post variants (Twitter/X, LinkedIn, Reddit) from one source input. Works with or without Node.js script. Includes platform reasoning, quality review, and guardrails against cross-posting spam.

      Also in 3 projects that use this

    • kunwl123456Skill

      reddit-insights

      Search and analyze Reddit content using semantic AI search via reddit-insights.com MCP server. Use when you need to: (1) Find user pain points and frustrations for product ideas, (2) Discover niche markets or underserved needs, (3) Research what people really think about products/topics, (4) Find content inspiration from real discussions, (5) Analyze sentiment and trends on Reddit, (6) Validate business ideas with real user feedback. Triggers: reddit search, find pain points, market research, user feedback, what do people think about, reddit trends, niche discovery, product validation.

      Also in 3 projects that use this

    • bcastelinoSkill

      youtube-summarizer

      Extract transcripts from YouTube videos and generate comprehensive, detailed summaries. Use when summarizing video content or extracting key insights from YouTube.

      Also in 3 projects that use this

    • sirakinbSkill

      last30days

      Research a topic from the last 30 days on Reddit + X + Web, become an expert, and write copy-paste-ready prompts for the user's target tool.

      Also in 3 projects that use this

    • +1 more from BrianRWagner

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.