ClickUp Automation
Comprehensive skill for automating ClickUp workspace and task management.
Core Concepts
Workspace Hierarchy
CLICKUP HIERARCHY: ┌─────────────────────────────────────────────────────────┐ │ 🏢 WORKSPACE │ ├─────────────────────────────────────────────────────────┤ │ ├── 📁 SPACE: Engineering │ │ │ ├── 📂 FOLDER: Q1 Projects │ │ │ │ ├── 📋 LIST: Feature Development │ │ │ │ │ ├── ✅ Task: Implement Auth │ │ │ │ │ │ └── ☑️ Subtask: OAuth setup │ │ │ │ │ └── ✅ Task: Build API │ │ │ │ └── 📋 LIST: Bug Fixes │ │ │ └── 📂 FOLDER: Infrastructure │ │ │ │ │ ├── 📁 SPACE: Marketing │ │ │ └── 📋 LIST: Content Calendar │ │ │ │ │ └── 📁 SPACE: Operations │ └─────────────────────────────────────────────────────────┘
Task Structure
yamltask_structure: required: name: "{{task_name}}" list_id: "{{list_id}}" optional: description: "{{description}}" assignees: ["user_id_1", "user_id_2"] tags: ["feature", "priority"] status: "Open" priority: 2 # 1=Urgent, 2=High, 3=Normal, 4=Low due_date: "2024-01-20" start_date: "2024-01-15" time_estimate: 28800000 # milliseconds (8 hours) custom_fields: - id: "field_id" value: "custom_value" checklists: - name: "Acceptance Criteria" items: - name: "Requirement 1" resolved: false
Automation Rules
Built-in Automations
yamlautomations: - name: auto_assign_on_create trigger: type: task_created list_id: "list_123" conditions: - tag_contains: "design" actions: - add_assignee: "design_lead_id" - set_priority: high - name: due_date_reminder trigger: type: due_date before: 1_day actions: - send_notification: to: assignees message: "Task due tomorrow: {{task.name}}" - add_tag: "due-soon" - name: status_change_workflow trigger: type: status_changed to: "In Review" actions: - remove_assignee: "{{previous_assignee}}" - add_assignee: "reviewer_id" - add_comment: "Ready for review @reviewer" - name: complete_parent_task trigger: type: all_subtasks_done actions: - set_status: "Complete" - add_comment: "All subtasks completed ✓"
Advanced Automations
yamladvanced_rules: - name: sprint_rollover trigger: type: schedule cron: "0 0 * * 1" # Monday midnight conditions: - status_not: "Complete" - due_date_passed: true actions: - move_to_list: "{{next_sprint_list}}" - update_due_date: "+7 days" - add_comment: "Rolled over from previous sprint" - name: escalation_workflow trigger: type: task_blocked duration: 48_hours actions: - set_priority: urgent - notify: manager - add_watcher: "manager_id" - add_tag: "escalated"
Views & Layouts
View Types
yamlviews: list_view: type: list group_by: status sort_by: priority columns: - name - assignees - due_date - priority - time_estimate board_view: type: board group_by: status card_fields: - assignees - due_date - tags - subtasks_count calendar_view: type: calendar date_field: due_date color_by: priority timeline_view: type: timeline start_field: start_date end_field: due_date dependencies: true workload_view: type: workload capacity_field: time_estimate group_by: assignee
Dashboard Widgets
yamldashboard: widgets: - type: sprint_burndown list_id: "current_sprint" - type: workload space_id: "engineering" period: this_week - type: task_status filter: assignee: me - type: time_tracked group_by: project period: this_month - type: goals_progress folder_id: "q1_goals"
Time Tracking
Time Entry Configuration
yamltime_tracking: settings: billable_default: true rounding: 15_minutes require_description: false entry: task_id: "task_123" start: "2024-01-15T09:00:00Z" end: "2024-01-15T11:30:00Z" duration: 9000000 # 2.5 hours in ms billable: true description: "Development work" reports: - type: user_summary period: this_week group_by: task - type: project_summary period: this_month group_by: user
Time Reports Dashboard
TIME TRACKING - THIS WEEK ═══════════════════════════════════════ TOTAL: 32h 45m BY PROJECT: Feature Dev ████████████████ 18h 30m Bug Fixes ████████░░░░░░░░ 8h 15m Meetings ████░░░░░░░░░░░░ 4h 00m Admin ██░░░░░░░░░░░░░░ 2h 00m BY DAY: Mon █████████████████ 7h 30m Tue ███████████████░░ 6h 45m Wed ██████████████░░░ 6h 15m Thu ████████████████░ 7h 00m Fri ███████████░░░░░░ 5h 15m BILLABLE: 28h 00m (85%)
Goals & OKRs
Goal Structure
yamlgoals: - name: "Q1 Product Goals" type: folder targets: - name: "Ship v2.0" type: true_false due_date: "2024-03-31" - name: "Reduce bug count" type: number start: 45 target: 10 unit: "open bugs" - name: "Increase test coverage" type: percentage start: 65 target: 85 key_results: - task_list: "v2.0_features" measure: tasks_completed
Goal Dashboard
Q1 GOALS PROGRESS ═══════════════════════════════════════ Ship v2.0 ████████████████████ 100% ✓ Completed on March 28 Reduce Bug Count ████████████████░░░░ 78% Current: 15 | Target: 10 Increase Test Coverage ██████████████░░░░░░ 72% Current: 79% | Target: 85% OVERALL Q1: 83% Complete
Templates
Task Templates
yamltask_templates: - name: "Bug Report" status: "Open" priority: high tags: ["bug"] description: | ## Bug Description {{description}} ## Steps to Reproduce 1. 2. 3. ## Expected Behavior ## Actual Behavior ## Environment - Browser: - OS: - Version: checklists: - name: "Bug Fix Workflow" items: - "Reproduce bug" - "Identify root cause" - "Implement fix" - "Write tests" - "Code review" - "Deploy" - name: "Feature Request" status: "Backlog" custom_fields: story_points: null checklists: - name: "Feature Workflow" items: - "Requirements defined" - "Design approved" - "Implementation" - "Testing" - "Documentation"
Integrations
Slack Integration
yamlslack_integration: notifications: - trigger: task_created channel: "#project-updates" include: [name, assignees, due_date] - trigger: status_changed to: "Complete" channel: "#wins" message: "✅ {{task.name}} completed by {{user.name}}" commands: /clickup: - create_task - my_tasks - log_time
GitHub Integration
yamlgithub_integration: branch_naming: pattern: "{{task.id}}-{{task.slug}}" automations: - trigger: branch_created actions: - set_status: "In Progress" - add_comment: "Branch created: {{branch.name}}" - trigger: pr_opened actions: - set_status: "In Review" - link_pr: "{{pr.url}}" - trigger: pr_merged actions: - set_status: "Complete"
API Examples
Task Operations
javascript// Create Task const task = await clickup.tasks.create(listId, { name: "Implement user authentication", description: "Add OAuth2 support", assignees: [userId], priority: 2, due_date: Date.now() + 7 * 24 * 60 * 60 * 1000, time_estimate: 28800000, custom_fields: [ { id: "field_id", value: "5" } ] }); // Update Task await clickup.tasks.update(taskId, { status: "In Progress", assignees: { add: [newUserId] } }); // Add Time Entry await clickup.timeEntries.create(taskId, { start: Date.now() - 3600000, duration: 3600000, billable: true }); // Create Checklist await clickup.checklists.create(taskId, { name: "Acceptance Criteria" });
Best Practices
- Hierarchy Design: Spaces → Folders → Lists
- Consistent Statuses: Standardize across lists
- Custom Fields: Track key metrics
- Automations: Reduce manual work
- Time Tracking: Enable for capacity planning
- Templates: Standardize task creation
- Goals: Align tasks with objectives
- Views: Configure for different needs


