3.7kā
by d3layd
clickup ā OpenClaw Skill
clickup is an OpenClaw Skills integration for data analytics workflows. Enterprise-grade ClickUp project management integration with advanced reporting, multi-workspace support, and client/project tracking. Core capabilities: (1) Multi-workspace task management with automatic workspace switching, (2) Advanced analytics & reporting (task counts, assignee breakdowns, status/priority analysis, daily standup reports) with automatic subtask inclusion and pagination, (3) Client folder organization with project tracking (š Client Overview, š Completed Work, active project lists), (4) Full CRUD operations for spaces, folders, lists, tasks, and custom fields, (5) Time tracking & timer management with billing support, (6) Document creation and page management (API v3), (7) Task dependencies, linking, and relationship mapping, (8) Sales pipeline tracking with prospect/project status, (9) Retainer & recurring billing management. Built for agencies managing multiple clients across complex workspace hierarchies.
Skill Snapshot
| name | clickup |
| description | Enterprise-grade ClickUp project management integration with advanced reporting, multi-workspace support, and client/project tracking. Core capabilities: (1) Multi-workspace task management with automatic workspace switching, (2) Advanced analytics & reporting (task counts, assignee breakdowns, status/priority analysis, daily standup reports) with automatic subtask inclusion and pagination, (3) Client folder organization with project tracking (š Client Overview, š Completed Work, active project lists), (4) Full CRUD operations for spaces, folders, lists, tasks, and custom fields, (5) Time tracking & timer management with billing support, (6) Document creation and page management (API v3), (7) Task dependencies, linking, and relationship mapping, (8) Sales pipeline tracking with prospect/project status, (9) Retainer & recurring billing management. Built for agencies managing multiple clients across complex workspace hierarchies. OpenClaw Skills integration. |
| owner | d3layd |
| repository | d3layd/clickup-skill |
| language | Markdown |
| license | MIT |
| topics | |
| security | L1 |
| install | openclaw add @d3layd/clickup-skill |
| last updated | Feb 7, 2026 |
Maintainer

