ワンクリックで
tower
AI task orchestration platform — use Tower MCP tools to manage workspaces, projects, tasks, and monitor agent execution
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
メニュー
AI task orchestration platform — use Tower MCP tools to manage workspaces, projects, tasks, and monitor agent execution
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
SOC 職業分類に基づく
| name | tower |
| description | AI task orchestration platform — use Tower MCP tools to manage workspaces, projects, tasks, and monitor agent execution |
Tower is an AI task orchestration platform. This skill teaches you how to use Tower's MCP tools to manage projects and tasks.
Before using Tower tools, check if the tower MCP server is available. If tools like list_workspaces are not found, guide the user to configure MCP:
Claude Code — add to ~/.claude/settings.json:
{
"mcpServers": {
"tower": {
"command": "npx",
"args": ["tsx", "<project-root>/src/mcp/index.ts"]
}
}
}
Other AI agents — add the same config to your MCP client settings file. After configuration, restart the AI session.
The must-follow rules. Everything else is operational detail below.
## 来源. The server guarantees it (fallback 无, parent-derivation, <task-source> rendering). Just pass any <task-source> block through verbatim. See references/task-source.md.create_task follows the user's saved global preference. On { needsDefaultsSetup: true }, ask the two questions, call set_task_defaults once, then retry. Explicit useWorktree/autoStart args override and skip the prompt.autoStart: true does not mean it started; check response.execution / response.executionError.references on create_task (local paths directly; base64-only → manage_assets upload first, then pass the returned path).set_task_labels / update_task labelIds overwrite the full set. versionId: null/"" moves a task to the backlog.relay_channel_reply when they contain or quote [[tower:task=...]]. Pass platform, chatId, platformMessageId, and quotedText when available; it disambiguates ask replies vs work-channel replies. For direct UI/operator replies to a parked ask, reply_to_ask is still valid.push_to_human; every outbound ask/notify carries [[tower:task=<taskId>]].Use Tower tools when the user wants to view/create/manage tasks and projects, check execution status, interact with a running task's terminal, search, organize with labels/status, or get a daily summary / todo. For unattended relay (the tower-goal / tower-ask skills, pushing ask_human/notify_human, or reply_to_ask), read references/unattended-messaging.md.
If a turn opens with [当前会话默认范围:…], the user bound this chat to a workspace/project. Treat it as the default scope for scope-needing actions (use those ids directly, skip identify_project/search). It's a soft default, not a hard filter — global requests (daily summary, cross-workspace search) ignore it. The latest scope prefix always wins.
list_workspaces → list_projects, or use the session scope / identify_project). Confirm or infer from context.{ needsDefaultsSetup: true }, ask (a) default to Git worktree isolation? (b) auto-start after create? → set_task_defaults once → retry. When worktree resolves true you may pass baseBranch (else the project's current branch is auto-detected).list_versions → let the user pick → pass versionId. Omit for backlog.subPath (e.g. packages/web); else omit.references. Base64-only → manage_assets upload first, then pass the returned path.## 来源; pass any <task-source> block through in description. The server renders it.create_task, then render from the response (Contract 6).start_task_execution with taskId and an optional prompt (defaults to task title/description as context). Status flips to IN_PROGRESS.
get_task_execution_status → if running, get_task_terminal_output (default 50 lines) → summarize status + recent output + duration.
send_task_terminal_input with taskId and text. If the message came from an external platform and contains/quotes [[tower:task=...]], use relay_channel_reply instead (Contract 10). Then get_task_terminal_output to see the response.
move_task with the target status (DONE, CANCELLED, …).update_task with any of title/description/priority/labelIds/subPath/versionId (only passed fields change; labels/version replace — Contract 8).search with the query; optional category (task/project/repository/note/asset/all, ≤20 results). Results include navigateTo paths.
list_labels (workspaceId) → set_task_labels (taskId + full desired labelId set — replaces all, Contract 8).
daily_summary (no params = today, or date: "YYYY-MM-DD"). Grouped by workspace → project with completed and inProgress (incl. progressSummary).
daily_todo (all TODO/IN_PROGRESS/IN_REVIEW). Optional workspaceId/projectId/status/priority filters. Sorted by priority severity; each task has lastSessionId for resume.
list_workspaces → create_project with workspaceId, name, optionally gitUrl (makes it GIT with worktree support) and localPath.
TODO → IN_PROGRESS → IN_REVIEW → DONE
→ CANCELLED
TODO (created) · IN_PROGRESS (agent working) · IN_REVIEW (execution done, awaiting review/merge) · DONE (merged) · CANCELLED (dropped).
The description is Markdown. Never copy the user's raw message as-is — restructure into:
## 目标
<one sentence: what to achieve>
## 需求
- <requirement 1>
- <requirement 2>
## 参考
- <file paths, API endpoints, design references>
## 备注
- <constraints, edge cases>
Rules:
title: short (< 30 chars), summarizing the task.参考 and the references parameter.## 来源: don't write it yourself — the server guarantees it (Contract 4). Just pass any <task-source> bridge block through verbatim in description. Details: references/task-source.md.## 来源 server rendering, <task-source> block format, channel map.isBuiltin: true) cannot be deleted.Actually deliver a message to a human/group from a task terminal (the "send" half of unattended messaging). Use whenever the intent is to send/notify/tell/report something to a person or group — "send to X", "notify the backend group", "tell the boss", "report progress to X". tower-goal calls this internally.
Enter "unattended goal mode" mid-run — set a goal and let the current task run toward it on its own, pushing blockers/decisions to the human (via tower-ask) when stuck so nothing is lost while you're away. Activate when the user says things like "/tower-goal", "start the loop", "go unattended", "I'm leaving, let it finish on its own", "set a goal and run autonomously", or "run it while I'm away".