@krodak/clickup-cli 1.11.0 → 1.12.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 +1 -1
- package/dist/index.js +58 -29
- package/package.json +1 -1
- package/skills/clickup-cli/SKILL.md +95 -93
|
@@ -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.
|
|
4
|
+
"version": "1.12.0",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Krzysztof Rodak"
|
|
7
7
|
},
|
package/dist/index.js
CHANGED
|
@@ -160,12 +160,14 @@ var ClickUpClient = class {
|
|
|
160
160
|
return allTasks;
|
|
161
161
|
}
|
|
162
162
|
async getMyTasks(teamId, filters = {}) {
|
|
163
|
-
const me = await this.getMe();
|
|
164
163
|
const baseParams = new URLSearchParams({
|
|
165
164
|
subtasks: String(filters.subtasks ?? true)
|
|
166
165
|
});
|
|
167
166
|
if (filters.includeClosed) baseParams.set("include_closed", "true");
|
|
168
|
-
|
|
167
|
+
if (!filters.all) {
|
|
168
|
+
const me = await this.getMe();
|
|
169
|
+
baseParams.append("assignees[]", String(me.id));
|
|
170
|
+
}
|
|
169
171
|
for (const s of filters.statuses ?? []) baseParams.append("statuses[]", s);
|
|
170
172
|
for (const id of filters.listIds ?? []) baseParams.append("list_ids[]", id);
|
|
171
173
|
for (const id of filters.spaceIds ?? []) baseParams.append("space_ids[]", id);
|
|
@@ -2520,7 +2522,7 @@ function isOverdue2(task, now) {
|
|
|
2520
2522
|
async function fetchOverdueTasks(config, opts = {}) {
|
|
2521
2523
|
const client = new ClickUpClient(config);
|
|
2522
2524
|
const [allTasks, customTypes] = await Promise.all([
|
|
2523
|
-
client.getMyTasks(config.teamId, { includeClosed: opts.includeClosed }),
|
|
2525
|
+
client.getMyTasks(config.teamId, { all: opts.all, includeClosed: opts.includeClosed }),
|
|
2524
2526
|
client.getCustomTaskTypes(config.teamId)
|
|
2525
2527
|
]);
|
|
2526
2528
|
const typeMap = buildTypeMap(customTypes);
|
|
@@ -2665,9 +2667,20 @@ var commandMetadata = [
|
|
|
2665
2667
|
},
|
|
2666
2668
|
{
|
|
2667
2669
|
name: "tasks",
|
|
2668
|
-
description: "List tasks assigned to me",
|
|
2669
|
-
flags: [
|
|
2670
|
-
|
|
2670
|
+
description: "List tasks assigned to me (use --all for all tasks)",
|
|
2671
|
+
flags: [
|
|
2672
|
+
"--status",
|
|
2673
|
+
"--list",
|
|
2674
|
+
"--space",
|
|
2675
|
+
"--name",
|
|
2676
|
+
"--type",
|
|
2677
|
+
"--all",
|
|
2678
|
+
"--include-closed",
|
|
2679
|
+
"--json"
|
|
2680
|
+
],
|
|
2681
|
+
quickReference: [
|
|
2682
|
+
{ section: "read", usage: "tasks", description: "List tasks assigned to me (--all for all)" }
|
|
2683
|
+
]
|
|
2671
2684
|
},
|
|
2672
2685
|
{
|
|
2673
2686
|
name: "task",
|
|
@@ -2690,6 +2703,7 @@ var commandMetadata = [
|
|
|
2690
2703
|
"--time-estimate",
|
|
2691
2704
|
"--assignee",
|
|
2692
2705
|
"--parent",
|
|
2706
|
+
"--field",
|
|
2693
2707
|
"--json"
|
|
2694
2708
|
],
|
|
2695
2709
|
quickReference: [{ section: "write", usage: "update <taskId>", description: "Update a task" }]
|
|
@@ -2859,8 +2873,8 @@ var commandMetadata = [
|
|
|
2859
2873
|
},
|
|
2860
2874
|
{
|
|
2861
2875
|
name: "search",
|
|
2862
|
-
description: "Search my tasks by name",
|
|
2863
|
-
flags: ["--status", "--include-closed", "--json"],
|
|
2876
|
+
description: "Search my tasks by name (use --all for all tasks)",
|
|
2877
|
+
flags: ["--status", "--all", "--include-closed", "--json"],
|
|
2864
2878
|
quickReference: [
|
|
2865
2879
|
{ section: "read", usage: "search <query>", description: "Search my tasks by name" }
|
|
2866
2880
|
]
|
|
@@ -2874,7 +2888,7 @@ var commandMetadata = [
|
|
|
2874
2888
|
{
|
|
2875
2889
|
name: "overdue",
|
|
2876
2890
|
description: "List tasks that are past their due date",
|
|
2877
|
-
flags: ["--include-closed", "--json"],
|
|
2891
|
+
flags: ["--all", "--include-closed", "--json"],
|
|
2878
2892
|
quickReference: [
|
|
2879
2893
|
{ section: "read", usage: "overdue", description: "Tasks past their due date" }
|
|
2880
2894
|
]
|
|
@@ -4299,7 +4313,7 @@ async function searchTasks(config, query, opts = {}) {
|
|
|
4299
4313
|
}
|
|
4300
4314
|
const client = new ClickUpClient(config);
|
|
4301
4315
|
const [allTasks, customTypes] = await Promise.all([
|
|
4302
|
-
client.getMyTasks(config.teamId, { includeClosed: opts.includeClosed }),
|
|
4316
|
+
client.getMyTasks(config.teamId, { all: opts.all, includeClosed: opts.includeClosed }),
|
|
4303
4317
|
client.getCustomTaskTypes(config.teamId)
|
|
4304
4318
|
]);
|
|
4305
4319
|
const typeMap = buildTypeMap(customTypes);
|
|
@@ -5296,10 +5310,10 @@ function buildProgram(programName = basename(process.argv[1] ?? "cup")) {
|
|
|
5296
5310
|
}
|
|
5297
5311
|
})
|
|
5298
5312
|
);
|
|
5299
|
-
program.command("tasks").description("List tasks assigned to me").option("--status <status>", 'Filter by status (e.g. "in progress")').option("--list <listId>", "Filter by list ID").option("--space <spaceId>", "Filter by space ID").option("--name <partial>", "Filter by name (case-insensitive contains)").option(
|
|
5313
|
+
program.command("tasks").description("List tasks assigned to me (use --all for all tasks)").option("--status <status>", 'Filter by status (e.g. "in progress")').option("--list <listId>", "Filter by list ID").option("--space <spaceId>", "Filter by space ID").option("--name <partial>", "Filter by name (case-insensitive contains)").option(
|
|
5300
5314
|
"--type <type>",
|
|
5301
5315
|
'Filter by task type (e.g. "task", "initiative", or custom type name/ID)'
|
|
5302
|
-
).option("--include-closed", "Include done/closed tasks").option("--json", "Force JSON output even in terminal").action(
|
|
5316
|
+
).option("--all", "Include all tasks, not just mine").option("--include-closed", "Include done/closed tasks").option("--json", "Force JSON output even in terminal").action(
|
|
5303
5317
|
wrapAction(async (opts) => {
|
|
5304
5318
|
const config = loadConfig(getProfileName());
|
|
5305
5319
|
const tasks = await fetchMyTasks(config, {
|
|
@@ -5308,6 +5322,7 @@ function buildProgram(programName = basename(process.argv[1] ?? "cup")) {
|
|
|
5308
5322
|
listIds: opts.list ? [opts.list] : void 0,
|
|
5309
5323
|
spaceIds: opts.space ? [opts.space] : void 0,
|
|
5310
5324
|
name: opts.name,
|
|
5325
|
+
all: opts.all,
|
|
5311
5326
|
includeClosed: opts.includeClosed
|
|
5312
5327
|
});
|
|
5313
5328
|
await printTasks(tasks, opts.json ?? false, config);
|
|
@@ -5326,21 +5341,31 @@ function buildProgram(programName = basename(process.argv[1] ?? "cup")) {
|
|
|
5326
5341
|
}
|
|
5327
5342
|
})
|
|
5328
5343
|
);
|
|
5329
|
-
program.command("update <taskId>").description("Update a task").option("-n, --name <text>", "New task name").option("-d, --description <text>", "New description (markdown supported)").option("-s, --status <status>", 'New status (e.g. "in progress", "done")').option("--priority <level>", "Priority: urgent, high, normal, low (or 1-4)").option("--due-date <date>", "Due date (YYYY-MM-DD)").option("--time-estimate <duration>", 'Time estimate (e.g. "2h", "30m", "1h30m")').option("--assignee <userId>", 'Add assignee by user ID or "me"').option("--parent <taskId>", "Set parent task (makes this a subtask)").option("--json", "Force JSON output even in terminal").action(
|
|
5330
|
-
wrapAction(
|
|
5331
|
-
|
|
5332
|
-
|
|
5333
|
-
|
|
5334
|
-
|
|
5335
|
-
|
|
5336
|
-
|
|
5337
|
-
|
|
5338
|
-
|
|
5339
|
-
|
|
5340
|
-
|
|
5341
|
-
|
|
5344
|
+
program.command("update <taskId>").description("Update a task").option("-n, --name <text>", "New task name").option("-d, --description <text>", "New description (markdown supported)").option("-s, --status <status>", 'New status (e.g. "in progress", "done")').option("--priority <level>", "Priority: urgent, high, normal, low (or 1-4)").option("--due-date <date>", "Due date (YYYY-MM-DD)").option("--time-estimate <duration>", 'Time estimate (e.g. "2h", "30m", "1h30m")').option("--assignee <userId>", 'Add assignee by user ID or "me"').option("--parent <taskId>", "Set parent task (makes this a subtask)").option("--field <nameAndValue...>", 'Set custom field: --field "Name" value').option("--json", "Force JSON output even in terminal").action(
|
|
5345
|
+
wrapAction(
|
|
5346
|
+
async (taskId, opts) => {
|
|
5347
|
+
const config = loadConfig(getProfileName());
|
|
5348
|
+
if (opts.assignee === "me") {
|
|
5349
|
+
const client = new ClickUpClient(config);
|
|
5350
|
+
opts.assignee = String(await resolveAssigneeId(client, "me"));
|
|
5351
|
+
}
|
|
5352
|
+
const payload = buildUpdatePayload(opts);
|
|
5353
|
+
const result = await updateTask(config, taskId, payload);
|
|
5354
|
+
if (opts.field?.length) {
|
|
5355
|
+
if (opts.field.length % 2 !== 0) {
|
|
5356
|
+
throw new Error('--field requires pairs: --field "Name" value');
|
|
5357
|
+
}
|
|
5358
|
+
for (let i = 0; i < opts.field.length; i += 2) {
|
|
5359
|
+
await setCustomField(config, taskId, { set: [opts.field[i], opts.field[i + 1]] });
|
|
5360
|
+
}
|
|
5361
|
+
}
|
|
5362
|
+
if (shouldOutputJson(opts.json ?? false)) {
|
|
5363
|
+
console.log(JSON.stringify(result, null, 2));
|
|
5364
|
+
} else {
|
|
5365
|
+
console.log(formatUpdateConfirmation(result.id, result.name));
|
|
5366
|
+
}
|
|
5342
5367
|
}
|
|
5343
|
-
|
|
5368
|
+
)
|
|
5344
5369
|
);
|
|
5345
5370
|
program.command("create").description("Create a new task").option("-l, --list <listId>", "Target list ID (auto-detected from --parent if omitted)").requiredOption("-n, --name <name>", "Task name").option("-d, --description <text>", "Task description (markdown supported)").option("-p, --parent <taskId>", "Parent task ID (list auto-detected from parent)").option("-s, --status <status>", "Initial status").option("--priority <level>", "Priority: urgent, high, normal, low (or 1-4)").option("--due-date <date>", "Due date (YYYY-MM-DD)").option("--assignee <userId>", 'Assignee user ID or "me"').option("--tags <tags>", "Comma-separated tag names").option("--custom-item-id <id>", "Custom task type ID (use to create initiatives)").option("--time-estimate <duration>", 'Time estimate (e.g. "2h", "30m", "1h30m")').option("--template <id>", "Create from a task template").option("--json", "Force JSON output even in terminal").action(
|
|
5346
5371
|
wrapAction(async (opts) => {
|
|
@@ -5504,12 +5529,13 @@ function buildProgram(programName = basename(process.argv[1] ?? "cup")) {
|
|
|
5504
5529
|
await openTask(config, query, opts);
|
|
5505
5530
|
})
|
|
5506
5531
|
);
|
|
5507
|
-
program.command("search <query>").description("Search my tasks by name").option("--status <status>", "Filter by status").option("--include-closed", "Include done/closed tasks in search").option("--json", "Force JSON output even in terminal").action(
|
|
5532
|
+
program.command("search <query>").description("Search my tasks by name (use --all for all tasks)").option("--status <status>", "Filter by status").option("--all", "Search all tasks, not just mine").option("--include-closed", "Include done/closed tasks in search").option("--json", "Force JSON output even in terminal").action(
|
|
5508
5533
|
wrapAction(
|
|
5509
5534
|
async (query, opts) => {
|
|
5510
5535
|
const config = loadConfig(getProfileName());
|
|
5511
5536
|
const tasks = await searchTasks(config, query, {
|
|
5512
5537
|
status: opts.status,
|
|
5538
|
+
all: opts.all,
|
|
5513
5539
|
includeClosed: opts.includeClosed
|
|
5514
5540
|
});
|
|
5515
5541
|
await printTasks(tasks, opts.json ?? false, config);
|
|
@@ -5526,10 +5552,13 @@ function buildProgram(programName = basename(process.argv[1] ?? "cup")) {
|
|
|
5526
5552
|
await runSummaryCommand(config, { hours, json: opts.json ?? false });
|
|
5527
5553
|
})
|
|
5528
5554
|
);
|
|
5529
|
-
program.command("overdue").description("List tasks that are past their due date").option("--include-closed", "Include done/closed overdue tasks").option("--json", "Force JSON output even in terminal").action(
|
|
5555
|
+
program.command("overdue").description("List tasks that are past their due date").option("--all", "Include all tasks, not just mine").option("--include-closed", "Include done/closed overdue tasks").option("--json", "Force JSON output even in terminal").action(
|
|
5530
5556
|
wrapAction(async (opts) => {
|
|
5531
5557
|
const config = loadConfig(getProfileName());
|
|
5532
|
-
const tasks = await fetchOverdueTasks(config, {
|
|
5558
|
+
const tasks = await fetchOverdueTasks(config, {
|
|
5559
|
+
all: opts.all,
|
|
5560
|
+
includeClosed: opts.includeClosed
|
|
5561
|
+
});
|
|
5533
5562
|
await printTasks(tasks, opts.json ?? false, config);
|
|
5534
5563
|
})
|
|
5535
5564
|
);
|
package/package.json
CHANGED
|
@@ -33,102 +33,102 @@ All commands support `--help` for full flag details. All commands support `--jso
|
|
|
33
33
|
|
|
34
34
|
### Read
|
|
35
35
|
|
|
36
|
-
| Command
|
|
37
|
-
|
|
|
38
|
-
| `cup tasks [--status s] [--name q] [--type t] [--list id] [--space id] [--include-closed]` | My tasks (filter by status, name, type, list, space)
|
|
39
|
-
| `cup assigned [--status s] [--include-closed]`
|
|
40
|
-
| `cup sprint [--status s] [--space nameOrId] [--folder id] [--include-closed]`
|
|
41
|
-
| `cup sprints [--space nameOrId]`
|
|
42
|
-
| `cup search <query> [--status s] [--include-closed]` | Search my tasks by name
|
|
43
|
-
| `cup task <id>`
|
|
44
|
-
| `cup subtasks <id> [--status s] [--name q] [--include-closed]`
|
|
45
|
-
| `cup comments <id>`
|
|
46
|
-
| `cup activity <id>`
|
|
47
|
-
| `cup inbox [--days n] [--include-closed]`
|
|
48
|
-
| `cup summary [--hours n]`
|
|
49
|
-
| `cup overdue [--include-closed]`
|
|
50
|
-
| `cup spaces [--name partial] [--my]`
|
|
51
|
-
| `cup lists <spaceId> [--name partial]`
|
|
52
|
-
| `cup folders <spaceId> [--name partial]`
|
|
53
|
-
| `cup members`
|
|
54
|
-
| `cup fields <listId>`
|
|
55
|
-
| `cup tags <spaceId>`
|
|
56
|
-
| `cup goals`
|
|
57
|
-
| `cup key-results <goalId>`
|
|
58
|
-
| `cup docs [query]`
|
|
59
|
-
| `cup doc <docId> [pageId]`
|
|
60
|
-
| `cup doc-pages <docId>`
|
|
61
|
-
| `cup task-types`
|
|
62
|
-
| `cup templates`
|
|
63
|
-
| `cup list-templates`
|
|
64
|
-
| `cup folder-templates`
|
|
65
|
-
| `cup views <listId>`
|
|
66
|
-
| `cup view <viewId>`
|
|
67
|
-
| `cup open <query>`
|
|
68
|
-
| `cup auth`
|
|
36
|
+
| Command | What it returns |
|
|
37
|
+
| -------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- |
|
|
38
|
+
| `cup tasks [--status s] [--name q] [--type t] [--list id] [--space id] [--all] [--include-closed]` | My tasks (filter by status, name, type, list, space). `--all` for all tasks in workspace |
|
|
39
|
+
| `cup assigned [--status s] [--include-closed]` | All my tasks grouped by status |
|
|
40
|
+
| `cup sprint [--status s] [--space nameOrId] [--folder id] [--include-closed]` | Tasks in active sprint (auto-detected) |
|
|
41
|
+
| `cup sprints [--space nameOrId]` | List all sprints (marks active with \*) |
|
|
42
|
+
| `cup search <query> [--status s] [--all] [--include-closed]` | Search my tasks by name. `--all` for all tasks |
|
|
43
|
+
| `cup task <id>` | Single task details (custom fields, checklists, attachments, deps, links) |
|
|
44
|
+
| `cup subtasks <id> [--status s] [--name q] [--include-closed]` | Subtasks of a task |
|
|
45
|
+
| `cup comments <id>` | Comments on a task |
|
|
46
|
+
| `cup activity <id>` | Task details + comment history combined |
|
|
47
|
+
| `cup inbox [--days n] [--include-closed]` | Tasks updated in last n days (default 30) |
|
|
48
|
+
| `cup summary [--hours n]` | Standup: completed, in-progress, overdue |
|
|
49
|
+
| `cup overdue [--include-closed]` | Tasks past due date (most overdue first) |
|
|
50
|
+
| `cup spaces [--name partial] [--my]` | List/filter workspace spaces |
|
|
51
|
+
| `cup lists <spaceId> [--name partial]` | Lists in a space (including folder lists) |
|
|
52
|
+
| `cup folders <spaceId> [--name partial]` | Folders in a space (with their lists) |
|
|
53
|
+
| `cup members` | Workspace members (username, ID, email) |
|
|
54
|
+
| `cup fields <listId>` | Custom fields on a list (type, required, options) |
|
|
55
|
+
| `cup tags <spaceId>` | Tags available in a space |
|
|
56
|
+
| `cup goals` | Workspace goals with progress |
|
|
57
|
+
| `cup key-results <goalId>` | Key results for a goal |
|
|
58
|
+
| `cup docs [query]` | Workspace docs (optionally filter by name) |
|
|
59
|
+
| `cup doc <docId> [pageId]` | Doc metadata + page tree, or a specific page |
|
|
60
|
+
| `cup doc-pages <docId>` | All pages in a doc with content |
|
|
61
|
+
| `cup task-types` | Custom task types (for `--custom-item-id`) |
|
|
62
|
+
| `cup templates` | Task templates (for `--template`) |
|
|
63
|
+
| `cup list-templates` | List templates (for `list-from-template`) |
|
|
64
|
+
| `cup folder-templates` | Folder templates |
|
|
65
|
+
| `cup views <listId>` | List views on a list |
|
|
66
|
+
| `cup view <viewId>` | Get view details |
|
|
67
|
+
| `cup open <query>` | Open task in browser by ID or name |
|
|
68
|
+
| `cup auth` | Check authentication status |
|
|
69
69
|
|
|
70
70
|
### Write
|
|
71
71
|
|
|
72
|
-
| Command | What it does
|
|
73
|
-
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
|
74
|
-
| `cup create -n name [-l listId] [-p parentId] [-d desc] [-s status] [--priority p] [--due-date d] [--time-estimate t] [--assignee id\|me] [--tags t] [--custom-item-id n] [--template id]` | Create task
|
|
75
|
-
| `cup update <id> [-n name] [-d desc] [-s status] [--priority p] [--due-date d] [--time-estimate t] [--assignee id\|me] [--parent id]`
|
|
76
|
-
| `cup comment <id> -m text [--notify-all]` | Post comment on task
|
|
77
|
-
| `cup comment-edit <commentId> -m text [--resolved] [--unresolved]` | Edit a comment
|
|
78
|
-
| `cup comment-delete <commentId>` | Delete a comment
|
|
79
|
-
| `cup replies <commentId>` | List threaded replies
|
|
80
|
-
| `cup reply <commentId> -m text [--notify-all]` | Reply to a comment
|
|
81
|
-
| `cup assign <id> [--to userId\|me] [--remove userId\|me]` | Assign/unassign users
|
|
82
|
-
| `cup depend <id> [--on taskId] [--blocks taskId] [--remove]` | Add/remove dependencies
|
|
83
|
-
| `cup move <id> [--to listId] [--remove listId]` | Add/remove task from lists
|
|
84
|
-
| `cup field <id> [--set "Name" value] [--remove "Name"]` | Set/remove custom field values
|
|
85
|
-
| `cup field-create <name> -t <type> [-d desc] [--options "a,b,c"] [--required]` | Create a custom field
|
|
86
|
-
| `cup tag <id> [--add tags] [--remove tags]` | Add/remove tags on a task
|
|
87
|
-
| `cup link <taskId> <linksTo> [--remove]` | Link/unlink tasks
|
|
88
|
-
| `cup attach <taskId> <filePath>` | Upload file attachment
|
|
89
|
-
| `cup delete <id> [--confirm]` | Delete task (DESTRUCTIVE)
|
|
90
|
-
| `cup duplicate <taskId>` | Duplicate a task
|
|
91
|
-
| `cup bulk status <status> <taskIds...>` | Bulk update status
|
|
92
|
-
| `cup checklist view <id>` | View checklists on a task
|
|
93
|
-
| `cup checklist create <id> <name>` | Create a checklist
|
|
94
|
-
| `cup checklist delete <checklistId>` | Delete a checklist
|
|
95
|
-
| `cup checklist add-item <checklistId> <name>` | Add item to checklist
|
|
96
|
-
| `cup checklist edit-item <checklistId> <itemId> [--name n] [--resolved] [--unresolved] [--assignee id]` | Edit checklist item
|
|
97
|
-
| `cup checklist delete-item <checklistId> <itemId>` | Delete checklist item
|
|
98
|
-
| `cup time start <taskId> [-d desc]` | Start timer
|
|
99
|
-
| `cup time stop` | Stop running timer
|
|
100
|
-
| `cup time status` | Show running timer
|
|
101
|
-
| `cup time log <taskId> <duration> [-d desc]` | Log manual entry (e.g. "2h", "30m")
|
|
102
|
-
| `cup time list [--days n] [--task id]` | List recent time entries
|
|
103
|
-
| `cup time update <timeEntryId> [-d desc] [--duration dur]` | Update time entry
|
|
104
|
-
| `cup time delete <timeEntryId>` | Delete time entry
|
|
105
|
-
| `cup goal-create <name> [-d desc] [--color hex]` | Create a goal
|
|
106
|
-
| `cup goal-update <goalId> [-n name] [-d desc] [--color hex]` | Update a goal
|
|
107
|
-
| `cup goal-delete <goalId>` | Delete a goal
|
|
108
|
-
| `cup key-result-create <goalId> <name> [--type t] [--target n]` | Create key result
|
|
109
|
-
| `cup key-result-update <keyResultId> [--progress n] [--note text]` | Update key result
|
|
110
|
-
| `cup key-result-delete <keyResultId>` | Delete key result
|
|
111
|
-
| `cup doc-create <title> [-c content]` | Create a doc
|
|
112
|
-
| `cup doc-page-create <docId> <name> [-c content] [--parent-page pageId]` | Create doc page
|
|
113
|
-
| `cup doc-page-edit <docId> <pageId> [--name text] [-c content]` | Edit doc page
|
|
114
|
-
| `cup doc-delete <docId>` | Delete a doc
|
|
115
|
-
| `cup doc-page-delete <docId> <pageId>` | Delete doc page
|
|
116
|
-
| `cup space-create <name>` | Create a space
|
|
117
|
-
| `cup list-create <spaceId> <name> [--folder folderId]` | Create a list in a space or folder
|
|
118
|
-
| `cup folder-create <spaceId> <name>` | Create a folder in a space
|
|
119
|
-
| `cup tag-create <spaceId> <name> [--fg color] [--bg color]` | Create space tag
|
|
120
|
-
| `cup tag-update <spaceId> <tagName> --name <newName> [--fg c] [--bg c]` | Update space tag
|
|
121
|
-
| `cup tag-delete <spaceId> <name>` | Delete space tag
|
|
122
|
-
| `cup list-from-template <name> --template <id> [--space id] [--folder id]` | Create list from template
|
|
123
|
-
| `cup view-create <listId> <name> -t <type> [--group-by field]` | Create a view on a list
|
|
124
|
-
| `cup view-update <viewId> [-n name] [--group-by field]` | Update a view
|
|
125
|
-
| `cup view-delete <viewId> [--confirm]` | Delete a view (DESTRUCTIVE)
|
|
126
|
-
| `cup profile list [--json]` | List all profiles
|
|
127
|
-
| `cup profile add <name>` | Add a new profile (interactive)
|
|
128
|
-
| `cup profile remove <name>` | Remove a profile
|
|
129
|
-
| `cup profile use <name>` | Set the default profile
|
|
130
|
-
| `cup config get <key>` / `set <key> <value>` / `path` | Manage config
|
|
131
|
-
| `cup completion <shell>` | Shell completions (bash/zsh/fish)
|
|
72
|
+
| Command | What it does |
|
|
73
|
+
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------------------------------------------- |
|
|
74
|
+
| `cup create -n name [-l listId] [-p parentId] [-d desc] [-s status] [--priority p] [--due-date d] [--time-estimate t] [--assignee id\|me] [--tags t] [--custom-item-id n] [--template id]` | Create task |
|
|
75
|
+
| `cup update <id> [-n name] [-d desc] [-s status] [--priority p] [--due-date d] [--time-estimate t] [--assignee id\|me] [--parent id] [--field "Name" val]` | Update task fields (including custom fields) |
|
|
76
|
+
| `cup comment <id> -m text [--notify-all]` | Post comment on task |
|
|
77
|
+
| `cup comment-edit <commentId> -m text [--resolved] [--unresolved]` | Edit a comment |
|
|
78
|
+
| `cup comment-delete <commentId>` | Delete a comment |
|
|
79
|
+
| `cup replies <commentId>` | List threaded replies |
|
|
80
|
+
| `cup reply <commentId> -m text [--notify-all]` | Reply to a comment |
|
|
81
|
+
| `cup assign <id> [--to userId\|me] [--remove userId\|me]` | Assign/unassign users |
|
|
82
|
+
| `cup depend <id> [--on taskId] [--blocks taskId] [--remove]` | Add/remove dependencies |
|
|
83
|
+
| `cup move <id> [--to listId] [--remove listId]` | Add/remove task from lists |
|
|
84
|
+
| `cup field <id> [--set "Name" value] [--remove "Name"]` | Set/remove custom field values |
|
|
85
|
+
| `cup field-create <name> -t <type> [-d desc] [--options "a,b,c"] [--required]` | Create a custom field |
|
|
86
|
+
| `cup tag <id> [--add tags] [--remove tags]` | Add/remove tags on a task |
|
|
87
|
+
| `cup link <taskId> <linksTo> [--remove]` | Link/unlink tasks |
|
|
88
|
+
| `cup attach <taskId> <filePath>` | Upload file attachment |
|
|
89
|
+
| `cup delete <id> [--confirm]` | Delete task (DESTRUCTIVE) |
|
|
90
|
+
| `cup duplicate <taskId>` | Duplicate a task |
|
|
91
|
+
| `cup bulk status <status> <taskIds...>` | Bulk update status |
|
|
92
|
+
| `cup checklist view <id>` | View checklists on a task |
|
|
93
|
+
| `cup checklist create <id> <name>` | Create a checklist |
|
|
94
|
+
| `cup checklist delete <checklistId>` | Delete a checklist |
|
|
95
|
+
| `cup checklist add-item <checklistId> <name>` | Add item to checklist |
|
|
96
|
+
| `cup checklist edit-item <checklistId> <itemId> [--name n] [--resolved] [--unresolved] [--assignee id]` | Edit checklist item |
|
|
97
|
+
| `cup checklist delete-item <checklistId> <itemId>` | Delete checklist item |
|
|
98
|
+
| `cup time start <taskId> [-d desc]` | Start timer |
|
|
99
|
+
| `cup time stop` | Stop running timer |
|
|
100
|
+
| `cup time status` | Show running timer |
|
|
101
|
+
| `cup time log <taskId> <duration> [-d desc]` | Log manual entry (e.g. "2h", "30m") |
|
|
102
|
+
| `cup time list [--days n] [--task id]` | List recent time entries |
|
|
103
|
+
| `cup time update <timeEntryId> [-d desc] [--duration dur]` | Update time entry |
|
|
104
|
+
| `cup time delete <timeEntryId>` | Delete time entry |
|
|
105
|
+
| `cup goal-create <name> [-d desc] [--color hex]` | Create a goal |
|
|
106
|
+
| `cup goal-update <goalId> [-n name] [-d desc] [--color hex]` | Update a goal |
|
|
107
|
+
| `cup goal-delete <goalId>` | Delete a goal |
|
|
108
|
+
| `cup key-result-create <goalId> <name> [--type t] [--target n]` | Create key result |
|
|
109
|
+
| `cup key-result-update <keyResultId> [--progress n] [--note text]` | Update key result |
|
|
110
|
+
| `cup key-result-delete <keyResultId>` | Delete key result |
|
|
111
|
+
| `cup doc-create <title> [-c content]` | Create a doc |
|
|
112
|
+
| `cup doc-page-create <docId> <name> [-c content] [--parent-page pageId]` | Create doc page |
|
|
113
|
+
| `cup doc-page-edit <docId> <pageId> [--name text] [-c content]` | Edit doc page |
|
|
114
|
+
| `cup doc-delete <docId>` | Delete a doc |
|
|
115
|
+
| `cup doc-page-delete <docId> <pageId>` | Delete doc page |
|
|
116
|
+
| `cup space-create <name>` | Create a space |
|
|
117
|
+
| `cup list-create <spaceId> <name> [--folder folderId]` | Create a list in a space or folder |
|
|
118
|
+
| `cup folder-create <spaceId> <name>` | Create a folder in a space |
|
|
119
|
+
| `cup tag-create <spaceId> <name> [--fg color] [--bg color]` | Create space tag |
|
|
120
|
+
| `cup tag-update <spaceId> <tagName> --name <newName> [--fg c] [--bg c]` | Update space tag |
|
|
121
|
+
| `cup tag-delete <spaceId> <name>` | Delete space tag |
|
|
122
|
+
| `cup list-from-template <name> --template <id> [--space id] [--folder id]` | Create list from template |
|
|
123
|
+
| `cup view-create <listId> <name> -t <type> [--group-by field]` | Create a view on a list |
|
|
124
|
+
| `cup view-update <viewId> [-n name] [--group-by field]` | Update a view |
|
|
125
|
+
| `cup view-delete <viewId> [--confirm]` | Delete a view (DESTRUCTIVE) |
|
|
126
|
+
| `cup profile list [--json]` | List all profiles |
|
|
127
|
+
| `cup profile add <name>` | Add a new profile (interactive) |
|
|
128
|
+
| `cup profile remove <name>` | Remove a profile |
|
|
129
|
+
| `cup profile use <name>` | Set the default profile |
|
|
130
|
+
| `cup config get <key>` / `set <key> <value>` / `path` | Manage config |
|
|
131
|
+
| `cup completion <shell>` | Shell completions (bash/zsh/fish) |
|
|
132
132
|
|
|
133
133
|
## Global Flags
|
|
134
134
|
|
|
@@ -152,6 +152,7 @@ All commands support `--help` for full flag details. All commands support `--jso
|
|
|
152
152
|
| `--custom-item-id` | Custom task type ID for `cup create` (find with `cup task-types`) |
|
|
153
153
|
| `--space` | Partial name match or exact ID |
|
|
154
154
|
| `--name` | Partial match, case-insensitive |
|
|
155
|
+
| `--all` | Show all tasks in workspace, not just assigned to me. Available on `tasks`, `search`, `overdue`. Default: my tasks only (smaller output for agent context windows) |
|
|
155
156
|
| `--include-closed` | Include closed/done tasks |
|
|
156
157
|
| `--list` on create | Optional when `--parent` is given (auto-detected) |
|
|
157
158
|
| `cup field --set` | Supports: text, number, checkbox (true/false), dropdown (option name), date (YYYY-MM-DD), url, email. Names resolved case-insensitively; errors list available fields/options |
|
|
@@ -179,6 +180,7 @@ cup activity abc123def # task + comments combined
|
|
|
179
180
|
cup tasks --status "in progress" # by status
|
|
180
181
|
cup tasks --name "login" # by partial name
|
|
181
182
|
cup tasks --type initiative # initiatives only
|
|
183
|
+
cup tasks --list 12345 --all # all tasks in list, not just mine
|
|
182
184
|
cup search "payment flow" # multi-word search
|
|
183
185
|
cup search auth --status "prog" # fuzzy status match
|
|
184
186
|
cup sprint # current sprint
|