TAPD Skill

覆盖研发团队最常接的 TAPD 数据:需求、缺陷、任务、迭代、工时、测试用例的查询与写入,以及 Webhook 事件订阅。重点讲清 API 账号与开放应用两套鉴权、把运算符写在值里的查询语法、20000 条深分页上限与游标翻页,以及各对象不一致的字段名。

文档版 · 未实测tapdopen.tapd.cnHTTP Basic(API 账号)项目管理更新 2026-09-11
7份 reference
7个易错点
6条无凭证探测
2026-09-11文档抓取
INSTALL · 安装

安装

选你用的 Agent,复制命令。

npx -y skills add fxp/skillify --skill tapd --agent claude-code --yes

装到项目的 .claude/skills/;加 -g 装到全局。装完需要你手动执行 /reload-plugins,这一步 Agent 代劳不了。

或者让 Agent 自己装

读 https://github.com/fxp/skillify/blob/main/skills/tapd/prompt.md 并照它执行

装对了的标志:references/ 下有 7 份文档,里面 grep '<!-- Gap:' 能搜到 3 处。

TRY ASKING · 装好后可以这样问

装好后,可以这样问你的 Agent

这份 Skill 覆盖的典型任务。点一下复制。

CAPABILITIES · 能力清单

7 类能力

每类能力对应一份 reference,Agent 按任务只打开需要的那份。

鉴权与项目前置

API 账号 Basic、开放应用 token、OAuth 与 scope;查项目 ID、成员昵称,短 ID 换长 ID

references/auth.mdGET /quickstart/testauth · POST /tokens/request_token · GET /workspaces/users

需求

查询、创建、更新与流转需求,状态和自定义字段元数据,变更历史

references/stories.mdGET /stories · POST /stories · GET /story_changes

缺陷

提交、查询、流转缺陷,严重程度与解决方法枚举,缺陷变更历史

references/bugs.mdGET /bugs · POST /bugs · GET /bug_changes

任务与迭代

任务的增改查与完成,迭代的创建、更新、锁定,把工作项放进迭代

references/tasks-iterations.mdGET /tasks · POST /tasks · GET /iterations · POST /iterations

工时与测试用例

记录、修改、删除工时;测试用例、批量建用例、测试计划与执行结果

references/timesheets-tcases.mdPOST /timesheets · GET /tcases · POST /tcases/batch_save · POST /tcase_instance/execute

Webhook 与事件

两条订阅渠道、事件名、报文字段与验证方式,以及向 TAPD 推送事件

references/webhooks-events.mdyour callback URL · POST /open_app_events/hook

查询语法、错误码与限流

时间 / 枚举 / 模糊查询写法、分页与游标、响应结构、错误码、频率限制与参考客户端

references/query-errors-limits.mdstatus / info / data · limit / page / cursor
FACTS · 当前事实

当前事实

整理自官方文档(抓取于 2026-09-11),还没有用真实凭证验证。

Base URLhttps://api.tapd.cnhttp:// 不跳转
鉴权Authorization: Basic base64(api_user:api_password),API 账号不是登录账号
开放应用POST /tokens/request_token + grant_type=client_credentials → Bearer,7200 秒,无 refresh_token
必传workspace_id;对象 ID 是 19 位字符串
分页limit ≤ 200,page×limit ≤ 20000,更深用 cursor
GOTCHAS · 易错点

照通用经验写容易错的 7 件事

来自官方文档,还没有用真实凭证验证。

  1. API 账号不是登录账号,Basic 不是 Bearer。企业脚本用管理员申请的 API 账号做 HTTP Basic;只有开放应用换到的 token 才用 Bearer,且没有 refresh_token。
  2. 没有 PUT / DELETE。创建和更新是同一个 POST /stories,带 id 就是更新;文档里没有删除需求、缺陷、任务的接口。
  3. 运算符写在值里。modified=>2026-09-01created=起~止status=a|bname=EQ<标题>,没有 modified_after 这类参数。
  4. 缺陷的字段名和需求不一样。需求用 name / owner / creator,缺陷用 title / current_owner / reporter;优先级统一用 priority_label
  5. 深分页有硬上限。page×limit 超过 20000 会报错,要改用 cursor(仅 id 排序、串行翻页);需求变更历史 limit 最大 100。
  6. 工时有唯一约束,更新是覆盖。同一对象 + 日期 + 人只能有一条,追加工时要先查出记录再改 timespent
  7. Webhook 没有签名,默认 form 编码。只能比对 body 里的明文 secret;更新报文只有 old_* 旧值,新值要再调 API。
STATUS · 验证状态

验证状态

文档版:整理自官方文档(抓取于 2026-09-11),还没有用真实凭证调用验证。页面和 Skill 里标「文档原文,未实测」的报错与行为都来自文档本身。

无凭证探测

  • 不带凭证或伪造 Basic:HTTP 401 Unauth,body {"status":401,"info":"401 Unauthorized"},带 WWW-Authenticate: Basic
  • 伪造 Bearer token 返回 HTTP 422 The access token provided is invalid,不是 401
  • 拼错的顶层路径(如 /storys)即使不带凭证也返回 HTTP 200 + status:1 + Hello world 字符串
  • http://api.tapd.cn 不跳转 https,直接按明文处理
  • 所有响应都带 X-RateLimit-Limit: 10000 与递减的 X-RateLimit-Remaining
  • 文档「使用必读」的示例命令是 curl –u(EN DASH),照抄会不带凭证发请求并得到 401
有这个平台的沙箱或 API Key?联系我们——补测并做完装与不装的对照测试后,它会升级为「已实测」。