Initial commit
This commit is contained in:
337
skills/integration/gcalcli/SKILL.md
Normal file
337
skills/integration/gcalcli/SKILL.md
Normal file
@@ -0,0 +1,337 @@
|
||||
---
|
||||
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)
|
||||
Reference in New Issue
Block a user