# Send ClickUp to your agent
Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.
## Fast path
- Download the package from Yavira.
- Extract it into a folder your agent can access.
- Paste one of the prompts below and point your agent at the extracted folder.
## Suggested prompts
### New install

```text
I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete.
```
### Upgrade existing

```text
I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run.
```
## Machine-readable fields
```json
{
  "schemaVersion": "1.0",
  "item": {
    "slug": "clickup",
    "name": "ClickUp",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/shubhs0707/clickup",
    "canonicalUrl": "https://clawhub.ai/shubhs0707/clickup",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadUrl": "/downloads/clickup",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=clickup",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "packageFormat": "ZIP package",
    "primaryDoc": "SKILL.md",
    "includedAssets": [
      "SKILL.md",
      "references/api-guide.md",
      "scripts/clickup-query.sh"
    ],
    "downloadMode": "redirect",
    "sourceHealth": {
      "source": "tencent",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-04-30T16:55:25.780Z",
      "expiresAt": "2026-05-07T16:55:25.780Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
        "contentDisposition": "attachment; filename=\"network-1.0.0.zip\"",
        "redirectLocation": null,
        "bodySnippet": null
      },
      "scope": "source",
      "summary": "Source download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this source.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/clickup"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    }
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/clickup",
    "downloadUrl": "https://openagent3.xyz/downloads/clickup",
    "agentUrl": "https://openagent3.xyz/skills/clickup/agent",
    "manifestUrl": "https://openagent3.xyz/skills/clickup/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/clickup/agent.md"
  }
}
```
## Documentation

### ClickUp Skill

Interact with ClickUp's REST API for task management, reporting, and workflow automation.

### Configuration

Before using this skill, ensure the following are configured in TOOLS.md:

API Token: CLICKUP_API_KEY
Team/Workspace ID: CLICKUP_TEAM_ID
Space IDs (optional, for filtering)
List IDs (optional, for creating tasks)

### Using the Helper Script

The fastest way to query ClickUp:

# Set environment variables
export CLICKUP_API_KEY="pk_..."
export CLICKUP_TEAM_ID="90161392624"

# Get all open tasks
./scripts/clickup-query.sh tasks

# Get task counts (parent vs subtasks)
./scripts/clickup-query.sh task-count

# Get assignee breakdown
./scripts/clickup-query.sh assignees

# Get specific task
./scripts/clickup-query.sh task <task-id>

### Direct API Calls

For custom queries or operations not covered by the helper script:

# Get all open tasks (with subtasks and pagination)
curl "https://api.clickup.com/api/v2/team/{team_id}/task?include_closed=false&subtasks=true" \\
  -H "Authorization: {api_key}"

### 1. ALWAYS Include Subtasks

Never query tasks without subtasks=true:

# ✅ CORRECT
?subtasks=true

# ❌ WRONG
(no subtasks parameter)

Why: Without this parameter, you miss potentially 70%+ of actual tasks. Parent tasks are just containers; real work happens in subtasks.

### 2. Handle Pagination

ClickUp API returns max 100 tasks per page. Always loop until last_page: true:

page=0
while true; do
    result=$(curl -s "...&page=$page" -H "Authorization: $CLICKUP_API_KEY")
    
    # Process tasks
    echo "$result" | jq '.tasks[]'
    
    # Check if done
    is_last=$(echo "$result" | jq -r '.last_page')
    [ "$is_last" = "true" ] && break
    
    ((page++))
done

Why: Workspaces with 300+ tasks need 3-4 pages. Missing pages = incomplete data.

### 3. Distinguish Parent Tasks vs Subtasks

# Parent tasks have parent=null
jq '.tasks[] | select(.parent == null)'

# Subtasks have parent != null
jq '.tasks[] | select(.parent != null)'

### Get Task Counts

# Using helper script (recommended)
./scripts/clickup-query.sh task-count

# Direct API with jq
curl -s "https://api.clickup.com/api/v2/team/{team_id}/task?subtasks=true" \\
  -H "Authorization: {api_key}" | \\
jq '{
    total: (.tasks | length),
    parents: ([.tasks[] | select(.parent == null)] | length),
    subtasks: ([.tasks[] | select(.parent != null)] | length)
}'

### Get Assignee Breakdown

# Using helper script (recommended)
./scripts/clickup-query.sh assignees

