This skill should be used when the user asks to "sync to Google Calendar", "import activities to calendar", "add GitHub/Linear events to calendar", or "convert activity report to calendar". Transforms structured activity data into gcalcli commands for Google Calendar import.
View on GitHubjongwony/cc-plugin
google/skills/calendar-sync/SKILL.md
January 24, 2026
Select agents to install to:
npx add-skill https://github.com/jongwony/cc-plugin/blob/main/google/skills/calendar-sync/SKILL.md -a claude-code --skill calendar-syncInstallation paths:
.claude/skills/calendar-sync/# Calendar Sync
Convert structured activity data from GitHub, Linear, and other sources into executable gcalcli commands for Google Calendar import.
## Workflow
### 1. Collect Configuration
Use `AskUserQuestion` to gather required information interactively:
**Calendar selection:**
```bash
# List available calendars
calendars=$(gcalcli list)
```
Prompt user with `AskUserQuestion`:
- **Question**: "Which calendar should events be added to?"
- **Options**: List from `gcalcli list` output (primary calendar, work calendar, etc.)
- **Header**: "Calendar"
**Timezone detection** (optional):
```bash
# Auto-detect system timezone
TZ_ABBR=$(date +%Z) # e.g., "KST", "PST"
```
If user request specifies different timezone or auto-detection fails, use `AskUserQuestion` to confirm.
**Duplicate check preference:**
- **Question**: "Check for duplicate events before importing?"
- **Options**: "Yes (recommended)" | "No (faster import)"
- **Header**: "Duplicates"
- **Default**: Yes
### 2. Parse Input
Accept input in three formats:
**Markdown table** (from github-activity skill):
```markdown
| Time | Activity |
|-------|----------|
| 09:00 | ๐จ **Commits**: 3 commits in `org/repo` |
| 17:00 | ๐ **PR Created**: [#234](url) "title" in `org/repo` |
```
**JSON file** (GitHub/Linear activity output):
```json
{
"activities": [
{
"type": "commit|pr_created|pr_merged|issue_comment|...",
"timestamp": "2025-11-01T10:30:00Z",
"title": "PR #234: Add user auth",
"url": "https://github.com/org/repo/pull/234"
}
]
}
```
**Structured data**: Direct activity objects from other skills.
Extract from markdown using regex:
- Time: `\d{2}:\d{2}`
- Icon: `๐จ|๐|โ
|๐|๐ฌ|๐`
- Title: Text in quotes or after colon
- URL: Markdown links `[#\d+](url)`
Convert timestamps to local timezone using config.
### 3. Calculate Time Blocks (Backdate Algorithm)
**Key insight**: Activity timestamps represent **completion time**, not start time.
- Commit timestamp = when p