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

118 lines
4.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-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` 的"删除是不可逆操作"约定。