一键导入
mcp-click-up
Routes ClickUp between cupt CLI (daily ops) and official MCP (docs, goals, bulk). Embedded install and agent safety invariants.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Routes ClickUp between cupt CLI (daily ops) and official MCP (docs, goals, bulk). Embedded install and agent safety invariants.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Routes non-trivial requests to matching skills through standalone MCP metadata and stable advisor tool ids.
Unified spec-folder workflow + context preservation: Levels 1-3+, validation, Spec Kit Memory. Required for file modifications.
OpenCode CLI orchestrator: external dispatch, in-OpenCode parallel sessions, cross-AI handback with full runtime context.
Shared deep-loop runtime: executor + prompt-pack + validation + atomic state + coverage-graph + Bayesian scoring + fallback routing.
Iterative codebase-context-gathering deep loop. Runs a configurable pool over a shared scope in parallel (native-only by default; optional heterogeneous CLI seats) and synthesizes a reuse-first Context Report for planning/implementation. Use before /speckit:plan or /speckit:implement to map existing code, integration points, and conventions.
Unified deep-loop workflow skill: routes a request to one of five modes (context, research, review, ai-council, improvement) over the shared deep-loop-runtime backend. Holds no per-mode logic — it dispatches by workflowMode through mode-registry.json. Use for codebase-context gathering, autonomous research, iterative code review, multi-seat AI Council planning, and evaluator-first agent/model/skill/non-dev-system improvement.
| name | mcp-click-up |
| description | Routes ClickUp between cupt CLI (daily ops) and official MCP (docs, goals, bulk). Embedded install and agent safety invariants. |
| allowed-tools | ["Bash","Edit","Glob","Grep","mcp__code_mode__call_tool_chain","Read","Write"] |
| version | 1.0.0.0 |
ClickUp task management via cupt CLI (primary) and official ClickUp MCP (secondary). Operation-based routing: cupt handles daily task ops, MCP handles documents, goals, and bulk operations.
cupt appears in the requestclickup + any action verb (list, show, done, mark, note, time, tag)clickup_create_task, clickup_get_task, clickup_manage_documentscu command) — different tool entirely; not supported by this skillALWAYS: SKILL.md (this file)
ON_DEMAND: references/cupt_commands.md (when cupt command details needed)
references/mcp_tools.md (when MCP tool details needed)
references/troubleshooting.md (when error or auth issue detected)
| Operation | Primary Tool | Command | MCP Fallback |
|---|---|---|---|
| List/filter tasks | cupt | cupt list [--today|--week|--tag X] | clickup_search_tasks |
| Task details | cupt | cupt show <id> [--notes] | clickup_get_task |
| Mark task complete | cupt | cupt done <id> [--dry-run] | clickup_update_task |
| Add note/comment | cupt | cupt note <id> "<text>" | clickup_manage_comments |
| Read comments | cupt | cupt notes <id> | clickup_manage_comments |
| Start/stop timer | cupt | cupt time start <id> / cupt time stop | MCP time tracking |
| Log time manually | cupt | cupt time add <id> <dur> | MCP time tracking |
| Add tag | cupt | cupt tag add <id> <name> | clickup_add_tag_to_task |
| Remove tag | cupt | cupt tag remove <id> <name> | clickup_remove_tag_from_task |
| Task context | cupt | cupt context <id> | n/a |
| Discover statuses | cupt | cupt statuses <id> | n/a |
| Documents | MCP only | n/a | clickup_create_document |
| Goals/OKRs | MCP only | n/a | goal management tools |
| Bulk create 5+ | MCP only | n/a | clickup_create_bulk_tasks |
| Webhooks | MCP only | n/a | webhook management tools |
| Chat | MCP only | n/a | chat tools |
| Audit logs | MCP only | n/a | clickup_get_audit_logs |
# Intent signals with weights
INTENT_SIGNALS = {
"CUPT_DAILY": {
"weight": 5,
"keywords": ["list", "show", "done", "note", "notes", "time", "tag", "context",
"statuses", "summary", "teams", "attach", "work queue", "complete task",
"mark done", "log time", "track time"],
},
"MCP_ADVANCED": {
"weight": 5,
"keywords": ["document", "goal", "okr", "bulk", "webhook", "chat", "audit",
"create_bulk", "manage_documents", "checklist", "custom field"],
},
"INSTALL": {
"weight": 6,
"keywords": ["install cupt", "setup", "not found", "not installed", "auth",
"authenticate", "api token", "mcp config"],
},
"TROUBLESHOOT": {
"weight": 6,
"keywords": ["error", "failed", "not working", "403", "401", "slow", "timeout",
"empty", "no tasks"],
},
}
RESOURCE_MAP = {
"CUPT_DAILY": ["references/cupt_commands.md"],
"MCP_ADVANCED": ["references/mcp_tools.md"],
"INSTALL": ["INSTALL_GUIDE.md", "scripts/install.sh"],
"TROUBLESHOOT": ["references/troubleshooting.md"],
"DEFAULT": ["references/cupt_commands.md"],
}
def route_clickup_resources(request: str) -> list[str]:
"""Score intents, load matching reference files."""
request_lower = request.lower()
scores = {}
for intent, config in INTENT_SIGNALS.items():
score = sum(
config["weight"] for kw in config["keywords"]
if kw in request_lower
)
if score > 0:
scores[intent] = score
if not scores:
return load_resources(RESOURCE_MAP["DEFAULT"])
# Error/install keywords boost TROUBLESHOOT/INSTALL regardless of other signals
if scores.get("TROUBLESHOOT", 0) > 3:
return load_resources(RESOURCE_MAP["TROUBLESHOOT"])
if scores.get("INSTALL", 0) > 4:
return load_resources(RESOURCE_MAP["INSTALL"])
# Pick top intent
top_intent = max(scores, key=scores.get)
return load_resources(RESOURCE_MAP[top_intent])
def load_resources(resource_list: list[str]) -> list[str]:
"""Load resource files, guard to skill directory."""
skill_root = ".opencode/skills/mcp-click-up/"
loaded = []
for resource in resource_list:
path = skill_root + resource
if _guard_in_skill(path):
loaded.append(Read(path))
return loaded
| Dimension | cupt CLI | Official ClickUp MCP |
|---|---|---|
| Activation | cupt <command> in Bash | Code Mode call_tool_chain() |
| Best for | Daily task ops, time tracking, notes, tags | Documents, goals, bulk ops, webhooks |
| Output | Human-readable + --json flag | Structured JSON always |
| Auth | cupt auth / cupt config --api-token | CLICKUP_API_KEY env var |
| Offline | --offline flag uses local cache | Always requires network |
| Install | pipx install cupt (Python) | npx @clickup/mcp-server (Node) |
| Dry-run | cupt done --dry-run | No equivalent |
| Status auto | Yes — resolves per-list | No — must specify status |
Step 1: Verify installation
cupt --version # e.g. cupt 0.7.1
cupt status # Shows workspace + auth status
Step 2: Install if missing
bash .opencode/skills/mcp-click-up/scripts/install.sh
Step 3: Authenticate
cupt auth # Interactive wizard
# OR:
cupt config --api-token pk_xxxxx # Direct token setup
Step 4: Set defaults (optional)
cupt config --workspace-id <id> # From cupt status
cupt config --default-list <id> # For quick task creation
Step 5: Use for daily operations
cupt list --today --json # Tasks due today, JSON output
cupt statuses <task_id> # Discover list's status schema FIRST
cupt done <task_id> --dry-run # Preview completion without writing
cupt done <task_id> --note "done" # Mark complete with note
Prerequisites:
CLICKUP_API_KEY and CLICKUP_TEAM_ID set in env blockConfiguration (add to opencode.json mcpServers):
"clickup": {
"command": "npx",
"args": ["-y", "@clickup/mcp-server"],
"env": {
"CLICKUP_API_KEY": "pk_YOUR_TOKEN",
"CLICKUP_TEAM_ID": "YOUR_WORKSPACE_ID"
}
}
Invocation via Code Mode:
// Tool naming: clickup.clickup_{tool_name}
const result = await call_tool_chain([
{
tool: "clickup.clickup_create_document",
input: {
name: "Sprint Notes",
parent: { type: 4, id: "LIST_ID" },
content: "# Sprint Notes\n\n..."
}
}
]);
When to prefer MCP:
Limitations:
cupt statuses <id> before any cupt done call — each ClickUp list has its own status schema; the closed status varies (Done, Complete, Closed, etc.). Never assume.cupt done <id> --dry-run before batch completion — verify resolved status for every task before writing. One dry-run per task in a batch loop.--json flag for all cupt read commands when processing output programmatically: cupt list --json, cupt show <id> --json, etc.cupt --version && cupt status as preflight before starting a ClickUp workflow session.cupt list results as valid — an empty queue is not an error. Before escalating: check tag spelling, try --all flag, verify team name via cupt teams.cupt context <id> before acting on a task to understand its parent and sibling relationships."Done" in one list may not exist in another. Use cupt statuses <id> to discover the correct status for each task's list.cupt done on multiple tasks without per-task dry-run first — batch status errors are hard to reverse.@krodak/clickup-cli (cu command) — this is a different tool not supported by this skill. The cu binary also conflicts with the system cu command on some Unix systems.opencode.json — print MCP config snippets for user to apply; never write to config files programmatically.cupt list returns empty, the queue is genuinely empty. Report this clearly.scripts/install.sh fails → report Python version and pip issuescupt status shows auth failure → direct to cupt auth or cupt config --api-tokencupt list --team X is extremely slow (>30s) → team filter is client-side on large workspaces; suggest combining with --tag to reduce result setCLICKUP_API_KEY env var and CLICKUP_TEAM_ID in opencode.jsoncupt done is unexpected → run cupt statuses <id> and report available statusescupt --version prints version stringcupt status shows workspace name without errorcupt list --today --json returns valid JSON array (even if empty)cupt statuses <id> returns status list for the task's listcupt done <id> --dry-run shows resolved statusclickup.clickup_get_workspace returns workspace dataGate 2 (Skill Routing): This skill activates at ≥0.8 confidence for ClickUp task management requests. The skill advisor matches on: clickup, cupt, task management, work queue, time tracking, mark done.
Code Mode MCP: Official ClickUp MCP tools are invoked via mcp__code_mode__call_tool_chain. Tool naming convention: clickup.clickup_{tool_name}. See references/mcp_tools.md for the full tool catalog.
Memory: Save ClickUp workflow context (current list, active tags, workspace ID) using /memory:save when switching sessions.
Tool Usage: Use Bash for cupt CLI commands. Use mcp__code_mode__call_tool_chain for official MCP operations. Use Read to load references on demand.
| Category | Command | Description |
|---|---|---|
| Auth | cupt auth | Interactive authentication wizard |
cupt config --api-token pk_xxx | Set Personal API Token directly | |
cupt status | Show auth status + workspace | |
cupt logout | Clear stored credentials | |
| Config | cupt config --workspace-id <id> | Set default workspace |
cupt config --default-list <id> | Set default list | |
cupt config --show | Display current configuration | |
| Tasks | cupt list | List assigned tasks |
cupt list --today | Tasks due today | |
cupt list --week | Tasks due this week | |
cupt list --overdue | Overdue tasks | |
cupt list --tag <name> | Filter by tag (server-side, fast) | |
cupt list --team <name> | Filter by team (client-side, slow) | |
cupt list --all | All tasks including team | |
cupt list --mine | Only self-assigned tasks | |
cupt list --json | JSON output for agents | |
cupt show <id> | Full task details | |
cupt show <id> --notes | Include comments | |
cupt show <id> --json | JSON output | |
cupt show <id> --offline | Use cached data | |
cupt context <id> | Parent + siblings + subtasks | |
cupt statuses <id> | Status schema for task's list | |
cupt done <id> | Mark complete (auto-resolves status) | |
cupt done <id> --dry-run | Preview completion, no write | |
cupt done <id> --note "text" | Mark complete with note | |
| Notes | cupt note <id> "<text>" | Add comment to task |
cupt notes <id> | List all comments | |
| Time | cupt time start <id> | Start timer on task |
cupt time stop | Stop running timer | |
cupt time add <id> <dur> | Log time (e.g., 1h30m, 45m) | |
cupt time status | Show current timer state | |
| Tags | cupt tag add <id> <name> | Add tag to task |
cupt tag remove <id> <name> | Remove tag from task | |
| Attach | cupt attach list <id> | List attachments |
cupt attach add <id> <file> | Upload file | |
cupt attach get <id> <sel> | Download attachment | |
| Workspace | cupt teams | List teams (user-groups) |
cupt summary | Task summary overview | |
cupt prefetch | Pre-cache tasks for offline use |
Reference Files (load on demand via router):
references/cupt_commands.md — Full cupt command reference with agent patternsreferences/mcp_tools.md — 46 official MCP tools, priority table, invocationreferences/troubleshooting.md — Auth, status, team-filter, MCP failuresScripts:
scripts/install.sh — Installs cupt + prints MCP config snippetEmbedded Servers:
mcp-servers/clickup-mcp/package.json — Official ClickUp MCP server (@clickup/mcp-server). Run npm install to vendor locally.mcp-servers/clickup-cli/requirements.txt — cupt CLI pip pin (cupt>=0.7.1). Run setup.sh to install.mcp-servers/clickup-cli/setup.sh — cupt install via pipx or pip.Install Guide:
INSTALL_GUIDE.md — Step-by-step with validation checkpointsExamples:
examples/task-queue-workflow.sh — Process tagged work queueexamples/time-tracking-workflow.sh — Timer + time log workflowRelated Skills:
mcp-chrome-devtools — Structural template this skill was modeled onmcp-code-mode — Code Mode MCP orchestration (used for official MCP invocation)External: