@krodak/clickup-cli 1.27.0 → 1.27.1
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 +79 -32
- package/package.json +1 -1
- package/skills/clickup-cli/SKILL.md +2 -2
|
@@ -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.27.
|
|
4
|
+
"version": "1.27.1",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Krzysztof Rodak"
|
|
7
7
|
},
|
package/dist/index.js
CHANGED
|
@@ -1841,12 +1841,12 @@ async function groupedTaskPicker(groups) {
|
|
|
1841
1841
|
}
|
|
1842
1842
|
async function showDetailsAndOpen(tasks, fetchTask) {
|
|
1843
1843
|
if (tasks.length === 0) return;
|
|
1844
|
-
const
|
|
1844
|
+
const separator2 = chalk2.dim("\u2500".repeat(60));
|
|
1845
1845
|
for (let i = 0; i < tasks.length; i++) {
|
|
1846
1846
|
const task = tasks[i];
|
|
1847
1847
|
if (i > 0) {
|
|
1848
1848
|
console.log("");
|
|
1849
|
-
console.log(
|
|
1849
|
+
console.log(separator2);
|
|
1850
1850
|
}
|
|
1851
1851
|
console.log("");
|
|
1852
1852
|
if (fetchTask) {
|
|
@@ -2876,10 +2876,10 @@ function printComments(comments, forceJson) {
|
|
|
2876
2876
|
console.log("No comments found.");
|
|
2877
2877
|
return;
|
|
2878
2878
|
}
|
|
2879
|
-
const
|
|
2879
|
+
const separator2 = chalk4.dim("-".repeat(60));
|
|
2880
2880
|
for (let i = 0; i < comments.length; i++) {
|
|
2881
2881
|
const c = comments[i];
|
|
2882
|
-
if (i > 0) console.log(
|
|
2882
|
+
if (i > 0) console.log(separator2);
|
|
2883
2883
|
console.log(`${chalk4.bold(c.user)} ${chalk4.dim(formatTimestamp(c.date))}`);
|
|
2884
2884
|
console.log(c.text);
|
|
2885
2885
|
if (i < comments.length - 1) console.log("");
|
|
@@ -7052,18 +7052,31 @@ function formatViewsMarkdown(views) {
|
|
|
7052
7052
|
|
|
7053
7053
|
// src/commands/chat.ts
|
|
7054
7054
|
import chalk22 from "chalk";
|
|
7055
|
+
function channelName(c) {
|
|
7056
|
+
return c.name || "DM";
|
|
7057
|
+
}
|
|
7058
|
+
function colorChannelType(type) {
|
|
7059
|
+
if (type === "CHANNEL") return chalk22.cyan(type);
|
|
7060
|
+
if (type === "DM") return chalk22.dim(type);
|
|
7061
|
+
if (type === "GROUP_DM") return chalk22.blue(type);
|
|
7062
|
+
return type;
|
|
7063
|
+
}
|
|
7064
|
+
function colorVisibility(v) {
|
|
7065
|
+
if (v === "PUBLIC") return chalk22.green(v);
|
|
7066
|
+
return chalk22.dim(v);
|
|
7067
|
+
}
|
|
7055
7068
|
var CHANNEL_COLUMNS = [
|
|
7056
|
-
{ key: "
|
|
7057
|
-
{ key: "
|
|
7058
|
-
{ key: "type", label: "Type", maxWidth: 12 },
|
|
7059
|
-
{ key: "visibility", label: "Visibility", maxWidth: 10 },
|
|
7069
|
+
{ key: "name", label: "Name", maxWidth: 40, format: (v) => chalk22.bold(v) },
|
|
7070
|
+
{ key: "id", label: "ID", maxWidth: 20, format: (v) => chalk22.dim(v) },
|
|
7071
|
+
{ key: "type", label: "Type", maxWidth: 12, format: (v) => colorChannelType(v) },
|
|
7072
|
+
{ key: "visibility", label: "Visibility", maxWidth: 10, format: (v) => colorVisibility(v) },
|
|
7060
7073
|
{ key: "topic", label: "Topic", maxWidth: 40 }
|
|
7061
7074
|
];
|
|
7062
7075
|
function formatChannelsTable(channels) {
|
|
7063
7076
|
if (channels.length === 0) return "No channels found";
|
|
7064
7077
|
const rows = channels.map((c) => ({
|
|
7065
7078
|
id: c.id,
|
|
7066
|
-
name: c
|
|
7079
|
+
name: channelName(c),
|
|
7067
7080
|
type: c.type,
|
|
7068
7081
|
visibility: c.visibility,
|
|
7069
7082
|
topic: c.topic ?? ""
|
|
@@ -7073,25 +7086,32 @@ function formatChannelsTable(channels) {
|
|
|
7073
7086
|
function formatChannelsMarkdown(channels) {
|
|
7074
7087
|
if (channels.length === 0) return "No channels found";
|
|
7075
7088
|
return channels.map((c) => {
|
|
7076
|
-
const name = c
|
|
7089
|
+
const name = channelName(c);
|
|
7077
7090
|
return `- **${name}** (${c.id}) \u2014 ${c.type}${c.topic ? `, ${c.topic}` : ""}`;
|
|
7078
7091
|
}).join("\n");
|
|
7079
7092
|
}
|
|
7080
7093
|
function formatChannelDetail(channel) {
|
|
7081
7094
|
const lines = [];
|
|
7082
|
-
lines.push(chalk22.bold(channel
|
|
7083
|
-
lines.push(
|
|
7084
|
-
|
|
7085
|
-
|
|
7086
|
-
|
|
7087
|
-
|
|
7088
|
-
|
|
7089
|
-
|
|
7095
|
+
lines.push(chalk22.bold.underline(channelName(channel)));
|
|
7096
|
+
lines.push("");
|
|
7097
|
+
const fields = [
|
|
7098
|
+
["ID", chalk22.dim(channel.id)],
|
|
7099
|
+
["Type", colorChannelType(channel.type)],
|
|
7100
|
+
["Visibility", colorVisibility(channel.visibility)]
|
|
7101
|
+
];
|
|
7102
|
+
if (channel.topic) fields.push(["Topic", channel.topic]);
|
|
7103
|
+
if (channel.description) fields.push(["Description", channel.description]);
|
|
7104
|
+
fields.push(["Archived", channel.archived ? chalk22.yellow("Yes") : "No"]);
|
|
7105
|
+
fields.push(["Created", formatDate(channel.created_at)]);
|
|
7106
|
+
const maxLabel = Math.max(...fields.map(([k]) => k.length));
|
|
7107
|
+
for (const [label, value] of fields) {
|
|
7108
|
+
lines.push(` ${chalk22.bold(label.padEnd(maxLabel + 1))} ${value}`);
|
|
7109
|
+
}
|
|
7090
7110
|
return lines.join("\n");
|
|
7091
7111
|
}
|
|
7092
7112
|
var CHAT_MEMBER_COLUMNS = [
|
|
7093
|
-
{ key: "name", label: "Name", maxWidth: 30 },
|
|
7094
|
-
{ key: "id", label: "ID", maxWidth: 15 },
|
|
7113
|
+
{ key: "name", label: "Name", maxWidth: 30, format: (v) => chalk22.bold(v) },
|
|
7114
|
+
{ key: "id", label: "ID", maxWidth: 15, format: (v) => chalk22.dim(v) },
|
|
7095
7115
|
{ key: "email", label: "Email", maxWidth: 40 },
|
|
7096
7116
|
{ key: "type", label: "Type", maxWidth: 12 }
|
|
7097
7117
|
];
|
|
@@ -7115,23 +7135,25 @@ function formatChatMembersMarkdown(members) {
|
|
|
7115
7135
|
|
|
7116
7136
|
// src/commands/chat-message.ts
|
|
7117
7137
|
import chalk23 from "chalk";
|
|
7138
|
+
var separator = chalk23.dim("-".repeat(60));
|
|
7118
7139
|
function formatMessages(messages) {
|
|
7119
7140
|
if (messages.length === 0) return "No messages";
|
|
7120
7141
|
const lines = [];
|
|
7121
|
-
for (
|
|
7122
|
-
const
|
|
7123
|
-
|
|
7124
|
-
|
|
7125
|
-
header.push(chalk23.cyan(`[${msg.post_data.title}]`));
|
|
7126
|
-
}
|
|
7142
|
+
for (let i = 0; i < messages.length; i++) {
|
|
7143
|
+
const msg = messages[i];
|
|
7144
|
+
if (i > 0) lines.push(separator);
|
|
7145
|
+
const meta = [chalk23.bold(`@${msg.user_id}`), chalk23.dim(formatTimestamp(msg.date))];
|
|
7127
7146
|
if (msg.replies_count) {
|
|
7128
|
-
|
|
7147
|
+
meta.push(chalk23.dim(`${msg.replies_count} replies`));
|
|
7129
7148
|
}
|
|
7130
|
-
|
|
7131
|
-
lines.push(
|
|
7132
|
-
|
|
7149
|
+
meta.push(chalk23.dim(`(${msg.id})`));
|
|
7150
|
+
lines.push(meta.join(" "));
|
|
7151
|
+
if (msg.type === "post" && msg.post_data?.title) {
|
|
7152
|
+
lines.push(chalk23.cyan.bold(msg.post_data.title));
|
|
7153
|
+
}
|
|
7154
|
+
lines.push(msg.content);
|
|
7133
7155
|
}
|
|
7134
|
-
return lines.join("\n")
|
|
7156
|
+
return lines.join("\n");
|
|
7135
7157
|
}
|
|
7136
7158
|
function formatMessagesMarkdown(messages) {
|
|
7137
7159
|
if (messages.length === 0) return "No messages";
|
|
@@ -7147,6 +7169,29 @@ ${msg.content}`;
|
|
|
7147
7169
|
|
|
7148
7170
|
// src/commands/chat-reaction.ts
|
|
7149
7171
|
import chalk24 from "chalk";
|
|
7172
|
+
var EMOJI_MAP = {
|
|
7173
|
+
thumbsup: "\u{1F44D}",
|
|
7174
|
+
thumbsdown: "\u{1F44E}",
|
|
7175
|
+
heart: "\u2764\uFE0F",
|
|
7176
|
+
fire: "\u{1F525}",
|
|
7177
|
+
eyes: "\u{1F440}",
|
|
7178
|
+
rocket: "\u{1F680}",
|
|
7179
|
+
tada: "\u{1F389}",
|
|
7180
|
+
check: "\u2705",
|
|
7181
|
+
x: "\u274C",
|
|
7182
|
+
warning: "\u26A0\uFE0F",
|
|
7183
|
+
laugh: "\u{1F602}",
|
|
7184
|
+
smile: "\u{1F60A}",
|
|
7185
|
+
thinking: "\u{1F914}",
|
|
7186
|
+
clap: "\u{1F44F}",
|
|
7187
|
+
pray: "\u{1F64F}",
|
|
7188
|
+
100: "\u{1F4AF}",
|
|
7189
|
+
star: "\u2B50",
|
|
7190
|
+
wave: "\u{1F44B}"
|
|
7191
|
+
};
|
|
7192
|
+
function emojiChar(name) {
|
|
7193
|
+
return EMOJI_MAP[name] ?? `:${name}:`;
|
|
7194
|
+
}
|
|
7150
7195
|
function groupByEmoji(reactions) {
|
|
7151
7196
|
const groups = /* @__PURE__ */ new Map();
|
|
7152
7197
|
for (const r of reactions) {
|
|
@@ -7161,7 +7206,9 @@ function formatReactions(reactions) {
|
|
|
7161
7206
|
const groups = groupByEmoji(reactions);
|
|
7162
7207
|
const lines = [];
|
|
7163
7208
|
for (const [emoji, users] of groups) {
|
|
7164
|
-
|
|
7209
|
+
const icon = emojiChar(emoji);
|
|
7210
|
+
const userList = users.map((u) => chalk24.bold(`@${u}`)).join(", ");
|
|
7211
|
+
lines.push(`${icon} ${chalk24.dim(emoji)} ${chalk24.dim(`(${users.length})`)} \u2014 ${userList}`);
|
|
7165
7212
|
}
|
|
7166
7213
|
return lines.join("\n");
|
|
7167
7214
|
}
|
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.27.
|
|
6
|
+
# ClickUp CLI (`cup`) - skill version 1.27.1
|
|
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.27.
|
|
10
|
+
> **Version check:** Run `cup --version`. If your installed version is older than 1.27.1, update with `npm install -g @krodak/clickup-cli` and refresh this skill with `cup skill`.
|
|
11
11
|
|
|
12
12
|
## Install & Configure
|
|
13
13
|
|