@krodak/clickup-cli 1.31.0 → 1.31.2
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 +1 -1
- package/dist/index.js +32 -9
- package/package.json +1 -1
- package/skills/clickup-cli/SKILL.md +97 -96
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "clickup-cli",
|
|
3
3
|
"description": "ClickUp CLI skills for managing tasks, sprints, comments, checklists, custom fields, tags, and time tracking via the cup command",
|
|
4
|
-
"version": "1.31.
|
|
4
|
+
"version": "1.31.2",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Krzysztof Rodak"
|
|
7
7
|
},
|
package/dist/index.js
CHANGED
|
@@ -1792,6 +1792,12 @@ function stringifyFieldValue(value) {
|
|
|
1792
1792
|
if (typeof value === "number" || typeof value === "boolean") return String(value);
|
|
1793
1793
|
return JSON.stringify(value);
|
|
1794
1794
|
}
|
|
1795
|
+
function optionDisplayName(option) {
|
|
1796
|
+
return option.label ?? option.name;
|
|
1797
|
+
}
|
|
1798
|
+
function dropdownOptionName(option) {
|
|
1799
|
+
return option.name ?? option.label;
|
|
1800
|
+
}
|
|
1795
1801
|
function formatCustomFieldValue(field) {
|
|
1796
1802
|
if (field.value === null || field.value === void 0) return null;
|
|
1797
1803
|
const options = field.type_config?.options;
|
|
@@ -1799,11 +1805,14 @@ function formatCustomFieldValue(field) {
|
|
|
1799
1805
|
case "drop_down": {
|
|
1800
1806
|
if (!options) return stringifyFieldValue(field.value);
|
|
1801
1807
|
const match = options.find((o) => o.orderindex === Number(field.value));
|
|
1802
|
-
return match
|
|
1808
|
+
return match ? dropdownOptionName(match) ?? stringifyFieldValue(field.value) : stringifyFieldValue(field.value);
|
|
1803
1809
|
}
|
|
1804
1810
|
case "labels": {
|
|
1805
1811
|
if (!Array.isArray(field.value) || !options) return stringifyFieldValue(field.value);
|
|
1806
|
-
const names = field.value.map((id) =>
|
|
1812
|
+
const names = field.value.map((id) => {
|
|
1813
|
+
const match = options.find((o) => o.id === id);
|
|
1814
|
+
return match ? optionDisplayName(match) : void 0;
|
|
1815
|
+
}).filter((n) => n !== void 0);
|
|
1807
1816
|
return names.length > 0 ? names.join(", ") : null;
|
|
1808
1817
|
}
|
|
1809
1818
|
case "date": {
|
|
@@ -6330,6 +6339,15 @@ var SUPPORTED_TYPES = /* @__PURE__ */ new Set([
|
|
|
6330
6339
|
"tasks",
|
|
6331
6340
|
"users"
|
|
6332
6341
|
]);
|
|
6342
|
+
function labelOptionName(option) {
|
|
6343
|
+
return option.label ?? option.name;
|
|
6344
|
+
}
|
|
6345
|
+
function dropdownOptionName2(option) {
|
|
6346
|
+
return option.name ?? option.label;
|
|
6347
|
+
}
|
|
6348
|
+
function availableOptionNames(options, getOptionName) {
|
|
6349
|
+
return options.map((option) => getOptionName(option) ?? option.id).join(", ");
|
|
6350
|
+
}
|
|
6333
6351
|
function findFieldByName(fields, name) {
|
|
6334
6352
|
const lower = name.toLowerCase();
|
|
6335
6353
|
const match = fields.find((f) => f.name.toLowerCase() === lower);
|
|
@@ -6360,13 +6378,15 @@ function parseFieldValue(field, rawValue) {
|
|
|
6360
6378
|
const options = field.type_config?.options;
|
|
6361
6379
|
if (!options?.length) throw new Error("Dropdown field has no configured options");
|
|
6362
6380
|
const lower = rawValue.toLowerCase();
|
|
6363
|
-
const option = options.find((o) => o
|
|
6381
|
+
const option = options.find((o) => dropdownOptionName2(o)?.toLowerCase() === lower);
|
|
6364
6382
|
if (!option) {
|
|
6365
|
-
const available = options
|
|
6383
|
+
const available = availableOptionNames(options, dropdownOptionName2);
|
|
6366
6384
|
throw new Error(`Option "${rawValue}" not found. Available options: ${available}`);
|
|
6367
6385
|
}
|
|
6368
6386
|
if (option.orderindex === void 0) {
|
|
6369
|
-
throw new Error(
|
|
6387
|
+
throw new Error(
|
|
6388
|
+
`Dropdown option "${dropdownOptionName2(option) ?? option.id}" has no orderindex`
|
|
6389
|
+
);
|
|
6370
6390
|
}
|
|
6371
6391
|
return option.orderindex;
|
|
6372
6392
|
}
|
|
@@ -6378,9 +6398,9 @@ function parseFieldValue(field, rawValue) {
|
|
|
6378
6398
|
const ids = [];
|
|
6379
6399
|
for (const name of names) {
|
|
6380
6400
|
const lower = name.toLowerCase();
|
|
6381
|
-
const option = options.find((o) => o
|
|
6401
|
+
const option = options.find((o) => labelOptionName(o)?.toLowerCase() === lower);
|
|
6382
6402
|
if (!option) {
|
|
6383
|
-
const available = options
|
|
6403
|
+
const available = availableOptionNames(options, labelOptionName);
|
|
6384
6404
|
throw new Error(`Label "${name}" not found. Available: ${available}`);
|
|
6385
6405
|
}
|
|
6386
6406
|
ids.push(option.id);
|
|
@@ -7223,6 +7243,9 @@ var FIELD_COLUMNS = [
|
|
|
7223
7243
|
},
|
|
7224
7244
|
{ key: "options", label: "Options", maxWidth: 40 }
|
|
7225
7245
|
];
|
|
7246
|
+
function optionDisplayName2(option) {
|
|
7247
|
+
return option.label ?? option.name ?? option.id;
|
|
7248
|
+
}
|
|
7226
7249
|
async function listFields(config, listId) {
|
|
7227
7250
|
const client = new ClickUpClient(config);
|
|
7228
7251
|
return client.getListCustomFields(listId);
|
|
@@ -7234,14 +7257,14 @@ function formatFields(fields) {
|
|
|
7234
7257
|
name: f.name,
|
|
7235
7258
|
type: f.type,
|
|
7236
7259
|
required: f.required ? "yes" : "no",
|
|
7237
|
-
options: f.type_config?.options?.map(
|
|
7260
|
+
options: f.type_config?.options?.map(optionDisplayName2).join(", ") ?? ""
|
|
7238
7261
|
}));
|
|
7239
7262
|
return formatTable(rows, FIELD_COLUMNS);
|
|
7240
7263
|
}
|
|
7241
7264
|
function formatFieldsMarkdown(fields) {
|
|
7242
7265
|
if (fields.length === 0) return "No custom fields";
|
|
7243
7266
|
return fields.map((f) => {
|
|
7244
|
-
const options = f.type_config?.options?.map(
|
|
7267
|
+
const options = f.type_config?.options?.map(optionDisplayName2).join(", ");
|
|
7245
7268
|
const optStr = options ? ` [${options}]` : "";
|
|
7246
7269
|
return `- **${f.name}** \`${f.id}\` (${f.type})${f.required ? " - required" : ""}${optStr}`;
|
|
7247
7270
|
}).join("\n");
|
package/package.json
CHANGED
|
@@ -3,11 +3,11 @@ name: clickup
|
|
|
3
3
|
description: 'Use when managing ClickUp tasks, sprints, or comments via the `cup` CLI tool. Triggers: task queries, status updates, sprint tracking, creating subtasks, posting comments, threaded replies, standup summaries, searching tasks, checking overdue items, assigning tasks, listing spaces and lists, opening tasks in browser, checking auth or config, setting custom fields, deleting tasks, managing tags, managing checklists, editing comments, task links, time tracking, attachments, file uploads, listing members, listing fields, duplicating tasks, bulk operations, goals, key results, saved filters, favorites.'
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
# ClickUp CLI (`cup`) - skill version 1.31.
|
|
6
|
+
# ClickUp CLI (`cup`) - skill version 1.31.2
|
|
7
7
|
|
|
8
8
|
Reference for AI agents using the `cup` CLI tool. Covers task management, sprint tracking, comments, time tracking, custom fields, goals, docs, and project workflows.
|
|
9
9
|
|
|
10
|
-
> **Version check:** Run `cup --version`. If your installed version is older than 1.31.
|
|
10
|
+
> **Version check:** Run `cup --version`. If your installed version is older than 1.31.2, update with `npm install -g @krodak/clickup-cli` and refresh this skill with `cup skill`.
|
|
11
11
|
|
|
12
12
|
## Install & Configure
|
|
13
13
|
|
|
@@ -159,98 +159,98 @@ All commands support `--help` for full flag details. All commands support `--jso
|
|
|
159
159
|
|
|
160
160
|
### Write
|
|
161
161
|
|
|
162
|
-
| Command | What it does
|
|
163
|
-
| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
164
|
-
| `cup create -n name [-l listId\|sprint:current] [-p parentId] [-d desc] [-s status] [--priority p] [--due-date d] [--start-date d] [--time-estimate t] [--assignee id\|me] [--group-assignee uuid\|@handle,...] [--tags t] [--custom-item-id n] [--template id] [--field "Name" val]` | Create task (`--list` accepts `sprint:current`, `--field` sets custom fields inline)
|
|
165
|
-
| `cup update <id> [-n name] [-d desc] [-s status] [--priority p] [--due-date d\|none] [--start-date d] [--time-estimate t] [--assignee id\|me] [--remove-assignee id\|me] [--group-assignee uuid\|@handle] [--remove-group-assignee uuid\|@handle] [--parent id] [--detach] [--archive] [--unarchive] [--type type] [--field "Name" val]` | Update task fields (including custom fields and group assignees)
|
|
166
|
-
| `cup comment <id> -m text [--notify-all]` | Post comment (markdown auto-converted to rich text)
|
|
167
|
-
| `cup comment-edit <commentId> -m text [--resolved] [--unresolved]` | Edit a comment (markdown auto-converted to rich text)
|
|
168
|
-
| `cup comment-delete <commentId>` or `cup comment-delete --task <taskId> --mine [--match text]` | Delete a comment by ID or delete one of your task comments
|
|
169
|
-
| `cup replies <commentId>` | List threaded replies
|
|
170
|
-
| `cup reply <commentId> -m text [--notify-all]` | Reply to a comment (markdown auto-converted to rich text)
|
|
171
|
-
| `cup assign <id> [--to ids\|me] [--remove ids\|me] [--group uuid\|@handle,...] [--remove-group uuid\|@handle,...]` | Assign/unassign users and groups (all flags accept comma-separated values)
|
|
172
|
-
| `cup depend <id> [--on taskId] [--blocks taskId] [--remove]` | Add/remove dependencies
|
|
173
|
-
| `cup move <id> [--to listId\|sprint:current] [--remove listId]` | Add/remove task from lists (`--to` accepts `sprint:current
|
|
174
|
-
| `cup field <id> [--set "Name" value] [--remove "Name"]` | Set/remove custom field values
|
|
175
|
-
| `cup field-create <name> -t <type> [-d desc] [--options "a,b,c"] [--required]` | Create a custom field
|
|
176
|
-
| `cup tag <id> [--add tags] [--remove tags]` | Add/remove tags on a task
|
|
177
|
-
| `cup link <taskId> <linksTo> [--remove]` | Link/unlink tasks
|
|
178
|
-
| `cup attach <taskId> <filePath>` | Upload file attachment
|
|
179
|
-
| `cup delete <id> [--confirm]` | Delete task (DESTRUCTIVE)
|
|
180
|
-
| `cup list-delete <listId> [--confirm]` | Delete list (DESTRUCTIVE, requires --confirm in non-interactive)
|
|
181
|
-
| `cup folder-delete <folderId> [--confirm]` | Delete folder (DESTRUCTIVE, requires --confirm in non-interactive)
|
|
182
|
-
| `cup space-delete <spaceId> [--confirm]` | Delete space (DESTRUCTIVE, requires --confirm in non-interactive)
|
|
183
|
-
| `cup duplicate <taskId>` | Duplicate a task
|
|
184
|
-
| `cup bulk status <status> <taskIds...>` | Bulk update status
|
|
185
|
-
| `cup bulk assign <taskIds...> [--to userId\|me] [--remove userId\|me]` | Bulk assign/unassign user from tasks
|
|
186
|
-
| `cup bulk due-date <date\|none\|clear> <taskIds...>` | Bulk set or clear due dates
|
|
187
|
-
| `cup bulk tag <tagName> <taskIds...> [--remove]` | Bulk add/remove tag from tasks
|
|
188
|
-
| `cup bulk priority <taskIds...> --to <priority>` | Bulk set priority on many tasks
|
|
189
|
-
| `cup bulk field <taskIds...> --set "Name" value` | Bulk set a custom field value
|
|
190
|
-
| `cup bulk move <taskIds...> --to <listId>` | Bulk move tasks to a destination list
|
|
191
|
-
| `cup checklist view <id>` | View checklists on a task
|
|
192
|
-
| `cup checklist create <id> <name>` | Create a checklist
|
|
193
|
-
| `cup checklist delete <checklistId>` | Delete a checklist
|
|
194
|
-
| `cup checklist add-item <checklistId> <name> [--parent itemId]` | Add item to checklist (nest under parent via `--parent`)
|
|
195
|
-
| `cup checklist edit-item <checklistId> <itemId> [--name n] [--resolved] [--unresolved] [--assignee id] [--parent itemId\|null]` | Edit checklist item (reparent with `--parent`, use `"null"` to unnest)
|
|
196
|
-
| `cup checklist delete-item <checklistId> <itemId>` | Delete checklist item
|
|
197
|
-
| `cup time start <taskId> [-d desc]` | Start timer
|
|
198
|
-
| `cup time stop` | Stop running timer
|
|
199
|
-
| `cup time status` | Show running timer
|
|
200
|
-
| `cup time log <taskId> <duration> [-d desc]` | Log manual entry (e.g. "2h", "30m")
|
|
201
|
-
| `cup time list [--days n] [--task id] [--all]` | List my recent time entries (--all for team)
|
|
202
|
-
| `cup time update <timeEntryId> [-d desc] [--duration dur]` | Update time entry
|
|
203
|
-
| `cup time delete <timeEntryId>` | Delete time entry
|
|
204
|
-
| `cup goal-create <name> [-d desc] [--color hex]` | Create a goal
|
|
205
|
-
| `cup goal-update <goalId> [-n name] [-d desc] [--color hex]` | Update a goal
|
|
206
|
-
| `cup goal-delete <goalId>` | Delete a goal
|
|
207
|
-
| `cup key-result-create <goalId> <name> [--type t] [--target n]` | Create key result
|
|
208
|
-
| `cup key-result-update <keyResultId> [--progress n] [--note text]` | Update key result
|
|
209
|
-
| `cup key-result-delete <keyResultId>` | Delete key result
|
|
210
|
-
| `cup doc-create <title> [-c content]` | Create a doc
|
|
211
|
-
| `cup doc-page-create <docId> <name> [-c content] [--parent-page pageId]` | Create doc page
|
|
212
|
-
| `cup doc-page-edit <docId> <pageId> [--name text] [-c content]` | Edit doc page
|
|
213
|
-
| `cup doc-delete <docId>` | Delete a doc
|
|
214
|
-
| `cup doc-page-delete <docId> <pageId>` | Delete doc page
|
|
215
|
-
| `cup space-create <name>` | Create a space
|
|
216
|
-
| `cup list-create <spaceId> <name> [--folder folderId] [--copy-statuses-from id]` | Create a list in a space or folder
|
|
217
|
-
| `cup folder-create <spaceId> <name>` | Create a folder in a space
|
|
218
|
-
| `cup list-rename <listId> <newName>` | Rename a list
|
|
219
|
-
| `cup folder-rename <folderId> <newName>` | Rename a folder
|
|
220
|
-
| `cup space-rename <spaceId> <newName>` | Rename a space
|
|
221
|
-
| `cup tag-create <spaceId> <name> [--fg color] [--bg color]` | Create space tag
|
|
222
|
-
| `cup tag-update <spaceId> <tagName> --name <newName> [--fg c] [--bg c]` | Update space tag
|
|
223
|
-
| `cup tag-delete <spaceId> <name>` | Delete space tag
|
|
224
|
-
| `cup list-from-template <name> --template <id> [--space id] [--folder id]` | Create list from template
|
|
225
|
-
| `cup view-create <listId> <name> -t <type> [--group-by field]` | Create a view on a list
|
|
226
|
-
| `cup view-update <viewId> [-n name] [--group-by field]` | Update a view
|
|
227
|
-
| `cup view-delete <viewId> [--confirm]` | Delete a view (DESTRUCTIVE)
|
|
228
|
-
| `cup list-comment <listId> -m text [--notify-all]` | Post comment on a list
|
|
229
|
-
| `cup view-comment <viewId> -m text [--notify-all]` | Post comment on a view
|
|
230
|
-
| `cup webhook create --url <url> --events <events> [--space\|--folder\|--list\|--task <id>]` | Create a webhook
|
|
231
|
-
| `cup webhook update <webhookId> [--url u] [--events e] [--status s]` | Update a webhook
|
|
232
|
-
| `cup webhook delete <webhookId> [--confirm]` | Delete a webhook (DESTRUCTIVE)
|
|
233
|
-
| `cup merge <sourceTaskId> <intoTaskId> [--confirm]` | Merge task into another (DESTRUCTIVE, source deleted)
|
|
234
|
-
| `cup time estimate-by-user <taskId> <userId> <duration> [--replace]` | Set per-user time estimate
|
|
235
|
-
| `cup chat send <channelId> -m <text> [--post --title t]` | Send message to channel
|
|
236
|
-
| `cup chat reply <messageId> -m <text>` | Reply to a message
|
|
237
|
-
| `cup chat react <messageId> --emoji <name>` | Add reaction
|
|
238
|
-
| `cup chat unreact <messageId> --emoji <name>` | Remove reaction
|
|
239
|
-
| `cup chat channel-create <name> [--private] [--topic t]` | Create channel
|
|
240
|
-
| `cup chat dm <userIds...>` | Create/open DM
|
|
241
|
-
| `cup chat channel-update <id> [--name n] [--topic t]` | Update channel
|
|
242
|
-
| `cup chat channel-delete <id> [--confirm]` | Delete channel
|
|
243
|
-
| `cup chat message-update <messageId> -m <text>` | Edit message
|
|
244
|
-
| `cup chat message-delete <messageId> [--confirm]` | Delete message
|
|
245
|
-
| `cup favorite add <type> <id> [alias] [-n name]` | Add a local favorite
|
|
246
|
-
| `cup favorite remove <alias>` | Remove a favorite
|
|
247
|
-
| `cup favorite list [--type t]` | List favorites (optionally filter by type)
|
|
248
|
-
| `cup profile list [--json]` | List all profiles
|
|
249
|
-
| `cup profile add <name>` | Add a new profile (interactive)
|
|
250
|
-
| `cup profile remove <name>` | Remove a profile
|
|
251
|
-
| `cup profile use <name>` | Set the default profile
|
|
252
|
-
| `cup config get <key>` / `set <key> <value>` / `path` | Manage config
|
|
253
|
-
| `cup completion <shell>` | Shell completions (bash/zsh/fish)
|
|
162
|
+
| Command | What it does |
|
|
163
|
+
| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
|
164
|
+
| `cup create -n name [-l listId\|sprint:current] [-p parentId] [-d desc] [-s status] [--priority p] [--due-date d] [--start-date d] [--time-estimate t] [--assignee id\|me] [--group-assignee uuid\|@handle,...] [--tags t] [--custom-item-id n] [--template id] [--field "Name" val]` | Create task (`--list` accepts `sprint:current`, `--field` sets custom fields inline) |
|
|
165
|
+
| `cup update <id> [-n name] [-d desc] [-s status] [--priority p] [--due-date d\|none] [--start-date d] [--time-estimate t] [--assignee id\|me] [--remove-assignee id\|me] [--group-assignee uuid\|@handle] [--remove-group-assignee uuid\|@handle] [--parent id] [--detach] [--archive] [--unarchive] [--type type] [--field "Name" val]` | Update task fields (including custom fields and group assignees) |
|
|
166
|
+
| `cup comment <id> -m text [--notify-all]` | Post comment (markdown auto-converted to rich text) |
|
|
167
|
+
| `cup comment-edit <commentId> -m text [--resolved] [--unresolved]` | Edit a comment (markdown auto-converted to rich text) |
|
|
168
|
+
| `cup comment-delete <commentId>` or `cup comment-delete --task <taskId> --mine [--match text]` | Delete a comment by ID or delete one of your task comments |
|
|
169
|
+
| `cup replies <commentId>` | List threaded replies |
|
|
170
|
+
| `cup reply <commentId> -m text [--notify-all]` | Reply to a comment (markdown auto-converted to rich text) |
|
|
171
|
+
| `cup assign <id> [--to ids\|me] [--remove ids\|me] [--group uuid\|@handle,...] [--remove-group uuid\|@handle,...]` | Assign/unassign users and groups (all flags accept comma-separated values) |
|
|
172
|
+
| `cup depend <id> [--on taskId] [--blocks taskId] [--remove]` | Add/remove dependencies |
|
|
173
|
+
| `cup move <id> [--to listId\|sprint:current] [--remove listId]` | Add/remove task from lists. **`--to` + `--remove` together changes the task's _home_ list** (uses v3 `home_list` endpoint with auto status mapping). `--to` alone adds multi-list membership. `--to` accepts `sprint:current`. |
|
|
174
|
+
| `cup field <id> [--set "Name" value] [--remove "Name"]` | Set/remove custom field values |
|
|
175
|
+
| `cup field-create <name> -t <type> [-d desc] [--options "a,b,c"] [--required]` | Create a custom field |
|
|
176
|
+
| `cup tag <id> [--add tags] [--remove tags]` | Add/remove tags on a task |
|
|
177
|
+
| `cup link <taskId> <linksTo> [--remove]` | Link/unlink tasks |
|
|
178
|
+
| `cup attach <taskId> <filePath>` | Upload file attachment |
|
|
179
|
+
| `cup delete <id> [--confirm]` | Delete task (DESTRUCTIVE) |
|
|
180
|
+
| `cup list-delete <listId> [--confirm]` | Delete list (DESTRUCTIVE, requires --confirm in non-interactive) |
|
|
181
|
+
| `cup folder-delete <folderId> [--confirm]` | Delete folder (DESTRUCTIVE, requires --confirm in non-interactive) |
|
|
182
|
+
| `cup space-delete <spaceId> [--confirm]` | Delete space (DESTRUCTIVE, requires --confirm in non-interactive) |
|
|
183
|
+
| `cup duplicate <taskId>` | Duplicate a task |
|
|
184
|
+
| `cup bulk status <status> <taskIds...>` | Bulk update status |
|
|
185
|
+
| `cup bulk assign <taskIds...> [--to userId\|me] [--remove userId\|me]` | Bulk assign/unassign user from tasks |
|
|
186
|
+
| `cup bulk due-date <date\|none\|clear> <taskIds...>` | Bulk set or clear due dates |
|
|
187
|
+
| `cup bulk tag <tagName> <taskIds...> [--remove]` | Bulk add/remove tag from tasks |
|
|
188
|
+
| `cup bulk priority <taskIds...> --to <priority>` | Bulk set priority on many tasks |
|
|
189
|
+
| `cup bulk field <taskIds...> --set "Name" value` | Bulk set a custom field value |
|
|
190
|
+
| `cup bulk move <taskIds...> --to <listId>` | Bulk move tasks to a destination list |
|
|
191
|
+
| `cup checklist view <id>` | View checklists on a task |
|
|
192
|
+
| `cup checklist create <id> <name>` | Create a checklist |
|
|
193
|
+
| `cup checklist delete <checklistId>` | Delete a checklist |
|
|
194
|
+
| `cup checklist add-item <checklistId> <name> [--parent itemId]` | Add item to checklist (nest under parent via `--parent`) |
|
|
195
|
+
| `cup checklist edit-item <checklistId> <itemId> [--name n] [--resolved] [--unresolved] [--assignee id] [--parent itemId\|null]` | Edit checklist item (reparent with `--parent`, use `"null"` to unnest) |
|
|
196
|
+
| `cup checklist delete-item <checklistId> <itemId>` | Delete checklist item |
|
|
197
|
+
| `cup time start <taskId> [-d desc]` | Start timer |
|
|
198
|
+
| `cup time stop` | Stop running timer |
|
|
199
|
+
| `cup time status` | Show running timer |
|
|
200
|
+
| `cup time log <taskId> <duration> [-d desc]` | Log manual entry (e.g. "2h", "30m") |
|
|
201
|
+
| `cup time list [--days n] [--task id] [--all]` | List my recent time entries (--all for team) |
|
|
202
|
+
| `cup time update <timeEntryId> [-d desc] [--duration dur]` | Update time entry |
|
|
203
|
+
| `cup time delete <timeEntryId>` | Delete time entry |
|
|
204
|
+
| `cup goal-create <name> [-d desc] [--color hex]` | Create a goal |
|
|
205
|
+
| `cup goal-update <goalId> [-n name] [-d desc] [--color hex]` | Update a goal |
|
|
206
|
+
| `cup goal-delete <goalId>` | Delete a goal |
|
|
207
|
+
| `cup key-result-create <goalId> <name> [--type t] [--target n]` | Create key result |
|
|
208
|
+
| `cup key-result-update <keyResultId> [--progress n] [--note text]` | Update key result |
|
|
209
|
+
| `cup key-result-delete <keyResultId>` | Delete key result |
|
|
210
|
+
| `cup doc-create <title> [-c content]` | Create a doc |
|
|
211
|
+
| `cup doc-page-create <docId> <name> [-c content] [--parent-page pageId]` | Create doc page |
|
|
212
|
+
| `cup doc-page-edit <docId> <pageId> [--name text] [-c content]` | Edit doc page |
|
|
213
|
+
| `cup doc-delete <docId>` | Delete a doc |
|
|
214
|
+
| `cup doc-page-delete <docId> <pageId>` | Delete doc page |
|
|
215
|
+
| `cup space-create <name>` | Create a space |
|
|
216
|
+
| `cup list-create <spaceId> <name> [--folder folderId] [--copy-statuses-from id]` | Create a list in a space or folder |
|
|
217
|
+
| `cup folder-create <spaceId> <name>` | Create a folder in a space |
|
|
218
|
+
| `cup list-rename <listId> <newName>` | Rename a list |
|
|
219
|
+
| `cup folder-rename <folderId> <newName>` | Rename a folder |
|
|
220
|
+
| `cup space-rename <spaceId> <newName>` | Rename a space |
|
|
221
|
+
| `cup tag-create <spaceId> <name> [--fg color] [--bg color]` | Create space tag |
|
|
222
|
+
| `cup tag-update <spaceId> <tagName> --name <newName> [--fg c] [--bg c]` | Update space tag |
|
|
223
|
+
| `cup tag-delete <spaceId> <name>` | Delete space tag |
|
|
224
|
+
| `cup list-from-template <name> --template <id> [--space id] [--folder id]` | Create list from template |
|
|
225
|
+
| `cup view-create <listId> <name> -t <type> [--group-by field]` | Create a view on a list |
|
|
226
|
+
| `cup view-update <viewId> [-n name] [--group-by field]` | Update a view |
|
|
227
|
+
| `cup view-delete <viewId> [--confirm]` | Delete a view (DESTRUCTIVE) |
|
|
228
|
+
| `cup list-comment <listId> -m text [--notify-all]` | Post comment on a list |
|
|
229
|
+
| `cup view-comment <viewId> -m text [--notify-all]` | Post comment on a view |
|
|
230
|
+
| `cup webhook create --url <url> --events <events> [--space\|--folder\|--list\|--task <id>]` | Create a webhook |
|
|
231
|
+
| `cup webhook update <webhookId> [--url u] [--events e] [--status s]` | Update a webhook |
|
|
232
|
+
| `cup webhook delete <webhookId> [--confirm]` | Delete a webhook (DESTRUCTIVE) |
|
|
233
|
+
| `cup merge <sourceTaskId> <intoTaskId> [--confirm]` | Merge task into another (DESTRUCTIVE, source deleted) |
|
|
234
|
+
| `cup time estimate-by-user <taskId> <userId> <duration> [--replace]` | Set per-user time estimate |
|
|
235
|
+
| `cup chat send <channelId> -m <text> [--post --title t]` | Send message to channel |
|
|
236
|
+
| `cup chat reply <messageId> -m <text>` | Reply to a message |
|
|
237
|
+
| `cup chat react <messageId> --emoji <name>` | Add reaction |
|
|
238
|
+
| `cup chat unreact <messageId> --emoji <name>` | Remove reaction |
|
|
239
|
+
| `cup chat channel-create <name> [--private] [--topic t]` | Create channel |
|
|
240
|
+
| `cup chat dm <userIds...>` | Create/open DM |
|
|
241
|
+
| `cup chat channel-update <id> [--name n] [--topic t]` | Update channel |
|
|
242
|
+
| `cup chat channel-delete <id> [--confirm]` | Delete channel |
|
|
243
|
+
| `cup chat message-update <messageId> -m <text>` | Edit message |
|
|
244
|
+
| `cup chat message-delete <messageId> [--confirm]` | Delete message |
|
|
245
|
+
| `cup favorite add <type> <id> [alias] [-n name]` | Add a local favorite |
|
|
246
|
+
| `cup favorite remove <alias>` | Remove a favorite |
|
|
247
|
+
| `cup favorite list [--type t]` | List favorites (optionally filter by type) |
|
|
248
|
+
| `cup profile list [--json]` | List all profiles |
|
|
249
|
+
| `cup profile add <name>` | Add a new profile (interactive) |
|
|
250
|
+
| `cup profile remove <name>` | Remove a profile |
|
|
251
|
+
| `cup profile use <name>` | Set the default profile |
|
|
252
|
+
| `cup config get <key>` / `set <key> <value>` / `path` | Manage config |
|
|
253
|
+
| `cup completion <shell>` | Shell completions (bash/zsh/fish) |
|
|
254
254
|
|
|
255
255
|
## Global Flags
|
|
256
256
|
|
|
@@ -357,8 +357,9 @@ cup assign abc123def --to me --group @backend # assign self and a group togethe
|
|
|
357
357
|
cup update abc123def --group-assignee @mobile-team # group assignment via update
|
|
358
358
|
cup update abc123def --remove-group-assignee @backend
|
|
359
359
|
cup depend task3 --on task2 # task3 waits for task2
|
|
360
|
-
cup move task1 --to list2
|
|
361
|
-
cup move task1 --to
|
|
360
|
+
cup move task1 --to list2 # add task1 to list2 (multi-list membership)
|
|
361
|
+
cup move task1 --to list2 --remove list1 # change home list from list1 to list2 (v3 home_list)
|
|
362
|
+
cup move task1 --to sprint:current --remove list1 # move home list to active sprint
|
|
362
363
|
cup field abc123def --set "Story Points" 5
|
|
363
364
|
cup tag abc123def --add "bug,frontend"
|
|
364
365
|
cup checklist create abc123def "QA Steps"
|