241 lines
5.7 KiB
Markdown
241 lines
5.7 KiB
Markdown
You are helping mark task completion in Google Calendar using gcalcli.
|
|
|
|
## Context
|
|
- Calendar: 00_Schedule (main calendar only)
|
|
- Tool: gcalcli CLI
|
|
- TaskNotes: Tasks complete with `- [x] [[Task Name]] ✅ YYYY-MM-DD`
|
|
- Integration: Sync task completion status to calendar
|
|
|
|
## Task
|
|
When a TaskNotes task is marked complete, update the corresponding calendar event to reflect completion.
|
|
|
|
### Use Cases
|
|
|
|
**1. Mark single task complete:**
|
|
```bash
|
|
/pkm:gcal-complete "[[SWSP25 Problem Definition]]"
|
|
```
|
|
Updates calendar event to show task is done.
|
|
|
|
**2. Auto-sync completions:**
|
|
```bash
|
|
/pkm:gcal-complete --sync
|
|
```
|
|
Syncs all completed tasks from today's daily note to calendar.
|
|
|
|
**3. Daily review integration:**
|
|
Called automatically by `/pkm:daily-review` to update calendar after review.
|
|
|
|
### Steps:
|
|
|
|
#### Single Task Completion
|
|
|
|
1. **Parse task name:**
|
|
- Input: `[[Task Name]]`
|
|
- Extract task name from wikilink
|
|
|
|
2. **Find calendar event:**
|
|
```bash
|
|
gcalcli --calendar "00_Schedule" \
|
|
search "Task Name"
|
|
```
|
|
Look for events with task name in title or description.
|
|
|
|
3. **Update event:**
|
|
```bash
|
|
# Option 1: Prepend ✅ to title
|
|
gcalcli --calendar "00_Schedule" \
|
|
edit "EVENT_ID" \
|
|
--title "✅ Task Name"
|
|
|
|
# Option 2: Add completion note to description
|
|
gcalcli --calendar "00_Schedule" \
|
|
edit "EVENT_ID" \
|
|
--description "Completed: YYYY-MM-DD HH:MM"
|
|
```
|
|
|
|
4. **Confirm:**
|
|
```markdown
|
|
✅ Calendar updated: [[Task Name]] marked complete
|
|
```
|
|
|
|
#### Auto-Sync Today's Completions
|
|
|
|
1. **Read today's daily note:**
|
|
- Path: `~/Obsidian/Altellus/20_Notes/Journal/YYYY/Mnn/YYYY-MM-DD.md`
|
|
- Extract "오늘 완료" section
|
|
- Find: `- [x] [[Task Name]] ✅ YYYY-MM-DD`
|
|
|
|
2. **For each completed task:**
|
|
- Search calendar for matching event
|
|
- If found, update with ✅ marker
|
|
- If not found, skip (not time-blocked)
|
|
|
|
3. **Summary:**
|
|
```markdown
|
|
✅ **Calendar sync complete:**
|
|
|
|
Updated events:
|
|
- ✅ [[Task: Daily 템플릿 확정]]
|
|
- ✅ [[ELEGNT 논문 리뷰]]
|
|
|
|
Not in calendar:
|
|
- [[Quick email reply]] (not time-blocked)
|
|
|
|
Total synced: 2/3 tasks
|
|
```
|
|
|
|
### Output Format
|
|
|
|
**Single task:**
|
|
```markdown
|
|
✅ **Calendar Event Updated:**
|
|
|
|
- **Task:** [[SWSP25 Problem Definition]]
|
|
- **Event:** "🎯 SWSP25 Problem Definition" → "✅ SWSP25 Problem Definition"
|
|
- **Completed:** 2025-11-19 15:45
|
|
|
|
Calendar reflects task completion ✅
|
|
```
|
|
|
|
**Sync summary:**
|
|
```markdown
|
|
✅ **Daily Completion Sync:**
|
|
|
|
**Updated (3):**
|
|
- ✅ [[Task: Daily 템플릿 확정]] (09:00-10:30)
|
|
- ✅ [[Task: Weekly Summary 재작성]] (11:00-12:00)
|
|
- ✅ [[ELEGNT 논문 리뷰]] (15:00-17:00)
|
|
|
|
**Not time-blocked (2):**
|
|
- ✅ [[Quick email reply]]
|
|
- ✅ [[Update README]]
|
|
|
|
**Calendar sync:** 3/5 tasks
|
|
```
|
|
|
|
### Update Strategies
|
|
|
|
**Strategy 1: Title Update (Recommended)**
|
|
- Before: `🎯 SWSP25 Problem Definition`
|
|
- After: `✅ SWSP25 Problem Definition`
|
|
- Visual: Easy to spot in calendar
|
|
- Preserves: Original event structure
|
|
|
|
**Strategy 2: Color Change**
|
|
- Change event color to green (completed)
|
|
- Requires: gcalcli color support
|
|
- Visual: Color-coded completion
|
|
|
|
**Strategy 3: Description Note**
|
|
- Add to description: `Completed: 2025-11-19 15:45`
|
|
- Preserves: Title unchanged
|
|
- Detail: Exact completion timestamp
|
|
|
|
**Default: Strategy 1 (Title Update)**
|
|
|
|
### Integration with Daily Review
|
|
|
|
`/pkm:daily-review` automatically calls this command:
|
|
|
|
```bash
|
|
# Daily review workflow:
|
|
1. Extract completed tasks
|
|
2. Update calendar events: /pkm:gcal-complete --sync
|
|
3. Generate review section
|
|
```
|
|
|
|
User sees:
|
|
```markdown
|
|
### 오늘 완료
|
|
- [x] [[Task: Daily 템플릿 확정]] ✅ 2025-11-18
|
|
_Calendar updated_ ✅
|
|
```
|
|
|
|
### Smart Matching
|
|
|
|
**Find events by:**
|
|
1. Exact title match: "🎯 Task Name" = "Task Name"
|
|
2. Description match: Contains "TaskNotes: [[Task Name]]"
|
|
3. Fuzzy match: Similar title (85%+ match)
|
|
4. Time range: Within today's events only
|
|
|
|
**Disambiguation:**
|
|
If multiple matches:
|
|
- Prefer: Today's events over future
|
|
- Prefer: Exact title match over fuzzy
|
|
- Ask: User to confirm if ambiguous
|
|
|
|
### Error Handling
|
|
|
|
**If event not found:**
|
|
- Message: "No calendar event found for [[Task Name]]"
|
|
- Reason: "Task was not time-blocked"
|
|
- Action: Skip (not an error)
|
|
|
|
**If multiple matches:**
|
|
- Message: "Multiple events found for [[Task Name]]:"
|
|
- List: All matching events with times
|
|
- Ask: "Which one to update? (1/2/3)"
|
|
|
|
**If already marked complete:**
|
|
- Message: "Event already marked complete: ✅ [[Task Name]]"
|
|
- Action: Skip (idempotent)
|
|
|
|
**If gcalcli fails:**
|
|
- Message: "Unable to update calendar. Check authentication."
|
|
- Suggest: Run `gcalcli init`
|
|
|
|
### Advanced Features
|
|
|
|
**1. Batch update:**
|
|
```bash
|
|
/pkm:gcal-complete --all
|
|
```
|
|
Updates all completed tasks from today's note.
|
|
|
|
**2. Retroactive sync:**
|
|
```bash
|
|
/pkm:gcal-complete --date 2025-11-18
|
|
```
|
|
Syncs completions from a past date.
|
|
|
|
**3. Undo completion:**
|
|
```bash
|
|
/pkm:gcal-complete --undo "[[Task Name]]"
|
|
```
|
|
Removes ✅ marker (if task was uncompleted).
|
|
|
|
### Completion Metadata
|
|
|
|
**Store in event description:**
|
|
```
|
|
Completed: 2025-11-19 15:45
|
|
Pomodoros: 3 🍅🍅🍅
|
|
Notes: Finished earlier than expected
|
|
```
|
|
|
|
**Benefits:**
|
|
- Track actual vs estimated time
|
|
- Review completion patterns
|
|
- Inform future time estimates
|
|
|
|
### Weekly Review Integration
|
|
|
|
Weekly review shows:
|
|
```markdown
|
|
### 주간 완료 태스크
|
|
- [x] [[Task A]] ✅ (90min, est 120min) - 25% faster
|
|
- [x] [[Task B]] ✅ (120min, est 90min) - 33% slower
|
|
|
|
**Insights:** Complex tasks taking longer than estimated.
|
|
```
|
|
|
|
### Notes
|
|
|
|
- Only updates time-blocked tasks (calendar events exist)
|
|
- Non-blocked tasks skip update (normal behavior)
|
|
- Preserves event time and other details
|
|
- Completion marker: ✅ (universally recognized)
|
|
- Can manually undo in Google Calendar UI
|