@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/README.md CHANGED
@@ -8,547 +8,279 @@
8
8
  [![CI](https://github.com/krodak/clickup-cli/actions/workflows/ci.yml/badge.svg)](https://github.com/krodak/clickup-cli/actions/workflows/ci.yml)
9
9
 
10
10
  ```bash
11
- npm install -g @krodak/clickup-cli # or: brew tap krodak/tap && brew install 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
- You need a ClickUp personal API token (`pk_...` from https://app.clickup.com/settings/apps).
14
+ ## Talk to your agent
16
15
 
17
- ## Using with AI agents
16
+ Install the CLI, add the skill file to your agent, and it works with ClickUp. No API knowledge needed.
18
17
 
19
- This is the primary use case. Install the tool, install the skill file, and your agent knows how to work with ClickUp.
18
+ > **"Read task abc123, do the work, then mark it in review and leave a comment with the commit hash."**
20
19
 
21
- ### 1. Install the skill
20
+ > **"What's my standup? What did I finish, what's in progress, what's overdue?"**
22
21
 
23
- The repo includes a skill file at `skills/clickup-cli/SKILL.md` that teaches agents all available commands and when to use them. It's also packaged as a Claude Code plugin.
22
+ > **"Create a subtask under the initiative for the edge case we found."**
24
23
 
25
- **Claude Code (plugin - recommended):**
24
+ > **"Check my sprint and tell me what's behind schedule."**
26
25
 
27
- The repo ships as a Claude Code plugin. Point Claude Code at the repo or installed npm package:
26
+ > **"Update the description with your findings and flag blockers in a comment."**
28
27
 
29
- ```bash
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
- "What's my standup summary? What did I finish yesterday, what's in progress, what's overdue?"
30
+ ## Install
63
31
 
64
- "Do exploratory work for task <id>, update the description with your findings, and flag blockers in a comment."
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
- "Create a subtask under <id> for the edge case we just found."
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>&nbsp;<img src="https://img.shields.io/badge/npm-CB3837?logo=npm&logoColor=white" height="18" align="center">&nbsp;<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
- ### `cu tasks`
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
- Create a new task. If `--parent` is given, list is auto-detected from the parent task.
44
+ <details>
45
+ <summary>&nbsp;<img src="https://img.shields.io/badge/Homebrew-FBB040?logo=homebrew&logoColor=black" height="18" align="center">&nbsp;<strong>Homebrew</strong></summary>
227
46
 
228
47
  ```bash
229
- cu create -n "Fix login bug" -l <listId>
230
- cu create -n "Subtask name" -p <parentTaskId> # --list auto-detected
231
- cu create -n "Task" -l <listId> -d "desc" -s "open"
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
- If the query matches multiple tasks by name, all matches are listed and the first is opened.
384
-
385
- ### `cu search <query>`
53
+ </details>
386
54
 
387
- Search my tasks by name. Supports multi-word queries with case-insensitive matching. Status filter supports fuzzy matching.
55
+ ## Set up your agent
388
56
 
389
- ```bash
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
- ### `cu summary`
59
+ <details open>
60
+ <summary>&nbsp;<img src="https://img.shields.io/badge/Claude_Code-D97757?logo=anthropic&logoColor=white" height="18" align="center">&nbsp;<strong>Claude Code</strong></summary>
398
61
 
399
- Daily standup helper. Shows tasks grouped into: recently completed, in progress, and overdue.
62
+ **Install as a [plugin](https://docs.anthropic.com/en/docs/claude-code/plugins)** (recommended):
400
63
 
401
64
  ```bash
402
- cu summary
403
- cu summary --hours 48
404
- cu summary --json
65
+ claude plugin add $(npm root -g)/@krodak/clickup-cli
405
66
  ```
406
67
 
407
- | Flag | Description |
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
- ### `cu overdue`
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
- cu overdue
418
- cu overdue --include-closed
419
- cu overdue --json
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
- | Flag | Description |
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
- | Flag | Description |
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>&nbsp;<img src="https://img.shields.io/badge/Codex-412991?logo=openai&logoColor=white" height="18" align="center">&nbsp;<strong>Codex</strong></summary>
458
82
 
459
- ### `cu move <id>`
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
- Add or remove a task from a list. Tasks can belong to multiple lists in ClickUp.
85
+ **Install as a user skill** (available across all your projects):
462
86
 
463
87
  ```bash
464
- cu move abc123 --to <listId> # add task to a list
465
- cu move abc123 --remove <listId> # remove task from a list
466
- cu move abc123 --to <newListId> --remove <oldListId> # move between lists
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
- | Flag | Description |
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
- cu tag abc123 --add "bug"
482
- cu tag abc123 --add "bug,frontend,urgent"
483
- cu tag abc123 --remove "wontfix"
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
- | Flag | Description |
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
- ### `cu checklist`
103
+ </details>
495
104
 
496
- Manage checklists on tasks. Six subcommands for full CRUD operations.
105
+ <details>
106
+ <summary>&nbsp;<img src="https://img.shields.io/badge/OpenCode-24292e?logoColor=white" height="18" align="center">&nbsp;<strong>OpenCode</strong></summary>
497
107
 
498
108
  ```bash
499
- cu checklist view abc123 # view all checklists on a task
500
- cu checklist create abc123 "QA Checklist" # add a checklist
501
- cu checklist delete <checklistId> # remove a checklist
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
- | Subcommand | Arguments | Description |
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
- `edit-item` flags: `--name <text>`, `--resolved`, `--unresolved`, `--assignee <userId>`. All subcommands support `--json`.
116
+ <details>
117
+ <summary>&nbsp;<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
- Checklists are also shown inline in `cu task <id>` detail view.
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
- ### `cu auth`
154
+ ### Multi-list
521
155
 
522
- Check authentication status. Validates your API token and shows your user info.
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
- ```bash
525
- cu auth
526
- cu auth --json
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
- ### `cu config`
194
+ ### Custom Fields
530
195
 
531
- Manage CLI configuration.
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
- ```bash
534
- cu config get apiToken
535
- cu config set teamId 12345
536
- cu config path
537
- ```
202
+ ### Tags
538
203
 
539
- Valid keys: `apiToken`, `teamId`. Setting `apiToken` validates the `pk_` prefix.
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
- ### `cu completion <shell>`
210
+ ### Time Tracking
542
211
 
543
- Output shell completion script. Supports `bash`, `zsh`, and `fish`.
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
- ```bash
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