You are helping create time blocks in Google Calendar from TaskNotes tasks using gcalcli. ## Context - Calendar: 00_Schedule (main calendar only) - Tool: gcalcli CLI - TaskNotes: Tasks in `~/Obsidian/Altellus/00_Inbox/Tasks/` - Daily notes: `~/Obsidian/Altellus/20_Notes/Journal/YYYY/Mnn/YYYY-MM-DD.md` ## Task Create calendar time blocks for TaskNotes tasks to facilitate focus time and task completion. ### Use Cases **1. Manual time block for specific task** ```bash /pkm:gcal-block "[[SWSP25 Problem Definition]]" 2025-11-19 14:00 120 ``` Creates 2-hour focus block for the task. **2. Auto-schedule incomplete tasks** ```bash /pkm:gcal-block --auto ``` Automatically schedules incomplete tasks from today's daily note. **3. Weekly planning** ```bash /pkm:gcal-block --week ``` Creates time blocks for all tasks planned this week. ### Steps: #### Manual Time Block 1. **Parse input:** - Task name: `[[Task Name]]` (TaskNotes wikilink) - Date: YYYY-MM-DD - Time: HH:MM - Duration: minutes (default 90) 2. **Extract task details:** - Read task file from `00_Inbox/Tasks/Task Name.md` - Get task title, priority, time estimate 3. **Create calendar event:** ```bash gcalcli --calendar "00_Schedule" add \ --title "🎯 [Task Title]" \ --when "YYYY-MM-DD HH:MM" \ --duration MINUTES \ --description "TaskNotes: [[Task Name]]" ``` 4. **Confirm:** - Display: "βœ… Time block created for [[Task Name]]" #### Auto-Schedule 1. **Read today's daily note:** - Extract "였늘 μ΄μ–΄μ„œ ν•  일" section - Find incomplete tasks: `- [ ] [[Task Name]]` 2. **Check calendar availability:** - Fetch today's events with `/pkm:gcal-today` - Find free time slots (gaps between events) 3. **Prioritize tasks:** - High priority first (if specified in TaskNotes) - Larger time estimates first - Morning for deep work, afternoon for lighter tasks 4. **Create time blocks:** - For each task, find suitable time slot - Create gcalcli event with task reference - Default duration: 90 minutes (pomodoro-friendly) 5. **Summary:** ```markdown βœ… **Auto-scheduled 3 tasks:** - 09:00-10:30: [[SWSP25 Problem Definition]] - 11:00-12:00: [[Long horizon action model paper search]] - 14:00-15:30: [[Claude λͺ…λ Ή ν…ŒμŠ€νŠΈ 및 디버깅]] Total focus time: 4 hours ``` #### Weekly Planning 1. **Read this week's tasks:** - From weekly note or aggregated daily notes - Extract all incomplete tasks: `- [ ] [[Task Name]]` 2. **Distribute across week:** - Monday-Friday scheduling - Balance workload (max 4 hours deep work/day) - Respect existing calendar events 3. **Create blocks:** - Spread tasks across available time slots - Group similar tasks (context switching reduction) ### Output Format **Single task:** ```markdown βœ… **Time Block Created:** - **Task:** [[SWSP25 Problem Definition]] - **Time:** 2025-11-19 14:00-16:00 (2 hours) - **Calendar:** 00_Schedule Focus time secured! 🎯 ``` **Auto-schedule:** ```markdown βœ… **Auto-scheduled 4 tasks:** **Morning (Deep Work):** - 09:00-10:30: [[SWSP25 Problem Definition]] πŸ…πŸ…πŸ… - 11:00-12:30: [[ELEGNT λ…Όλ¬Έ 리뷰]] πŸ…πŸ…πŸ… **Afternoon:** - 14:00-15:00: [[Documentation μ—…λ°μ΄νŠΈ]] πŸ…πŸ… - 15:30-16:30: [[Code Review]] πŸ…πŸ… **Total:** 5.5 hours focus time **Available:** 09:00-12:30, 14:00-16:30 ``` ### Smart Scheduling Logic **1. Respect existing events:** - Don't overlap with calendar events - Leave buffer time (15 min) between blocks **2. Energy optimization:** - 09:00-12:00: Deep work (complex tasks) - 14:00-16:00: Medium tasks - 16:00-18:00: Light tasks (reviews, admin) **3. Pomodoro-friendly durations:** - 25 min = πŸ… - 50 min = πŸ…πŸ… - 90 min = πŸ…πŸ…πŸ… (ideal) - 120 min = πŸ…πŸ…πŸ…πŸ… **4. Task batching:** - Group similar tasks (reading papers, coding, writing) - Reduce context switching ### Integration with TaskNotes **Time estimate from task:** ```yaml --- timeEstimate: 120 # minutes priority: high --- ``` Use task's `timeEstimate` for block duration. **Update task after scheduling:** ```yaml --- scheduled: 2025-11-19 calendarBlock: true --- ``` ### Error Handling **If no free time:** - Message: "No available time slots today. Calendar is full." - Suggest: Tomorrow or specific time **If task not found:** - Message: "Task [[Task Name]] not found in 00_Inbox/Tasks/" - Verify: Task name spelling **If calendar conflict:** - Message: "Conflict at 14:00 with: [Existing Event]" - Suggest: Next available slot ### Advanced Features **1. Focus mode:** ```bash /pkm:gcal-block --focus 4 ``` Create 4-hour protected deep work block (no meetings). **2. Recurring blocks:** ```bash /pkm:gcal-block "[[Weekly Review]]" --recur weekly-friday-16:00 ``` **3. Flexible timing:** ```bash /pkm:gcal-block --auto --prefer-morning ``` Schedule tasks in morning hours only. ### Defaults - **Duration:** 90 minutes (πŸ…πŸ…πŸ…) - **Buffer:** 15 minutes between blocks - **Deep work hours:** 09:00-12:00 - **Event prefix:** 🎯 (focus block indicator) ### Notes - Time blocks appear in Google Calendar immediately - Sync across all devices - Can reschedule by dragging in Google Calendar - Task completion doesn't auto-delete block (manual cleanup)