Fetch, display, create, and delete Google Tasks using the Google Tasks API. Use when the user asks to check, view, list, get, add, create, remove, or delete their Google Tasks, to-do lists, or task items. Handles OAuth authentication automatically using bash script with curl and jq.
Resources
6Install
npx skillscat add addozhang/openclaw-forge/google-tasks Install via the SkillsCat registry.
Google Tasks Skill
Manage Google Tasks from all task lists using lightweight bash scripts.
Features
- ✅ Auto-refresh token: Automatically refreshes expired OAuth tokens
- ✅ View all tasks: Fetch tasks from all task lists
- ✅ Create tasks: Add new tasks to any list with optional due date and notes
- ✅ Delete tasks: Remove tasks by position or title
- ✅ Lightweight: Pure bash, no heavy dependencies
- ✅ Simple: Direct REST API calls, easy to understand
Quick Start
View tasks
bash scripts/get_tasks.shCreate a task
# Using default list (configured in google-tasks-config.sh)
bash scripts/create_task.sh "Task title" ["due-date"] ["notes"]
# Specifying list name
bash scripts/create_task.sh "List Name" "Task title" ["due-date"] ["notes"]Examples:
# Simple task (uses default list)
bash scripts/create_task.sh "Buy groceries"
# Task with due date (uses default list)
bash scripts/create_task.sh "Finish report" "2026-02-10"
# Task with specific list
bash scripts/create_task.sh "Work" "Finish report" "2026-02-10"
# Task with list, due date, and notes
bash scripts/create_task.sh "Personal" "Call mom" "2026-02-05" "Ask about her health"Default list configuration:
Edit google-tasks-config.sh to set your default list:
DEFAULT_LIST="Private" # Change to your preferred defaultDelete a task
bash scripts/delete_task.sh "List Name" <task-number-or-title>Examples:
# Delete by task number (position in list)
bash scripts/delete_task.sh "Work" 2
# Delete by task title
bash scripts/delete_task.sh "Inbox" "Buy groceries"Requirements
jq- JSON processor (usually pre-installed)curl- HTTP client (usually pre-installed)- Valid
token.jsonwith OAuth access token - Scopes required:
https://www.googleapis.com/auth/tasks(read + write)
First-Time Setup
If token.json doesn't exist:
- User needs OAuth credentials (
credentials.json) - See setup.md - Run the Node.js authentication flow first to generate
token.json - Then the bash script can be used for all subsequent calls
Output Format
📋 Your Google Tasks:
📌 List Name
──────────────────────────────────────────────────
1. ⬜ Task title (due: YYYY-MM-DD)
Note: Task notes if present
2. ⬜ Another task
📌 Another List
──────────────────────────────────────────────────
(no tasks)File Locations
token.json- Access/refresh tokens (workspace root)google-tasks-config.sh- Configuration file (default list setting)scripts/get_tasks.sh- Bash script to view tasksscripts/create_task.sh- Bash script to create tasksscripts/delete_task.sh- Bash script to delete tasksreferences/setup.md- Detailed setup guide
Implementation
The bash script uses:
- Google Tasks REST API directly
curlfor HTTP requestsjqfor JSON parsing- Bearer token authentication from
token.json
No Python dependencies required.
Troubleshooting
Token expired:
The skill automatically refreshes expired tokens. If you see refresh errors:
Error: Failed to refresh tokenDelete token.json and re-authenticate.
Manual token refresh:
bash scripts/refresh_token.shMissing jq:
bash: jq: command not foundInstall jq: apt-get install jq or brew install jq
For more details, see setup.md.