Files
yixiong-claude-marketplace/plugins/zentao/skills/zentao-task/SKILL.md
T
SkyJourneyandClaude Sonnet 5 9d9e31c98e [feat] Add zentao plugin (Claude Code + Codex dual scaffold)
新增禅道项目管理系统插件,含项目集/产品/项目/执行、需求
(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
2026-08-25 13:50:41 +08:00

3.3 KiB
Raw Blame History

name, description
name description
zentao-task 禅道任务管理:创建任务、启动、完成、关闭、激活,查执行下的任务列表。当用户说「建个任务」「这个任务开始做了」「任务做完了」「任务关掉」时使用。

禅道任务管理

前置:先读 zentao-shared(尤其"路径参数不出现在 inputSchema 里"一节)。


状态机

未开始 ──start 启动──▶ 进行中 ──finish 完成──▶ 已完成
  │                        │
  └──────── close 关闭 ─────┘(不做了/取消,跳过完成)
                             ▲
                    activate 激活(重新打开,从已完成/已关闭回到进行中)

字段名坑:跟 story/bug 不一致

任务标题字段叫 name,不是 titlestory/bug/epic/requirement 都是 title 只有 task 是 name,创建时容易写错)。

创建任务时所属执行的字段叫 executionID,不是 executionbug 创建时挂执行用的 是 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 })

删除不可逆,执行前必须确认。