TAPD Skill
本 skill 提供与 TAPD 平台交互的 Python 脚本工具,统一通过 tapd.py 调用。
环境配置
使用前需要配置以下环境变量:
export TAPD_ACCESS_TOKEN="你的个人访问令牌" # 推荐
# 或
export TAPD_API_USER="API账号"
export TAPD_API_PASSWORD="API密钥"
export TAPD_API_BASE_URL="https://api.tapd.cn" # 可选,默认
export TAPD_BASE_URL="https://www.tapd.cn" # 可选,默认
export CURRENT_USER_NICK="你的昵称" # 可选
使用方式
python scripts/tapd.py <command> [参数]
所有命令默认输出 JSON 格式结果。
命令列表
项目与用户
| 命令 | 说明 |
|------|------|
| get_user_participant_projects | 获取用户参与的项目列表 |
| get_workspace_info | 获取项目信息 |
| get_workitem_types | 获取需求类别 |
需求/任务
| 命令 | 说明 |
|------|------|
| get_stories_or_tasks | 查询需求/任务 |
| create_story_or_task | 创建需求/任务 |
| update_story_or_task | 更新需求/任务 |
| get_story_or_task_count | 获取数量 |
| get_stories_fields_lable | 字段中英文对照 |
| get_stories_fields_info | 字段及候选值 |
缺陷
| 命令 | 说明 |
|------|------|
| get_bug | 查询缺陷 |
| create_bug | 创建缺陷 |
| update_bug | 更新缺陷 |
| get_bug_count | 获取数量 |
迭代
| 命令 | 说明 |
|------|------|
| get_iterations | 查询迭代 |
| create_iteration | 创建迭代 |
| update_iteration | 更新迭代 |
评论
| 命令 | 说明 |
|------|------|
| get_comments | 查询评论 |
| create_comments | 创建评论 |
| update_comments | 更新评论 |
附件/图片
| 命令 | 说明 |
|------|------|
| get_entity_attachments | 获取附件 |
| get_image | 获取图片下载链接 |
自定义字段
| 命令 | 说明 |
|------|------|
| get_entity_custom_fields | 获取自定义字段配置 |
工作流
| 命令 | 说明 |
|------|------|
| get_workflows_status_map | 状态映射 |
| get_workflows_all_transitions | 状态流转 |
| get_workflows_last_steps | 结束状态 |
测试用例
| 命令 | 说明 |
|------|------|
| get_tcases | 查询测试用例 |
| create_or_update_tcases | 创建/更新测试用例 |
| create_tcases_batch | 批量创建测试用例 |
Wiki
| 命令 | 说明 |
|------|------|
| get_wiki | 查询 Wiki |
| create_wiki | 创建 Wiki |
| update_wiki | 更新 Wiki |
工时
| 命令 | 说明 |
|------|------|
| get_timesheets | 查询工时 |
| add_timesheets | 填写工时 |
| update_timesheets | 更新工时 |
待办
| 命令 | 说明 |
|------|------|
| get_todo | 获取待办 |
关联
| 命令 | 说明 |
|------|------|
| get_related_bugs | 获取关联缺陷 |
| entity_relations | 创建关联关系 |
发布计划
| 命令 | 说明 |
|------|------|
| get_release_info | 获取发布计划 |
源码
| 命令 | 说明 |
|------|------|
| get_commit_msg | 获取提交关键字 |
消息
| 命令 | 说明 |
|------|------|
| send_qiwei_message | 发送企业微信消息 |
使用示例
查询需求
# 查询指定需求
python scripts/tapd.py get_stories_or_tasks --workspace_id 123 --entity_type stories --id 1167459320001114969
# 模糊搜索需求
python scripts/tapd.py get_stories_or_tasks --workspace_id 123 --entity_type stories --name "%登录%" --limit 20
# 查询指定状态的需求
python scripts/tapd.py get_stories_or_tasks --workspace_id 123 --entity_type stories --v_status "已验收"
创建需求
python scripts/tapd.py create_story_or_task --workspace_id 123 \
--name "用户登录功能" \
--description "## 需求描述\n用户可以通过账号密码登录系统" \
--priority_label "高" \
--owner "zhangsan" \
--iteration_name "Sprint 1"
更新需求状态
python scripts/tapd.py update_story_or_task --workspace_id 123 \
--id 1167459320001114969 \
--v_status "实现中"
查询缺陷
python scripts/tapd.py get_bug --workspace_id 123 --title "%登录失败%" --priority_label "高"
创建缺陷
python scripts/tapd.py create_bug --workspace_id 123 \
--title "登录页面显示异常" \
--description "输入正确密码后提示错误" \
--priority_label "高" \
--severity "严重"
迭代管理
# 查询迭代
python scripts/tapd.py get_iterations --workspace_id 123
# 创建迭代
python scripts/tapd.py create_iteration --workspace_id 123 \
--name "Sprint 1" \
--startdate "2024-01-01" \
--enddate "2024-01-14" \
--creator "zhangsan"
工时管理
# 查询工时
python scripts/tapd.py get_timesheets --workspace_id 123 --entity_type story --entity_id 1167459320001114969
# 填写工时
python scripts/tapd.py add_timesheets --workspace_id 123 \
--entity_type story \
--entity_id 1167459320001114969 \
--timespent "4" \
--spentdate "2024-01-08" \
--memo "开发登录功能"
评论管理
# 查询评论
python scripts/tapd.py get_comments --workspace_id 123 \
--entry_type stories \
--entry_id 1167459320001114969
# 创建评论
python scripts/tapd.py create_comments --workspace_id 123 \
--entry_type stories \
--entry_id 1167459320001114969 \
--description "看起来不错,可以继续完善"
关联需求与缺陷
# 查询需求关联的缺陷
python scripts/tapd.py get_related_bugs --workspace_id 123 --story_id 1167459320001114969
# 创建关联
python scripts/tapd.py entity_relations --workspace_id 123 \
--source_type story \
--target_type bug \
--source_id 1167459320001114969 \
--target_id 1167459320001114970
工作流
# 获取状态映射
python scripts/tapd.py get_workflows_status_map --workspace_id 123 --system story
# 获取可流转状态
python scripts/tapd.py get_workflows_all_transitions --workspace_id 123 --system story
常用命令速查
# 需求
python scripts/tapd.py get_stories_or_tasks --workspace_id $WS_ID --entity_type stories
python scripts/tapd.py create_story_or_task --workspace_id $WS_ID --name "标题"
python scripts/tapd.py update_story_or_task --workspace_id $WS_ID --id $ID --v_status "状态"
# 缺陷
python scripts/tapd.py get_bug --workspace_id $WS_ID
python scripts/tapd.py create_bug --workspace_id $WS_ID --title "标题"
# 迭代
python scripts/tapd.py get_iterations --workspace_id $WS_ID
python scripts/tapd.py create_iteration --workspace_id $WS_ID --name "Sprint X" --startdate "2024-01-01" --enddate "2024-01-14"
# 工时
python scripts/tapd.py add_timesheets --workspace_id $WS_ID --entity_type story --entity_id $ID --timespent 4 --spentdate "2024-01-08"
# 评论
python scripts/tapd.py create_comments --workspace_id $WS_ID --entry_type stories --entry_id $ID --description "评论内容"
状态值说明
| 类型 | 字段 | 可用值 |
|------|------|--------|
| 需求优先级 | priority_label | High / Middle / Low / Nice To Have |
| 缺陷优先级 | priority_label | urgent / high / medium / low / insignificant |
| 缺陷严重程度 | severity | fatal / serious / normal / prompt / advice |
| 任务状态 | status | open / progressing / done |
| 迭代状态 | status | open / done |
Claude 使用方式
当用户需要与 TAPD 交互时:
- 读取脚本:了解命令用法
- 构建命令:根据需求构建参数
- 执行脚本:使用 Bash 工具运行
- 处理结果:解析输出,分析数据
示例工作流:
用户: "查看需求 1167459320001114969 的详情"
Claude:
1. python scripts/tapd.py get_stories_or_tasks --workspace_id 67459320 --entity_type stories --id 1167459320001114969
2. 分析返回的需求信息
图片处理
当获取需求详情时,get_stories_or_tasks 命令会自动解析 description 中的图片并获取下载链接。
返回结果包含 images 字段:
{
"data": [
{
"Story": { "id": "1167459320001114969", "name": "需求标题", ... },
"images": [
{
"path": "/tfl/captures/2026-01/tapd_67459320_base64_1767668922_121.png",
"download_url": "https://file.tapd.cn/attachments/tmp_download/...?salt=...&time=...",
"filename": "tapd_67459320_base64_1767668922_121.png"
}
]
}
]
}
处理步骤:
- 从返回结果中读取
images数组 - 使用
download_url访问或下载图片 - 图片链接有效期约 300 秒
手动获取图片(备用方式):
# 如果需要单独获取某张图片
python scripts/tapd.py get_image --workspace_id 67459320 --image_path "/tfl/captures/2026-01/tapd_xxx.png"
文件结构
scripts/
├── tapd.py # 统一入口脚本(43个子命令)
├── tapd_client.py # TAPD API 客户端
└── requirements.txt