版本升级打包分发
将 skill 项目当前版本的产物打包、本地归档、上传到项目资产库(tdrive)。
触发条件
用户说以下关键词时触发:
- "版本升级" / "打包版本" / "发布版本" / "上传版本"
- "release" / "归档版本" / "存档版本"
- 明确提到把当前版本打包上传到资产库
流程概览
Step 1: 确认版本号 → Step 2: 打包 skill.zip → Step 3: 本地归档 → Step 4: 上传资产库
Step 1:确认版本号
从项目的 CHANGELOG.md 或 ROADMAP.md 确认当前版本号。格式统一为 vX.Y(如 v0.2、v1.0)。
如果用户未指定版本号,读取 CHANGELOG.md 的 ## [Unreleased] 下方最近的版本号推断。
Step 2:打包 skill.zip
运行项目的验证/打包脚本生成 skill.zip。常见方式(按项目实际脚本选择一种):
# 方式 A:通过 validate.sh 间接产出(mobile-app-bootstrapper 模式)
sh scripts/validate.sh
# 产出: scripts/.tmp_package/skill.zip
# 方式 B:直接调用 package_skill.py(skill-creator 官方)
python <skill-creator-path>/scripts/package_skill.py skill/ dist/
# 产出: dist/skill.zip
确保 skill.zip 已生成后再继续。
Step 3:本地归档
使用本 skill 的 scripts/archive-version.sh 脚本:
sh ~/.workbuddy/skills/version-upgrade/scripts/archive-version.sh <version> <project_root>
# 示例:
sh ~/.workbuddy/skills/version-upgrade/scripts/archive-version.sh v0.2 /c/Users/ASUS/WorkBuddy/my-skill
脚本会:
1. 创建 releases/<version>/ 目录
2. 自动查找并复制 skill.zip(按 .tmp_package/skill.zip → dist/skill.zip → 根目录 skill.zip 顺序)
3. 复制升级说明 docs/<version>-upgrade.md(若存在)
4. 复制 CHANGELOG.md(若存在)
如果项目没有 skill.zip(如纯文档类项目),直接手动复制产物到 releases/<version>/。
Step 4:上传到项目资产库
使用 tdrive 工具上传到项目资产库。完整子流程:
4.1 创建版本文件夹
// mcp__netdrive__tdrive.dir_create
{
"parent_dir_id": "<项目根目录 dir_id>",
"name": "<version>" // 如 "v0.2"
}
记录返回的 dir_id 作为后续上传的目标目录。
项目根目录 dir_id 通常在会话上下文的 <tdrive-root> 中可获取。若不明确,先用 mcp__netdrive__tdrive.dir_list 列出根目录确认。
4.2 上传文件
对每个要上传的文件(skill.zip、升级说明、CHANGELOG),分三步完成:
4.2.1 申请上传留空(file_upload)
// mcp__netdrive__tdrive.file_upload
{
"dir_id": "<版本文件夹 dir_id>",
"file_name": "skill.zip",
"file_size": <实际字节数>
}
返回:url(PUT 上传地址)、confirm_key、task_id。
4.2.2 用 curl PUT 上传文件内容
curl -sSL -X PUT \
-H "Authorization: <从 file_upload 返回的 auth header>" \
-H "Cache-Control: max-age=31104000" \
-H "Content-Type: <mime type>" \
-H "x-cos-acl: default" \
-H "x-cos-security-token: <从 file_upload 返回的 token>" \
-H "x-cos-storage-class: INTELLIGENT_TIERING" \
-T "<本地文件路径>" \
"<file_upload 返回的 url>"
MIME 类型:
- .zip → application/zip
- .md → text/markdown
4.2.3 确认落库(file_upload_complete)
// mcp__netdrive__tdrive.file_upload_complete
{
"confirm_key": "<file_upload 返回的 key>",
"dir_id": "<版本文件夹 dir_id>",
"file_name": "<文件名>",
"file_size": <实际字节数>,
"task_id": "<file_upload 返回的 task_id>"
}
4.3 核验
上传全部完成后,用 dir_list 确认文件夹内容:
// mcp__netdrive__tdrive.dir_list
{ "dir_id": "<版本文件夹 dir_id>" }
上传的 Authorization Header 处理
file_upload 返回的 url 是预签名 URL,已包含认证参数。但 PUT 请求仍需设置 Authorization header。使用 ToolSearch 加载 mcp__netdrive__tdrive.file_upload 的参数 schema 以获取准确格式。
实际操作中,使用以下简化方式:
- file_upload 返回的响应中包含 url 和必要的 auth 信息
- 直接使用返回的 url 进行 PUT,加上必要的 x-cos-* headers
注意事项
- 先确认再操作:Step 4 涉及项目资产库写入,执行前需与用户确认版本号和上传内容
- 本地归档优先:Step 3 在 Step 4 之前执行,确保本地有备份
- 版本号一致性:本地
releases/<version>/和资产库<version>/使用相同版本号 - 文件完整性:每次归档至少包含 skill.zip + 升级说明,确保可独立恢复
- 适配不同项目:不同 skill 项目可能有不同的打包方式(validate.sh / package_skill.py / 手动),根据实际情况调整 Step 2
快速参考:完整执行示例
# Step 1: 确认版本
VERSION=v0.2
PROJECT=/c/Users/ASUS/WorkBuddy/mobile-app-bootstrapper
# Step 2: 打包
cd "$PROJECT" && sh scripts/validate.sh
# Step 3: 本地归档
sh ~/.workbuddy/skills/version-upgrade/scripts/archive-version.sh "$VERSION" "$PROJECT"
# Step 4: 上传资产库(通过 tdrive 工具调用,见 4.1-4.3)