[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
This commit is contained in:
SkyJourney
2026-08-25 13:50:41 +08:00
co-authored by Claude Sonnet 5
parent 1606d73c41
commit 9d9e31c98e
18 changed files with 1006 additions and 4 deletions
@@ -0,0 +1,117 @@
---
name: zentao-project
description: "禅道项目集/产品/项目/执行管理:建项目集、建产品、建项目、建执行(迭代)、查层级关系。当用户说「建个产品」「开个新迭代」「这个项目集下有哪些产品」「项目状态」时使用。"
---
# 禅道项目集 / 产品 / 项目 / 执行
**前置:先读 `zentao-shared`(尤其"路径参数不出现在 inputSchema 里"和"ID 层级关系"两节)。**
---
## 层级与挂靠关系
```
program 项目集(可选层)
└─ product 产品(program 可选,可以不挂任何项目集独立存在)
└─ project 项目(products 关联字段可选,parent 挂项目集也可选)
└─ execution 执行/迭代(project 必填,execution 必须先有 project
```
**只有 execution 是强制要有上级的**`project` 字段必填);product 和 project 的上级
关联都是可选字段,不要假设"没传 program 就建不了产品"。
---
## 查
```
get_programs() 项目集列表
get_programs_programID_products(programID) 某项目集下的产品
get_programs_programID_projects(programID) 某项目集下的项目
get_products() 产品列表(全量)
get_products_productID(productID) 产品详情
get_projects() 项目列表(全量,无单条详情接口)
get_projects_projectID_executions(projectID) 某项目下的执行/迭代
get_executions() 执行列表(全量)
get_executions_executionID(executionID) 执行详情
```
**没有 `get_projects_projectID`**(项目详情接口不存在,见 `zentao-shared`),要看单个
项目信息从 `get_projects()` 列表里按 ID 过滤。
---
## 建项目集
```
post_programs({ payload: { name, begin, end, PM?, desc? } })
```
`name`/`begin`/`end` 必填,日期格式以字段说明为准(一般是 `YYYY-MM-DD`)。
---
## 建产品
```
post_products({ payload: { name, program?, line?, type?, PO?, QD?, RD?, reviewer?,
acl?, desc? } })
```
只有 `name` 必填。`type` 取值受限:`normal` 正常 | `branch` 多分支 | `platform` 多平台;
`acl``open` 公开 | `private` 私有——这两个字段写错值会被后端拒绝,不要凭直觉编。
---
## 建项目
```
post_projects({ payload: { name, model, begin, end, workflowGroup, products?, parent?, PM? } })
```
必填字段比产品多:`name`/`model`/`begin`/`end`/`workflowGroup`
`model`(项目管理方式)取值受限,创建前跟用户确认清楚要哪种:
`scrum` 敏捷 | `waterfall` 瀑布 | `kanban` 看板 | `agileplus` 融合敏捷 | `waterfallplus` 融合瀑布
`workflowGroup`(项目流程)是付费版功能,开源版可以不传/传空。
`parent` 是挂靠到哪个项目集(可选);`products` 是关联的产品(可选,接受多个)。
---
## 建执行(迭代)
```
post_executions({ payload: { project, name, begin, end, lifetime?, days?, products?,
plans?, PO?, QD?, PM?, RD?, acl? } })
```
`project`/`name`/`begin`/`end` 必填——**`project` 必填意味着建执行前必须先有一个项目
ID**,用 `get_projects()` 查出来给用户确认要挂在哪个项目下。
`lifetime`(执行类型)取值:`short` 短期 | `long` 长期 | `ops` 运维。
`plans`(关联计划)如果要传,格式是"产品 ID + 计划 ID"的二维数组,不是单纯的 ID 列表,
具体结构以工具 inputSchema 为准。
---
## 改 / 删
```
put_programs_programID({ programID, payload: {...} })
put_products_productID({ productID, payload: {...} })
put_projects_projectID({ projectID, payload: {...} })
put_executions_executionID({ executionID, payload: {...} })
delete_programs_programID({ programID }) # 删除前必须确认,不可逆
delete_products_productID({ productID })
delete_projects_projectID({ projectID })
delete_executions_executionID({ executionID })
```
删除任意一层,其下挂靠的产品/项目/执行/需求/任务等大概率会受影响(具体级联行为以
禅道后端实际处理为准,MCP 这层不做二次拦截)——删除前跟用户明确说清楚删的是哪一层、
可能影响下面挂了什么,参考 `zentao-shared` 的"删除是不可逆操作"约定。