clickup-agent-cli 0.2.1 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-plugin/marketplace.json +2 -2
- package/.claude-plugin/plugin.json +2 -2
- package/README.md +5 -5
- package/dist/clickup.js +936 -241
- package/package.json +13 -4
- package/skills/clickup/SKILL.md +38 -3
- package/skills/clickup-fields/SKILL.md +13 -2
- package/skills/clickup-rollout/SKILL.md +111 -0
- package/skills/clickup-spaces/SKILL.md +3 -0
- package/skills/clickup-tasks/SKILL.md +15 -2
- package/skills/clickup-templates/SKILL.md +76 -0
- package/skills/clickup-time/SKILL.md +3 -2
package/package.json
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "clickup-agent-cli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.4.0",
|
|
4
4
|
"description": "CLI covering the entire ClickUp API v2 surface",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
7
|
-
"clickup": "
|
|
7
|
+
"clickup": "dist/clickup.js"
|
|
8
8
|
},
|
|
9
9
|
"files": [
|
|
10
10
|
"dist",
|
|
@@ -18,7 +18,8 @@
|
|
|
18
18
|
"build": "tsup",
|
|
19
19
|
"dev": "tsx bin/clickup.ts",
|
|
20
20
|
"test": "vitest run",
|
|
21
|
-
"typecheck": "tsc --noEmit"
|
|
21
|
+
"typecheck": "tsc --noEmit",
|
|
22
|
+
"version": "node scripts/sync-version.js"
|
|
22
23
|
},
|
|
23
24
|
"keywords": [
|
|
24
25
|
"clickup",
|
|
@@ -45,5 +46,13 @@
|
|
|
45
46
|
"tsx": "^4.0.0",
|
|
46
47
|
"typescript": "^5.9.0",
|
|
47
48
|
"vitest": "^3.0.0"
|
|
48
|
-
}
|
|
49
|
+
},
|
|
50
|
+
"repository": {
|
|
51
|
+
"type": "git",
|
|
52
|
+
"url": "https://github.com/henryreith/clickup-cli"
|
|
53
|
+
},
|
|
54
|
+
"bugs": {
|
|
55
|
+
"url": "https://github.com/henryreith/clickup-cli/issues"
|
|
56
|
+
},
|
|
57
|
+
"homepage": "https://github.com/henryreith/clickup-cli#readme"
|
|
49
58
|
}
|
package/skills/clickup/SKILL.md
CHANGED
|
@@ -41,6 +41,7 @@ clickup <resource> <action> --help # Full help text
|
|
|
41
41
|
| `clickup-chat` | Chat channels, sending messages and notifications |
|
|
42
42
|
| `clickup-webhooks` | Webhook registration and management |
|
|
43
43
|
| `clickup-fields` | Custom fields, tags, custom task types |
|
|
44
|
+
| `clickup-templates` | Templates: list available templates, apply task/list/folder templates |
|
|
44
45
|
|
|
45
46
|
## Recipe Skills (multi-step workflows)
|
|
46
47
|
|
|
@@ -57,6 +58,7 @@ Recipes accept natural language arguments. Scope them to any team, department, p
|
|
|
57
58
|
| `clickup-sprint-closeout` | Close a sprint, carry over incomplete work |
|
|
58
59
|
| `clickup-time-audit` | Audit time tracking and utilization |
|
|
59
60
|
| `clickup-project-setup` | Scaffold a new project structure |
|
|
61
|
+
| `clickup-rollout` | Roll out a saved process template (apply + configure) |
|
|
60
62
|
| `clickup-capacity-check` | Check team workload and availability |
|
|
61
63
|
| `clickup-blocker-report` | Find blocked tasks and dependency chains |
|
|
62
64
|
| `clickup-goal-progress` | Report on goal/OKR completion |
|
|
@@ -81,6 +83,10 @@ clickup task list --list-id <id> --format quiet | xargs -I{} clickup task get {}
|
|
|
81
83
|
|
|
82
84
|
All commands support: `--format json|table|csv|tsv|quiet|id|md`, `--dry-run`, `--debug`, `--no-color`
|
|
83
85
|
|
|
86
|
+
Additional global flags:
|
|
87
|
+
- `--profile <name>` -- select a named profile (accepts profile key, workspace name, or nickname)
|
|
88
|
+
- `--token-file <path>` -- read API token from a file (useful in CI/CD and secret managers)
|
|
89
|
+
|
|
84
90
|
Use `--format md` to render output as a markdown table -- ideal for displaying results in chat messages or documents.
|
|
85
91
|
|
|
86
92
|
## Auth
|
|
@@ -91,16 +97,45 @@ Requires a ClickUp API token.
|
|
|
91
97
|
# Set up authentication
|
|
92
98
|
clickup auth login --token pk_XXXXXXXX_YYYYYYYY
|
|
93
99
|
|
|
100
|
+
# Read token from file (CI/CD-friendly)
|
|
101
|
+
clickup auth login --token-file /run/secrets/clickup_token
|
|
102
|
+
|
|
94
103
|
# Or use an environment variable
|
|
95
|
-
export
|
|
104
|
+
export CLICKUP_API_TOKEN=pk_XXXXXXXX_YYYYYYYY
|
|
96
105
|
|
|
97
|
-
#
|
|
98
|
-
clickup
|
|
106
|
+
# Auto-configure workspace after login (single workspace: auto-selects)
|
|
107
|
+
clickup workspace setup
|
|
99
108
|
|
|
100
109
|
# Check current auth status
|
|
101
110
|
clickup auth status
|
|
111
|
+
|
|
112
|
+
# Validate token and show identity
|
|
113
|
+
clickup config validate
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
## Named Profiles (Multi-Account)
|
|
117
|
+
|
|
118
|
+
Profiles store credentials per workspace. A single-workspace setup is transparent -- no `--profile` flag needed.
|
|
119
|
+
|
|
120
|
+
```bash
|
|
121
|
+
# List profiles
|
|
122
|
+
clickup config profile list
|
|
123
|
+
|
|
124
|
+
# Switch active profile
|
|
125
|
+
clickup config profile use "Acme Corp"
|
|
126
|
+
|
|
127
|
+
# Set a short nickname
|
|
128
|
+
clickup config profile nickname acme-corp acme
|
|
129
|
+
|
|
130
|
+
# Use a specific profile for one command
|
|
131
|
+
clickup task list --list-id 123 --profile acme
|
|
102
132
|
```
|
|
103
133
|
|
|
134
|
+
Profile resolution for `--profile` accepts:
|
|
135
|
+
1. The profile key (e.g. `default`)
|
|
136
|
+
2. Workspace name, case-insensitive (e.g. `"Henry's Workspace"`)
|
|
137
|
+
3. Nickname if set (e.g. `acme`)
|
|
138
|
+
|
|
104
139
|
## Creating Custom Skills
|
|
105
140
|
|
|
106
141
|
Users can create their own skills alongside the built-in ones. Add a SKILL.md to `.claude/skills/<name>/` in any project:
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: clickup-fields
|
|
3
3
|
description: Manages ClickUp custom fields, tags, and custom task types. Use when the user asks about custom fields, wants to set field values on tasks, manage tags, or work with custom task types.
|
|
4
|
-
allowed-tools: Bash(clickup custom-field *), Bash(clickup tag *), Bash(clickup custom-task-type *), Bash(clickup schema field*), Bash(clickup schema tag*)
|
|
4
|
+
allowed-tools: Bash(clickup custom-field *), Bash(clickup tag *), Bash(clickup custom-task-type *), Bash(clickup attachment *), Bash(clickup schema field*), Bash(clickup schema tag*)
|
|
5
5
|
---
|
|
6
6
|
|
|
7
7
|
# ClickUp Custom Fields, Tags, and Task Types
|
|
@@ -13,7 +13,7 @@ Custom fields are defined at the list level and set on individual tasks.
|
|
|
13
13
|
```bash
|
|
14
14
|
clickup field list --list-id <id> # List field definitions
|
|
15
15
|
clickup field set --task-id <id> --field-id <fid> --value <v> # Set a field value
|
|
16
|
-
clickup field remove --task-id <id> --field-id <fid>
|
|
16
|
+
clickup field remove --task-id <id> --field-id <fid> --confirm # Clear a field value
|
|
17
17
|
```
|
|
18
18
|
|
|
19
19
|
### Value formats by field type
|
|
@@ -69,9 +69,20 @@ clickup field list --list-id 998877 --format json
|
|
|
69
69
|
clickup field list --list-id 998877 --format md
|
|
70
70
|
```
|
|
71
71
|
|
|
72
|
+
## Attachment Commands
|
|
73
|
+
|
|
74
|
+
```bash
|
|
75
|
+
clickup attachment upload --task-id <id> --file <path> [--filename <name>]
|
|
76
|
+
clickup attachment list --task-id <id>
|
|
77
|
+
clickup attachment download --task-id <id> --attachment-id <id> [--output <path>] [--force]
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
`attachment download` fetches the file with the auth header and writes to `--output` (default: `./attachment-<id>-<title>`). Refuses to overwrite an existing file unless `--force` is passed. Shows a spinner during download.
|
|
81
|
+
|
|
72
82
|
## Discovery
|
|
73
83
|
|
|
74
84
|
```bash
|
|
75
85
|
clickup schema fields.set # Show field set options
|
|
76
86
|
clickup schema tags.create # Show tag create fields
|
|
87
|
+
clickup schema attachment.list # Show attachment list options
|
|
77
88
|
```
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: clickup-rollout
|
|
3
|
+
description: Rolls out a saved process template in ClickUp by applying it to a target location, then configuring assignees, due dates, and custom fields. Use when the user says "start a new [project/process/sprint/onboarding]" or wants to kick off a repeatable workflow from a template.
|
|
4
|
+
disable-model-invocation: true
|
|
5
|
+
context: fork
|
|
6
|
+
agent: general-purpose
|
|
7
|
+
argument-hint: "[template name or ID] [target location] [optional: assignee, due date, custom fields]"
|
|
8
|
+
allowed-tools: Bash(clickup *)
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# Template Rollout
|
|
12
|
+
|
|
13
|
+
Apply a saved ClickUp template and configure the resulting task, list, or folder for a new instance of the process.
|
|
14
|
+
|
|
15
|
+
## Workflow
|
|
16
|
+
|
|
17
|
+
### Step 1: Find the template
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
# List all templates to find the right one
|
|
21
|
+
clickup template list --format json
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
If the user gave a template name, find its ID by matching the `name` field. If they gave an ID directly, skip this step.
|
|
25
|
+
|
|
26
|
+
### Step 2: Determine the template type and target
|
|
27
|
+
|
|
28
|
+
Based on what the user wants to create:
|
|
29
|
+
- **Task template**: needs a `--list-id` target
|
|
30
|
+
- **List template**: needs a `--folder-id` or `--space-id` target
|
|
31
|
+
- **Folder template**: needs a `--space-id` target
|
|
32
|
+
|
|
33
|
+
If the user hasn't specified a target, find it:
|
|
34
|
+
```bash
|
|
35
|
+
clickup space list --format json
|
|
36
|
+
clickup folder list --space-id <id> --format json
|
|
37
|
+
clickup list list --folder-id <id> --format json
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
### Step 3: Apply the template
|
|
41
|
+
|
|
42
|
+
```bash
|
|
43
|
+
# Task template
|
|
44
|
+
TASK_ID=$(clickup template apply-task \
|
|
45
|
+
--list-id <list-id> \
|
|
46
|
+
--template-id <tmpl-id> \
|
|
47
|
+
--name "<instance-name>" \
|
|
48
|
+
--format id)
|
|
49
|
+
|
|
50
|
+
# List template (into folder)
|
|
51
|
+
LIST_ID=$(clickup template apply-list \
|
|
52
|
+
--folder-id <folder-id> \
|
|
53
|
+
--template-id <tmpl-id> \
|
|
54
|
+
--name "<instance-name>" \
|
|
55
|
+
--format id)
|
|
56
|
+
|
|
57
|
+
# List template (into space, folderless)
|
|
58
|
+
LIST_ID=$(clickup template apply-list \
|
|
59
|
+
--space-id <space-id> \
|
|
60
|
+
--template-id <tmpl-id> \
|
|
61
|
+
--name "<instance-name>" \
|
|
62
|
+
--format id)
|
|
63
|
+
|
|
64
|
+
# Folder template
|
|
65
|
+
FOLDER_ID=$(clickup template apply-folder \
|
|
66
|
+
--space-id <space-id> \
|
|
67
|
+
--template-id <tmpl-id> \
|
|
68
|
+
--name "<instance-name>" \
|
|
69
|
+
--format id)
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
### Step 4: Configure the created resource
|
|
73
|
+
|
|
74
|
+
For a task template result, set assignees, dates, and custom fields:
|
|
75
|
+
```bash
|
|
76
|
+
# Assign team members
|
|
77
|
+
clickup task update "$TASK_ID" --assignee-add <user-id>
|
|
78
|
+
|
|
79
|
+
# Set start and due dates (Unix milliseconds)
|
|
80
|
+
clickup task update "$TASK_ID" --start-date <ms> --due-date <ms>
|
|
81
|
+
|
|
82
|
+
# Fill in custom fields
|
|
83
|
+
clickup field set --task-id "$TASK_ID" --field-id <field-id> --value "<value>"
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
For a list template result, populate it with initial tasks if needed:
|
|
87
|
+
```bash
|
|
88
|
+
clickup task list --list-id "$LIST_ID" --format json # review what the template created
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
For a folder template result, review the created structure:
|
|
92
|
+
```bash
|
|
93
|
+
clickup list list --folder-id "$FOLDER_ID" --format table
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
### Step 5: Confirm and summarize
|
|
97
|
+
|
|
98
|
+
Report what was created:
|
|
99
|
+
- Resource type and ID
|
|
100
|
+
- Name used
|
|
101
|
+
- Assignees set
|
|
102
|
+
- Dates configured
|
|
103
|
+
- Custom fields populated
|
|
104
|
+
- Link or path in the ClickUp hierarchy
|
|
105
|
+
|
|
106
|
+
## Tips
|
|
107
|
+
|
|
108
|
+
- Use `--name` to give each rollout a unique name (e.g. "Client Onboarding - Acme Corp" or "Sprint 14 - Apr 7")
|
|
109
|
+
- Templates carry over all custom field definitions -- just fill in the values after applying
|
|
110
|
+
- Task IDs from `--format id` can be piped directly into update and field commands
|
|
111
|
+
- If rolling out multiple instances at once, loop over a list of names or targets
|
|
@@ -11,12 +11,15 @@ Manage the organizational hierarchy: Workspace > Space > Folder > List. Lists co
|
|
|
11
11
|
## Workspace Commands
|
|
12
12
|
|
|
13
13
|
```bash
|
|
14
|
+
clickup workspace setup # Auto-configure workspace (run after auth login)
|
|
14
15
|
clickup workspace list # List all workspaces
|
|
15
16
|
clickup workspace get [--workspace-id <id>] # Get workspace details
|
|
16
17
|
clickup workspace seats [--workspace-id <id>] # Show seat usage
|
|
17
18
|
clickup workspace plan [--workspace-id <id>] # Show billing plan
|
|
18
19
|
```
|
|
19
20
|
|
|
21
|
+
`workspace setup` calls `GET /team`, auto-selects if only one workspace exists, prompts in TTY if multiple, and saves the workspace to the active profile. After running it, `--workspace-id` is not needed for subsequent commands.
|
|
22
|
+
|
|
20
23
|
## Space Commands
|
|
21
24
|
|
|
22
25
|
```bash
|
|
@@ -33,7 +33,7 @@ clickup task get <task-id> [--include-subtasks] [--include-markdown-description]
|
|
|
33
33
|
```bash
|
|
34
34
|
clickup task create --list-id <id> --name <name>
|
|
35
35
|
[--description <text>] [--markdown-description <md>]
|
|
36
|
-
[--status <s>] [--priority <1-4>] [--due-date <ts>] [--start-date <ts>]
|
|
36
|
+
[--status <s>] [--priority <1-4|urgent|high|normal|low>] [--due-date <ts>] [--start-date <ts>]
|
|
37
37
|
[--assignee <id>...] [--tag <name>...] [--time-estimate <ms>]
|
|
38
38
|
[--parent <task-id>] [--custom-field <id=value>...]
|
|
39
39
|
```
|
|
@@ -41,15 +41,28 @@ clickup task create --list-id <id> --name <name>
|
|
|
41
41
|
### Update a task
|
|
42
42
|
```bash
|
|
43
43
|
clickup task update <task-id> [--name <name>] [--description <text>]
|
|
44
|
-
[--status <s>] [--priority <1-4>] [--due-date <ts>] [--start-date <ts>]
|
|
44
|
+
[--status <s>] [--priority <1-4|urgent|high|normal|low>] [--due-date <ts>] [--start-date <ts>]
|
|
45
45
|
[--assignee-add <id>...] [--assignee-remove <id>...] [--archived <bool>]
|
|
46
46
|
```
|
|
47
47
|
|
|
48
|
+
Priority accepts both integers (`1`-`4`) and strings (`urgent`, `high`, `normal`, `low`). Mapping: urgent=1, high=2, normal=3, low=4.
|
|
49
|
+
|
|
48
50
|
### Delete a task
|
|
49
51
|
```bash
|
|
50
52
|
clickup task delete <task-id> --confirm
|
|
51
53
|
```
|
|
52
54
|
|
|
55
|
+
### Bulk operations (concurrency limit 3)
|
|
56
|
+
```bash
|
|
57
|
+
# Apply the same update to multiple tasks
|
|
58
|
+
clickup task bulk-update --task-id <id> --task-id <id> ... [same update flags as task update]
|
|
59
|
+
|
|
60
|
+
# Delete multiple tasks
|
|
61
|
+
clickup task bulk-delete --task-id <id> --task-id <id> ... --confirm
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
Both bulk commands output a results table with `task_id | name | result`.
|
|
65
|
+
|
|
53
66
|
### Time in status
|
|
54
67
|
```bash
|
|
55
68
|
clickup task time-in-status <task-id>
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: clickup-templates
|
|
3
|
+
description: Lists and applies ClickUp templates to create tasks, lists, and folders from saved process templates. Use when the user wants to roll out a repeatable process, create items from a template, or find what templates are available in the workspace.
|
|
4
|
+
allowed-tools: Bash(clickup template *), Bash(clickup schema template*)
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# ClickUp Templates
|
|
8
|
+
|
|
9
|
+
List available templates and apply them to create tasks, lists, and folders. Templates are defined in the ClickUp UI and can be rolled out repeatedly via the CLI.
|
|
10
|
+
|
|
11
|
+
## List Templates
|
|
12
|
+
|
|
13
|
+
```bash
|
|
14
|
+
clickup template list [--workspace-id <id>] [--page <n>]
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
Returns all task templates in the workspace. Use this to find template IDs before applying them.
|
|
18
|
+
|
|
19
|
+
## Apply a Task Template
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
clickup template apply-task --list-id <id> --template-id <id> [--name <override-name>]
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
Creates a new task in the specified list using the template structure, including all custom fields defined on the template.
|
|
26
|
+
|
|
27
|
+
## Apply a List Template
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
# Into a folder
|
|
31
|
+
clickup template apply-list --folder-id <id> --template-id <id> [--name <override-name>]
|
|
32
|
+
|
|
33
|
+
# Into a space (folderless)
|
|
34
|
+
clickup template apply-list --space-id <id> --template-id <id> [--name <override-name>]
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
Provide exactly one of `--folder-id` or `--space-id`.
|
|
38
|
+
|
|
39
|
+
## Apply a Folder Template
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
clickup template apply-folder --space-id <id> --template-id <id> [--name <override-name>]
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
Creates an entire folder structure (with nested lists and tasks) from the template.
|
|
46
|
+
|
|
47
|
+
## Common Patterns
|
|
48
|
+
|
|
49
|
+
```bash
|
|
50
|
+
# Step 1: Find available templates
|
|
51
|
+
clickup template list --format json
|
|
52
|
+
|
|
53
|
+
# Step 2: Apply a task template and capture the new task ID
|
|
54
|
+
TASK_ID=$(clickup template apply-task --list-id <id> --template-id <tmpl_id> --format id)
|
|
55
|
+
|
|
56
|
+
# Step 3: Set assignee and due date on the created task
|
|
57
|
+
clickup task update "$TASK_ID" --assignee-add 112233 --due-date 1735689600000
|
|
58
|
+
|
|
59
|
+
# Step 4: Fill in custom fields
|
|
60
|
+
clickup field set --task-id "$TASK_ID" --field-id cf_001 --value "In Review"
|
|
61
|
+
|
|
62
|
+
# Roll out a named instance of a process template
|
|
63
|
+
clickup template apply-list --folder-id <id> --template-id <tmpl_id> --name "Q1 Launch - March 2026"
|
|
64
|
+
|
|
65
|
+
# Apply a folder template to scaffold a whole project
|
|
66
|
+
clickup template apply-folder --space-id <id> --template-id <tmpl_id> --name "Client Onboarding - Acme Corp"
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
## Discovery
|
|
70
|
+
|
|
71
|
+
```bash
|
|
72
|
+
clickup schema template # List all template actions
|
|
73
|
+
clickup schema template.apply-task # Show apply-task fields
|
|
74
|
+
clickup schema template.apply-list # Show apply-list fields
|
|
75
|
+
clickup schema template.apply-folder # Show apply-folder fields
|
|
76
|
+
```
|
|
@@ -25,7 +25,7 @@ clickup time update <timer-id> --workspace-id <id>
|
|
|
25
25
|
[--description <text>] [--duration <ms>] [--start <ts>]
|
|
26
26
|
[--tag-action <add|remove>] [--tag <name>...] [--billable <bool>]
|
|
27
27
|
|
|
28
|
-
clickup time delete <timer-id> --workspace-id <id>
|
|
28
|
+
clickup time delete <timer-id> --workspace-id <id> --confirm
|
|
29
29
|
```
|
|
30
30
|
|
|
31
31
|
### Get / History
|
|
@@ -77,7 +77,8 @@ clickup time list --workspace-id 9876543 --format md
|
|
|
77
77
|
|
|
78
78
|
- Duration is always in **milliseconds** (1 hour = 3600000, 1 minute = 60000)
|
|
79
79
|
- Start timestamps are Unix milliseconds
|
|
80
|
-
- `time delete`
|
|
80
|
+
- `time delete` requires `--confirm` in non-interactive mode (like all delete commands)
|
|
81
|
+
- `--billable` accepts only `true` or `false`; anything else errors (exit 2)
|
|
81
82
|
|
|
82
83
|
## Discovery
|
|
83
84
|
|