- build.py: 移除 --obfuscate 参数,默认混淆模式;从 git config 读取 author,动态注入 SKILL.md - publish.py: 新增发布脚本,自动 clone 目标仓库、同步 build/ 内容、git commit+push - publish.sh: 新增一键构建+发布脚本 - skill-publishing spec: 新增发布规范 - skill-packaging spec: 更新构建规范
4.1 KiB
4.1 KiB
Purpose
提供自动化的 skill 打包能力,将 skill/SKILL.md 和 scripts/ 目录打包到 build/ 目录,便于 skill 分发。
Requirements
Requirement: build.py 一键打包
系统 SHALL 提供 build.py 脚本,运行后完成 skill 的完整打包流程。
Scenario: 运行 build.py 成功
- WHEN 用户执行
uv run --with pyarmor python build.py - THEN 脚本完成所有打包步骤并输出成功信息
Requirement: 构建目录清理重建
系统 SHALL 在每次构建前删除整个 build 目录,然后重建空的 build 目录。
Scenario: 删除并重建 build 目录
- WHEN 构建开始
- THEN 脚本删除整个 build 目录(如有),然后创建新的空 build 目录
Requirement: SKILL.md 动态生成
系统 SHALL 读取 SKILL.md 模板,动态注入 version 和 author 字段后写入 build/SKILL.md。
Scenario: SKILL.md 包含动态元数据
- WHEN 构建执行
- THEN build/SKILL.md 的 metadata 包含 version 和 author 字段
Scenario: version 是时间戳
- WHEN 构建在 2026年3月11日 14点30分22秒执行
- THEN build/SKILL.md 中
metadata.version值为 "20260311_143022"
Scenario: author 来自 git 配置
- WHEN git config user.name 是 "Your Name",git config user.email 是 "your@email.com"
- THEN build/SKILL.md 中
metadata.author值为 "Your Name your@email.com"
Requirement: git 配置读取
系统 SHALL 从 git config 读取 user.name 和 user.email。
Scenario: git config 读取成功
- WHEN git config 已设置 user.name 和 user.email
- THEN 系统读取到正确的值
Scenario: git config 未设置
- WHEN git config user.name 或 user.email 未设置
- THEN 系统显示错误信息并退出
Requirement: 时间戳版本号
系统 SHALL 生成 YYYYMMDD_HHMMSS 格式的时间戳作为构建版本标识。
Scenario: 时间戳格式正确
- WHEN 构建在 2025年3月9日 14点30分22秒执行
- THEN 生成的版本号为 20250309_143022
Requirement: 输出构建信息
系统 SHALL 在构建完成后打印版本号和构建结果信息。
Scenario: 显示构建信息
- WHEN 构建成功完成
- THEN 控制台输出版本号和作者信息
Requirement: 仅混淆构建
系统 SHALL 仅提供混淆构建模式,移除非混淆选项。
Scenario: build.py 始终混淆
- WHEN 用户执行
uv run --with pyarmor python build.py - THEN 系统使用 PyArmor 混淆 scripts 目录代码
Scenario: 无 --obfuscate 参数
- WHEN 用户运行 build.py
- THEN 系统不需要 --obfuscate 参数,直接执行混淆构建
Requirement: PyArmor 混淆执行
系统 SHALL 调用 PyArmor 工具对 scripts 目录进行混淆。
Scenario: PyArmor 成功执行
- WHEN PyArmor 可用
- THEN 系统执行 pyarmor gen --recursive 命令
Scenario: 混淆后文件输出
- WHEN PyArmor 混淆完成
- THEN build/ 目录包含混淆后的文件和 pyarmor_runtime 子目录
Requirement: PyArmor 未安装友好提示
系统 SHALL 在 PyArmor 未安装时提供清晰的错误提示,引导用户正确使用 uv run --with pyarmor。
Scenario: PyArmor ImportError
- WHEN 未通过 --with pyarmor 加载
- THEN 系统显示友好错误信息,提示正确命令
Requirement: SKILL.md 保持明文
系统 SHALL 在混淆模式下仍然将 SKILL.md 作为明文文件复制,不进行混淆。
Scenario: SKILL.md 保持明文
- WHEN 启用混淆执行构建
- THEN build/SKILL.md 文件为明文,内容包含动态注入的元数据
Requirement: 混淆错误处理
系统 SHALL 在 PyArmor 混淆失败时捕获错误并显示详细信息。
Scenario: PyArmor 命令失败
- WHEN pyarmor 命令执行返回非零退出码
- THEN 系统显示退出码、标准输出和错误输出信息
Requirement: 一键发布脚本
系统 SHALL 提供 publish.sh 脚本,一键执行混淆构建并发布。
Scenario: publish.sh 执行成功
- WHEN 用户执行
./publish.sh - THEN 系统依次执行混淆构建和发布