A colorful command-line client for Clickup written in Python 3.10+.
Project description
QuickUp!
A simple, lightweight, and beautiful console-based client for ClickUp that lets you view, filter, and manage tasks directly from your command line. View tasks grouped by status, assignee, or priority, update task statuses, and auto-detect your current sprint. It features interactive mode for easy navigation and caching for fast performance.
Features
- Task Listing: View all tasks from a ClickUp list with color-coded status groups
- Filtering: Filter tasks by assignee, priority, or due date
- Grouping: Group tasks by status, assignee, or priority
- Task Details: View detailed information about a specific task
- Task Updates: Update task status with confirmation display
- Sprint Detection: Auto-detect current sprint/iteration lists
- Interactive Mode: Navigate through Team → Space → Project → List hierarchy with prompts
- Caching: Disk-based caching for improved performance (24h for teams/lists, 5min for tasks)
Installation
pip install quickup
Quick Start
Set your ClickUp API token:
export CLICKUP_TOKEN=your_token_here
Or create a .env file in your project directory:
CLICKUP_TOKEN=your_token_here
List tasks from a specific list:
quickup --team <team_id> --list <list_id>
Commands
quickup (default) - List Tasks
List all tasks from a ClickUp list, grouped by status.
# Basic usage
quickup --team <team_id> --list <list_id>
# With filters
quickup --team <team_id> --list <list_id> --assignee john --priority high
# Group by assignee
quickup --team <team_id> --list <list_id> --group-by assignee
# Interactive mode
quickup -i
# Bypass cache
quickup --team <team_id> --list <list_id> --no-cache
Options:
--team: Team ID--space: Space ID--project: Project ID--list: List ID--assignee: Filter by assignee username (case-insensitive)--priority: Filter by priority (low, normal, high, urgent)--due-before: Filter tasks due before date (YYYY-MM-DD)--group-by: Group by status (default), assignee, or priority--closed: Include closed/done tasks--no-cache: Bypass cache and fetch from API-i, --interactive: Enable interactive mode
quickup sprint - Current Sprint Tasks
Auto-detects the current sprint list by searching for lists containing "sprint" or "iteration" in the name.
# List tasks from current sprint
quickup sprint --team <team_id>
# With filters
quickup sprint --team <team_id> --assignee jane --group-by priority
Options:
--team: Team ID--space: Space ID--project: Project ID--assignee: Filter by assignee username--priority: Filter by priority--due-before: Filter tasks due before date--group-by: Group by status, assignee, or priority--closed: Include closed/done tasks--no-cache: Bypass cache-i, --interactive: Enable interactive mode
quickup task <task_id> - Task Details
Show detailed information about a specific task.
# Show task details
quickup task <task_id>
# With team specification
quickup task <task_id> --team <team_id>
Options:
task_id: ClickUp task ID--team: Team ID (required if multiple teams exist)-i, --interactive: Enable interactive mode
quickup update <task_id> - Update Task Status
Update the status of a specific task.
# Update task status
quickup update <task_id> --status "In Progress"
# With team specification
quickup update <task_id> --status "Done" --team <team_id>
Options:
task_id: ClickUp task ID--status: New status name (e.g., "To Do", "In Progress", "Done")--team: Team ID (required if multiple teams exist)-i, --interactive: Enable interactive mode
Interactive Mode
When multiple teams, spaces, projects, or lists exist, use -i flag to enable interactive selection:
quickup -i
This will prompt you to select:
- Team (if multiple teams exist)
- Space (if multiple spaces exist)
- Project (if multiple projects exist)
- List (if multiple lists exist)
Output Format
Tasks are displayed with:
- Bold task name
- Blue underlined URL
- Priority badge (color-coded)
- Assignee names in parentheses
Status groups are displayed with color-coded headers matching the ClickUp status colors.
At the bottom of the output, a suggestion is shown in gray text with the command to repeat the same query:
Run again: quickup --assignee john --priority high --group-by priority
This makes it easy to re-run the same filtered/grouped view without typing the full command again.
Caching
QuickUp! uses disk-based caching to reduce API calls:
- Teams: 24 hours TTL
- Lists: 24 hours TTL
- Tasks: 5 minutes TTL
Cache location: ~/.quickup/cache/
Use --no-cache to bypass cache and fetch fresh data from the API.
Exit Codes
| Code | Meaning |
|---|---|
| 1 | Token error or general ClickUp error |
| 2 | Team not found or ambiguous team |
| 3 | List not found |
| 4 | Network error |
| 5 | API error |
| 99 | Unexpected error |
Requirements
- Python 3.10+
- ClickUp API token
Dependencies
- cyclopts - CLI framework
- pyclickup - ClickUp API wrapper
- colorist - Terminal colors
- inquirer - Interactive prompts
- sqlite3 - Caching layer (Python standard library)
- python-dotenv - Environment loading
Development
Running Tests
Run the test suite:
hatch run test:test
Run tests with coverage:
hatch run test:cov
Coverage reports are generated in:
coverage.json- JSON format- Terminal - Human-readable report
Run tests on a specific Python version:
hatch run +py=3.11 test:test
Documentation
Build the documentation:
hatch run docs:build
Serve the documentation locally:
hatch run docs:serve
Then open http://localhost:8000 in your browser.
Debug Environment
For debugging with enhanced tooling:
hatch run debug:python
This environment includes ipdb and line_profiler.
License
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file quickup-0.3.0.tar.gz.
File metadata
- Download URL: quickup-0.3.0.tar.gz
- Upload date:
- Size: 675.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b8bb5e950858402a74aa1a02cc0b67362cb8d7ba0d2c40e41c597ee1753f87a9
|
|
| MD5 |
36db81175785882c2f22bd777a0e71a5
|
|
| BLAKE2b-256 |
896b7f07cdc7fd3e2a87087da68404115753eabe057ebc8e2d736263404c82d0
|
File details
Details for the file quickup-0.3.0-py3-none-any.whl.
File metadata
- Download URL: quickup-0.3.0-py3-none-any.whl
- Upload date:
- Size: 29.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
52fc96cc664657048447d33b2d261a83797ffa4ecf00d5da7f5ad7285f5c8e70
|
|
| MD5 |
724ef0057d7a0a29e0c71c225368d2d5
|
|
| BLAKE2b-256 |
db0cfead759c2225b5bd6968a11bb4f3c5e8ab0a3d74722af2f4dc98bd2db7f1
|