GoogCLI is a local-first Google Workspace command planner. This first slice turns concise CLI instructions into structured action plans with the Google API scopes you would need to execute them later.
gmail search <query>→ Gmail search plan + readonly scopegmail summarize <query>→ Gmail summary plan + readonly scope + post-process summary metadatagmail send to <email> subject "<subject>" body "<body>"→ Gmail send plan + send scopegmail draft to <email> subject "<subject>" body "<body>"→ Gmail draft plan + compose scopecalendar create <title> at <iso-datetime> for <minutes>m→ Calendar event creation plancalendar list on <YYYY-MM-DD>→ Calendar agenda lookup plan + readonly scopecalendar delete <event-id>→ Calendar event deletion plan + write scopecalendar update <event-id> title "<title>" at <iso-datetime> for <minutes>m→ Calendar event reschedule/update plan + write scopedrive upload <path> to <folder>→ Drive upload plandrive download <file-id> to <path>→ Drive download plan + readonly scopedrive list in <folder>→ Drive folder listing plan + metadata readonly scopedrive mkdir "<name>" in <folder>→ Drive subfolder creation plan + write scopedrive move <file-id> to <folder>→ Drive file move plan + write scopedrive copy <file-id> to <folder>→ Drive file duplication plan + write scopedrive rename <file-id> to "<name>"→ Drive file rename plan + write scopecontacts lookup <query>→ Contacts lookup plancontacts create "<name>" email <email>→ Contacts create plan + write scopecontacts update <resource-id> name "<name>" email <email>→ Contacts update plan + write scopecontacts delete <resource-id>→ Contacts delete plan + write scopesheets append <spreadsheet-id> tab <sheet-name> values "value1,value2"→ Sheets row append plan + write scopesheets update <spreadsheet-id> range <A1-notation> values "value1,value2"→ Sheets range overwrite plan + write scopesheets read <spreadsheet-id> range <A1-notation>→ Sheets range lookup plan + readonly scopedocs create "<title>" content "<text>"→ Google Docs draft plan + write scopedocs append <document-id> content "<text>"→ Google Docs append/update plan + write scopedocs read <document-id>→ Google Docs document-read plan + readonly scopedocs export <document-id> format <pdf|markdown|txt> to <path>→ Google Docs export plan + readonly scopetasks list due <YYYY-MM-DD>→ Google Tasks due-date lookup plan + readonly scopetasks create "<title>" due <YYYY-MM-DD>→ Google Tasks creation plan + write scopetasks update <task-id> title "<title>" due <YYYY-MM-DD>→ Google Tasks reschedule/update plan + write scopetasks complete <task-id>→ Google Tasks completion plan + write scopeplanfile <path>→ batch multiple Google Workspace commands into one deduplicatedworkspace-planbundle
node src/cli.js plan "gmail search from:alice@example.com has:attachment"
node src/cli.js plan "gmail summarize label:inbox newer_than:1d"
node src/cli.js plan "gmail send to alice@example.com subject \"Launch update\" body \"Draft is ready for review.\""
node src/cli.js plan "gmail draft to alice@example.com subject \"Launch update\" body \"Draft is ready for review.\""
node src/cli.js plan "calendar create Team sync at 2026-04-20T15:00 for 45m"
node src/cli.js plan "calendar list on 2026-04-20"
node src/cli.js plan "calendar delete evt_12345"
node src/cli.js plan "calendar update evt_12345 title \"Team sync\" at 2026-04-21T09:30 for 30m"
node src/cli.js plan "drive upload ./deck.pdf to /Sales"
node src/cli.js plan "drive download 1AbCdEfGh to ./downloads/deck.pdf"
node src/cli.js plan "drive list in /Sales/Q2 Pipeline"
node src/cli.js plan "drive mkdir \"Launch Assets\" in /Sales/Q2 Pipeline"
node src/cli.js plan "drive move 1AbCdEfGh to /Sales/Archive"
node src/cli.js plan "drive copy 1AbCdEfGh to /Sales/Templates"
node src/cli.js plan "drive rename 1AbCdEfGh to \"Q2 Launch Deck\""
node src/cli.js plan "contacts lookup Alice"
node src/cli.js plan "contacts create \"Alice Example\" email alice@example.com"
node src/cli.js plan "contacts update people/c123 name \"Alice Example\" email alice@example.com"
node src/cli.js plan "contacts delete people/c123"
node src/cli.js plan "sheets append 1AbCdEfGh tab Pipeline values \"Alice,Qualified,2026-04-21\""
node src/cli.js plan "sheets update 1AbCdEfGh range Pipeline!B2:D2 values \"Qualified,Proposal,2026-05-01\""
node src/cli.js plan "sheets read 1AbCdEfGh range Pipeline!A2:C20"
node src/cli.js plan "docs create \"Launch brief\" content \"Outline goals and blockers\""
node src/cli.js plan "docs append 1AbCdEfGh content \"Add stakeholder decisions\""
node src/cli.js plan "docs read 1AbCdEfGh"
node src/cli.js plan "docs export 1AbCdEfGh format markdown to ./exports/brief.md"
node src/cli.js plan "tasks list due 2026-04-30"
node src/cli.js plan "tasks create \"Prep launch checklist\" due 2026-04-30"
node src/cli.js plan "tasks update task-123 title \"Prep launch checklist\" due 2026-05-02"
node src/cli.js plan "tasks complete task-123"
node src/cli.js planfile ./workspace.plan.txtExample workspace.plan.txt:
# morning sync
gmail search label:inbox newer_than:1d
calendar list on 2026-04-20
drive upload ./deck.pdf to /Sales
planfile emits one JSON bundle with:
commands— each parsed command with preserved inputscopes— deduplicated scope list across the bundleproducts— deduplicated product list across the bundle
Example single-command output:
{
"product": "gmail",
"action": "search",
"scopes": [
"https://www.googleapis.com/auth/gmail.readonly"
],
"parameters": {
"query": "from:alice@example.com has:attachment"
}
}npm test
node src/cli.js plan "gmail summarize label:inbox newer_than:1d"
node src/cli.js plan "gmail send to alice@example.com subject \"Launch update\" body \"Draft is ready for review.\""
node src/cli.js plan "gmail draft to alice@example.com subject \"Launch update\" body \"Draft is ready for review.\""
node src/cli.js plan "calendar delete evt_12345"
node src/cli.js plan "calendar update evt_12345 title \"Team sync\" at 2026-04-21T09:30 for 30m"
node src/cli.js plan "drive list in /Sales/Q2 Pipeline"
node src/cli.js plan "drive mkdir \"Launch Assets\" in /Sales/Q2 Pipeline"
node src/cli.js plan "drive move 1AbCdEfGh to /Sales/Archive"
node src/cli.js plan "drive copy 1AbCdEfGh to /Sales/Templates"
node src/cli.js plan "drive rename 1AbCdEfGh to \"Q2 Launch Deck\""
node src/cli.js plan "contacts create \"Alice Example\" email alice@example.com"
node src/cli.js plan "contacts update people/c123 name \"Alice Example\" email alice@example.com"
node src/cli.js plan "contacts delete people/c123"
node src/cli.js plan "sheets append 1AbCdEfGh tab Pipeline values \"Alice,Qualified,2026-04-21\""
node src/cli.js plan "sheets update 1AbCdEfGh range Pipeline!B2:D2 values \"Qualified,Proposal,2026-05-01\""
node src/cli.js plan "docs create \"Launch brief\" content \"Outline goals and blockers\""
node src/cli.js plan "docs append 1AbCdEfGh content \"Add stakeholder decisions\""
node src/cli.js plan "docs read 1AbCdEfGh"
node src/cli.js plan "docs export 1AbCdEfGh format pdf to ./exports/brief.pdf"
node src/cli.js plan "tasks list due 2026-04-30"
node src/cli.js plan "tasks create \"Prep launch checklist\" due 2026-04-30"
node src/cli.js plan "tasks update task-123 title \"Prep launch checklist\" due 2026-05-02"
node src/cli.js plan "tasks complete task-123"
node src/cli.js planfile ./workspace.plan.txt