Files
2025-11-29 18:19:46 +08:00

338 lines
6.5 KiB
Markdown

---
name: pkm:gcalcli
description: Google Calendar integration for PKM Framework using gcalcli for read/write access
---
# gcalcli Skill
This skill provides Google Calendar integration for the PKM Framework using gcalcli CLI tool for both reading and writing calendar events.
## Purpose
Full Google Calendar integration with read/write capabilities for task management and time tracking.
**Key Features:**
- **Read**: Fetch calendar events for daily/weekly reviews
- **Write**: Create calendar events from TaskNotes tasks
- **Time blocking**: Automatically create focus blocks
- **Task sync**: Update calendar when tasks complete
- **00_Schedule calendar only**: Focused on main calendar management
## Context
- **gcalcli**: Google Calendar CLI tool
- **Target calendar**: `00_Schedule` (main calendar only)
- **Authentication**: Google OAuth 2.0
- **API**: Google Calendar API v3
## Installation
### 1. Install gcalcli
```bash
pip install gcalcli
```
### 2. Initial Authentication
```bash
gcalcli init
```
This will:
- Open browser for Google account authentication
- Save credentials to `~/.gcalcli_oauth`
- Grant calendar access permissions
### 3. Verify Installation
```bash
gcalcli --calendar "00_Schedule" agenda today
```
## How It Works
### Read Operations
gcalcli fetches events directly from Google Calendar API:
```bash
# Today's events
gcalcli --calendar "00_Schedule" agenda "2025-11-19 00:00" "2025-11-19 23:59"
# This week
gcalcli --calendar "00_Schedule" calw
```
### Write Operations
gcalcli creates/modifies events via API:
```bash
# Add event
gcalcli --calendar "00_Schedule" add \
--title "Deep Work" \
--when "2025-11-19 14:00" \
--duration 120
# Quick add (natural language)
gcalcli --calendar "00_Schedule" quick "Meeting tomorrow 2pm"
```
## Output Format
### For Daily Review
```markdown
**2025-11-19 Calendar Events:**
- 09:00-10:00: Team Standup (00_Schedule)
- 11:00-12:00: Deep Work Block (01_Daily)
- 14:00-15:00: 1-on-1 with Sarah (02_Work)
- 16:00-17:00: Paper Reading (03_Development)
- 18:00-19:00: Exercise (05_Health)
```
### For Weekly Overview
```markdown
**이번 주 주요 일정:**
- 월: Team Planning (09:00-10:00)
- 화: Client Meeting (14:00-16:00)
- 수: Deep Work Day (No meetings)
- 목: 1-on-1s (14:00-17:00)
- 금: Demo Day (15:00-16:00)
```
## Commands
### Read Commands
#### `/pkm:gcal-today`
Fetch today's calendar events.
**Usage:**
```bash
/pkm:gcal-today
```
**Output:** Events for today from 00_Schedule
#### `/pkm:gcal-date <YYYY-MM-DD>`
Fetch events for a specific date.
**Usage:**
```bash
/pkm:gcal-date 2025-11-18
```
**Output:** Events for the specified date
#### `/pkm:gcal-week`
Fetch this week's calendar overview.
**Usage:**
```bash
/pkm:gcal-week
```
**Output:** Summary of events for the current week
### Write Commands
#### `/pkm:gcal-add`
Add a calendar event.
**Usage:**
```bash
# Add event with prompts
/pkm:gcal-add
# Quick add with natural language
/pkm:gcal-add "Meeting with team tomorrow 2pm"
```
**Output:** Event created confirmation
#### `/pkm:gcal-block`
Create time blocks from TaskNotes tasks.
**Usage:**
```bash
# Create focus block for a task
/pkm:gcal-block [[Task Name]] 2025-11-19 14:00 120
# Auto-schedule incomplete tasks
/pkm:gcal-block --auto
```
**Output:** Time blocks created
#### `/pkm:gcal-complete`
Mark task completion in calendar.
**Usage:**
```bash
# Update event when task completes
/pkm:gcal-complete [[Task Name]]
```
**Output:** Calendar event updated with ✅
## Integration with Daily Review
The daily review skill (`/pkm:daily-review`) automatically calls `/pkm:gcal-today` to populate the "시간 사용" section.
**Automatic usage:**
```markdown
### 시간 사용
**Pomodoros:**
- ELEGNT 논문 - 🍅🍅🍅: 3
- 총 🍅🍅🍅: 3 pomodoros
**Calendar Events:**
- 09:00-10:00: Team Standup (00_Schedule)
- 14:00-15:00: 1-on-1 with Sarah (02_Work)
```
## ICS Parsing
The skill parses standard ICS format:
```
BEGIN:VEVENT
DTSTART:20251119T090000Z
DTEND:20251119T100000Z
SUMMARY:Team Standup
DESCRIPTION:Weekly team sync
END:VEVENT
```
Extracts:
- Start time (`DTSTART`)
- End time (`DTEND`)
- Event title (`SUMMARY`)
- Description (`DESCRIPTION`)
## Configuration
### Enabling/Disabling Calendars
TaskNotes config controls which calendars are active:
```json
{
"name": "00_Schedule",
"enabled": true // Set to false to disable
}
```
### Refresh Interval
TaskNotes automatically refreshes ICS feeds every 60 minutes.
## Troubleshooting
### "No calendar events found"
**Possible causes:**
1. No events scheduled for the date
2. ICS subscriptions disabled in TaskNotes
3. ICS feed not refreshed recently
**Solution:**
- Check TaskNotes calendar view
- Verify `enabled: true` in config
- Wait for next auto-refresh or restart Obsidian
### "Unable to read TaskNotes config"
**Cause:** TaskNotes plugin not installed or config missing
**Solution:**
- Install TaskNotes plugin
- Configure calendar subscriptions in TaskNotes settings
### Events showing wrong timezone
**Cause:** ICS events are in UTC, need local timezone conversion
**Solution:**
- Skill automatically converts to local timezone
- Verify system timezone is correct
## Example Usage
### Morning Daily Setup
```bash
# Check today's schedule
/pkm:gcal-today
# Output:
**2025-11-19 Calendar Events:**
- 09:00-10:00: Team Standup
- 11:00-12:00: Focus Block
- 14:00-15:00: Client Call
- 15:30-16:30: Code Review
```
### Evening Daily Review
Daily review automatically includes calendar events:
```bash
/pkm:daily-review
# Generates:
### 시간 사용
**Pomodoros:**
- Project A - 🍅🍅🍅: 3
- 총 🍅🍅🍅: 3
**Calendar Events:**
- 09:00-10:00: Team Standup
- 11:00-12:00: Focus Block (productive!)
- 14:00-15:00: Client Call
```
### Weekly Planning
```bash
/pkm:gcal-week
# Shows week overview for planning
```
## Dependencies
- **TaskNotes plugin**: Must be installed and configured
- **ICS subscriptions**: Google Calendar ICS URLs must be added to TaskNotes
- **Internet connection**: Required to fetch ICS feeds
## Future Enhancements
- Write events back to calendar
- Create calendar blocks from tasks
- Sync task completions to calendar
- Time blocking assistance
- Meeting preparation automation
## Version
**Current Version**: 1.0.0 (Initial release)
**Included in**: PKM Framework 1.0.0+
## See Also
- [Daily Review Skill](../temporal/daily-review/SKILL.md)
- [TaskNotes Plugin Documentation](https://github.com/obsidian-tasks-group/obsidian-tasks)
- [ICS Format Specification](https://tools.ietf.org/html/rfc5545)