Initial commit
This commit is contained in:
12
.claude-plugin/plugin.json
Normal file
12
.claude-plugin/plugin.json
Normal file
@@ -0,0 +1,12 @@
|
||||
{
|
||||
"name": "gcal-plugin",
|
||||
"description": "Google Calendar CLI integration for scheduling events with natural language",
|
||||
"version": "1.0.0",
|
||||
"author": {
|
||||
"name": "Fucheng Warren Zhu",
|
||||
"email": "wzhu@college.harvard.edu"
|
||||
},
|
||||
"commands": [
|
||||
"./commands"
|
||||
]
|
||||
}
|
||||
3
README.md
Normal file
3
README.md
Normal file
@@ -0,0 +1,3 @@
|
||||
# gcal-plugin
|
||||
|
||||
Google Calendar CLI integration for scheduling events with natural language
|
||||
123
commands/gcal.md
Normal file
123
commands/gcal.md
Normal file
@@ -0,0 +1,123 @@
|
||||
---
|
||||
description: Guide for using the gcallm CLI to add events to Google Calendar with natural language
|
||||
---
|
||||
|
||||
# Google Calendar CLI Usage Guide
|
||||
|
||||
Use the `gcallm` CLI to add events to Google Calendar using natural language.
|
||||
|
||||
## Quick Reference
|
||||
|
||||
### Add Events
|
||||
```bash
|
||||
# Direct text input
|
||||
gcallm "Meeting with Sarah tomorrow at 3pm"
|
||||
gcallm "Lunch next Tuesday 12-1pm at Cafe Nero"
|
||||
gcallm add "Team standup Mon-Fri 9:30am"
|
||||
|
||||
# Multiple events at once
|
||||
gcallm "Team standup Mon-Fri 9:30am, Coffee with Alex Thursday 2pm"
|
||||
```
|
||||
|
||||
### From Files (Preferred for Automation)
|
||||
```bash
|
||||
# Pipe from file
|
||||
cat /tmp/gcal/events.txt | gcallm
|
||||
cat schedule.txt | gcallm
|
||||
|
||||
# Echo to stdin
|
||||
echo "Doctor appointment Friday 10am" | gcallm
|
||||
```
|
||||
|
||||
### From Clipboard
|
||||
```bash
|
||||
# Uses clipboard if no stdin/args provided
|
||||
gcallm
|
||||
```
|
||||
|
||||
### From Screenshots
|
||||
```bash
|
||||
# Parse latest screenshot on Desktop
|
||||
gcallm -s "Add events from this screenshot"
|
||||
|
||||
# Parse multiple screenshots
|
||||
gcallm --screenshots 2 "Add from last 2 screenshots"
|
||||
```
|
||||
|
||||
### Ask Questions
|
||||
```bash
|
||||
# General calendar questions
|
||||
gcallm ask "What's on my calendar today?"
|
||||
gcallm ask "When is my next meeting?"
|
||||
gcallm ask "Am I free Thursday afternoon?"
|
||||
```
|
||||
|
||||
### List Calendars
|
||||
```bash
|
||||
gcallm calendars
|
||||
```
|
||||
|
||||
## Common Workflow
|
||||
|
||||
**Recommended approach for scripts:**
|
||||
```bash
|
||||
# 1. Write event details to a temp file
|
||||
cat > /tmp/gcal/events.txt << 'EOF'
|
||||
Meeting with Prof. Smith Monday 2pm
|
||||
Coffee with Alex Tuesday 10am
|
||||
Team standup Wed-Fri 9:30am
|
||||
EOF
|
||||
|
||||
# 2. Pipe to gcallm
|
||||
cat /tmp/gcal/events.txt | gcallm
|
||||
```
|
||||
|
||||
## Natural Language Examples
|
||||
|
||||
gcallm understands flexible date/time formats:
|
||||
- "tomorrow at 3pm"
|
||||
- "next Tuesday 12-1pm"
|
||||
- "Monday through Friday at 9:30am"
|
||||
- "December 15th 2pm for 2 hours"
|
||||
- "Coffee with Alex 10am at Starbucks"
|
||||
- "Team meeting every Monday 9am"
|
||||
|
||||
## Configuration
|
||||
|
||||
```bash
|
||||
# Configure model (default: claude-sonnet-4-20250514)
|
||||
gcallm config --model claude-sonnet-4-20250514
|
||||
|
||||
# Configure custom prompt
|
||||
gcallm config --prompt "Custom extraction prompt"
|
||||
|
||||
# Show current config
|
||||
gcallm config --show
|
||||
```
|
||||
|
||||
Config stored at: `~/.config/gcallm/config.json`
|
||||
|
||||
## Verification
|
||||
|
||||
```bash
|
||||
# Verify setup
|
||||
gcallm verify
|
||||
```
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### "MCP server not configured" Error
|
||||
Ensure the Google Calendar MCP is configured in Claude Code:
|
||||
```bash
|
||||
claude mcp add gcal npx @anthropic/mcp-google-calendar -s local
|
||||
```
|
||||
|
||||
### OAuth Issues
|
||||
Re-run setup:
|
||||
```bash
|
||||
gcallm setup ~/path/to/oauth-keys.json
|
||||
```
|
||||
|
||||
## Related Commands
|
||||
|
||||
- `/gcal:setup` - Set up gcallm with OAuth credentials
|
||||
132
commands/setup.md
Normal file
132
commands/setup.md
Normal file
@@ -0,0 +1,132 @@
|
||||
---
|
||||
description: Set up gcallm CLI with Google Calendar OAuth2 credentials
|
||||
---
|
||||
|
||||
# Google Calendar CLI Setup
|
||||
|
||||
This command guides you through setting up the `gcallm` CLI for adding events to Google Calendar.
|
||||
|
||||
## Prerequisites
|
||||
|
||||
You need:
|
||||
1. OAuth2 credentials from Google Cloud Console
|
||||
2. Google Calendar MCP server configured in Claude Code
|
||||
|
||||
## Step 1: Get OAuth2 Credentials
|
||||
|
||||
1. Go to [Google Cloud Console](https://console.cloud.google.com/apis/credentials)
|
||||
2. Create a new project or select an existing one
|
||||
3. Enable the **Google Calendar API**:
|
||||
- Go to "APIs & Services" > "Enable APIs and Services"
|
||||
- Search for "Google Calendar API" and enable it
|
||||
4. Create OAuth2 credentials:
|
||||
- Go to "Credentials" > "Create Credentials" > "OAuth client ID"
|
||||
- Application type: **Desktop app**
|
||||
- Name: "Calendar CLI" (or any name)
|
||||
- Click "Create"
|
||||
5. Download the credentials JSON file
|
||||
6. Save it somewhere accessible (e.g., `~/gcp-oauth.keys.json`)
|
||||
|
||||
## Step 2: Install gcallm
|
||||
|
||||
```bash
|
||||
# Install from PyPI
|
||||
uv tool install gcallm
|
||||
|
||||
# Or with pip
|
||||
pip install gcallm
|
||||
```
|
||||
|
||||
Verify installation:
|
||||
```bash
|
||||
which gcallm
|
||||
# Should output: /Users/wz/.local/bin/gcallm
|
||||
```
|
||||
|
||||
## Step 3: Configure OAuth Path
|
||||
|
||||
Point gcallm to your OAuth credentials:
|
||||
```bash
|
||||
gcallm setup ~/gcp-oauth.keys.json
|
||||
```
|
||||
|
||||
Or interactively:
|
||||
```bash
|
||||
gcallm setup
|
||||
# Will prompt for path
|
||||
```
|
||||
|
||||
## Step 4: Configure Google Calendar MCP
|
||||
|
||||
gcallm requires the Google Calendar MCP server. Add it to Claude Code:
|
||||
|
||||
```bash
|
||||
claude mcp add gcal npx @anthropic/mcp-google-calendar -s local
|
||||
```
|
||||
|
||||
This uses the OAuth credentials you configured.
|
||||
|
||||
## Step 5: Verify Setup
|
||||
|
||||
```bash
|
||||
gcallm verify
|
||||
```
|
||||
|
||||
Expected output:
|
||||
```
|
||||
Google Calendar MCP: OK
|
||||
OAuth credentials: Configured
|
||||
```
|
||||
|
||||
Test with a simple query:
|
||||
```bash
|
||||
gcallm ask "What's on my calendar today?"
|
||||
```
|
||||
|
||||
## Configuration Files
|
||||
|
||||
```
|
||||
~/.config/gcallm/
|
||||
├── config.json # Settings (model, prompt)
|
||||
└── oauth_path # Path to OAuth credentials
|
||||
|
||||
# OAuth credentials (shared with other Google tools)
|
||||
~/gcp-oauth.keys.json # Or wherever you saved it
|
||||
```
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### "MCP server not configured" Error
|
||||
|
||||
The Google Calendar MCP server isn't set up:
|
||||
```bash
|
||||
# Add the MCP server
|
||||
claude mcp add gcal npx @anthropic/mcp-google-calendar -s local
|
||||
|
||||
# Verify it's configured
|
||||
claude mcp list
|
||||
```
|
||||
|
||||
### "OAuth credentials not found" Error
|
||||
|
||||
Re-run setup with the correct path:
|
||||
```bash
|
||||
gcallm setup /correct/path/to/oauth-keys.json
|
||||
```
|
||||
|
||||
### Authentication Failed
|
||||
|
||||
Your OAuth token may have expired. Re-authenticate:
|
||||
1. Delete existing credentials: `rm ~/.config/gcallm/*`
|
||||
2. Re-run: `gcallm setup ~/gcp-oauth.keys.json`
|
||||
3. Complete the browser authentication flow
|
||||
|
||||
### Permission Denied
|
||||
|
||||
Ensure the OAuth app has calendar scope:
|
||||
1. Go to Google Cloud Console > APIs & Services > OAuth consent screen
|
||||
2. Add scope: `https://www.googleapis.com/auth/calendar`
|
||||
|
||||
## Related Commands
|
||||
|
||||
- `/gcal` - Usage guide for gcallm CLI
|
||||
49
plugin.lock.json
Normal file
49
plugin.lock.json
Normal file
@@ -0,0 +1,49 @@
|
||||
{
|
||||
"$schema": "internal://schemas/plugin.lock.v1.json",
|
||||
"pluginId": "gh:WarrenZhu050413/Warren-Claude-Code-Plugin-Marketplace:gcal-plugin",
|
||||
"normalized": {
|
||||
"repo": null,
|
||||
"ref": "refs/tags/v20251128.0",
|
||||
"commit": "2896b89440b51091b8a7df09be28d4be1744c8ac",
|
||||
"treeHash": "d6ad792748d58e98a4ebca094eb1915daeabd114426beb31178265a11f91b77b",
|
||||
"generatedAt": "2025-11-28T10:12:56.883988Z",
|
||||
"toolVersion": "publish_plugins.py@0.2.0"
|
||||
},
|
||||
"origin": {
|
||||
"remote": "git@github.com:zhongweili/42plugin-data.git",
|
||||
"branch": "master",
|
||||
"commit": "aa1497ed0949fd50e99e70d6324a29c5b34f9390",
|
||||
"repoRoot": "/Users/zhongweili/projects/openmind/42plugin-data"
|
||||
},
|
||||
"manifest": {
|
||||
"name": "gcal-plugin",
|
||||
"description": "Google Calendar CLI integration for scheduling events with natural language",
|
||||
"version": "1.0.0"
|
||||
},
|
||||
"content": {
|
||||
"files": [
|
||||
{
|
||||
"path": "README.md",
|
||||
"sha256": "d6fcecb39c929cbf363d6186ee39baba79b4fedd4f1d61cca9cfa42e73d68cb0"
|
||||
},
|
||||
{
|
||||
"path": ".claude-plugin/plugin.json",
|
||||
"sha256": "5306a4e14c03b642666ccd119914cf1e53f6b862e4f3385d6ee4e5e3ea6efb3c"
|
||||
},
|
||||
{
|
||||
"path": "commands/setup.md",
|
||||
"sha256": "dd2e8633cd20c5872bedfa449e191c24a2c27f075d03fd8fae8b6bd85b09c4dd"
|
||||
},
|
||||
{
|
||||
"path": "commands/gcal.md",
|
||||
"sha256": "6692d27da1134896809b08722450393cd29bbe6ba815eb67775e9db2f72dd3e8"
|
||||
}
|
||||
],
|
||||
"dirSha256": "d6ad792748d58e98a4ebca094eb1915daeabd114426beb31178265a11f91b77b"
|
||||
},
|
||||
"security": {
|
||||
"scannedAt": null,
|
||||
"scannerVersion": null,
|
||||
"flags": []
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user