Skip to main content

Planer CLI

CLI tool for Microsoft Planner - manage plans, tasks, and buckets from the command line.

Installation

uv sync

Configuration

Option 1: Environment Variable

export PLANER_CLIENT_ID=<your-azure-ad-client-id>

Option 2: Config File

planer config init
planer config edit

Config file location: ~/.config/planer-cli/config.yaml

# Required
client_id: "your-azure-ad-client-id"

# Optional
tenant_id: common
output_format: table
default_plan_id: ""
watch_interval: 60
log_level: INFO

Azure AD App Registration

  1. Go to Azure Portal > App Registrations
  2. Create a new registration
  3. Set Redirect URI to https://login.microsoftonline.com/common/oauth2/nativeclient
  4. Enable "Allow public client flows"
  5. Add API permissions (Delegated):
    • Tasks.ReadWrite
    • Group.Read.All
    • User.Read
    • User.ReadBasic.All

Authentication

planer login      # Authenticate with Microsoft
planer status     # Check authentication status
planer logout     # Clear cached tokens

Commands

Tasks

# List your tasks
planer tasks my
planer tasks my --open              # Only open tasks
planer tasks my --done              # Only completed tasks
planer tasks my --overdue           # Overdue tasks
planer tasks my --due-today         # Due today
planer tasks my --this-week         # Due this week
planer tasks my --unassigned        # Unassigned tasks
planer tasks my --label 1           # Filter by label

# Sorting
planer tasks my --sort-by due-date
planer tasks my --sort-by priority
planer tasks my --sort-by title
planer tasks my --sort-by due-date --reverse

# Export
planer tasks my --export tasks.csv
planer tasks my --export tasks.json

# List tasks in plan/bucket
planer tasks list <plan-id>
planer tasks list-bucket <bucket-id>

# Get task details
planer tasks get <task-id>
planer tasks get -i                 # Interactive selection with fzf

# Create task
planer tasks create <plan-id> "Task title"
planer tasks create <plan-id> "Task title" --bucket-id <id>
planer tasks create <plan-id> "Task title" --due-date 2024-12-31
planer tasks create <plan-id> "Task title" --priority urgent
planer tasks create <plan-id> "Task title" --notes "Description here"

# Update task
planer tasks update <task-id> --title "New title"
planer tasks update <task-id> --progress 50
planer tasks update <task-id> --priority important
planer tasks update <task-id> --due-date 2024-12-31
planer tasks update <task-id> --bucket-id <id>
planer tasks update <task-id> --notes "Updated notes"
planer tasks update <task-id> --label 1 --label 2
planer tasks update <task-id> --remove-label 3
planer tasks update -i --title "New title"  # Interactive

# Complete task
planer tasks complete <task-id>
planer tasks complete -i            # Interactive selection

# Assign task
planer tasks assign <task-id> <user-id>

# Delete task
planer tasks delete <task-id>
planer tasks delete -i              # Interactive selection

Batch Operations

# Complete all tasks
planer tasks complete-all --plan-id <id>
planer tasks complete-all --bucket-id <id>
planer tasks complete-all --plan-id <id> --yes  # Skip confirmation

# Move all tasks between buckets
planer tasks move-all --from-bucket <id> --to-bucket <id>

# Delete all tasks
planer tasks delete-all --plan-id <id>
planer tasks delete-all --bucket-id <id>
planer tasks delete-all --plan-id <id> --done-only  # Only completed

Checklists

planer tasks checklist list <task-id>
planer tasks checklist add <task-id> "Checklist item"
planer tasks checklist check <task-id> <item-id>
planer tasks checklist uncheck <task-id> <item-id>
planer tasks checklist remove <task-id> <item-id>

Quick-Add (Natural Language)

planer quick "Fix bug tomorrow"
planer quick "Review PR next Monday"
planer quick "Deploy on Friday" --plan-id <id>
planer quick "Write docs" --bucket-id <id>

Requires default_plan_id in config or --plan-id flag.

Watch Mode

planer watch                    # Default 60s interval
planer watch --interval 30      # Custom interval
planer watch --no-notify        # Disable desktop notifications

Shows desktop notifications (macOS/Linux) when tasks are:

  • Added
  • Updated
  • Completed

Plans

planer plans my                         # Plans you have tasks in
planer plans list <group-id>            # Plans in a group
planer plans get <plan-id>              # Plan details
planer plans create <group-id> "Title"  # Create plan
planer plans update <plan-id> --title "New Title"
planer plans delete <plan-id>

# Labels
planer plans labels <plan-id>           # Show plan labels
planer plans set-label <plan-id> 1 "Bug"  # Set label name

Buckets

planer buckets list <plan-id>
planer buckets get <bucket-id>
planer buckets create <plan-id> "Bucket Name"
planer buckets update <bucket-id> --name "New Name"
planer buckets delete <bucket-id>

Groups

planer groups list              # List Microsoft 365 groups
planer groups get <group-id>    # Group details

Users

planer users me                 # Show your user ID
planer users list               # List users in organization
planer users list --search Max  # Search by name or email
planer users get <user-id>      # Get user by ID or email

Use these IDs with planer tasks assign <task-id> <user-id>.

Config

planer config init    # Create config template
planer config show    # Show current configuration
planer config edit    # Open in default editor

Output Formats

planer tasks my --format json
planer -f json tasks my

Shell Completions

# Bash
planer completions bash >> ~/.bashrc

# Zsh
planer completions zsh >> ~/.zshrc

# Fish
planer completions fish > ~/.config/fish/completions/planer.fish

Interactive Selection (fzf)

Commands with -i/--interactive flag use fzf for task selection:

planer tasks get -i
planer tasks complete -i
planer tasks update -i --title "New title"
planer tasks delete -i

Requires fzf to be installed:

brew install fzf      # macOS
apt install fzf       # Ubuntu/Debian

Testing

uv run pytest tests/ -v
uv run pytest tests/ --cov=planer_cli --cov-report=term-missing

License

MIT

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

planer_cli-0.2.1.tar.gz (111.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

planer_cli-0.2.1-py3-none-any.whl (41.8 kB view details)

Uploaded Python 3

File details

Details for the file planer_cli-0.2.1.tar.gz.

File metadata

  • Download URL: planer_cli-0.2.1.tar.gz
  • Upload date:
  • Size: 111.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.10

File hashes

Hashes for planer_cli-0.2.1.tar.gz
Algorithm Hash digest
SHA256 94591fdfc1c3fe93af77f0bdf10d8f1b90e09dbbee2e6264886e59a2e6693e9d
MD5 8a29abdc84ca367dcd9217ccf1ee430b
BLAKE2b-256 ced4d38d64e4fc1ec3fc932f4967d63926641df4dfe0983f10fa1d2408fe65ad

See more details on using hashes here.

File details

Details for the file planer_cli-0.2.1-py3-none-any.whl.

File metadata

  • Download URL: planer_cli-0.2.1-py3-none-any.whl
  • Upload date:
  • Size: 41.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.10

File hashes

Hashes for planer_cli-0.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 8a77ef6386435dab54b61c6e9536973426acf41dda80050190aa2a4877e03785
MD5 abc108988fa790c20c258df1f7bc0527
BLAKE2b-256 af2d3ee90f8e1a54e7d8b2d0e8bf07211dd5685f5089b75a1ee5d616563957a1

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.2.1 This release

2 files

0.2.0

2 files

0.1.0

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page