feat: 添加 skill 发布功能和混淆构建优化
- build.py: 移除 --obfuscate 参数,默认混淆模式;从 git config 读取 author,动态注入 SKILL.md - publish.py: 新增发布脚本,自动 clone 目标仓库、同步 build/ 内容、git commit+push - publish.sh: 新增一键构建+发布脚本 - skill-publishing spec: 新增发布规范 - skill-packaging spec: 更新构建规范
This commit is contained in:
82
openspec/specs/skill-publishing/spec.md
Normal file
82
openspec/specs/skill-publishing/spec.md
Normal file
@@ -0,0 +1,82 @@
|
||||
## Purpose
|
||||
|
||||
提供 skill 发布到目标 GitHub 仓库的能力,自动化将 build/ 目录内容同步到 skills 仓库。
|
||||
|
||||
## Requirements
|
||||
|
||||
### Requirement: publish.py 一键发布
|
||||
系统 SHALL 提供 publish.py 脚本,运行后将 build/ 目录内容发布到目标仓库。
|
||||
|
||||
#### Scenario: 运行 publish.py 成功
|
||||
- **WHEN** 用户执行 `uv run python publish.py`
|
||||
- **THEN** 脚本完成所有发布步骤并输出成功信息
|
||||
|
||||
### Requirement: 使用临时目录 clone
|
||||
系统 SHALL 在系统临时目录创建临时文件夹,用于 clone 目标仓库。
|
||||
|
||||
#### Scenario: 临时目录自动清理
|
||||
- **WHEN** 发布完成或失败
|
||||
- **THEN** 临时目录被自动清理
|
||||
|
||||
### Requirement: shallow clone
|
||||
系统 SHALL 使用 `--depth 1` 参数 clone 目标仓库,加快 clone 速度。
|
||||
|
||||
#### Scenario: clone 参数正确
|
||||
- **WHEN** 执行 git clone
|
||||
- **THEN** 命令包含 `--depth 1` 参数
|
||||
|
||||
### Requirement: 目标仓库配置
|
||||
系统 SHALL 硬编码目标仓库 URL 为 `https://github.com/lanyuanxiaoyao/skills.git`。
|
||||
|
||||
#### Scenario: 目标仓库正确
|
||||
- **WHEN** publish.py 执行 clone
|
||||
- **THEN** clone 的仓库地址是 `https://github.com/lanyuanxiaoyao/skills.git`
|
||||
|
||||
### Requirement: 目标路径配置
|
||||
系统 SHALL 将内容发布到目标仓库的 `skills/lyxy-document-reader/` 路径。
|
||||
|
||||
#### Scenario: 目标路径正确
|
||||
- **WHEN** 文件同步完成
|
||||
- **THEN** 文件位于 `skills/lyxy-document-reader/` 目录下
|
||||
|
||||
### Requirement: 清空目标路径
|
||||
系统 SHALL 在复制前清空 `skills/lyxy-document-reader/` 目录内容。
|
||||
|
||||
#### Scenario: 旧文件被清理
|
||||
- **WHEN** 开始同步文件
|
||||
- **THEN** 目标目录下的旧文件被删除
|
||||
|
||||
### Requirement: 从 SKILL.md 读取版本号
|
||||
系统 SHALL 解析 build/SKILL.md 的 YAML frontmatter 获取 version 字段。
|
||||
|
||||
#### Scenario: 版本号读取成功
|
||||
- **WHEN** build/SKILL.md 包含 `metadata.version: "20260311_143022"`
|
||||
- **THEN** publish.py 读取到版本号 "20260311_143022"
|
||||
|
||||
### Requirement: git 提交信息
|
||||
系统 SHALL 使用包含版本号的 commit message,格式为 `publish: lyxy-document-reader <version>`。
|
||||
|
||||
#### Scenario: commit message 正确
|
||||
- **WHEN** 版本号是 20260311_143022
|
||||
- **THEN** commit message 是 `publish: lyxy-document-reader 20260311_143022`
|
||||
|
||||
### Requirement: git 提交并推送
|
||||
系统 SHALL 执行 git add、git commit 和 git push 操作。
|
||||
|
||||
#### Scenario: git 操作成功
|
||||
- **WHEN** 文件同步完成
|
||||
- **THEN** 系统执行 git add .、git commit 和 git push
|
||||
|
||||
### Requirement: build 目录存在检查
|
||||
系统 SHALL 在开始前检查 build/ 目录是否存在,不存在则提示错误。
|
||||
|
||||
#### Scenario: build 目录不存在
|
||||
- **WHEN** build/ 目录不存在
|
||||
- **THEN** 脚本显示错误信息并退出
|
||||
|
||||
### Requirement: SKILL.md 存在检查
|
||||
系统 SHALL 检查 build/SKILL.md 是否存在,不存在则提示错误。
|
||||
|
||||
#### Scenario: build/SKILL.md 不存在
|
||||
- **WHEN** build/SKILL.md 不存在
|
||||
- **THEN** 脚本显示错误信息并退出
|
||||
Reference in New Issue
Block a user