新增禅道项目管理系统插件,含项目集/产品/项目/执行、需求 (story/epic/requirement)、Bug、任务、测试、计划与发布、反馈工单 八个工作流技能,自动配置 MCP 连接(禅道「个人中心 → 获取凭证」 自助生成 14 天 Token)。 MCP Server 是团队自建的 zentao-mcp 网桥(部署在 pm.ops.yixiong-tech.com/mcp),基于开源 openapi-mcp-server 二次开发。 Claude 侧走 userConfig 钥匙链 + 自定义 token 头;Codex 侧受限于官方 插件格式只支持 bearer_token_env_var,走 Authorization: Bearer——网桥 那边已经加了 preferred_header/bearer_mode 配置项统一归一化处理,两条 路径都验证过连通。 三轮审查(静态字段对照 openapi.json、跨文件一致性、真实端点实测) 修正过程中发现的问题,技能文档里引用的工具名全部跟服务器真实注册 的 118 个工具核对过。 同步更新:.claude-plugin/marketplace.json、.agents/plugins/marketplace.json、 README.md、CLAUDE.md 的插件索引与说明;README 补充「获取凭证」操作 截图(已脱敏)。 Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016pFx6jnym6kRWRQ5JyDUNv
104 lines
3.3 KiB
Markdown
104 lines
3.3 KiB
Markdown
---
|
||
name: zentao-task
|
||
description: "禅道任务管理:创建任务、启动、完成、关闭、激活,查执行下的任务列表。当用户说「建个任务」「这个任务开始做了」「任务做完了」「任务关掉」时使用。"
|
||
---
|
||
|
||
# 禅道任务管理
|
||
|
||
**前置:先读 `zentao-shared`(尤其"路径参数不出现在 inputSchema 里"一节)。**
|
||
|
||
---
|
||
|
||
## 状态机
|
||
|
||
```
|
||
未开始 ──start 启动──▶ 进行中 ──finish 完成──▶ 已完成
|
||
│ │
|
||
└──────── close 关闭 ─────┘(不做了/取消,跳过完成)
|
||
▲
|
||
activate 激活(重新打开,从已完成/已关闭回到进行中)
|
||
```
|
||
|
||
---
|
||
|
||
## 字段名坑:跟 story/bug 不一致
|
||
|
||
**任务标题字段叫 `name`,不是 `title`**(story/bug/epic/requirement 都是 `title`,
|
||
只有 task 是 `name`,创建时容易写错)。
|
||
|
||
**创建任务时所属执行的字段叫 `executionID`**,不是 `execution`(bug 创建时挂执行用的
|
||
是 `execution`)——同一个"所属执行"的语义,在不同实体的创建接口里字段名不统一,
|
||
调用前对照该工具自己的 inputSchema,不要照抄别的实体的字段名。
|
||
|
||
---
|
||
|
||
## 查
|
||
|
||
```
|
||
get_executions_executionID_tasks(executionID, ...) 某执行下的任务列表
|
||
get_tasks_taskID(taskID) 任务详情
|
||
```
|
||
|
||
任务只能按"所属执行"维度查列表,没有按产品/项目查任务的接口——要看某个产品下的任务,
|
||
先找到相关执行再查。
|
||
|
||
---
|
||
|
||
## 建
|
||
|
||
```
|
||
post_tasks({ payload: { name, executionID, type?, assignedTo?, estStarted?, deadline?,
|
||
pri?, estimate?, module?, story?, desc? } })
|
||
```
|
||
|
||
`name`/`executionID` 必填。`story` 字段可以关联到具体需求(story ID),常用于"这个
|
||
任务是为了实现哪个需求"。
|
||
|
||
---
|
||
|
||
## 启动(start)
|
||
|
||
```
|
||
put_tasks_taskID_start({ taskID, payload: { realStarted, assignedTo?, consumed?, left?, comment? } })
|
||
```
|
||
|
||
`realStarted`(实际开始日期)必填。
|
||
|
||
---
|
||
|
||
## 完成(finish)
|
||
|
||
```
|
||
put_tasks_taskID_finish({ taskID, payload: { currentConsumed, realStarted, finishedDate,
|
||
assignedTo?, consumed?, comment? } })
|
||
```
|
||
|
||
**三个必填字段**:`currentConsumed`(本次消耗)、`realStarted`(实际开始,即使之前
|
||
`start` 过也要再传一次)、`finishedDate`(实际完成日期)。完成前把这三个数字/日期跟
|
||
用户确认清楚(`zentao-shared` 全局约定:状态流转类操作先确认),尤其 `currentConsumed`
|
||
容易被和"总计消耗 `consumed`"搞混——前者是这一次填报的增量工时,后者是累计总工时,
|
||
两个都传的话以工具说明为准判断二者关系,不要凭直觉认为两者相等。
|
||
|
||
---
|
||
|
||
## 关闭(close)/ 激活(activate)
|
||
|
||
```
|
||
put_tasks_taskID_close({ taskID, payload: { comment? } })
|
||
put_tasks_taskID_activate({ taskID, payload: { left?, assignedTo?, comment? } })
|
||
```
|
||
|
||
都没有必填字段。`close` 用于跳过完成流程直接终止任务(比如需求取消了);`activate`
|
||
把已完成/已关闭的任务重新打开,可以顺带更新预计剩余工时 `left`。
|
||
|
||
---
|
||
|
||
## 改 / 删
|
||
|
||
```
|
||
put_tasks_taskID({ taskID, payload: {...} })
|
||
delete_tasks_taskID({ taskID })
|
||
```
|
||
|
||
删除不可逆,执行前必须确认。
|