Files
lanyuanxiaoyao 78063b9e07 fix: 修正 pyarmor_runtime 目录位置到 scripts 内部
- 修改 build.py 中混淆后文件移动逻辑,先移动 scripts 目录,再将 pyarmor_runtime 移动到 scripts 内部
- 更新 spec.md 中关于混淆后文件结构的描述
- 更新 config.yaml 中测试规范,强调严禁跳过测试

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-15 12:42:08 +08:00

110 lines
4.2 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
## 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 目录进行混淆,然后将 pyarmor_runtime 目录移动到 scripts 内部。
#### Scenario: PyArmor 成功执行
- **WHEN** PyArmor 可用
- **THEN** 系统执行 pyarmor gen --recursive 命令
#### Scenario: 混淆后文件输出
- **WHEN** PyArmor 混淆完成
- **THEN** build/ 目录包含混淆后的 scripts 目录,且 pyarmor_runtime 子目录位于 scripts/ 内部
### 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** 系统依次执行混淆构建和发布