一个面向 AI 编程代理的 TAPD 研发工作流 skill。它在原有需求读取、任务编排、实现计划、测试用例和估时排期流程前,增加了 Git 分支级上下文记忆。
核心组件:
SKILL.md:意图识别、context resolve、MCP 能力门禁和工作流路由。tapd-context:管理 Git 分支与 TAPD 工作项的本地绑定。tapd-mcp:执行 TAPD 远端读取和写入,本仓库不包含该服务。
本仓库中的 workspace、工作项 ID、昵称和需求标题均为虚构示例。
- 从 TAPD Context JSON 或标准 Story/Task URL 开始工作。
- 从确认过的本地 base 分支创建规范业务分支。
- 将工作项绑定到当前 Git 分支,并在后续会话恢复。
- 保留需求 intake、任务创建与更新、实现计划、测试用例、估时排期和评论同步流程。
- 按 workflow 探测具体 MCP 能力,不假设可选工具一定存在。
- TAPD 远端写入统一执行 dry-run、确认和可用范围内的回读。
- owner 使用分隔符 token 精确匹配,避免相似昵称误更新。
工作项解析优先级:
- 本轮 TAPD Context JSON
- 本轮 TAPD URL
- 当前分支绑定
- 旧格式复制文本
- 询问用户
只有“继续、状态、同步、计划”等没有新工作项输入的请求,才默认恢复当前分支绑定。
推荐通过 Skills.sh 安装。CLI 会自动识别 Codex、Claude Code、Cursor 等支持的代理:
npx skills add hakityc/tapd-skill --skill tapd安装到用户级目录并跳过交互确认:
npx skills add hakityc/tapd-skill --skill tapd --global --yes指定代理:
npx skills add hakityc/tapd-skill --skill tapd --global --agent codex --yes
npx skills add hakityc/tapd-skill --skill tapd --global --agent claude-code --yes无需在 Skills.sh 单独上传压缩包。公开 GitHub 仓库中的 SKILL.md 是发布源,用户通过 npx skills add 安装后会被 Skills.sh 自动索引。
无法使用 npx 时,也可以手工 clone 到代理支持的 skills 目录,并确保最终目录名为 tapd。
团队成员只需要两类配置:
- 在本机 MCP 配置中提供个人
TAPD_ACCESS_TOKEN。 - 项目仓库提交不含秘密的
.tapd/config.json,统一 workspace、base 分支和可选分支规则。
{
"version": 1,
"workspace_id": "12345678",
"base_branch": "master"
}远端 TAPD 工作流使用 mcp-server-tapd。平台配置与验证状态见 references/mcp-bootstrap.md。
当前 P0 CLI 仍读取
.tapd/project.json。.tapd/config.json的团队共享模式是下一兼容版本的目标;完成迁移前请继续按下文执行tapd-context init。
用户运行:
- Git
- Node.js 18+
- Python 3,仅在自动读取当前 TAPD 用户时需要
- 可用的
tapd-mcp,仅远端 TAPD 工作流需要
tapd-context 已提交编译后的 dist,用户不需要安装 npm 依赖。
skill 调用 CLI 的顺序:
- PATH 中的
tapd-context - bundled
scripts/tapd-context/dist/cli.js - 两者均不可用时停止并报告
推荐从 TAPD 页面复制如下结构:
{
"source": "tapd",
"entity_type": "Story",
"id": "1112345678000000001",
"short_id": "1000001",
"title": "【示例平台】【功能需求】订单审批新增风险标记开关",
"url": "https://www.tapd.cn/tapd_fe/12345678/story/detail/1112345678000000001",
"user_nick": "开发者A"
}id 始终按字符串保存。URL 兼容模式缺少标题或用户时不会伪造字段,由 skill 尝试通过 MCP 补全。
tapd-context detect-base
tapd-context init --user "开发者A" --base master
tapd-context start --input '<TAPD Context JSON>'
tapd-context bind --input '<TAPD Context JSON>'
tapd-context current --format json
tapd-context statusCLI 只写:
.tapd/project.json
.tapd/context.json
建议手工加入项目 .gitignore:
.tapd/project.json
.tapd/context.json
.tapd/logs/CLI 不会自动修改 .gitignore,也不会执行 git pull、git stash 或自动提交。
start的 dirty worktree 检查仅排除.tapd/project.json、.tapd/context.json和.tapd/logs/**。.tapd下其他文件仍按普通变更处理。- 创建分支前记录原分支,失败时尝试恢复并返回稳定错误码。
- 已有项目配置和分支绑定默认不覆盖。
- 本地 context 写入与 TAPD 远端写入采用不同确认策略。
- 未验证 OpenAPI fallback 默认只生成请求草案。
- CLI 不读取或保存 TAPD token。
完整规则见 references/safety-policy.md。
已实现:
- Story/Task context 主路径
init/start/bind/current/status- 精确 dirty worktree 检查
- MCP capability matrix
- owner 精确匹配
- 统一 dry-run 语义
- 多平台 bootstrap 验证状态
get_current_user.py类型与脱敏修复
后续 P1:
- Bug 完整 intake
- 评论列表回读增强
- Story 与测试用例关联增强
- 经验证的 OpenAPI fallback 写入
- prong、bugtrace、mini-project 和独立短 ID
- 完整 eval runner
cd scripts/tapd-context
npm ci
npm test
cd ../..
python3 scripts/quick_validate.py .quick_validate.py 检查:
SKILL.mdfrontmatter- 本地 reference 链接
- examples 和 JSON schemas
- evals JSON
- Python 语法与单元测试
src/dist同步- bundled dist 可执行性
- 临时 Git 仓库集成测试
.
├── SKILL.md
├── references/
├── examples/
├── evals/
├── scripts/
│ ├── get_current_user.py
│ ├── quick_validate.py
│ └── tapd-context/
└── tests/
本项目是社区工作流工具,不代表 TAPD 官方。使用远端写入能力前,请检查 token 权限、目标 workspace 和 dry-run 内容。