# Direct API
curl -s "https://api.clickup.com/api/v2/team/{team_id}/task?subtasks=true" \\
  -H "Authorization: {api_key}" | \\
jq -r '.tasks[] | 
    if .assignees and (.assignees | length) > 0 
    then .assignees[0].username 
    else "Unassigned" 
    end' | sort | uniq -c | sort -rn

### Create a Task

curl "https://api.clickup.com/api/v2/list/{list_id}/task" \\
  -X POST \\
  -H "Authorization: {api_key}" \\
  -H "Content-Type: application/json" \\
  -d '{
    "name": "Task Name",
    "description": "Description here",
    "assignees": [user_id],
    "status": "to do",
    "priority": 3
  }'

### Update a Task

curl "https://api.clickup.com/api/v2/task/{task_id}" \\
  -X PUT \\
  -H "Authorization: {api_key}" \\
  -H "Content-Type: application/json" \\
  -d '{
    "name": "Updated Name",
    "status": "in progress",
    "priority": 2
  }'

### Get Specific Task

# Using helper script
./scripts/clickup-query.sh task {task_id}

# Direct API
curl "https://api.clickup.com/api/v2/task/{task_id}" \\
  -H "Authorization: {api_key}"

### Filter by Space

curl "https://api.clickup.com/api/v2/team/{team_id}/task?space_ids[]={space_id}&subtasks=true" \\
  -H "Authorization: {api_key}"

### Filter by List

curl "https://api.clickup.com/api/v2/list/{list_id}/task?subtasks=true" \\
  -H "Authorization: {api_key}"

### Include Closed Tasks

curl "https://api.clickup.com/api/v2/team/{team_id}/task?include_closed=true&subtasks=true" \\
  -H "Authorization: {api_key}"

### Reference Documentation

For detailed API documentation, query patterns, and troubleshooting:

Read: references/api-guide.md

Covers:

Full API endpoint reference
Response structure details
Common gotchas and solutions
Rate limits and best practices
Task object schema

### Daily Standup Report

# Get all open tasks grouped by assignee
./scripts/clickup-query.sh assignees

# Get specific team member's tasks (use user ID, not username!)
curl "https://api.clickup.com/api/v2/team/{team_id}/task?subtasks=true&assignees[]={user_id}" \\
  -H "Authorization: {api_key}"

### Task Audit

# Count tasks by status
./scripts/clickup-query.sh tasks | \\
  jq -r '.tasks[].status.status' | sort | uniq -c | sort -rn

# Find unassigned tasks
./scripts/clickup-query.sh tasks | \\
  jq '.tasks[] | select(.assignees | length == 0)'

### Priority Analysis

# Count by priority
./scripts/clickup-query.sh tasks | \\
  jq -r '.tasks[] | .priority.priority // "none"' | sort | uniq -c | sort -rn

### Tips

Helper script first: Use scripts/clickup-query.sh for common operations
Direct API for custom: Use curl when you need specific filters or updates
Always read api-guide.md: Contains full endpoint reference and troubleshooting
Check TOOLS.md: For workspace-specific IDs and configuration
Test with small queries: When unsure, test with | head -n 5 first
Filter by user ID: Use assignees[]={user_id} parameter, not jq username matching

### Troubleshooting

Missing tasks? → Add subtasks=true
Only 100 tasks returned? → Implement pagination loop
401 Unauthorized? → Check CLICKUP_API_KEY is set correctly
Rate limit error? → Wait 1 minute (100 requests/min limit)
Empty assignees array? → Task is unassigned (not an error)
Assignee filter returns fewer tasks than expected? → Use user ID in assignees[] param, not jq text matching
## Trust
- Source: tencent
- Verification: Indexed source record
- Publisher: shubhs0707
- Version: 1.2.0
## Source health
- Status: healthy
- Source download looks usable.
- Yavira can redirect you to the upstream package for this source.
- Health scope: source
- Reason: direct_download_ok
- Checked at: 2026-04-30T16:55:25.780Z
- Expires at: 2026-05-07T16:55:25.780Z
- Recommended action: Download for OpenClaw
## Links
- [Detail page](https://openagent3.xyz/skills/clickup)
- [Send to Agent page](https://openagent3.xyz/skills/clickup/agent)
- [JSON manifest](https://openagent3.xyz/skills/clickup/agent.json)
- [Markdown brief](https://openagent3.xyz/skills/clickup/agent.md)
- [Download page](https://openagent3.xyz/downloads/clickup)