Files
yixiong-claude-marketplace/plugins/zentao/skills/zentao-plan/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

85 lines
3.5 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-plan
description: "禅道产品计划、版本(build)、发布(release)管理。当用户说「排个产品计划」「打个包」「建个版本」「发布上线」时使用。"
---
# 禅道产品计划 / 版本 / 发布
**前置:先读 `zentao-shared`(尤其"路径参数不出现在 inputSchema 里"一节)。**
---
## 三者关系
```
productplan 产品计划(做什么、什么时候做)
build 版本/构建(某次打包产出,挂在执行下)
release 发布(把某个/某几个 build 正式对外发布)
```
三者是独立管理的实体,不是严格的父子层级——`release` 通过 `build` 字段关联具体的构建,
`build` 通过 `executionID` 关联执行、`system` 关联应用,`productplan` 只挂产品,不关联
执行/构建。
---
## 产品计划(productplan
```
get_products_productID_productplans(productID, ...)
get_productplans_planID(planID) 详情——注意参数叫 planID,不是 productplanID
post_productplans({ payload: { productID, title, parent?, begin?, end?, branchID?, desc? } })
put_productplans_productplanID({ productplanID, payload: {...} }) # 改用的是 productplanID
delete_productplans_productplanID({ productplanID })
```
**详情接口和改/删接口的路径参数名不一样**`planID` vs `productplanID`),照抄各自工具
名对应的字面参数名。`productID`/`title` 必填,`parent` 可以挂一个父计划形成层级。
---
## 版本 / 构建(build
```
get_projects_projectID_builds(projectID, ...)
get_executions_executionID_builds(executionID, ...)
post_builds({ payload: { executionID, product, name, system, builder, date,
scmPath?, filePath?, desc? } })
put_builds_buildID({ buildID, payload: {...} })
delete_builds_buildID({ buildID })
```
必填字段比较多:`executionID`(注意是 `executionID` 不是 `execution`)、`product`
(注意是 `product` 不是 `productID`)、`name``system`(所属应用,需要先有
`zentao-misc` 里的应用 ID)、`builder`(构建者)、`date`(打包日期)——**字段名在不同
实体间不统一是这套 API 的通病**(`zentao-task` 也提过 name/title、executionID/execution
的不一致),创建前对照该工具自己的 inputSchema 逐个字段确认,不要照抄其他实体的字段名。
没有单条版本详情接口,从列表里过滤。
---
## 发布(release
```
get_products_productID_releases(productID, ...)
post_releases({ payload: { productID, system, name, build, date, status?, desc? } })
put_releases_releasID({ releasID, payload: {...} }) # 注意参数叫 releasID,不是 releaseID
delete_releases_releasID({ releasID })
```
必填:`productID`/`system`(所属应用)/`name`(应用版本号)/`build`(包含的构建,**是字符
串数组**,可以关联多个构建,不是单个 ID)/`date`(计划发布日期)。
`status` 受限枚举:`wait` 未开始 | `normal` 已发布 | `fail` 发布失败 | `terminate` 停止维护
——不像 bug/task 有专门的状态流转端点,发布状态直接在创建/修改时传 `status` 字段设置,
改状态就是 `put_releases_releasID({ releasID, payload: { status: "normal" } })`
**没有单条发布详情接口**,从 `get_products_productID_releases` 列表里过滤。
**参数名注意**:路径参数字面拼写是 `releasID`(缺一个 `e`),跟 testcase 的 `testcasID`
是同一类官方 API 拼写坑,照抄不要纠正。