Life scheduler — quests, optimize, cleanup, weekly review
Read Google Calendar + Todoist, then propose schedule changes using science-based heuristics. Execute only after approval. Use timezone Asia/Ho_Chi_Minh.
/alfred 29/03 đi đám cưới bạn ở Đồng Nai, khởi hành 7h
/alfred optimize tomorrow
/alfred vợ đi làm 5h sáng mai
/alfred cleanup
/alfred add task build portfolio site, high energy
/alfred thêm task mua sữa cho vợ, đọc sách Atomic Habits
Mode 1: Add event + replan — User provides a new event/constraint. Create event AND cascade changes. Mode 2: Optimize day — Keywords "optimize", "replan", "sắp xếp", "tối ưu". No new event — rearrange existing. Materializes schedule to calendar. Mode 3: Cleanup / Audit — Keywords "cleanup", "reschedule", "dọn", "skip". Sub-mode "audit" (keywords "audit", "health check", "kiểm tra"): full Todoist structure verification. Triage today's quests: mark done or reschedule to next occurrence. — Keywords "quest", "task", "thêm task", "add", "tạo", or task-like content (no time, no location, no date-specific constraint). Classifies + creates in Todoist. Optionally materializes to calendar if today/tomorrow. — Keywords "review", "weekly", "review tuần". Pull Todoist completed + carried over tasks, update existing Obsidian weekly note with review section.
⚔️ Main Quests (6g6f74cmqrRj2937)
6g6f74h58rpwpv47) — Upwork, portfolio, templates, content, freelance6g6f74jhHXCVgxW7) — English, Docker, technical skills, learning6g6f74jrXXg5Pp37) — baby prep, family events, Duyên support6g6h7Qfmj6MGFV97) — phase decision points ONLY🎮 Side Quests (6g6f74h9JQXGVX6p)
6g6f74jRJwPPCmWp) — Wildtide, Bookie, creative projects6g6f74qmvFxphmJG) — admin, errands, purchases, householdRead
references/todoist-structure.md— full labels (energy + topic), priority convention, daily habits reference. Read when creating/updating tasks.
Skip for Mode 1 (add event), Mode 3 (cleanup), Mode 4 (add quest) — context is already dense enough.
For Mode 2 (Optimize) and Mode 5 (Weekly Review):
brain_recall(query="schedule patterns [day-type] [user-modifications]", type="pattern", project="digital-identity", time_range="-90 days", k=5)Extract from $ARGUMENTS and user message:
Routing:
All datetimes use RFC3339 without offset: YYYY-MM-DDTHH:MM:SS with timeZone: "Asia/Ho_Chi_Minh". Read from primary calendar (ignore Todoist sync duplicates). Create/update with calendarId: "primary", sendUpdates: "none", reminders: {"useDefault": false}. For updates/deletes, use calendarId + id from gcal_list_events response.
Call these in parallel:
gcal_list_events — target date (timeMin YYYY-MM-DDT00:00:00, timeMax YYYY-MM-DDT23:59:59, timeZone Asia/Ho_Chi_Minh). Also fetch day before and day after if travel/early wake involved.mcp__todoist__find-tasks-by-date — startDate = target date. If Todoist MCP is unavailable, proceed with gcal-only data and note "Todoist unavailable — task suggestions skipped" in the proposal.Bash: run date +"%H:%M" — current time in system timezone. Store as NOW.Use NOW (from Step 2) to split the day:
Scheduling constraint: All new task/event placement MUST start from NOW, not from wake time. Past slots are locked.
Mode 2 (optimize): Only rearrange FUTURE slots. PAST events stay as-is. IN PROGRESS events keep their original end time.
Mode 1 (add event + replan): Cascade only affects FUTURE events. PAST events are informational only.
Default daily skeleton (wake 06:00 — applies ANY day, Duyên's schedule is variable including weekends):