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
- Distinctive: line 18
Before prompting the user, check if there are pre-planned focus tasks:
- Distinctive: line 29
Keep it quick - under 1 minute total input time.
- Very specific: line 35
If there ARE pre-planned focus tasks from backlog: "🧠 What's your main focus work goal today?
- Distinctive: line 41
If there are NO pre-planned focus tasks: "🧠 What's your main focus work goal today?
- Distinctive: line 50
Run sub-agents in parallel (backlog was already fetched in step 1):
- Distinctive: line 70
If a recurring meeting (e.g., "SPAI Leads sync") is missing, it may be:
- Distinctive: line 83
Check recent emails (last 500) for flags
- Distinctive: line 91
Use the returned formatted markdown directly in the respective sections
- Distinctive: line 93
After plan is created, remove those tasks from backlog
- Distinctive: line 102
Use bash commands to get current date info:
- Distinctive: line 132
If user typed "use planned": Only use the backlog focus tasks (no new task from user input)
- Distinctive: line 133
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
- Distinctive: line 134
If user provided a goal and NO backlog focus tasks: Create single checkbox with user's goal
- Distinctive: line 135
If user provided no goal and there are backlog focus tasks: Use backlog focus tasks only
- Distinctive: line 136
Keep it clean - no time estimates or subtasks
- Distinctive: line 140
Use the markdown output directly
- Distinctive: line 151
When carrying over tasks from yesterday's plan, you MUST preserve the ORIGINAL carryover date:
- Distinctive: line 154
Read yesterday's plan (e.g., 2026-02-16.md)
- Distinctive: line 156
If it has "Carried over from: 2026-02-13" → Keep that date (2026-02-13)
- Distinctive: line 157
If it has NO carryover note → It's new from yesterday, use yesterday's date (2026-02-16)
- Distinctive: line 158
Write today's plan with preserved dates
- Distinctive: line 180
When parsing yesterday's file:
- Distinctive: line 181
Use regex or line-by-line parsing to detect "Carried over from: YYYY-MM-DD"
- Distinctive: line 183
Only assign today-1 date to tasks without existing carryover notes
- Distinctive: line 304
Use the Write tool to save the generated plan to the calculated file path.
- Distinctive: line 308
CRITICAL: After successfully writing the daily plan, remove tasks from backlog:
- Distinctive: line 317
ALL carryover sections (e.g., "## 🔄 Backlog due from 2026-02-09") - since they're now integrated into today's plan
- Distinctive: line 322
If tasks aren't completed today, end-of-day cleanup will move them back to backlog as carryover
- Distinctive: line 334
After saving, show the user:
- Distinctive: line 407
Keep it simple - user will manage their own breakdown if needed.
- Distinctive: line 424
If user types "none" or "skip" for focus work goal:
- Distinctive: line 425
Use generic goal: "General productivity and email/meeting management"
- Distinctive: line 426
Create single to-do item with this generic goal
- Distinctive: line 430
If more than 10 flagged emails due today:
- Distinctive: line 449
Only ask for primary focus goal, skip detailed breakdown.
- Distinctive: line 452
Ask "Create as-if planning, or document what actually happened?"
- Distinctive: line 459
Run calendar and email fetch in parallel (both sub-agents execute simultaneously)
- Distinctive: line 460
Use bash for date calculations (instant)
- Distinctive: line 463
No external API calls (uses local Outlook MAPI)
- Distinctive: line 468
Keep it conversational: Use emojis, friendly tone
- Distinctive: line 469
Be concise: Don't overwhelm with too much text
- Distinctive: line 471
Make it actionable: Every item should have clear action
- Distinctive: line 472
Think time-realistically: Don't overcommit the user
- Distinctive: line 476
If focus work goal is vague, ask for clarification:
- Distinctive: line 478
Keep questions brief and only ask when truly ambiguous
- Distinctive: line 491
Before generating the plan, verify:
- Distinctive: line 498
If user seems overcommitted (emails + meetings > 6 hours), warn:
“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.
Files
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.pyThis 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:
- Checking for recurring patterns (daily, weekly, monthly)
- Calculating instances for today's date
- 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.pyThis 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:
- Read yesterday's plan (e.g., 2026-02-16.md)
- 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)
- 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:
- Use regex or line-by-line parsing to detect "Carried over from: YYYY-MM-DD"
- Store the original date with each task
- 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" --removeThis removes:
- Date-specific tasks for today (e.g., "## 2026-02-10 (Tuesday)")
- 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:
- Email Priority (from Outlook importance flag):
- High importance + flagged → HIGH PRIORITY section
- Normal importance + flagged → NORMAL PRIORITY section
- Unread flagged emails get 🔴 marker
- 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 membersArguments 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
- Minimize user input (1 prompt only - focus work goal)
- Run calendar and email fetch in parallel (both sub-agents execute simultaneously)
- Use bash for date calculations (instant)
- Generate markdown in memory first
- Single file write operation
- No external API calls (uses local Outlook MAPI)
- No web searches
Best Practices
- Keep it conversational: Use emojis, friendly tone
- Be concise: Don't overwhelm with too much text
- Provide defaults: Offer sensible suggestions
- Make it actionable: Every item should have clear action
- 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:
- ✅ All required information collected
- ✅ Date calculations are correct
- ✅ File path is valid
- ✅ Time estimates are realistic (not overcommitted)
- ✅ 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 emailsRelated Skills
Mention these companion skills (if they exist):
/review-day- End of day reflection/week-summary- Weekly aggregation/quarter-review- Performance review generator
Other versions5 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 5
- BrianRWagner/ai-marketing-skills★ 440same name
- BrianRWagner/ai-marketing-claude-code-skills★ 408same name
- jackjin1997/ClawForge★ 12same name
- BrianRWagner/ai-marketing-openclaw-skills★ 8same name
- 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.
BrianRWagnerSkillnewsletter-creation-curation
Industry-adaptive B2B newsletter creation with stage, role, and geography-aware workflows
Also in 3 projects that use this
BrianRWagnerSkillsocial-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
kunwl123456Skillreddit-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
bcastelinoSkillyoutube-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
sirakinbSkilllast30days
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
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.

