pm-cli-usage
Original:🇺🇸 English
Translated
Complete guide for using the pm CLI (`@jogi47/pm-cli`) to manage tasks across Asana, Notion, and other project management providers. Use when Claude needs to run pm commands to list, search, create, update, complete, or open tasks from the command line.
6installs
Sourcejogi47/pm-cli
Added on
NPX Install
npx skill4agent add jogi47/pm-cli pm-cli-usageTags
Translated version includes tags in frontmatterSKILL.md Content
View Translation Comparison →pm-cli Usage Guide
You are operating , a unified CLI for managing tasks across multiple project management tools (Asana, Notion, etc.). Use this guide to run any pm-cli command correctly.
pmTool Overview
pmnpm package: (install: )
Supported providers: (fully implemented), (planned)
@jogi47/pm-clinpm install -g @jogi47/pm-cliasananotionSetup
1. Connect a provider
bash
pm connect asana # Prompts for Personal Access Token
pm connect notion # Prompts for Notion integration tokenThe command interactively prompts for credentials. You cannot pass tokens as arguments.
2. Set credentials via environment variables (alternative)
bash
export ASANA_TOKEN=<token>
export NOTION_TOKEN=<token>Environment variables bypass the interactive flow.
pm connect3. Select a workspace (if the provider has multiple)
bash
pm workspace list -s asana
pm workspace switch -s asana # Interactive workspace pickerTask ID Format
All tasks use the format :
PROVIDER-externalId- — Asana task with external ID
ASANA-12345678901234567890 - — Notion page with external ID
NOTION-abc123def456abc123def456
The provider prefix is case-insensitive when parsing (both and work).
ASANA-123asana-123Commands Reference
pm connect <provider>
pm connect <provider>Connect to a project management provider. Prompts for credentials interactively.
| Argument | Required | Values |
|---|---|---|
| Yes | |
bash
pm connect asanaIf already connected, prints current connection info and suggests first.
pm disconnectpm disconnect <provider>
pm disconnect <provider>Remove stored credentials for a provider.
| Argument | Required | Values |
|---|---|---|
| Yes | |
bash
pm disconnect asanapm providers
pm providersList all providers and their connection status.
| Flag | Short | Description |
|---|---|---|
| Output as JSON |
bash
pm providers
pm providers --jsonpm workspace [action]
pm workspace [action]List or switch the active workspace for a provider.
| Argument | Required | Default | Values |
|---|---|---|---|
| No | | |
| Flag | Short | Default | Description |
|---|---|---|---|
| | | Provider to manage ( |
bash
pm workspace # List workspaces (default: asana)
pm workspace list -s asana # Explicit list
pm workspace switch -s asana # Interactive workspace pickerpm tasks assigned
pm tasks assignedList tasks assigned to the current user.
| Flag | Short | Default | Description |
|---|---|---|---|
| | all | Filter by provider ( |
| | | Maximum number of tasks |
| | Output as JSON | |
| | | Bypass cache, fetch fresh data |
bash
pm tasks assigned
pm tasks assigned -s asana -l 10
pm tasks assigned --json
pm tasks assigned -rpm tasks overdue
pm tasks overdueList tasks that are past their due date.
| Flag | Short | Default | Description |
|---|---|---|---|
| | all | Filter by provider ( |
| | | Maximum number of tasks |
| | Output as JSON | |
| | | Bypass cache, fetch fresh data |
bash
pm tasks overdue
pm tasks overdue -s asana --json
pm tasks overdue -rpm tasks search "<query>"
pm tasks search "<query>"Search for tasks matching a text query.
| Argument | Required | Description |
|---|---|---|
| Yes | Search string (quote if it contains spaces) |
| Flag | Short | Default | Description |
|---|---|---|---|
| | all | Filter by provider ( |
| | | Maximum number of tasks |
| | Output as JSON |
bash
pm tasks search "login bug"
pm tasks search "api" -s asana -l 5
pm tasks search "urgent" --jsonNote: does not have a flag — it always fetches live results.
search--refreshpm tasks show <id>
pm tasks show <id>Show detailed information for a single task.
| Argument | Required | Description |
|---|---|---|
| Yes | Task ID in |
| Flag | Short | Default | Description |
|---|---|---|---|
| | Output as JSON | |
| | | Open the task in the default browser |
bash
pm tasks show ASANA-1234567890
pm tasks show ASANA-1234567890 --json
pm tasks show ASANA-1234567890 -opm tasks create "<title>"
pm tasks create "<title>"Create a new task in a provider.
| Argument | Required | Description |
|---|---|---|
| Yes | Task title (quote if it contains spaces) |
| Flag | Short | Default | Description |
|---|---|---|---|
| | Task description | |
| | auto | Target provider ( |
| | Project ID to add the task to | |
| Due date ( | ||
| | Assignee email | |
| | Output as JSON |
bash
pm tasks create "Fix login bug"
pm tasks create "Update docs" --source=asana --due=2026-03-01
pm tasks create "Review PR" -d "Check the auth changes" --json
pm tasks create "Design review" -p PROJECT_ID -a user@example.comIf only one provider is connected, is inferred automatically.
--sourcepm tasks update <id>
pm tasks update <id>Update an existing task. At least one update flag is required.
| Argument | Required | Description |
|---|---|---|
| Yes | Task ID in |
| Flag | Short | Default | Description |
|---|---|---|---|
| | New task title | |
| | New task description | |
| New due date ( | ||
| New status: | ||
| | Output as JSON |
bash
pm tasks update ASANA-123456 --title "New title"
pm tasks update ASANA-123456 --due 2026-03-15 --status in_progress
pm tasks update ASANA-123456 --due none # Clear due date
pm tasks update ASANA-123456 -d "Updated notes" --jsonpm done <id> [id...]
pm done <id> [id...]Mark one or more tasks as done. Accepts multiple task IDs.
| Argument | Required | Description |
|---|---|---|
| Yes | One or more task IDs ( |
| Flag | Short | Default | Description |
|---|---|---|---|
| | Output as JSON |
bash
pm done ASANA-123456
pm done ASANA-123456 ASANA-789012 # Complete multiple tasks
pm done ASANA-123456 --jsonpm open <id>
pm open <id>Open a task in the default browser.
| Argument | Required | Description |
|---|---|---|
| Yes | Task ID in |
bash
pm open ASANA-123456
pm open NOTION-abc123Output Modes
- Table (default) — Human-readable table rendered in the terminal.
- JSON () — Machine-readable output. Use this when piping to
--json, scripting, or parsing results programmatically.jq
Caching Behavior
- Responses are cached with a 5-minute TTL.
- Use /
--refreshon-randtasks assignedto bypass the cache and fetch fresh data.tasks overdue - always fetches live results (no cache bypass flag needed).
tasks search - fetches directly from the provider.
tasks show
Unified Task Model
Every task returned by pm-cli is normalized to this shape:
id PROVIDER-externalId (e.g. ASANA-1234567890)
externalId Original provider ID
title Task title
description Task description (may contain HTML/markdown)
status todo | in_progress | done
dueDate Due date (if set)
assignee Assignee display name
project Project or parent container name
tags Tags/labels array
source asana | notion
url Direct link to the task in the provider's UI
priority low | medium | high | urgent (if available)
createdAt Creation timestamp
updatedAt Last modification timestampCommon Workflows
Check what's overdue
bash
pm tasks overdueFind a specific task by keyword
bash
pm tasks search "deploy pipeline"Create a task with a due date
bash
pm tasks create "Fix auth timeout" --due 2026-03-01Update a task's status
bash
pm tasks update ASANA-123456 --status in_progressMark tasks as done
bash
pm done ASANA-123456
pm done ASANA-123456 ASANA-789012 # Batch completeGet task details and open in browser
bash
pm tasks show ASANA-1234567890 -o
pm open ASANA-1234567890 # ShorthandGet JSON output for scripting
bash
pm tasks assigned --json
pm tasks overdue -s asana --jsonForce-refresh stale data
bash
pm tasks assigned -r
pm tasks overdue --refreshSwitch workspace when working across teams
bash
pm workspace switch -s asana