新增禅道项目管理系统插件,含项目集/产品/项目/执行、需求 (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
118 lines
4.3 KiB
Markdown
118 lines
4.3 KiB
Markdown
---
|
||
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` 的"删除是不可逆操作"约定。
|