@krodak/clickup-cli 0.14.0 → 0.16.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/plugin.json +2 -2
- package/README.md +213 -477
- package/dist/index.js +420 -4
- package/package.json +1 -1
- package/skills/clickup-cli/SKILL.md +57 -34
package/README.md
CHANGED
|
@@ -8,547 +8,279 @@
|
|
|
8
8
|
[](https://github.com/krodak/clickup-cli/actions/workflows/ci.yml)
|
|
9
9
|
|
|
10
10
|
```bash
|
|
11
|
-
npm install -g @krodak/clickup-cli
|
|
12
|
-
cu init # walks you through API token + workspace setup
|
|
11
|
+
npm install -g @krodak/clickup-cli && cu init
|
|
13
12
|
```
|
|
14
13
|
|
|
15
|
-
|
|
14
|
+
## Talk to your agent
|
|
16
15
|
|
|
17
|
-
|
|
16
|
+
Install the CLI, add the skill file to your agent, and it works with ClickUp. No API knowledge needed.
|
|
18
17
|
|
|
19
|
-
|
|
18
|
+
> **"Read task abc123, do the work, then mark it in review and leave a comment with the commit hash."**
|
|
20
19
|
|
|
21
|
-
|
|
20
|
+
> **"What's my standup? What did I finish, what's in progress, what's overdue?"**
|
|
22
21
|
|
|
23
|
-
|
|
22
|
+
> **"Create a subtask under the initiative for the edge case we found."**
|
|
24
23
|
|
|
25
|
-
**
|
|
24
|
+
> **"Check my sprint and tell me what's behind schedule."**
|
|
26
25
|
|
|
27
|
-
|
|
26
|
+
> **"Update the description with your findings and flag blockers in a comment."**
|
|
28
27
|
|
|
29
|
-
|
|
30
|
-
claude --plugin-dir ./node_modules/@krodak/clickup-cli
|
|
31
|
-
```
|
|
32
|
-
|
|
33
|
-
Or copy the skill manually:
|
|
34
|
-
|
|
35
|
-
```bash
|
|
36
|
-
mkdir -p ~/.claude/skills/clickup
|
|
37
|
-
cp skills/clickup-cli/SKILL.md ~/.claude/skills/clickup/SKILL.md
|
|
38
|
-
```
|
|
39
|
-
|
|
40
|
-
Then reference it in your `CLAUDE.md` or project instructions.
|
|
41
|
-
|
|
42
|
-
**OpenCode:**
|
|
43
|
-
|
|
44
|
-
```bash
|
|
45
|
-
mkdir -p ~/.config/opencode/skills/clickup
|
|
46
|
-
cp skills/clickup-cli/SKILL.md ~/.config/opencode/skills/clickup/SKILL.md
|
|
47
|
-
```
|
|
48
|
-
|
|
49
|
-
**Codex / other agents:**
|
|
50
|
-
|
|
51
|
-
Copy the contents of `skills/clickup-cli/SKILL.md` into your system prompt or project instructions. It's a standalone markdown document.
|
|
52
|
-
|
|
53
|
-
### 2. Talk to your agent
|
|
54
|
-
|
|
55
|
-
Once the skill is installed, you just tell the agent what you need in plain language. It figures out which `cu` commands to run.
|
|
56
|
-
|
|
57
|
-
```
|
|
58
|
-
"Read the description of task <id>, do the work, then mark it in review and leave a comment with the commit hash."
|
|
59
|
-
|
|
60
|
-
"Check all subtasks under initiative <id> and improve their descriptions based on what's in the codebase."
|
|
28
|
+
The agent reads the skill file, picks the right `cu` commands, and handles everything. You don't need to learn the CLI - the agent does.
|
|
61
29
|
|
|
62
|
-
|
|
30
|
+
## Install
|
|
63
31
|
|
|
64
|
-
|
|
32
|
+
You need Node 22+ and a ClickUp personal API token (`pk_...` from [ClickUp Settings > Apps](https://app.clickup.com/settings/apps)).
|
|
65
33
|
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
"Check my sprint and tell me what's overdue."
|
|
69
|
-
```
|
|
70
|
-
|
|
71
|
-
You don't need to learn the CLI commands yourself. The agent handles it.
|
|
72
|
-
|
|
73
|
-
### Why a CLI and not MCP?
|
|
74
|
-
|
|
75
|
-
A CLI + skill file has fewer moving parts. No extra server process, no protocol layer. The agent already knows how to run shell commands - the skill file just teaches it which ones exist. This matches what Peter Steinberger and the OpenClaw project have found: for tool-use with coding agents, CLI + instructions tends to work better than MCP in practice.
|
|
76
|
-
|
|
77
|
-
### Scoped output
|
|
78
|
-
|
|
79
|
-
Most commands return only your tasks by default. `cu tasks`, `cu sprint`, `cu overdue`, `cu summary` all scope to what's assigned to you. `cu spaces --my` filters to spaces where you have tasks. This keeps output small and relevant - important when it's going into an agent's context window.
|
|
80
|
-
|
|
81
|
-
## Using from the terminal
|
|
82
|
-
|
|
83
|
-
When you run `cu` in a terminal directly, you get an interactive mode with tables and a task picker.
|
|
84
|
-
|
|
85
|
-
```bash
|
|
86
|
-
cu tasks # interactive table with checkbox picker
|
|
87
|
-
cu sprint # your sprint tasks, auto-detected
|
|
88
|
-
cu summary # standup helper: completed / in progress / overdue
|
|
89
|
-
cu overdue # tasks past their due date
|
|
90
|
-
cu open "login bug" # fuzzy search, opens in browser
|
|
91
|
-
cu update abc123 -s "done" # update status
|
|
92
|
-
cu assign abc123 --to me # assign yourself
|
|
93
|
-
```
|
|
94
|
-
|
|
95
|
-
Pass `--json` to any read command to force JSON output instead of the default format.
|
|
96
|
-
|
|
97
|
-
When output is piped (no TTY), all commands output **Markdown** by default - optimized for AI agent context windows. Pass `--json` to any command for JSON output. Set `CU_OUTPUT=json` environment variable to always get JSON when piped.
|
|
98
|
-
|
|
99
|
-
## Commands
|
|
100
|
-
|
|
101
|
-
31 commands total. All support `--help` for full flag details.
|
|
102
|
-
|
|
103
|
-
### `cu init`
|
|
104
|
-
|
|
105
|
-
First-time setup. Prompts for your API token, verifies it, auto-detects your workspace, and writes `~/.config/cu/config.json`.
|
|
34
|
+
<details open>
|
|
35
|
+
<summary> <img src="https://img.shields.io/badge/npm-CB3837?logo=npm&logoColor=white" height="18" align="center"> <strong>npm</strong></summary>
|
|
106
36
|
|
|
107
37
|
```bash
|
|
38
|
+
npm install -g @krodak/clickup-cli
|
|
108
39
|
cu init
|
|
109
40
|
```
|
|
110
41
|
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
List tasks assigned to me. By default shows all task types. Use `--type` to filter by task type.
|
|
114
|
-
|
|
115
|
-
```bash
|
|
116
|
-
cu tasks
|
|
117
|
-
cu tasks --status "in progress"
|
|
118
|
-
cu tasks --name "login"
|
|
119
|
-
cu tasks --type task # regular tasks only
|
|
120
|
-
cu tasks --type initiative # initiatives only
|
|
121
|
-
cu tasks --type "Bug" # custom task type by name
|
|
122
|
-
cu tasks --list <listId>
|
|
123
|
-
cu tasks --space <spaceId>
|
|
124
|
-
cu tasks --include-closed
|
|
125
|
-
cu tasks --json
|
|
126
|
-
```
|
|
127
|
-
|
|
128
|
-
### `cu sprint`
|
|
129
|
-
|
|
130
|
-
List my tasks in the currently active sprint (auto-detected from sprint folder date ranges).
|
|
131
|
-
|
|
132
|
-
```bash
|
|
133
|
-
cu sprint
|
|
134
|
-
cu sprint --status "in progress"
|
|
135
|
-
cu sprint --include-closed
|
|
136
|
-
cu sprint --json
|
|
137
|
-
```
|
|
138
|
-
|
|
139
|
-
### `cu sprints`
|
|
140
|
-
|
|
141
|
-
List all sprints across sprint folders. Marks the currently active sprint.
|
|
142
|
-
|
|
143
|
-
```bash
|
|
144
|
-
cu sprints
|
|
145
|
-
cu sprints --space "Engineering"
|
|
146
|
-
cu sprints --json
|
|
147
|
-
```
|
|
148
|
-
|
|
149
|
-
### `cu assigned`
|
|
150
|
-
|
|
151
|
-
All tasks assigned to me, grouped by pipeline stage (code review, in progress, to do, etc.).
|
|
152
|
-
|
|
153
|
-
```bash
|
|
154
|
-
cu assigned
|
|
155
|
-
cu assigned --status "in progress"
|
|
156
|
-
cu assigned --include-closed
|
|
157
|
-
cu assigned --json
|
|
158
|
-
```
|
|
159
|
-
|
|
160
|
-
### `cu inbox`
|
|
161
|
-
|
|
162
|
-
Tasks assigned to me that were recently updated, grouped by time period (today, yesterday, last 7 days, etc.). Default lookback is 30 days.
|
|
163
|
-
|
|
164
|
-
```bash
|
|
165
|
-
cu inbox
|
|
166
|
-
cu inbox --days 7
|
|
167
|
-
cu inbox --include-closed
|
|
168
|
-
cu inbox --json
|
|
169
|
-
```
|
|
170
|
-
|
|
171
|
-
### `cu task <id>`
|
|
172
|
-
|
|
173
|
-
Get task details including custom fields and checklists. Pretty summary in terminal, JSON when piped.
|
|
174
|
-
|
|
175
|
-
```bash
|
|
176
|
-
cu task abc123
|
|
177
|
-
cu task abc123 --json
|
|
178
|
-
```
|
|
179
|
-
|
|
180
|
-
**Note:** When piped, `cu task` outputs a structured Markdown summary of the task. For the full raw API response with all fields (custom fields, checklists, etc.), use `--json`.
|
|
181
|
-
|
|
182
|
-
### `cu subtasks <id>`
|
|
183
|
-
|
|
184
|
-
List subtasks of a task.
|
|
185
|
-
|
|
186
|
-
```bash
|
|
187
|
-
cu subtasks abc123
|
|
188
|
-
cu subtasks abc123 --status "in progress"
|
|
189
|
-
cu subtasks abc123 --name "auth"
|
|
190
|
-
cu subtasks abc123 --include-closed
|
|
191
|
-
cu subtasks abc123 --json
|
|
192
|
-
```
|
|
193
|
-
|
|
194
|
-
### `cu update <id>`
|
|
195
|
-
|
|
196
|
-
Update a task. Provide at least one option.
|
|
197
|
-
|
|
198
|
-
```bash
|
|
199
|
-
cu update abc123 -s "in progress"
|
|
200
|
-
cu update abc123 -n "New task name"
|
|
201
|
-
cu update abc123 -d "Updated description with **markdown**"
|
|
202
|
-
cu update abc123 --priority high
|
|
203
|
-
cu update abc123 --due-date 2025-03-15
|
|
204
|
-
cu update abc123 --assignee me
|
|
205
|
-
cu update abc123 --assignee 12345
|
|
206
|
-
cu update abc123 -n "New name" -s "done" --priority urgent
|
|
207
|
-
cu update abc123 --time-estimate 2h
|
|
208
|
-
cu update abc123 --parent parentTaskId # make it a subtask
|
|
209
|
-
cu update abc123 -s "in progress" --json
|
|
210
|
-
```
|
|
211
|
-
|
|
212
|
-
| Flag | Description |
|
|
213
|
-
| ---------------------------- | --------------------------------------------------------------------------- |
|
|
214
|
-
| `-n, --name <text>` | New task name |
|
|
215
|
-
| `-d, --description <text>` | New description (markdown supported) |
|
|
216
|
-
| `-s, --status <status>` | New status, supports fuzzy matching (e.g. `"prog"` matches `"in progress"`) |
|
|
217
|
-
| `--priority <level>` | Priority: `urgent`, `high`, `normal`, `low` (or 1-4) |
|
|
218
|
-
| `--due-date <date>` | Due date (`YYYY-MM-DD`) |
|
|
219
|
-
| `--time-estimate <duration>` | Time estimate (e.g. `"2h"`, `"30m"`, `"1h30m"`) |
|
|
220
|
-
| `--assignee <userId>` | Add assignee by user ID or `"me"` |
|
|
221
|
-
| `--parent <taskId>` | Set parent task (makes this a subtask) |
|
|
222
|
-
| `--json` | Force JSON output even in terminal |
|
|
223
|
-
|
|
224
|
-
### `cu create`
|
|
42
|
+
</details>
|
|
225
43
|
|
|
226
|
-
|
|
44
|
+
<details>
|
|
45
|
+
<summary> <img src="https://img.shields.io/badge/Homebrew-FBB040?logo=homebrew&logoColor=black" height="18" align="center"> <strong>Homebrew</strong></summary>
|
|
227
46
|
|
|
228
47
|
```bash
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
cu
|
|
232
|
-
cu create -n "Task" -l <listId> --priority high --due-date 2025-06-01
|
|
233
|
-
cu create -n "Task" -l <listId> --assignee me --tags "bug,frontend"
|
|
234
|
-
cu create -n "Initiative" -l <listId> --custom-item-id 1
|
|
235
|
-
cu create -n "Task" -l <listId> --time-estimate 2h
|
|
236
|
-
cu create -n "Fix bug" -l <listId> --json
|
|
237
|
-
```
|
|
238
|
-
|
|
239
|
-
| Flag | Required | Description |
|
|
240
|
-
| ---------------------------- | ---------------- | ---------------------------------------------------- |
|
|
241
|
-
| `-n, --name <name>` | yes | Task name |
|
|
242
|
-
| `-l, --list <listId>` | if no `--parent` | Target list ID |
|
|
243
|
-
| `-p, --parent <taskId>` | no | Parent task (list auto-detected) |
|
|
244
|
-
| `-d, --description <text>` | no | Description (markdown) |
|
|
245
|
-
| `-s, --status <status>` | no | Initial status |
|
|
246
|
-
| `--priority <level>` | no | Priority: `urgent`, `high`, `normal`, `low` (or 1-4) |
|
|
247
|
-
| `--due-date <date>` | no | Due date (`YYYY-MM-DD`) |
|
|
248
|
-
| `--time-estimate <duration>` | no | Time estimate (e.g. `"2h"`, `"30m"`, `"1h30m"`) |
|
|
249
|
-
| `--assignee <userId>` | no | Assignee by user ID or `"me"` |
|
|
250
|
-
| `--tags <tags>` | no | Comma-separated tag names |
|
|
251
|
-
| `--custom-item-id <id>` | no | Custom task type ID (e.g. for creating initiatives) |
|
|
252
|
-
| `--json` | no | Force JSON output even in terminal |
|
|
253
|
-
|
|
254
|
-
### `cu delete <id>`
|
|
255
|
-
|
|
256
|
-
Delete a task. **DESTRUCTIVE - cannot be undone.**
|
|
257
|
-
|
|
258
|
-
```bash
|
|
259
|
-
cu delete abc123
|
|
260
|
-
cu delete abc123 --confirm
|
|
261
|
-
cu delete abc123 --confirm --json
|
|
262
|
-
```
|
|
263
|
-
|
|
264
|
-
In TTY mode without `--confirm`: shows the task name and prompts for confirmation (default: No). In non-interactive/piped mode, `--confirm` is required.
|
|
265
|
-
|
|
266
|
-
| Flag | Description |
|
|
267
|
-
| ----------- | ----------------------------------------------------------- |
|
|
268
|
-
| `--confirm` | Skip confirmation prompt (required in non-interactive mode) |
|
|
269
|
-
| `--json` | Force JSON output |
|
|
270
|
-
|
|
271
|
-
### `cu field <id>`
|
|
272
|
-
|
|
273
|
-
Set or remove a custom field value. Field names are resolved case-insensitively; errors list available fields/options.
|
|
274
|
-
|
|
275
|
-
```bash
|
|
276
|
-
cu field abc123 --set "Priority Level" high
|
|
277
|
-
cu field abc123 --set "Story Points" 5
|
|
278
|
-
cu field abc123 --set "Approved" true
|
|
279
|
-
cu field abc123 --set "Category" "Bug Fix"
|
|
280
|
-
cu field abc123 --set "Due" 2025-06-01
|
|
281
|
-
cu field abc123 --set "Website" "https://example.com"
|
|
282
|
-
cu field abc123 --set "Contact" "user@example.com"
|
|
283
|
-
cu field abc123 --remove "Priority Level"
|
|
284
|
-
cu field abc123 --set "Points" 3 --remove "Old Field"
|
|
285
|
-
cu field abc123 --set "Points" 3 --json
|
|
286
|
-
```
|
|
287
|
-
|
|
288
|
-
| Flag | Description |
|
|
289
|
-
| -------------------------- | -------------------------------------------------------------------------------------------------------------------------------- |
|
|
290
|
-
| `--set "Field Name" <val>` | Set a custom field by name. Supports: text, number, checkbox (true/false), dropdown (option name), date (YYYY-MM-DD), url, email |
|
|
291
|
-
| `--remove "Field Name"` | Remove a custom field value |
|
|
292
|
-
| `--json` | Force JSON output |
|
|
293
|
-
|
|
294
|
-
Both `--set` and `--remove` can be used together in one invocation.
|
|
295
|
-
|
|
296
|
-
### `cu comment <id>`
|
|
297
|
-
|
|
298
|
-
Post a comment on a task.
|
|
299
|
-
|
|
300
|
-
```bash
|
|
301
|
-
cu comment abc123 -m "Addressed in PR #42"
|
|
302
|
-
cu comment abc123 -m "Done" --json
|
|
303
|
-
```
|
|
304
|
-
|
|
305
|
-
### `cu comments <id>`
|
|
306
|
-
|
|
307
|
-
List comments on a task. Formatted view in terminal, JSON when piped.
|
|
308
|
-
|
|
309
|
-
```bash
|
|
310
|
-
cu comments abc123
|
|
311
|
-
cu comments abc123 --json
|
|
312
|
-
```
|
|
313
|
-
|
|
314
|
-
### `cu comment-edit <commentId>`
|
|
315
|
-
|
|
316
|
-
Edit an existing comment on a task.
|
|
317
|
-
|
|
318
|
-
```bash
|
|
319
|
-
cu comment-edit <commentId> -m "Updated text"
|
|
320
|
-
cu comment-edit <commentId> -m "Fixed" --resolved
|
|
321
|
-
cu comment-edit <commentId> -m "Reopening" --unresolved
|
|
322
|
-
cu comment-edit <commentId> -m "Updated" --json
|
|
323
|
-
```
|
|
324
|
-
|
|
325
|
-
| Flag | Required | Description |
|
|
326
|
-
| --------------- | -------- | -------------------------- |
|
|
327
|
-
| `-m, --message` | yes | New comment text |
|
|
328
|
-
| `--resolved` | no | Mark comment as resolved |
|
|
329
|
-
| `--unresolved` | no | Mark comment as unresolved |
|
|
330
|
-
| `--json` | no | Force JSON output |
|
|
331
|
-
|
|
332
|
-
### `cu activity <id>`
|
|
333
|
-
|
|
334
|
-
View task details and comment history together. Combines `cu task` and `cu comments` into a single view.
|
|
335
|
-
|
|
336
|
-
```bash
|
|
337
|
-
cu activity abc123
|
|
338
|
-
cu activity abc123 --json
|
|
339
|
-
```
|
|
340
|
-
|
|
341
|
-
### `cu lists <spaceId>`
|
|
342
|
-
|
|
343
|
-
List all lists in a space, including lists inside folders. Useful for discovering list IDs needed by `--list` filter and `cu create -l`.
|
|
344
|
-
|
|
345
|
-
```bash
|
|
346
|
-
cu lists <spaceId>
|
|
347
|
-
cu lists <spaceId> --name "sprint"
|
|
348
|
-
cu lists <spaceId> --json
|
|
349
|
-
```
|
|
350
|
-
|
|
351
|
-
| Flag | Description |
|
|
352
|
-
| ------------------ | ---------------------------------- |
|
|
353
|
-
| `--name <partial>` | Filter lists by partial name match |
|
|
354
|
-
| `--json` | Force JSON output |
|
|
355
|
-
|
|
356
|
-
### `cu spaces`
|
|
357
|
-
|
|
358
|
-
List spaces in your workspace. Useful for getting space IDs for the `--space` filter.
|
|
359
|
-
|
|
360
|
-
```bash
|
|
361
|
-
cu spaces
|
|
362
|
-
cu spaces --name "eng"
|
|
363
|
-
cu spaces --my
|
|
364
|
-
cu spaces --json
|
|
365
|
-
```
|
|
366
|
-
|
|
367
|
-
| Flag | Description |
|
|
368
|
-
| ------------------ | -------------------------------------------- |
|
|
369
|
-
| `--name <partial>` | Filter spaces by partial name match |
|
|
370
|
-
| `--my` | Show only spaces where I have assigned tasks |
|
|
371
|
-
| `--json` | Force JSON output |
|
|
372
|
-
|
|
373
|
-
### `cu open <query>`
|
|
374
|
-
|
|
375
|
-
Open a task in the browser. Accepts a task ID or partial name.
|
|
376
|
-
|
|
377
|
-
```bash
|
|
378
|
-
cu open abc123
|
|
379
|
-
cu open "login bug"
|
|
380
|
-
cu open abc123 --json
|
|
48
|
+
brew tap krodak/tap
|
|
49
|
+
brew install clickup-cli
|
|
50
|
+
cu init
|
|
381
51
|
```
|
|
382
52
|
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
### `cu search <query>`
|
|
53
|
+
</details>
|
|
386
54
|
|
|
387
|
-
|
|
55
|
+
## Set up your agent
|
|
388
56
|
|
|
389
|
-
|
|
390
|
-
cu search "login bug"
|
|
391
|
-
cu search auth
|
|
392
|
-
cu search "payment flow" --json
|
|
393
|
-
cu search auth --status "prog" # fuzzy matches "in progress"
|
|
394
|
-
cu search "old task" --include-closed
|
|
395
|
-
```
|
|
57
|
+
The package includes a [skill file](https://agentskills.io) that teaches agents all available commands and when to use them. All three major coding agents support skills natively:
|
|
396
58
|
|
|
397
|
-
|
|
59
|
+
<details open>
|
|
60
|
+
<summary> <img src="https://img.shields.io/badge/Claude_Code-D97757?logo=anthropic&logoColor=white" height="18" align="center"> <strong>Claude Code</strong></summary>
|
|
398
61
|
|
|
399
|
-
|
|
62
|
+
**Install as a [plugin](https://docs.anthropic.com/en/docs/claude-code/plugins)** (recommended):
|
|
400
63
|
|
|
401
64
|
```bash
|
|
402
|
-
|
|
403
|
-
cu summary --hours 48
|
|
404
|
-
cu summary --json
|
|
65
|
+
claude plugin add $(npm root -g)/@krodak/clickup-cli
|
|
405
66
|
```
|
|
406
67
|
|
|
407
|
-
|
|
408
|
-
| ------------- | -------------------------------------------------- |
|
|
409
|
-
| `--hours <n>` | Lookback for recently completed tasks (default 24) |
|
|
410
|
-
| `--json` | Force JSON output |
|
|
68
|
+
This registers the skill under the `clickup-cli:` namespace. Claude loads it automatically when you work with ClickUp tasks.
|
|
411
69
|
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
List tasks that are past their due date (excludes done/closed tasks by default). Sorted most overdue first.
|
|
70
|
+
**Or install as a personal skill** (no namespace prefix):
|
|
415
71
|
|
|
416
72
|
```bash
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
```
|
|
421
|
-
|
|
422
|
-
### `cu assign <id>`
|
|
423
|
-
|
|
424
|
-
Assign or unassign users from a task. Supports `me` as shorthand for your user ID.
|
|
425
|
-
|
|
426
|
-
```bash
|
|
427
|
-
cu assign abc123 --to 12345
|
|
428
|
-
cu assign abc123 --to me
|
|
429
|
-
cu assign abc123 --remove 12345
|
|
430
|
-
cu assign abc123 --to me --remove 67890
|
|
431
|
-
cu assign abc123 --to me --json
|
|
73
|
+
SKILL=$(npm root -g)/@krodak/clickup-cli/skills/clickup-cli
|
|
74
|
+
mkdir -p ~/.claude/skills/clickup
|
|
75
|
+
cp "$SKILL/SKILL.md" ~/.claude/skills/clickup/SKILL.md
|
|
432
76
|
```
|
|
433
77
|
|
|
434
|
-
|
|
435
|
-
| ------------------- | --------------------------------- |
|
|
436
|
-
| `--to <userId>` | Add assignee (user ID or `me`) |
|
|
437
|
-
| `--remove <userId>` | Remove assignee (user ID or `me`) |
|
|
438
|
-
| `--json` | Force JSON output |
|
|
439
|
-
|
|
440
|
-
### `cu depend <id>`
|
|
441
|
-
|
|
442
|
-
Add or remove task dependencies. Set a task as waiting on or blocking another task.
|
|
443
|
-
|
|
444
|
-
```bash
|
|
445
|
-
cu depend abc123 --on def456 # abc123 depends on (waits for) def456
|
|
446
|
-
cu depend abc123 --blocks def456 # abc123 blocks def456
|
|
447
|
-
cu depend abc123 --on def456 --remove # remove the dependency
|
|
448
|
-
cu depend abc123 --blocks def456 --remove
|
|
449
|
-
cu depend abc123 --on def456 --json
|
|
450
|
-
```
|
|
78
|
+
</details>
|
|
451
79
|
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
| `--on <taskId>` | Task that this task depends on (waiting on) |
|
|
455
|
-
| `--blocks <taskId>` | Task that this task blocks |
|
|
456
|
-
| `--remove` | Remove the dependency instead of adding it |
|
|
457
|
-
| `--json` | Force JSON output |
|
|
80
|
+
<details>
|
|
81
|
+
<summary> <img src="https://img.shields.io/badge/Codex-412991?logo=openai&logoColor=white" height="18" align="center"> <strong>Codex</strong></summary>
|
|
458
82
|
|
|
459
|
-
|
|
83
|
+
Codex supports [agent skills](https://developers.openai.com/codex/skills) across CLI, IDE extension, and web. Skills use the same `SKILL.md` format with YAML frontmatter.
|
|
460
84
|
|
|
461
|
-
|
|
85
|
+
**Install as a user skill** (available across all your projects):
|
|
462
86
|
|
|
463
87
|
```bash
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
cu move abc123 --to <listId> --json
|
|
88
|
+
SKILL=$(npm root -g)/@krodak/clickup-cli/skills/clickup-cli
|
|
89
|
+
mkdir -p ~/.agents/skills/clickup
|
|
90
|
+
cp "$SKILL/SKILL.md" ~/.agents/skills/clickup/SKILL.md
|
|
468
91
|
```
|
|
469
92
|
|
|
470
|
-
|
|
471
|
-
| ------------------- | -------------------------- |
|
|
472
|
-
| `--to <listId>` | Add task to this list |
|
|
473
|
-
| `--remove <listId>` | Remove task from this list |
|
|
474
|
-
| `--json` | Force JSON output |
|
|
475
|
-
|
|
476
|
-
### `cu tag <id>`
|
|
477
|
-
|
|
478
|
-
Add or remove tags on a task. Both `--add` and `--remove` can be used together.
|
|
93
|
+
**Or install as a project skill** (checked into your repo):
|
|
479
94
|
|
|
480
95
|
```bash
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
cu tag abc123 --add "bug" --remove "triage"
|
|
485
|
-
cu tag abc123 --add "bug" --json
|
|
96
|
+
SKILL=$(npm root -g)/@krodak/clickup-cli/skills/clickup-cli
|
|
97
|
+
mkdir -p .agents/skills/clickup
|
|
98
|
+
cp "$SKILL/SKILL.md" .agents/skills/clickup/SKILL.md
|
|
486
99
|
```
|
|
487
100
|
|
|
488
|
-
|
|
489
|
-
| ----------------- | ----------------------------------- |
|
|
490
|
-
| `--add <tags>` | Comma-separated tag names to add |
|
|
491
|
-
| `--remove <tags>` | Comma-separated tag names to remove |
|
|
492
|
-
| `--json` | Force JSON output |
|
|
101
|
+
You can also use the built-in installer: `$skill-installer clickup`
|
|
493
102
|
|
|
494
|
-
|
|
103
|
+
</details>
|
|
495
104
|
|
|
496
|
-
|
|
105
|
+
<details>
|
|
106
|
+
<summary> <img src="https://img.shields.io/badge/OpenCode-24292e?logoColor=white" height="18" align="center"> <strong>OpenCode</strong></summary>
|
|
497
107
|
|
|
498
108
|
```bash
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
cu checklist add-item <checklistId> "Run tests" # add an item
|
|
503
|
-
cu checklist edit-item <clId> <itemId> --resolved # mark item done
|
|
504
|
-
cu checklist delete-item <clId> <itemId> # remove an item
|
|
109
|
+
SKILL=$(npm root -g)/@krodak/clickup-cli/skills/clickup-cli
|
|
110
|
+
mkdir -p ~/.config/opencode/skills/clickup
|
|
111
|
+
cp "$SKILL/SKILL.md" ~/.config/opencode/skills/clickup/SKILL.md
|
|
505
112
|
```
|
|
506
113
|
|
|
507
|
-
|
|
508
|
-
| ------------- | -------------------------------- | --------------------- |
|
|
509
|
-
| `view` | `<taskId>` | Show all checklists |
|
|
510
|
-
| `create` | `<taskId> <name>` | Create a checklist |
|
|
511
|
-
| `delete` | `<checklistId>` | Delete a checklist |
|
|
512
|
-
| `add-item` | `<checklistId> <name>` | Add checklist item |
|
|
513
|
-
| `edit-item` | `<checklistId> <itemId> [flags]` | Edit checklist item |
|
|
514
|
-
| `delete-item` | `<checklistId> <itemId>` | Delete checklist item |
|
|
114
|
+
</details>
|
|
515
115
|
|
|
516
|
-
|
|
116
|
+
<details>
|
|
117
|
+
<summary> <strong>Other agents</strong></summary>
|
|
118
|
+
|
|
119
|
+
The skill file follows the [Agent Skills](https://agentskills.io) open standard. Copy `skills/clickup-cli/SKILL.md` into your agent's skill directory, system prompt, or `AGENTS.md`.
|
|
120
|
+
|
|
121
|
+
</details>
|
|
122
|
+
|
|
123
|
+
## API Coverage
|
|
517
124
|
|
|
518
|
-
|
|
125
|
+
[Full command reference with examples and flags](docs/commands.md).
|
|
126
|
+
|
|
127
|
+
Status: :white_check_mark: implemented | :construction: planned | :no_entry_sign: won't add
|
|
128
|
+
|
|
129
|
+
### Tasks
|
|
130
|
+
|
|
131
|
+
| Feature | Command | Status |
|
|
132
|
+
| -------------------- | ---------------------- | ------------------ |
|
|
133
|
+
| List my tasks | `cu tasks` | :white_check_mark: |
|
|
134
|
+
| Get task details | `cu task <id>` | :white_check_mark: |
|
|
135
|
+
| Create task | `cu create` | :white_check_mark: |
|
|
136
|
+
| Update task | `cu update <id>` | :white_check_mark: |
|
|
137
|
+
| Delete task | `cu delete <id>` | :white_check_mark: |
|
|
138
|
+
| Search tasks | `cu search <query>` | :white_check_mark: |
|
|
139
|
+
| Open in browser | `cu open <query>` | :white_check_mark: |
|
|
140
|
+
| List subtasks | `cu subtasks <id>` | :white_check_mark: |
|
|
141
|
+
| Assign / unassign | `cu assign <id>` | :white_check_mark: |
|
|
142
|
+
| Duplicate task | `cu duplicate <id>` | :construction: |
|
|
143
|
+
| Create from template | `cu create --template` | :construction: |
|
|
144
|
+
| Bulk operations | `cu bulk` | :construction: |
|
|
145
|
+
|
|
146
|
+
### Dependencies & Relations
|
|
147
|
+
|
|
148
|
+
| Feature | Command | Status |
|
|
149
|
+
| -------------------- | ------------------------- | ------------------ |
|
|
150
|
+
| Add dependency | `cu depend <id>` | :white_check_mark: |
|
|
151
|
+
| Remove dependency | `cu depend <id> --remove` | :white_check_mark: |
|
|
152
|
+
| Add/remove task link | `cu link <id> <linksTo>` | :white_check_mark: |
|
|
519
153
|
|
|
520
|
-
###
|
|
154
|
+
### Multi-list
|
|
521
155
|
|
|
522
|
-
|
|
156
|
+
| Feature | Command | Status |
|
|
157
|
+
| ---------------- | ----------------------- | ------------------ |
|
|
158
|
+
| Add task to list | `cu move <id> --add` | :white_check_mark: |
|
|
159
|
+
| Remove from list | `cu move <id> --remove` | :white_check_mark: |
|
|
160
|
+
|
|
161
|
+
### Sprints & Planning
|
|
162
|
+
|
|
163
|
+
| Feature | Command | Status |
|
|
164
|
+
| ------------------------ | ------------- | ------------------ |
|
|
165
|
+
| Active sprint tasks | `cu sprint` | :white_check_mark: |
|
|
166
|
+
| List all sprints | `cu sprints` | :white_check_mark: |
|
|
167
|
+
| Assigned tasks by status | `cu assigned` | :white_check_mark: |
|
|
168
|
+
| Standup summary | `cu summary` | :white_check_mark: |
|
|
169
|
+
| Overdue tasks | `cu overdue` | :white_check_mark: |
|
|
170
|
+
| Recently updated | `cu inbox` | :white_check_mark: |
|
|
171
|
+
|
|
172
|
+
### Comments
|
|
173
|
+
|
|
174
|
+
| Feature | Command | Status |
|
|
175
|
+
| ------------------------ | ----------------------------------- | ------------------ |
|
|
176
|
+
| List comments | `cu comments <id>` | :white_check_mark: |
|
|
177
|
+
| Post comment | `cu comment <id>` | :white_check_mark: |
|
|
178
|
+
| Edit comment | `cu comment-edit <id>` | :white_check_mark: |
|
|
179
|
+
| Task + comments combined | `cu activity <id>` | :white_check_mark: |
|
|
180
|
+
| Delete comment | `cu comment-delete <id>` | :white_check_mark: |
|
|
181
|
+
| Threaded replies | `cu replies <id>` / `cu reply <id>` | :white_check_mark: |
|
|
182
|
+
|
|
183
|
+
### Checklists
|
|
523
184
|
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
cu
|
|
527
|
-
|
|
185
|
+
| Feature | Command | Status |
|
|
186
|
+
| ---------------- | ---------------------------------------- | ------------------ |
|
|
187
|
+
| View checklists | `cu checklist view <id>` | :white_check_mark: |
|
|
188
|
+
| Create checklist | `cu checklist create <id> <name>` | :white_check_mark: |
|
|
189
|
+
| Delete checklist | `cu checklist delete <id>` | :white_check_mark: |
|
|
190
|
+
| Add item | `cu checklist add-item <id> <name>` | :white_check_mark: |
|
|
191
|
+
| Edit item | `cu checklist edit-item <id> <itemId>` | :white_check_mark: |
|
|
192
|
+
| Delete item | `cu checklist delete-item <id> <itemId>` | :white_check_mark: |
|
|
528
193
|
|
|
529
|
-
###
|
|
194
|
+
### Custom Fields
|
|
530
195
|
|
|
531
|
-
|
|
196
|
+
| Feature | Command | Status |
|
|
197
|
+
| --------------------- | ------------------------ | ------------------ |
|
|
198
|
+
| Set field value | `cu field <id> --set` | :white_check_mark: |
|
|
199
|
+
| Remove field value | `cu field <id> --remove` | :white_check_mark: |
|
|
200
|
+
| List available fields | `cu fields <listId>` | :construction: |
|
|
532
201
|
|
|
533
|
-
|
|
534
|
-
cu config get apiToken
|
|
535
|
-
cu config set teamId 12345
|
|
536
|
-
cu config path
|
|
537
|
-
```
|
|
202
|
+
### Tags
|
|
538
203
|
|
|
539
|
-
|
|
204
|
+
| Feature | Command | Status |
|
|
205
|
+
| ----------------------- | ------------------- | ------------------ |
|
|
206
|
+
| Add/remove tag on task | `cu tag <id>` | :white_check_mark: |
|
|
207
|
+
| List space tags | `cu tags <spaceId>` | :construction: |
|
|
208
|
+
| Create/delete space tag | | :construction: |
|
|
540
209
|
|
|
541
|
-
###
|
|
210
|
+
### Time Tracking
|
|
542
211
|
|
|
543
|
-
|
|
212
|
+
| Feature | Command | Status |
|
|
213
|
+
| -------------- | ----------------------------- | ------------------ |
|
|
214
|
+
| Start timer | `cu time start <id>` | :white_check_mark: |
|
|
215
|
+
| Stop timer | `cu time stop` | :white_check_mark: |
|
|
216
|
+
| Timer status | `cu time status` | :white_check_mark: |
|
|
217
|
+
| Log time entry | `cu time log <id> <duration>` | :white_check_mark: |
|
|
218
|
+
| List entries | `cu time list` | :white_check_mark: |
|
|
219
|
+
| Update entry | `cu time update <id>` | :construction: |
|
|
220
|
+
| Delete entry | `cu time delete <id>` | :construction: |
|
|
221
|
+
|
|
222
|
+
### Workspace
|
|
223
|
+
|
|
224
|
+
| Feature | Command | Status |
|
|
225
|
+
| ------------ | ---------------------- | ------------------ |
|
|
226
|
+
| List spaces | `cu spaces` | :white_check_mark: |
|
|
227
|
+
| List lists | `cu lists <spaceId>` | :white_check_mark: |
|
|
228
|
+
| Check auth | `cu auth` | :white_check_mark: |
|
|
229
|
+
| List folders | `cu folders <spaceId>` | :construction: |
|
|
230
|
+
| List members | `cu members` | :construction: |
|
|
231
|
+
|
|
232
|
+
### Goals & Key Results
|
|
233
|
+
|
|
234
|
+
| Feature | Command | Status |
|
|
235
|
+
| ------------------ | ---------- | -------------- |
|
|
236
|
+
| List goals | `cu goals` | :construction: |
|
|
237
|
+
| Create/update goal | | :construction: |
|
|
238
|
+
| Key results CRUD | | :construction: |
|
|
239
|
+
|
|
240
|
+
### Docs
|
|
241
|
+
|
|
242
|
+
| Feature | Command | Status |
|
|
243
|
+
| ----------------- | ----------------- | -------------- |
|
|
244
|
+
| Search docs | `cu docs <query>` | :construction: |
|
|
245
|
+
| View page content | `cu doc <id>` | :construction: |
|
|
246
|
+
|
|
247
|
+
### Attachments
|
|
248
|
+
|
|
249
|
+
| Feature | Command | Status |
|
|
250
|
+
| ---------------- | ----------------------- | -------------- |
|
|
251
|
+
| Upload file | `cu attach <id> <file>` | :construction: |
|
|
252
|
+
| List attachments | | :construction: |
|
|
253
|
+
|
|
254
|
+
### :no_entry_sign: Won't add
|
|
255
|
+
|
|
256
|
+
| Feature | Why |
|
|
257
|
+
| --------------------- | --------------------------------------------------------------------------- |
|
|
258
|
+
| Webhooks | Server-side. A CLI can't listen for events. |
|
|
259
|
+
| OAuth flow | `cu init` already handles auth with API tokens. |
|
|
260
|
+
| Guest/ACL | Enterprise admin. Not what you reach for in a terminal. |
|
|
261
|
+
| Chat/DM | Use the ClickUp app. Chat doesn't belong in a CLI. |
|
|
262
|
+
| Audit logs | Enterprise admin. |
|
|
263
|
+
| User/group management | Too destructive for a CLI - removing someone from a workspace is permanent. |
|
|
264
|
+
| View CRUD | Views are visual layouts. Configure them in the UI. |
|
|
265
|
+
|
|
266
|
+
### Setup
|
|
267
|
+
|
|
268
|
+
| Feature | Command | Status |
|
|
269
|
+
| ----------------- | ----------------------- | ------------------ |
|
|
270
|
+
| First-time setup | `cu init` | :white_check_mark: |
|
|
271
|
+
| Get/set config | `cu config` | :white_check_mark: |
|
|
272
|
+
| Shell completions | `cu completion <shell>` | :white_check_mark: |
|
|
273
|
+
|
|
274
|
+
## Output Modes
|
|
275
|
+
|
|
276
|
+
| Context | Default | Override |
|
|
277
|
+
| -------------- | --------------------------- | ---------------------------- |
|
|
278
|
+
| Terminal (TTY) | Interactive tables + picker | `--json` |
|
|
279
|
+
| Piped (no TTY) | Markdown (optimized for AI) | `--json` or `CU_OUTPUT=json` |
|
|
280
|
+
|
|
281
|
+
Most commands scope to your assigned tasks by default - keeping output small and relevant for agent context windows.
|
|
544
282
|
|
|
545
|
-
|
|
546
|
-
eval "$(cu completion bash)" # Bash
|
|
547
|
-
eval "$(cu completion zsh)" # Zsh
|
|
548
|
-
cu completion fish > ~/.config/fish/completions/cu.fish # Fish
|
|
549
|
-
```
|
|
550
|
-
|
|
551
|
-
## Config
|
|
283
|
+
## Configuration
|
|
552
284
|
|
|
553
285
|
### Config file
|
|
554
286
|
|
|
@@ -573,6 +305,10 @@ Environment variables override config file values:
|
|
|
573
305
|
|
|
574
306
|
When both are set, the config file is not required. Useful for CI/CD and containerized agents.
|
|
575
307
|
|
|
308
|
+
## Why a CLI and not MCP?
|
|
309
|
+
|
|
310
|
+
A CLI + skill file has fewer moving parts. No server process, no protocol layer. The agent already knows how to run shell commands - the skill file teaches it which ones exist. For tool-use with coding agents, CLI + instructions tends to work better than MCP in practice.
|
|
311
|
+
|
|
576
312
|
## Development
|
|
577
313
|
|
|
578
314
|
```bash
|