Permission-first AI agent runtime for Google Workspace. Ports the LARC/OpenClaw governance model (disclosure chain, execution gates, queue/ingress) to Gmail, Calendar, Drive, Sheets, Tasks, and People APIs with Claude Code as the execution engine. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
6.9 KiB
6.9 KiB
| name | version | description |
|---|---|---|
| garc-runtime | 0.1.0 | GARC — Google Workspace Agent Runtime. Use when performing office-work tasks on Gmail, Google Drive, Sheets, Calendar, or Tasks through the GARC CLI. |
GARC Runtime Skill
When to use this skill
Use GARC when the user asks you to:
- Send emails, search Gmail, read emails
- Create or update Google Calendar events, check availability
- Read/write Google Drive files, upload/download, create docs
- Read/write Google Sheets data
- Manage Google Tasks
- Check OAuth scope requirements for a GWS task
- Manage the agent memory/context
- Register or manage agents
Pre-flight checklist
Before any GARC operation:
-
Check config
garc statusAll items must be ✅. If not, guide through
garc setup all. -
Infer scopes (for new task types)
garc auth suggest "<task description>"Note the gate level. Act accordingly.
-
Check execution gate
none→ proceed immediatelypreview→ show user what will happen, confirm before executingapproval→ create approval request, wait for human approval
Gmail Operations
Send email
garc gmail send \
--to recipient@example.com \
--subject "Subject here" \
--body "Body text here" \
[--cc cc@example.com] \
[--html] # for HTML body
Gate: preview — Always confirm recipient and content with user before sending.
Search emails
garc gmail search "from:alice@co.com subject:invoice" --max 10
garc gmail search "after:2026/04/01 has:attachment" --body
Gate: none
Read email
garc gmail read <message_id>
Inbox
garc gmail inbox --unread --max 20
Draft
garc gmail draft --to someone@co.com --subject "Draft title" --body "..."
Google Calendar Operations
List events
garc calendar today # Today's events
garc calendar week # This week
garc calendar list --days 14 # Next 14 days
garc calendar list --query "Standup" # Filter by keyword
Gate: none
Create event
garc calendar create \
--summary "Team Meeting" \
--start "2026-04-16T14:00:00" \
--end "2026-04-16T15:00:00" \
--description "Weekly sync" \
--location "Google Meet" \
--attendees alice@co.com bob@co.com \
--timezone "Asia/Tokyo"
Gate: preview — Show user the event details before creating.
Check free/busy
garc calendar freebusy \
--start 2026-04-16 \
--end 2026-04-17 \
--emails alice@co.com bob@co.com
Gate: none
Quick add (natural language)
garc calendar quick-add "Lunch with Alice tomorrow at 12:30pm"
Gate: preview
Google Drive Operations
List/search
garc drive list --folder-id 1xxxxx
garc drive search "Q1 report" --type doc
garc drive info <file_id>
Gate: none
Download
garc drive download --file-id 1xxxxx --output ./local_file.txt
garc drive download --folder-id 1xxxxx --filename "SOUL.md" --output ~/.garc/SOUL.md
Gate: none
Upload
garc drive upload ./report.pdf --folder-id 1xxxxx
garc drive upload ./data.csv --folder-id 1xxxxx --convert # Convert to Google Sheet
Gate: preview
Create document / folder
garc drive create-doc "Meeting Notes 2026-04-15" --folder-id 1xxxxx
garc drive create-folder "Project Alpha" --parent-id 1xxxxx
Gate: preview
Share
garc drive share 1xxxxx --email colleague@co.com --role writer
Gate: approval (sharing = external visibility)
Google Sheets Operations
Read data
garc sheets info # Show all tabs and dimensions
garc sheets read --range "memory!A:E"
garc sheets read --range "agents!A:H" --format json
garc sheets search --sheet memory --query "expense"
Gate: none
Write data
garc sheets append --sheet memory --values '["main","2026-04-15T10:00:00Z","key decision: use GARC","manual",""]'
garc sheets write --range "agents!A2:F2" --values '[["crm-agent","claude-sonnet-4-6","...","CRM agent","writer","active"]]'
Gate: preview
Memory Operations
garc memory pull # Sync Sheets → local
garc memory push "important context: ..."
garc memory search "client A"
Task Operations
garc task list
garc task list --completed --format json
garc task create "Write Q1 report" --due 2026-04-30 --notes "Include section on revenue"
garc task update <task_id> --due 2026-05-01
garc task done <task_id>
garc task delete <task_id>
garc task clear-completed
garc task tasklists # List all task lists
Gate: preview for create/update/delete — confirm with user before modifying tasks.
People & Contacts
garc people search "Alice" # Search personal contacts
garc people directory "engineering" # Search org directory (GWS)
garc people lookup "Bob Smith" # Quick name → email lookup
garc people list --max 50 # List all contacts
garc people show <contact_id>
garc people create --name "Jane Doe" --email jane@co.com --company "Acme"
garc people update <contact_id> --title "Senior Manager"
Gate: none for search/read, preview for create/update, approval for delete.
Agent Management
garc agent list # Show registered agents
garc agent register # Register from agents.yaml
garc agent show main # Show specific agent details
Scope & Gate Reference
| Operation | Gate | Scopes needed |
|---|---|---|
| Read email | none | gmail.readonly |
| Send email | preview | gmail.send |
| Delete email | approval | gmail.modify |
| Read calendar | none | calendar.readonly |
| Create event | preview | calendar |
| Delete event | approval | calendar |
| Read Drive | none | drive.readonly |
| Upload to Drive | preview | drive.file |
| Delete/share Drive | approval | drive |
| Read Sheets | none | spreadsheets.readonly |
| Write Sheets | preview | spreadsheets |
| Read Tasks | none | tasks.readonly |
| Create/update Tasks | preview | tasks |
| Delete Tasks | approval | tasks |
| Read Contacts | none | contacts.readonly |
| Create/update Contacts | preview | contacts |
| Delete Contacts | approval | contacts |
| Search Directory | none | directory.readonly |
| Create expense | approval | spreadsheets + drive.file + gmail.send |
Error patterns
| Error | Action |
|---|---|
credentials.json not found |
Guide user to Google Cloud Console |
Token refresh failed |
Run garc auth login --profile backoffice_agent |
403 insufficientPermissions |
Run garc auth suggest "<task>" to identify missing scopes, then re-login |
API not enabled |
Tell user to enable the specific API in Google Cloud Console |
Sheets tab missing |
Run garc setup sheets |
| Rate limit (429) | Wait and retry (garc has built-in retry with backoff) |