with one click
google-tasks
Manage Google Tasks via gog CLI or Google Tasks API.
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Menu
Manage Google Tasks via gog CLI or Google Tasks API.
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Based on SOC occupation classification
Persistent agent memory via OpenViking — store and retrieve context across sessions using a tiered filesystem database. L0/L1/L2 context layers with semantic search.
Windows Task Scheduler — create, list, manage, and delete scheduled tasks for automated workflows, zero dependencies.
Browser integration — open URLs, read bookmarks and history from Edge/Chrome, get active tabs, list downloads, zero dependencies.
Local AI inference via Ollama — run LLMs on-device, manage models, detect NPU/GPU/DirectML hardware, zero cloud dependencies.
System diagnostics — CPU, RAM, battery, GPU, network, processes, OS info via WMI, zero dependencies.
Read and search Windows Sticky Notes — access your notes via the local SQLite database using built-in winsqlite3.dll, zero dependencies.
| name | google-tasks |
| description | Manage Google Tasks via gog CLI or Google Tasks API. |
| metadata | {"openclaw":{"emoji":"📋","requires":{"anyBins":["gog","curl"]}}} |
Manage Google Tasks for creating, listing, completing, and organizing tasks.
Supports two backends: gog CLI (recommended) or direct API via curl.
If you have gog installed and configured (gog auth add), use the gog tasks subcommands.
# If gog is already configured for Gmail/Calendar, add Tasks scope:
gog auth add you@gmail.com --services tasks
export GOG_ACCOUNT=you@gmail.com
gog tasks list --json
gog tasks get <tasklistId> --json
Show only incomplete tasks:
gog tasks get <tasklistId> --json --show-completed=false
gog tasks create <tasklistId> --title "Buy groceries"
With due date and notes:
gog tasks create <tasklistId> --title "Review PR" --notes "Check auth changes" --due "2026-02-15T00:00:00Z"
gog tasks done <tasklistId> <taskId>
gog tasks undo <tasklistId> <taskId>
gog tasks update <tasklistId> <taskId> --title "Updated title"
gog tasks delete <tasklistId> <taskId>
gog tasks clear <tasklistId>
For environments without gog, use the REST API directly.
client_secret.json, note the client_id and client_secretOpen in browser:
https://accounts.google.com/o/oauth2/v2/auth?client_id=YOUR_CLIENT_ID&redirect_uri=http://localhost:8080&response_type=code&scope=https://www.googleapis.com/auth/tasks&access_type=offline
After authorization, exchange the code for tokens:
curl -s -X POST https://oauth2.googleapis.com/token \
-d "client_id=$GTASKS_CLIENT_ID" \
-d "client_secret=$GTASKS_CLIENT_SECRET" \
-d "code=AUTHORIZATION_CODE" \
-d "redirect_uri=http://localhost:8080" \
-d "grant_type=authorization_code" | jq .
Save the refresh_token. Refresh access tokens as needed:
ACCESS_TOKEN=$(curl -s -X POST https://oauth2.googleapis.com/token \
-d "client_id=$GTASKS_CLIENT_ID" \
-d "client_secret=$GTASKS_CLIENT_SECRET" \
-d "refresh_token=$GTASKS_REFRESH_TOKEN" \
-d "grant_type=refresh_token" | jq -r '.access_token')
curl -s -H "Authorization: Bearer $ACCESS_TOKEN" \
"https://tasks.googleapis.com/tasks/v1/users/@me/lists" \
| jq '.items[] | {id, title}'
curl -s -H "Authorization: Bearer $ACCESS_TOKEN" \
"https://tasks.googleapis.com/tasks/v1/lists/$LIST_ID/tasks" \
| jq '.items[] | {id, title, status, due, notes}'
Show only incomplete tasks:
curl -s -H "Authorization: Bearer $ACCESS_TOKEN" \
"https://tasks.googleapis.com/tasks/v1/lists/$LIST_ID/tasks?showCompleted=false" \
| jq '.items[] | {id, title, due}'
curl -s -X POST \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"title": "Buy groceries", "notes": "Milk, eggs, bread", "due": "2026-02-15T00:00:00.000Z"}' \
"https://tasks.googleapis.com/tasks/v1/lists/$LIST_ID/tasks" \
| jq '{id, title, status}'
curl -s -X PATCH \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"status": "completed"}' \
"https://tasks.googleapis.com/tasks/v1/lists/$LIST_ID/tasks/$TASK_ID" \
| jq '{id, title, status}'
curl -s -X PATCH \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"title": "Updated title", "notes": "Updated notes"}' \
"https://tasks.googleapis.com/tasks/v1/lists/$LIST_ID/tasks/$TASK_ID" \
| jq '{id, title}'
curl -s -X DELETE \
-H "Authorization: Bearer $ACCESS_TOKEN" \
"https://tasks.googleapis.com/tasks/v1/lists/$LIST_ID/tasks/$TASK_ID"
# Returns 204 No Content on success
curl -s -X POST \
-H "Authorization: Bearer $ACCESS_TOKEN" \
"https://tasks.googleapis.com/tasks/v1/lists/$LIST_ID/clear"
| Field | Type | Description |
|---|---|---|
title | string | Task title (required for create) |
notes | string | Additional details |
status | string | needsAction or completed |
due | string | RFC 3339 timestamp (e.g., 2026-02-15T00:00:00.000Z) |
completed | string | Completion date (auto-set when status = completed) |
parent | string | Parent task ID (for subtasks) |
position | string | Position among siblings |
needsAction and completed.gog CLI is recommended when available — it handles OAuth automatically and supports --json output.curl and jq.parent field when creating tasks.