Conduct comprehensive weekly reflections by integrating time tracking (Timing app), habit tracking (Streaks), task completion (Todoist), email activity (Gmail), and notes (Obsidian) to analyze alignment with semester goals, identify trends, and provide actionable guidance. Use when the user requests a weekly reflection, weekly review, wants to analyze their week, or asks to check progress against goals.
Conduct holistic weekly analysis integrating multiple data sources to assess progress, identify patterns, and provide actionable guidance aligned with semester goals.
Overview
This skill orchestrates a comprehensive weekly reflection process that:
Gathers data from five sources: Timing, Streaks, Todoist, Gmail, and Obsidian
Analyzes current week against previous 2-4 weeks for trends
Checks alignment with semester goals (focusing on research output while maintaining teaching and habits)
Identifies concerning patterns early
Provides analytical summary with limited, actionable next steps
Core Focus Areas
Primary: Research output and progress Secondary: Teaching quality and effectiveness Tertiary: Habit consistency and maintenance
The analysis should balance these priorities while identifying when secondary/tertiary areas are suffering.
Data Collection Workflow
Related Skills
Vault Organization Context
The Obsidian vault follows a modified PARA system with 150+ notes:
10 - Projects/: Active work (Research, Teaching subdirectories)
Weekly Notes/: Weekly reflections (ISO format: "2025-W44.md")
@Templates/: Note templates including "Weekly Review.md"
Search strategy: The vault is large (150+ notes). Always use targeted obsidian_global_search rather than browsing directories. Use searchInPath parameter to limit scope and pageSize=10 to manage results.
Follow this sequence to gather all necessary data efficiently:
1. Get Timing App Data (Time Tracking)
# Get current week summary
python3 /Users/dhidalgo/Documents/personal_scripts/timing_data/llm_tools/timing_export.py --format json
# Get last 4 weeks for trend analysis
python3 /Users/dhidalgo/Documents/personal_scripts/timing_data/llm_tools/timing_export.py --compare 4
What to extract:
Total hours worked this week vs recent weeks
Time allocation by project type (Research, Admin, Teaching)
Daily work patterns and consistency
Weekend work indicators
2. Get Streaks Data (Habit Tracking)
# Get current week habit data (Sunday-Saturday)
# Calculate dates: current Sunday to current Saturday
shortcuts run "Get Habit Tracking Data" -i "YYYY-MM-DD,YYYY-MM-DD"
# Example for last 4 weeks:
shortcuts run "Get Habit Tracking Data" -i "2025-10-06,2025-11-02"
What to extract:
Completion rate for each habit
Consecutive completion streaks
Which habits are slipping
Patterns by day of week
Key habits to monitor:
Readwise Daily Review
Math Learning (1 hour target)
20 Minutes of Reading
Exercise habits
3. Get Todoist Data (Task Completion)
Use Todoist MCP tools to analyze task patterns:
# Get completed tasks for current week
Todoist:find-completed-tasks(since="YYYY-MM-DD", until="YYYY-MM-DD")
# Get current open tasks by project
Todoist:find-tasks(projectId="...")
# Check for overdue tasks
Todoist:find-tasks-by-date(startDate="today", overdueOption="overdue-only")
What to extract:
Tasks completed vs created
Projects with most activity
Overdue task accumulation
Task completion patterns (which days/times)
4. Get Gmail Sent Email Analysis
Use Gmail MCP tools to analyze sent emails (proxy for communication/collaboration):
# Get profile info (includes email address)
read_gmail_profile()
# Search sent emails from current week
# Use Gmail operators: from:me for sent mail, after:/before: for dates
search_gmail_messages(
q="from:me after:YYYY/MM/DD before:YYYY/MM/DD"
)
# For more specific searches, combine operators:
# Students - sent to .edu addresses or specific patterns
search_gmail_messages(
q="from:me to:@mit.edu after:YYYY/MM/DD"
)
# Research collaborators - specific domains or people
search_gmail_messages(
q="from:me (subject:paper OR subject:manuscript OR subject:data) after:YYYY/MM/DD"
)
# Admin - look for committee, meeting, administrative keywords
search_gmail_messages(
q="from:me (subject:committee OR subject:meeting OR subject:admin) after:YYYY/MM/DD"
)
# Teaching - course-related emails
search_gmail_messages(
q="from:me (subject:quant OR subject:17.800) after:YYYY/MM/DD"
)
# Read specific threads if needed for context
read_gmail_thread(thread_id="...", include_full_messages=true)
after:YYYY/MM/DD - After date (e.g., after:2025/10/27)
before:YYYY/MM/DD - Before date
OR - Match either term
-term - Exclude term
to:@mit.edu - Sent to MIT addresses
What to extract:
Total sent email volume for the week
Email volume by category (students, colleagues, admin)
Response patterns (are emails clustered or spread throughout day?)
Collaboration indicators (co-author communications, data sharing)
Teaching-related correspondence volume (student questions, TA coordination)
Time of day patterns (late night emails suggest boundary issues)
Analysis approach:
Get total sent count with broad from:me search
Categorize with targeted searches (students, research, admin, teaching)
Review thread subjects to identify major communication themes
Compare volume to previous weeks if possible
Note any unusual spikes in specific categories
Note: Gmail searches may return many results. Use the max_results parameter (default 25) to limit scope. Check for nextPageToken in responses if you need to paginate through more results.
5. Get Obsidian Vault Data
Use Obsidian MCP to read notes and track work. The vault follows a PARA organizational system with 150+ notes.
IMPORTANT: Always use includeStat: true when reading notes to get creation/modification timestamps.
# Read current week note (with metadata)
obsidian_read_note(
filePath="Weekly Notes/2025-W[XX].md",
includeStat=true
)
# Read previous weeks for comparison (2-4 weeks back)
obsidian_read_note(
filePath="Weekly Notes/2025-W[XX-1].md",
includeStat=true
)
obsidian_read_note(
filePath="Weekly Notes/2025-W[XX-2].md",
includeStat=true
)
obsidian_read_note(
filePath="Weekly Notes/2025-W[XX-3].md",
includeStat=true
)
# Read current semester goals
obsidian_read_note(
filePath="Semester Notes/6 - 2025 Fall.md",
includeStat=true
)
# Strategy 1: Search for recently modified research notes
# Use targeted searches rather than browsing - more efficient with 150+ notes
obsidian_global_search(
query="research",
modified_since="7 days ago",
searchInPath="10 - Projects/Research",
pageSize=10
)
# Strategy 2: Search for active teaching materials
obsidian_global_search(
query="quant teaching",
modified_since="7 days ago",
searchInPath="20 - Areas/Teaching",
pageSize=10
)
# Strategy 3: Check active projects broadly
obsidian_global_search(
query="",
modified_since="7 days ago",
searchInPath="10 - Projects",
pageSize=10
)
# NOTE: Check for pagination in results (totalPages field)
# If totalPages > 1, consider fetching additional pages for comprehensive view
What to extract from weekly notes:
Progress documented in "✅ This Week's Progress"
Challenges in "🚧 Challenges & Lessons"
Reflections in "📝 Notes & Reflections"
Photos/visualizations included
Note timestamps to understand when entries were added
What to extract from semester goals:
Research goals and their priority (under "## Goals / ### Research")
Teaching goals
Life/habit goals
Scheduled milestones (under "## Schedule")
What to extract from search results:
File paths of recently modified notes
Modification dates to understand recency
Brief context from search snippets
Total pages available (for pagination decisions)
Search result strategy:
Start with targeted searches in specific directories
Use pageSize=10 as default (avoid overwhelming context)
Check totalPages in response - if >1, consider fetching more
Prioritize files modified in last 7 days over older modifications
Focus searches on project/research areas first, then teaching/admin
Reading strategy for discovered files:
Use obsidian_read_note with includeStat=true for full context
Read files selectively based on search result relevance
Prioritize: Research projects > Teaching materials > Admin notes
If approaching context limits, read only most recently modified files
CRITICAL: Context window management
The vault has 150+ notes - don't try to read everything
Use search to identify relevant notes first (not directory browsing)
When reading recently modified files from searches, limit to top 5-10 most relevant
Read full notes only for current week, last 2-3 weeks, and semester goals
For other discovered files, rely on search snippets unless specifically needed
Analysis Framework
1. Goal Alignment Check
Compare this week's activities against semester goals:
Research Goals:
Which research goals had progress this week?
How many hours allocated to each active research project?
Are research goals getting sufficient attention given stated priorities?
Are there research goals with zero progress that should be flagged?
Teaching Goals:
Did teaching activities align with stated teaching goals?
Is teaching consuming more/less time than expected?
Are teaching materials being updated as planned?
Life/Habit Goals:
Which habits were maintained consistently?
Which habits are slipping?
Are life goals (exercise, learning) getting attention?
2. Trend Analysis (Current vs Previous Weeks)
Time Allocation Trends:
Is total work time increasing or decreasing?
Is research time percentage increasing (desired) or decreasing (concern)?
Is admin time creeping up (common red flag)?
Are there unusual spikes in any category?
Task Completion Trends:
Is task completion rate stable, improving, or declining?
Are overdue tasks accumulating?
Which projects have stalled (no tasks completed)?
Habit Trends:
Which habits are on a positive streak?
Which habits are on a negative streak?
Are there weekly patterns (e.g., weekends worse than weekdays)?
Energy and Effectiveness:
Based on notes, is the user expressing burnout, frustration, or flow?
Are there mentions of feeling behind or overwhelmed?
Are there positive momentum indicators?
3. Pattern Recognition & Red Flags
Red Flags to Watch For:
Research time below 35% of total work time (suggests admin creep)
Multiple consecutive days with <6 hours of work (suggests disengagement or overwhelm)
Habit completion rate dropping below 60%
Accumulation of overdue tasks (>10 overdue items)
Zero progress on stated priority research goals
Weekend work becoming regular pattern (suggests poor boundaries)
Teaching prep consuming >15 hours/week (suggests inefficiency or scope creep)
Patterns Meeting Targets:
Research time above 45% of total
Consistent 7-8 hour work days
Habit completion above 80%
Clear progress notes on priority projects
No overdue tasks or minimal overdue (<5 items)
Good boundaries (minimal weekend work)
4. Intervention Strategies
When bad trends are detected, suggest specific interventions:
For Research Time Decline:
Block dedicated research mornings (5-7 AM protected time)
Defer non-urgent admin tasks
Batch similar admin tasks to reduce context switching
Consider saying no to new commitments
For Habit Slippage:
Identify highest-value habit to focus on first
Reduce other commitments to create habit space
Link habit to existing strong routine
Set implementation intention for specific habit
For Task Overload:
Review overdue tasks and ruthlessly delete/defer
Identify tasks that can be delegated
Focus on 3 most important tasks for next week
Set up "no new tasks" period until backlog clears
For Teaching Time Creep:
Re-use previous materials more aggressively
Identify teaching tasks that can be simplified or cut
Set hard time limits for prep work
Consider student feedback to validate quality vs effort
For Overwhelm/Burnout Signals:
Identify one project to pause or defer
Increase recovery time (earlier bedtime, more breaks)
Reduce total work hour target temporarily
Simplify scope of current projects to maintain forward momentum
Output Format
Provide a conversational summary with this structure:
Weekly Reflection: [Week Of Date]
The Big Picture:
One paragraph summarizing the week's key theme or pattern
Explicitly note alignment (or misalignment) with semester goals
Call out any concerning trends immediately
What's Working:
2-3 specific patterns meeting or exceeding targets
Include data points (percentages, hours, streaks)
Note any goals with progress—no evaluation of whether it's "good" progress
What Needs Attention:
2-3 specific concerns or declining metrics
Include data that shows the trend
Connect to semester goals if relevant
Key Insights:
1-2 analytical observations about patterns across data sources
Connections between time use, task completion, and outcomes
Non-obvious findings from the data
Actionable Next Steps:
Use this exact format for action items:
For Next Week:
[Specific, concrete action with measurable outcome]
[Specific, concrete action with measurable outcome]
[Specific, concrete action with measurable outcome]
Maximum 5 action items. Each must be:
Concrete (not vague like "focus more")
Actionable (user knows exactly what to do)
Connected to identified problems
Realistic for one week
Example Analysis Flow
1. Read all data sources (Timing, Streaks, Todoist, Obsidian)
2. Extract key metrics and patterns
3. Compare to previous weeks (2-4 weeks)
4. Read semester goals and check alignment
5. Identify red flags and positive patterns
6. Formulate 3-5 concrete action items
7. Write conversational summary with data support
Conversation Style Guidelines
Tone: Direct and analytical. Report what the data shows without cushioning. Challenge assumptions when data contradicts goals. No praise, no encouragement—just analysis and implications.
Data Usage: Cite specific numbers to support observations. Don't just say "research time is down"—say "research time dropped to 35% this week from 48% last week."
Honesty: If multiple areas are struggling, say so plainly. State patterns that indicate problems without softening the message.
Specificity: Avoid generic advice. Instead of "spend more time on research," say "block 5-7 AM every day next week specifically for MBTA Communities analysis, aiming for 10 hours total research time."
Brevity: Keep the full reflection to 400-600 words plus the action items. Dense but readable.
No emotional management: Do not:
Acknowledge the user's feelings or energy levels
Provide encouragement or motivation
Soften criticism with positive framing
Celebrate wins beyond noting the data
End with supportive statements
Focus exclusively on patterns, implications, and actionable steps.
Important Considerations
Context Window Management:
Be selective when reading recently modified files
Truncate long files to first 200-300 words
Prioritize recent files over older files
If context is getting full, skip less important data sources
Academic Calendar Awareness:
Week 1-4 of semester: Teaching prep is expected to be high
Mid-semester: Research should increase, teaching stabilizes
End of semester: Grading/admin expected to spike
Breaks: Research should dominate, minimal teaching/admin
Seasonal Patterns:
Fall: Teaching heavy, research building momentum
Spring: Teaching continues, research manuscripts due
Summer: Research focus, teaching minimal
IAP (January): Variable, often research or course prep
User Preferences:
Prefers technical depth, not dumbed down
Appreciates contrary arguments and pushback
Values frank assessment without softening or encouragement
Wants specific, actionable advice based on data
Comfortable with statistical and quantitative analysis
Does not want emotional management, motivation, or self-esteem support
Expects analytical consultant-style reports, not coaching-style feedback
Technical Notes
Week Numbering: Use ISO week format (YYYY-Www) where weeks start on Sunday and end on Saturday.
Timing Data: The timing_export.py script returns data in minutes. Convert to hours for analysis and presentation.
Streaks Data: CSV format with entry_type indicating completion status. Focus on "completed_manually" and "completed_auto" vs "missed_auto" and "skipped" entries.
Todoist Integration: Use find-completed-tasks for historical analysis and find-tasks for current state. Pay attention to priority levels (p1-p4) when assessing task importance.
Always use includeStat: Set includeStat=true when reading notes for timestamp context
Search parameters: Use pageSize=10 default, check totalPages for pagination needs
Search scope: Use searchInPath to target specific folders (e.g., "10 - Projects/Research")
Modified dates: Use modified_since="7 days ago" format for recent file searches
Timestamp format: File stats show "HH:MM:SS AM | MM-DD-YYYY"
Weekly Note Structure:
## Weekly Review header
### ✅ This Week's Progress for accomplishments
### 🚧 Challenges & Lessons for difficulties
### 📝 Notes & Reflections for insights
### 📷️ Photo of the Week for images
### ⌛Time Tracking for visualizations
Troubleshooting Common Issues
If Timing data is unavailable: Rely more heavily on Obsidian notes and Todoist patterns to infer time allocation.
If Streaks data fails: Ask user to provide approximate habit completion estimates or skip habit analysis for this week.
If Gmail searches return too many results:
Use more specific search operators (combine subject:, to:, etc.)
Reduce time range (fewer days)
Use max_results parameter to limit scope
Focus on category counts rather than reading individual threads
If Gmail searches return too few results:
Verify date format is correct (YYYY/MM/DD)
Broaden search terms (remove subject: filters)
Check if from:me is returning any results at all
Consider that low email volume might be accurate data to report
If Obsidian searches return too many results:
Check totalPages field in search response
If >1 page, fetch next page with pagination
Or refine search with more specific query terms
Use searchInPath to narrow scope to specific directories
Reduce pageSize if context is constrained
If Obsidian searches return too few results:
Broaden search terms (fewer keywords)
Remove searchInPath restriction to search entire vault
Try searching without modified_since filter
Use obsidian_list_notes to explore directory structure
If recently modified files overwhelm context:
Prioritize by modification date (most recent first)
Read only top 5 files from search results
Rely on search result snippets instead of full reads
Focus on Research and Teaching directories, skip Resources/Archive
If weekly notes are missing or incomplete:
Check previous week's note as fallback
Use search to find mentions of current week work in project notes
Explicitly note in reflection that weekly note is incomplete
If data sources conflict: Trust time tracking (Timing) data over subjective notes for time allocation. Trust task data (Todoist) over notes for completion patterns. Note conflicts explicitly in the reflection.
If path not found errors:
Verify week number calculation (ISO format, Sunday start)
Check semester number (sequential: 6 - 2025 Fall follows 5 - 2025 Summer)