Add documentation, PreCompact hook, gcal improvements, and marketplace
Documentation: - Add commands/README.md documenting all slash commands - Add skills/README.md documenting skill structure and patterns - Add .claude-plugin/marketplace.json for local dev testing Hooks: - Add PreCompact hook to remind about context preservation - Update hooks/README.md with new hook GCal improvements: - Add scripts/next_event.py for single event lookup - Update SKILL.md with simplified format and allowed-tools: Read 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -1,48 +1,59 @@
|
||||
---
|
||||
name: gcal
|
||||
description: Google Calendar read access — agenda overview, event details, smart summaries
|
||||
description: Google Calendar read access — agenda, events, schedule. Use when asked about calendar, meetings, schedule, or what's on today/tomorrow.
|
||||
allowed-tools:
|
||||
- Bash
|
||||
- Read
|
||||
---
|
||||
|
||||
# Google Calendar Skill
|
||||
|
||||
Access Google Calendar via Python API. Uses OAuth credentials at `~/.gmail-mcp/`.
|
||||
|
||||
## Command Routing
|
||||
## Quick Commands
|
||||
|
||||
### 1. Exact Subcommand Match (priority)
|
||||
```bash
|
||||
GCAL_PY=~/.claude/mcp/gmail/venv/bin/python
|
||||
SCRIPTS=~/.claude/skills/gcal/scripts
|
||||
|
||||
| Input | Action |
|
||||
|-------|--------|
|
||||
| `today` | Today's agenda |
|
||||
| `tomorrow` | Tomorrow's agenda |
|
||||
| `week` | Next 7 days, grouped by day |
|
||||
| `next` | Next upcoming event only |
|
||||
| `summary` | Sonnet-powered week analysis |
|
||||
# Today's agenda
|
||||
$GCAL_PY $SCRIPTS/agenda.py today
|
||||
|
||||
### 2. Natural Language Fallback
|
||||
# Tomorrow's agenda
|
||||
$GCAL_PY $SCRIPTS/agenda.py tomorrow
|
||||
|
||||
| Input | Routes To |
|
||||
|-------|-----------|
|
||||
| "what's on today", "today's meetings" | today |
|
||||
| "this week", "next 7 days" | week |
|
||||
| "next meeting", "what's next" | next |
|
||||
| "am I busy tomorrow", "tomorrow's schedule" | tomorrow |
|
||||
| "overview", "summarize my week" | summary |
|
||||
# This week (7 days)
|
||||
$GCAL_PY $SCRIPTS/agenda.py week
|
||||
|
||||
### 3. Smart Default (no args)
|
||||
# Next event only
|
||||
$GCAL_PY $SCRIPTS/next_event.py
|
||||
```
|
||||
|
||||
## Script Reference
|
||||
|
||||
| Script | Purpose | Args |
|
||||
|--------|---------|------|
|
||||
| `agenda.py` | List events for time range | `today`, `tomorrow`, `week` |
|
||||
| `next_event.py` | Next upcoming event | none |
|
||||
|
||||
## Request Routing
|
||||
|
||||
| User Request | Script | Args |
|
||||
|--------------|--------|------|
|
||||
| "What's on today?" | `agenda.py` | `today` |
|
||||
| "Tomorrow's schedule" | `agenda.py` | `tomorrow` |
|
||||
| "This week" | `agenda.py` | `week` |
|
||||
| "Next meeting" | `next_event.py` | none |
|
||||
| "Am I free at 3pm?" | `agenda.py` | `today` (then analyze) |
|
||||
|
||||
### Smart Default (no args)
|
||||
|
||||
- Before 6pm → today
|
||||
- After 6pm → tomorrow
|
||||
|
||||
### 4. Ambiguous Input
|
||||
## Delegation Helper (Advanced)
|
||||
|
||||
Ask for clarification rather than guess.
|
||||
|
||||
## Delegated Operations
|
||||
|
||||
Use the delegation helper for cost-efficient operations:
|
||||
For LLM-assisted operations:
|
||||
|
||||
```bash
|
||||
GCAL_PY=~/.claude/mcp/gmail/venv/bin/python
|
||||
@@ -50,27 +61,13 @@ HELPER=~/.claude/mcp/delegation/gcal_delegate.py
|
||||
|
||||
# Haiku tier - fetch and format
|
||||
$GCAL_PY $HELPER today
|
||||
$GCAL_PY $HELPER tomorrow
|
||||
$GCAL_PY $HELPER week
|
||||
$GCAL_PY $HELPER next
|
||||
|
||||
# Sonnet tier - analyze (spawns claude --model sonnet)
|
||||
$GCAL_PY $HELPER summary
|
||||
```
|
||||
|
||||
## Delegation Tiers
|
||||
|
||||
| Subcommand | Tier | Reason |
|
||||
|------------|------|--------|
|
||||
| today, tomorrow, week, next | Haiku | Fetch + format only |
|
||||
| summary | Sonnet | Requires understanding/analysis |
|
||||
|
||||
## Output Format
|
||||
|
||||
The helper returns JSON. Format for user as:
|
||||
|
||||
### Simple List (today/tomorrow/next)
|
||||
|
||||
```
|
||||
📅 Today — Thursday, Jan 2
|
||||
|
||||
@@ -83,49 +80,25 @@ The helper returns JSON. Format for user as:
|
||||
No more events today.
|
||||
```
|
||||
|
||||
### Grouped by Day (week)
|
||||
|
||||
```
|
||||
📅 This Week — Jan 2-8
|
||||
|
||||
━━━ Thursday, Jan 2 ━━━
|
||||
9:00 AM Team standup (30m)
|
||||
2:00 PM Project review (1h)
|
||||
|
||||
━━━ Friday, Jan 3 ━━━
|
||||
11:00 AM Client call (1h)
|
||||
```
|
||||
|
||||
### Context Fields (show when available)
|
||||
### Context Fields
|
||||
|
||||
- 📍 Location or meeting link
|
||||
- 👥 Attendee count
|
||||
- 📝 Description snippet (first ~50 chars)
|
||||
- 📝 Description snippet (if relevant)
|
||||
|
||||
## Error Handling
|
||||
|
||||
### Missing Calendar Scope
|
||||
|
||||
If helper reports scope error:
|
||||
|
||||
```
|
||||
Calendar access not authorized. To fix:
|
||||
1. Delete cached token: rm ~/.gmail-mcp/token.json
|
||||
2. Run /gcal today to re-authenticate with Calendar scope
|
||||
```
|
||||
|
||||
### No Events
|
||||
|
||||
```
|
||||
📅 Today — Thursday, Jan 2
|
||||
|
||||
No events scheduled.
|
||||
```
|
||||
|
||||
## Policy
|
||||
|
||||
- Read-only operations only
|
||||
- Show context (attendees, location) by default
|
||||
- Summarize results, don't dump raw data
|
||||
- Start with lowest capable model tier
|
||||
- Escalate only when task complexity requires
|
||||
- **Read-only** operations only
|
||||
- Show **context** (attendees, location) by default
|
||||
- **Summarize** results, don't dump raw data
|
||||
- Start with **lowest capable** model tier
|
||||
|
||||
Reference in New Issue
Block a user