Google Tasks CLI Skill
name: gtasks-cli
by bro3886 · published 2026-03-22
$ claw add gh:bro3886/bro3886-gtasks-cli---
name: gtasks-cli
description: Manage Google Tasks from the command line - view, create, update, delete tasks and task lists. Use when the user asks to interact with Google Tasks, manage to-do items, create task lists, mark tasks complete, or check their Google Tasks.
homepage: https://github.com/BRO3886/gtasks
license: MIT
compatibility: Requires gtasks CLI tool to be installed and authenticated
metadata:
author: BRO3886
version: "1.0"
required-env:
- name: GTASKS_CLIENT_ID
description: Google OAuth2 client ID for the gtasks app
- name: GTASKS_CLIENT_SECRET
description: Google OAuth2 client secret for the gtasks app
required-config-paths:
- path: ~/.gtasks/token.json
description: OAuth2 token stored after successful login; permissions should be 0600
allowed-tools: Bash(gtasks:*)
---
# Google Tasks CLI Skill
This skill enables you to manage Google Tasks directly from the command line using the `gtasks` CLI tool.
Prerequisites
Before using any commands, ensure the following requirements are met:
1. GTasks Installation
Check if gtasks is installed on the system:
# Cross-platform check (works on macOS, Linux, Windows Git Bash)
gtasks --version 2>/dev/null || gtasks.exe --version 2>/dev/null || echo "gtasks not found"
# Or use which/where commands
# macOS/Linux:
which gtasks
# Windows (Command Prompt):
where gtasks
# Windows (PowerShell):
Get-Command gtasks**If gtasks is not installed:**
1. Download the binary for your system from [GitHub Releases](https://github.com/BRO3886/gtasks/releases)
2. Install it:
- **macOS/Linux**: Move to `/usr/local/bin` or add to PATH
- **Windows**: Add to a folder in your PATH environment variable
3. Verify installation: `gtasks --version`
**IMPORTANT for Agents:** Always check if gtasks is installed before attempting to use it. If the command is not found, inform the user and provide installation instructions.
2. Environment Variables
Set up Google OAuth2 credentials as environment variables:
export GTASKS_CLIENT_ID="your-client-id.apps.googleusercontent.com"
export GTASKS_CLIENT_SECRET="your-client-secret"**How to get credentials:**
1. Go to [Google Cloud Console](https://console.cloud.google.com/)
2. Create a new project or select an existing one
3. Enable the Google Tasks API
4. Create OAuth2 credentials (Application type: "Desktop app")
5. Note the authorized redirect URIs that gtasks uses:
- `http://localhost:8080/callback`
- `http://localhost:8081/callback`
- `http://localhost:8082/callback`
- `http://localhost:9090/callback`
- `http://localhost:9091/callback`
**For persistent setup**, use a secrets manager or a `~/.env` file with restrictive permissions — do not commit these values to version control or add them to shared shell profile files:
# Recommended: store in a file with restricted permissions
echo 'export GTASKS_CLIENT_ID="your-client-id"' >> ~/.gtasks_env
echo 'export GTASKS_CLIENT_SECRET="your-client-secret"' >> ~/.gtasks_env
chmod 600 ~/.gtasks_env
# Source it from your shell profile
echo 'source ~/.gtasks_env' >> ~/.zshrc2. Authentication
Once environment variables are set, authenticate with Google:
gtasks loginThis will open a browser for OAuth2 authentication. The token is stored in `~/.gtasks/token.json` with 0600 permissions. Verify with `ls -la ~/.gtasks/token.json`. If you no longer need access, run `gtasks logout` to revoke and delete the token.
Core Concepts
Command Structure
All commands follow this pattern:
gtasks [command] [subcommand] [flags] [arguments]Authentication
Login
gtasks loginOpens browser for Google OAuth2 authentication. Required before using any other commands.
Logout
gtasks logoutRemoves stored credentials from `~/.gtasks/token.json`.
Task List Management
View All Task Lists
gtasks tasklists viewDisplays all task lists with numbered indices.
**Output Example:**
[1] My Tasks
[2] Work
[3] PersonalCreate a Task List
gtasks tasklists add -t "Work Projects"
gtasks tasklists add --title "Shopping List"Creates a new task list with the specified title.
**Flags:**
Delete a Task List
gtasks tasklists rmInteractive prompt to select and delete a task list.
Update Task List Title
gtasks tasklists update -t "New Title"Interactive prompt to select a task list and update its title.
**Flags:**
Task Management
All task commands can optionally specify a task list using the `-l` flag. If omitted, you'll be prompted to select one interactively.
View Tasks
**Basic view:**
gtasks tasks view
gtasks tasks view -l "Work"**Include completed tasks:**
gtasks tasks view --include-completed
gtasks tasks view -i**Show only completed tasks:**
gtasks tasks view --completed**Sort tasks:**
gtasks tasks view --sort=due # Sort by due date
gtasks tasks view --sort=title # Sort by title
gtasks tasks view --sort=position # Sort by position (default)**Output formats:**
gtasks tasks view --format=table # Table format (default)
gtasks tasks view --format=json # JSON output
gtasks tasks view --format=csv # CSV output**Table Output Example:**
Tasks in Work:
No Title Description Status Due
1 Finish report Q4 analysis pending 25 December 2024
2 Team meeting Weekly sync pending -
3 Code review PR #123 completed 20 December 2024**JSON Output Example:**
[
{
"number": 1,
"title": "Finish report",
"description": "Q4 analysis",
"status": "pending",
"due": "2024-12-25"
}
]Create a Task
**Interactive mode:**
gtasks tasks add
gtasks tasks add -l "Work"Prompts for title, notes, and due date.
**Flag mode:**
gtasks tasks add -t "Buy groceries"
gtasks tasks add -t "Finish report" -n "Q4 analysis" -d "2024-12-25"
gtasks tasks add -t "Call dentist" -d "tomorrow"
gtasks tasks add -t "Team meeting" -d "Dec 25"**Flags:**
**Date Format Examples:**
The date parser supports many formats:
See [dateparse examples](https://github.com/araddon/dateparse#extended-example) for all supported formats.
Mark Task as Complete
**With task number:**
gtasks tasks done 1
gtasks tasks done 3 -l "Work"**Interactive mode:**
gtasks tasks done
gtasks tasks done -l "Personal"Prompts to select a task from the list.
Delete a Task
**With task number:**
gtasks tasks rm 2
gtasks tasks rm 1 -l "Shopping"**Interactive mode:**
gtasks tasks rm
gtasks tasks rm -l "Work"Prompts to select a task to delete.
View Task Details
**With task number:**
gtasks tasks info 1
gtasks tasks info 3 -l "Work"**Interactive mode:**
gtasks tasks info
gtasks tasks info -l "Personal"**Output Example:**
Task: Finish report
Status: Needs action
Due: 25 December 2024
Notes: Complete Q4 analysis and submit to manager
Links:
- https://docs.google.com/document/d/...
View in Google Tasks: https://tasks.google.com/...Common Workflows
Quick Task Creation
When a user says "add a task to my work list":
gtasks tasks add -l "Work" -t "Task title"Check Today's Tasks
gtasks tasks view --sort=dueComplete Multiple Tasks
gtasks tasks done -l "Work"
# Interactive prompt appears, select task
gtasks tasks done -l "Work"
# Repeat as neededView All Tasks Across Lists
Run view command multiple times for each list, or first list all task lists:
gtasks tasklists view
gtasks tasks view -l "Work"
gtasks tasks view -l "Personal"Export Tasks
gtasks tasks view --format=json > tasks.json
gtasks tasks view --format=csv > tasks.csvBest Practices
1. **Always check authentication first**: If commands fail with authentication errors, run `gtasks login`
2. **Use task list flag for automation**: When scripting or when the user specifies a list name, use `-l` flag to avoid interactive prompts
3. **Leverage flexible date parsing**: The `--due` flag accepts natural language dates like "tomorrow", "next week", etc.
4. **Use appropriate output format**:
- Table format for human-readable output
- JSON for parsing/integration with other tools
- CSV for spreadsheet import
5. **Task numbers are ephemeral**: Task numbers change when tasks are added, completed, or deleted. Always view the list first to get current numbers.
6. **Handle missing lists gracefully**: If a user specifies a non-existent list name, the command will error. Always verify list names first with `gtasks tasklists view`.
Error Handling
Common errors and solutions:
- First, ensure environment variables are set: `echo $GTASKS_CLIENT_ID`
- If variables are not set, export them (see Prerequisites section)
- Then run `gtasks login` to authenticate
Examples
Example 1: Create a shopping list and add items
gtasks tasklists add -t "Shopping"
gtasks tasks add -l "Shopping" -t "Milk"
gtasks tasks add -l "Shopping" -t "Bread"
gtasks tasks add -l "Shopping" -t "Eggs"Example 2: Review and complete work tasks
gtasks tasks view -l "Work" --sort=due
gtasks tasks done 1 -l "Work"Example 3: Add task with deadline
gtasks tasks add -l "Work" -t "Submit proposal" -n "Include budget and timeline" -d "next Friday"Example 4: Export completed tasks
gtasks tasks view --completed --format=json -l "Work" > completed_work.jsonTips for Agents
Before Running Any Commands
1. **Check gtasks installation first**:
```bash
# Try to run gtasks version check
gtasks --version 2>/dev/null || gtasks.exe --version 2>/dev/null
```
If this fails, inform the user that gtasks is not installed and provide installation instructions from the Prerequisites section.
2. **Verify environment variables are set**:
```bash
# Check if variables exist (macOS/Linux)
[ -n "$GTASKS_CLIENT_ID" ] && echo "GTASKS_CLIENT_ID is set" || echo "GTASKS_CLIENT_ID is not set"
[ -n "$GTASKS_CLIENT_SECRET" ] && echo "GTASKS_CLIENT_SECRET is set" || echo "GTASKS_CLIENT_SECRET is not set"
# Windows PowerShell
if ($env:GTASKS_CLIENT_ID) { "GTASKS_CLIENT_ID is set" } else { "GTASKS_CLIENT_ID is not set" }
if ($env:GTASKS_CLIENT_SECRET) { "GTASKS_CLIENT_SECRET is set" } else { "GTASKS_CLIENT_SECRET is not set" }
```
3. **Check authentication status**:
```bash
gtasks tasklists view &>/dev/null && echo "Authenticated" || echo "Not authenticated - run 'gtasks login'"
```
General Tips
More tools from the same signal band
Order food/drinks (点餐) on an Android device paired as an OpenClaw node. Uses in-app menu and cart; add goods, view cart, submit order (demo, no real payment).
Sign plugins, rotate agent credentials without losing identity, and publicly attest to plugin behavior with verifiable claims and authenticated transfers.
The philosophical layer for AI agents. Maps behavior to Spinoza's 48 affects, calculates persistence scores, and generates geometric self-reports. Give your...