skills/community/clickup/SKILL.md
ClickUp: tasks, spaces, lists, docs, goals, dashboards, automation, time tracking, API
npx skillsauth add alphaonedev/openclaw-graph clickupInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
This skill allows the AI to interact with ClickUp's API for managing project tasks, spaces, lists, documents, goals, dashboards, automation, time tracking, and integrations. Use it to automate workflows by fetching or updating ClickUp data programmatically.
Use this skill when handling productivity tasks in code, such as syncing tasks with other apps, generating reports from ClickUp data, automating task creation based on events, or integrating with CI/CD pipelines. Apply it in scripts for project management automation or when real-time updates are needed, like in chatbots or monitoring tools.
Always authenticate requests with the API token stored in an environment variable, e.g., $CLICKUP_API_TOKEN. Use HTTP libraries like requests in Python to make calls. For example, construct requests with base URL https://api.clickup.com/api/v2, and handle JSON payloads. Pattern: First, fetch team ID with GET /api/v2/team, then use it to access nested resources. If rate-limited, implement exponential backoff. For CLI integration, pipe outputs to tools like jq for parsing JSON responses.
import requests; token = os.environ['CLICKUP_API_TOKEN']
response = requests.post('https://api.clickup.com/api/v2/list/123/task', headers={'Authorization': token}, json={'name': 'Task'})
curl -H "Authorization: $CLICKUP_API_TOKEN" https://api.clickup.com/api/v2/list/456/task.requests.put('https://api.clickup.com/api/v2/task/789', headers={'Authorization': token}, json={'status': 'complete'})
Set up authentication by exporting $CLICKUP_API_TOKEN from your ClickUp account settings. For integrations, use ClickUp's webhooks (e.g., subscribe via POST /api/v2/webhook) and handle incoming payloads in your app. When integrating with other services, map ClickUp IDs (e.g., task IDs) to external keys. Config format: Use a JSON config file like {"api_base": "https://api.clickup.com/api/v2", "team_id": "123"}. Avoid hardcoding tokens; always use env vars. For OAuth, redirect users to ClickUp's auth flow if needed, but for API access, stick to token-based auth.
Check HTTP status codes: 401 for unauthorized (retry with fresh token), 429 for rate limit (wait and retry with backoff), 404 for not found (log and skip). Parse JSON errors, e.g., if response.json()['err'] == 'Access denied', raise a custom exception. In code, wrap requests in try-except blocks:
try: response = requests.get(url, headers={'Authorization': token})
except requests.exceptions.RequestException as e: print(f"Error: {e}, Status: {response.status_code}")
Handle pagination errors by checking for 'next_page' in responses. Validate inputs, like ensuring list_id is an integer before API calls.
Automate task creation: When a user requests a new task via chat, use this skill to create it in ClickUp. Example: In a script, parse user input, then call POST /api/v2/list/123/task with the task details. Code:
task_data = {'name': 'User-reported issue', 'description': user_input}
requests.post('https://api.clickup.com/api/v2/list/123/task', headers={'Authorization': $CLICKUP_API_TOKEN}, json=task_data)
This integrates with messaging apps for real-time task management.
Fetch and report on tasks: To generate a daily summary, query tasks in a space and filter by status. Example: Use GET /api/v2/space/456/task?status=active, then process the response to count open tasks. Code:
response = requests.get('https://api.clickup.com/api/v2/space/456/task', headers={'Authorization': $CLICKUP_API_TOKEN})
tasks = response.json()['tasks']; open_tasks = [t for t in tasks if t['status']['status'] == 'active']
print(f"Open tasks: {len(open_tasks)}")
This is useful for dashboard updates or alerts in productivity tools.
tools
Root web development: project structure, tooling selection, deployment decisions
development
WebAssembly: Rust/Go/C to WASM, wasm-bindgen, Emscripten, WASM Component Model
development
Vue 3: Composition API script setup, Pinia, Vue Router 4, SFCs, Vite, Nuxt 3
tools
Tailwind CSS 4: utility classes, config, JIT, arbitrary values, darkMode, plugins, shadcn/ui