name: clickup description: "Enterprise-grade ClickUp project management integration with advanced reporting, multi-workspace support, and client/project tracking. Core capabilities: (1) Multi-workspace task management with automatic workspace switching, (2) Advanced analytics & reporting (task counts, assignee breakdowns, status/priority analysis, daily standup reports) with automatic subtask inclusion and pagination, (3) Client folder organization with project tracking (š Client Overview, š Completed Work, active project lists), (4) Full CRUD operations for spaces, folders, lists, tasks, and custom fields, (5) Time tracking & timer management with billing support, (6) Document creation and page management (API v3), (7) Task dependencies, linking, and relationship mapping, (8) Sales pipeline tracking with prospect/project status, (9) Retainer & recurring billing management. Built for agencies managing multiple clients across complex workspace hierarchies."
ClickUp Skill
Enterprise-grade ClickUp integration for agency workflows. Manage multiple clients, projects, and workspaces with advanced reporting, automatic subtask handling, and sophisticated folder organization.
Key Benefits
| Feature | Why It Matters |
|---|---|
| š Always includes subtasks | Never miss 70%+ of actual work ā subtasks included automatically |
| š Advanced reporting | Task counts, workload distribution, status breakdowns, standup reports |
| š¢ Multi-workspace | Seamlessly switch between Client Work, Product Development, Personal Projects, and more |
| š„ Client organization | Structured folders: š Client Overview, š Completed Work, active projects |
| š Sales pipeline | Track proposals, negotiations, and project lifecycles |
| ā±ļø Time tracking | Built-in timers and manual entries with billing support |
| š Document management | Create docs and pages via API v3 |
| š Task relationships | Dependencies, blocking/waiting, and arbitrary task linking |
Quick Start
Setup
Set your ClickUp API token:
export CLICKUP_API_TOKEN="pk_your_token_here"
Get your token from: ClickUp Settings ā Apps ā Generate API Token
Basic Operations
List all workspaces:
python skills/clickup/scripts/clickup_client.py get_teams
Create a task:
python skills/clickup/scripts/clickup_client.py create_task list_id="123" name="New Task" status="to do"
Update a task:
python skills/clickup/scripts/clickup_client.py update_task task_id="abc" status="in progress"
Workspace Hierarchy
Team (Workspace)
āāā Spaces
ā āāā Folders
ā ā āāā Lists ā Tasks
ā āāā Lists (Folderless) ā Tasks
āāā Documents
All operations require explicit workspace identification via IDs.
Multi-Workspace Support
This skill supports operations across multiple ClickUp workspaces:
- Use
get_teamsto list available workspaces - Reference workspace by
team_idin operations - Each workspace maintains independent spaces, folders, lists
- Custom task IDs require both
custom_task_ids=trueandteam_id
Common Workflows
Workflow: Create Task in Specific Workspace
- Get workspace ID:
get_teams - Get target space:
get_spaces team_id="xxx" - Get or create list:
get_folders space_id="yyy"āget_lists folder_id="zzz" - Create task:
create_task list_id="aaa" name="Task" ...
Workflow: Configure Space Statuses
- Get space:
get_space space_id="xxx" - Update space with statuses:
update_space space_id="xxx" statuses=[...]
See API Reference for status configuration format.
Workflow: Track Time on Task
Option A - Manual Entry:
python skills/clickup_client.py create_time_entry \
team_id="xxx" \
task_id="yyy" \
duration=3600000 \
description="Worked on feature"
Option B - Timer:
# Start timer
python skills/clickup/scripts/clickup_client.py start_timer team_id="xxx" task_id="yyy"
# Stop timer (stops current running timer for user)
python skills/clickup/scripts/clickup_client.py stop_timer team_id="xxx"
Workflow: Create Document Structure
- Create doc:
create_doc workspace_id="xxx" name="Project Docs" - Add pages: Use ClickUp UI (pages API is in beta)
Note: Documents use ClickUp API v3 (workspace_id instead of team_id).
Workflow: Reporting & Analytics
Get task counts (with parent/subtask breakdown):
python skills/clickup/scripts/clickup_client.py task_counts team_id="xxx"
# Returns: {"total": 50, "parents": 20, "subtasks": 30, "unassigned": 5}
Get workload by assignee:
python skills/clickup/scripts/clickup_client.py assignee_breakdown team_id="xxx"
# Returns: {"John Doe": 15, "Jane Smith": 12, "Unassigned": 8}
Get tasks by status:
python skills/clickup/scripts/clickup_client.py status_breakdown team_id="xxx"
# Returns: {"to do": 20, "in progress": 10, "complete": 15}
Get tasks by priority:
python skills/clickup/scripts/clickup_client.py priority_breakdown team_id="xxx"
# Returns: {"urgent": 2, "high": 5, "normal": 15, "low": 8, "none": 20}
Daily standup report (grouped by status):
# All team members
python skills/clickup/scripts/clickup_client.py standup_report team_id="xxx"
# Specific person (use user ID)
python skills/clickup/scripts/clickup_client.py standup_report team_id="xxx" assignee_id="12345"
Get all tasks with pagination (auto-handled):
python skills/clickup/scripts/clickup_client.py get_all_tasks team_id="xxx"
# Always includes subtasks automatically (critical!)
Filter reports by space or assignee:
# Specific space
python skills/clickup/scripts/clickup_client.py task_counts team_id="xxx" space_ids='["SPACE_ID_HERE"]'
# Specific assignee
python skills/clickup/scripts/clickup_client.py get_all_tasks team_id="xxx" assignees='["12345"]'
# Include closed tasks
python skills/clickup/scripts/clickup_client.py task_counts team_id="xxx" include_closed="true"
Critical Rules for Reporting:
- Always include subtasks ā Our methods do this automatically via
subtasks=true - Pagination handled ā
get_all_tasksloops until all pages retrieved - Parent vs Subtask ā Parents have
parent: null, subtasks haveparent: "task_id" - Rate limit ā 100 requests/min; our pagination respects this
Workflow: Link Doc to Task
Option A - Add as attachment:
python skills/clickup/scripts/clickup_client.py link_doc_to_task \
task_id="xxx" \
doc_id="yyy"
Option B - Mention in description:
python skills/clickup/scripts/clickup_client.py mention_doc_in_task \
task_id="xxx" \
doc_id="yyy"
Both create clickable links to the document from the task.
Workflow: Task Dependencies
Set up blocking relationship:
# Task B is blocked by/waiting on Task A
python skills/clickup/scripts/clickup_client.py add_dependency \
task_id="TASK_B_ID" \
depends_on="TASK_A_ID"
# Check dependencies
python skills/clickup/scripts/clickup_client.py get_dependencies \
task_id="TASK_B_ID"
# Remove dependency
python skills/clickup/scripts/clickup_client.py remove_dependency \
task_id="TASK_B_ID" \
depends_on="TASK_A_ID"
Set up reverse dependency (task is blocking another):
# Task A is blocking Task B
python skills/clickup/scripts/clickup_client.py add_dependency \
task_id="TASK_A_ID" \
waiting_on="TASK_B_ID"
Workflow: Link Related Tasks (Non-Dependency)
For related tasks that aren't blocking each other:
# Link Task A to Task B (arbitrary relationship)
python skills/clickup/scripts/clickup_client.py link_tasks \
task_id="TASK_A_ID" \
links_to="TASK_B_ID"
# Remove link
python skills/clickup/scripts/clickup_client.py unlink_tasks \
task_id="TASK_A_ID" \
links_to="TASK_B_ID"
Note: link_tasks creates a "linked task" relationship (appears in task's "Linked Tasks" section), while add_dependency creates blocking/waiting relationships.
Workflow: Bulk Task Operations
For bulk operations, loop through tasks:
# Get tasks
TASKS=$(python skills/clickup/scripts/clickup_client.py get_tasks list_id="xxx")
# Process each (parse JSON and loop)
Script Reference
scripts/clickup_client.py
Main CLI interface for ClickUp operations.
Usage:
python scripts/clickup_client.py <command> [key=value ...]
Commands:
Workspace Operations
get_teams- List all accessible workspaces
Space Operations
get_spaces team_id="xxx"- List spacescreate_space team_id="xxx" name="Name" [options...]- Create spaceupdate_space space_id="xxx" [options...]- Update space
Folder Operations
get_folders space_id="xxx"- List folderscreate_folder space_id="xxx" name="Name"- Create folder
List Operations
get_lists folder_id="xxx"- Lists in folderget_space_lists space_id="xxx"- Folderless listscreate_list folder_id="xxx" name="Name" [options...]- Create in foldercreate_space_list space_id="xxx" name="Name" [options...]- Create folderless
Task Operations
get_task task_id="xxx"- Get task details (includes dependencies, linked tasks)get_tasks list_id="xxx" [filters...]- List taskscreate_task list_id="xxx" name="Name" [options...]- Create taskupdate_task task_id="xxx" [options...]- Update task
Time Tracking
get_time_entries team_id="xxx" [filters...]- List entriescreate_time_entry team_id="xxx" task_id="yyy" duration=3600000 [...]- Create entrystart_timer team_id="xxx" task_id="yyy"- Start timerstop_timer team_id="xxx"- Stop timer
Documents (API v3)
get_docs workspace_id="xxx"- List documentscreate_doc workspace_id="xxx" name="Name" [options...]- Create documentget_doc doc_id="xxx"- Get document details
Note on Pages: Doc pages API is in beta. Pages may need to be created via ClickUp UI.
Doc-Task Linking
link_doc_to_task task_id="xxx" doc_id="yyy"- Attach doc URL to taskmention_doc_in_task task_id="xxx" doc_id="yyy"- Add doc link to task description
Task Dependencies (Blocking/Waiting On)
add_dependency task_id="xxx" depends_on="yyy"- Task is blocked by/waiting on another taskadd_dependency task_id="xxx" waiting_on="yyy"- Another task is blocked by/waiting on this taskremove_dependency task_id="xxx" depends_on="yyy"- Remove dependencyget_dependencies task_id="xxx"- List all dependencies for a task
Task Linking (Arbitrary Relationships)
link_tasks task_id="xxx" links_to="yyy"- Create arbitrary link between tasksunlink_tasks task_id="xxx" links_to="yyy"- Remove task link
Reporting & Analytics
get_all_tasks team_id="xxx" [include_closed="true"] [space_ids='["id1"]'] [assignees='["uid1"]']- All tasks with auto-pagination (always includes subtasks)task_counts team_id="xxx" [filters...]- Count breakdown: total, parents, subtasks, unassignedassignee_breakdown team_id="xxx" [filters...]- Workload distribution by assigneestatus_breakdown team_id="xxx" [filters...]- Tasks grouped by statuspriority_breakdown team_id="xxx" [filters...]- Tasks grouped by prioritystandup_report team_id="xxx" [assignee_id="yyy"]- Daily standup report grouped by status
Documents
get_docs team_id="xxx"- List documentscreate_doc team_id="xxx" name="Name" [options...]- Create document
Advanced Configuration
Custom Fields
To work with custom fields:
- Get field definitions:
GET /list/{list_id}/field(see API Reference) - Set values when creating/updating tasks:
python skills/clickup/scripts/clickup_client.py update_task \ task_id="xxx" \ 'custom_fields=[{"id":"field_id","value":"value"}]'
Status Configuration
When creating/updating spaces or lists:
python skills/clickup/scripts/clickup_client.py update_space \
space_id="xxx" \
'statuses=[{"status":"To Do","type":"open"},{"status":"Done","type":"closed"}]'
Priority Levels
1- Urgent2- High3- Normal4- Low
Error Handling
Common errors and solutions:
| Error | Cause | Solution |
|---|---|---|
401 Unauthorized | Invalid API token | Check CLICKUP_API_TOKEN |
404 Not Found | Invalid ID | Verify workspace/space/folder/list/task IDs |
429 Too Many Requests | Rate limit | Wait and retry (100 req/min limit) |
400 Bad Request | Invalid parameters | Check JSON format in arguments |
Python Client Usage
For complex operations, import the client directly:
from skills.clickup.scripts.clickup_client import ClickUpClient
client = ClickUpClient()
# Get all workspaces
teams = client.get_teams()
# Create task with full control
task = client.create_task(
list_id="123",
name="Complex Task",
description="Detailed description",
assignees=[123, 456],
tags=["urgent", "client"],
priority=2,
due_date=1704067200000,
time_estimate=14400000
)
References
- API Details: See references/api_reference.md for complete endpoint documentation, request/response formats, and field types.
- ClickUp API Docs: https://clickup.com/api
Best Practices
- Store IDs: Workspace/space/folder/list IDs rarely change. Store them in
TOOLS.mdfor quick reference. - Custom Task IDs: If using custom IDs, always include
custom_task_ids=trueandteam_idin task operations. - Rate Limiting: Space out bulk operations to avoid 429 errors.
- Time Tracking: Use milliseconds for all duration/timestamp values.
- Multi-Workspace: Always double-check
team_idwhen working across workspaces to avoid modifying wrong workspace.
No README available.
Permissions & Security
Security level L1: Low-risk skills with minimal permissions. Review inputs and outputs before running in production.
Requirements
- OpenClaw CLI installed and configured.
- Language: Markdown
- License: MIT
- Topics:
Configuration
### Custom Fields To work with custom fields: 1. Get field definitions: `GET /list/{list_id}/field` (see API Reference) 2. Set values when creating/updating tasks: ```bash python skills/clickup/scripts/clickup_client.py update_task \ task_id="xxx" \ 'custom_fields=[{"id":"field_id","value":"value"}]' ``` ### Status Configuration When creating/updating spaces or lists: ```bash python skills/clickup/scripts/clickup_client.py update_space \ space_id="xxx" \ 'statuses=[{"status":"To Do","type":"open"},{"status":"Done","type":"closed"}]' ``` ### Priority Levels - `1` - Urgent - `2` - High - `3` - Normal - `4` - Low
FAQ
How do I install clickup?
Run openclaw add @d3layd/clickup-skill in your terminal. This installs clickup into your OpenClaw Skills catalog.
Does this skill run locally or in the cloud?
OpenClaw Skills execute locally by default. Review the SKILL.md and permissions before running any skill.
Where can I verify the source code?
The source repository is available at https://github.com/openclaw/skills/tree/main/skills/d3layd/clickup-skill. Review commits and README documentation before installing.
