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

104 lines
3.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
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 })
```
删除不可逆,执行前必须确认。