技能 generate-sparkle-appcast
📦

generate-sparkle-appcast

中风险 ⚡ 包含脚本🌐 网络访问📁 文件系统访问🔑 环境变量⚙️ 外部命令

生成已签名的 Sparkle Appcasts

发布 Mos 版本需要有效的 Sparkle appcast、已签名的 zip 元数据,以及托管的发行说明。此技能会根据最新的构建 zip、git 历史记录和 Sparkle 签名密钥自动生成这些文件。

支持: Claude Codex Code(CC)
⚠️ 50
1

下载技能 ZIP

2

在 Claude 中上传

前往 Settings → Capabilities → Skills → Upload skill

3

开启并开始使用

测试它

正在使用“generate-sparkle-appcast”。 为自上一个发布 commit 以来的最新稳定版 zip 生成 appcast。

预期结果:

该工作流会选择最新的 Mos zip,创建本地化发行说明,对归档文件进行签名,写入 build/appcast.xml,并将发布文件复制到 docs 中。

正在使用“generate-sparkle-appcast”。 准备 beta 发布 appcast。

预期结果:

生成的 appcast 包含 beta 通道元数据、发行说明链接、版本字段、下载大小和 Sparkle 签名信息。

正在使用“generate-sparkle-appcast”。 发布前审查发布产物。

预期结果:

  • 所选 zip 和发布 tag 摘要
  • 生成的 appcast 路径和 docs 复制路径
  • 中文和英文发行说明文件位置

安全审计

中风险
v6 • 6/28/2026

Static analysis found many command, filesystem, network, environment, and sensitive-key patterns. Review confirms the script is a plausible release automation tool, but it handles a Sparkle private signing key and writes temporary key material, so publication should include a clear security warning.

2
已扫描文件
521
分析行数
10
发现项
6
审计总数
中风险问题 (2)
Private Sparkle Signing Key Handling
The script requires a Sparkle private key, reads it into a shell variable, passes the base64 seed to Python as a process argument, and writes DER and PEM key material in a temporary directory before signing the zip. This is legitimate for appcast generation, but it exposes sensitive signing material to local process inspection and temporary storage risks.
Release Automation Executes Local Commands
The script runs python3, git, openssl, wc, date, cp, mkdir, mktemp, and rm to inspect the build zip, derive release notes, sign the archive, and write appcast files. Arguments are mostly quoted and Python subprocess calls do not use a shell, but running this skill still grants broad local command and filesystem effects.
低风险问题 (3)
Hardcoded URLs Are Publication Targets
The GitHub and Mos URLs are used to build appcast download links, release notes links, and XML namespace metadata. I did not find evidence that the script performs outbound network requests or exfiltrates data to those URLs.
Markdown Backticks Misclassified As Shell Execution
Many SKILL.md findings are Markdown command examples and file paths inside backticks. They document expected usage and outputs rather than executable code in the skill file itself.
Weak Cryptography Flags Are False Positives
The weak cryptography findings point at XML description text and appcast fields, while the actual signature flow uses Ed25519 through OpenSSL. I did not find evidence of MD5, SHA1, DES, RC4, or another weak algorithm in the reviewed script.

检测到的模式

Sensitive Key Material In Temporary FilesGenerated Release Files Written Into Build And Docs
审计者: codex 查看审计历史 →

质量评分

45
架构
100
可维护性
87
内容
70
社区
49
安全
83
规范符合性

你能构建什么

发布稳定版 Mos

在创建已公证的稳定版 zip 后,生成 appcast 和托管的发行说明。

发布 Beta 更新通道

创建将 beta 构建标记为 Sparkle beta 通道的 appcast 元数据。

准备本地发布产物

在提交 docs 更新或发布 GitHub release 之前,生成用于审查的文件。

试试这些提示

从上一个版本生成
使用 generate-sparkle-appcast skill,通过 --since <previous-release-commit> 创建 Mos appcast。向我显示生成的文件路径和任何错误。
检查发布输入
在运行 appcast 脚本之前,验证 build、docs、最新的 Mos zip、git、python3、openssl 和 sparkle_private_key.txt 是否可用。
审查生成的说明
生成 appcast,然后总结为此 tag 写入的中文和英文发行说明。
审计发布元数据
针对选定的 commit 范围运行 appcast 工作流,然后验证 tag、下载 URL、版本字段、文件长度、发行说明链接和 Ed25519 签名字段。

最佳实践

  • 仅在受信任且对签名密钥访问受限的发布机器上运行该脚本。
  • 在提交 docs 更改之前,审查生成的发行说明和 appcast 元数据。
  • 每当 zip 被重新构建、重新打包或重新签名时,都重新运行该脚本。

避免

  • 不要使用不受信任的 Sparkle 私钥文件运行该脚本。
  • 在确认 GitHub release tag 和 asset 名称之前,不要发布生成的 appcast。
  • 不要将此工作流用于不匹配 Mos build 和 docs 布局的仓库。

常见问题

这个技能会生成什么?
它会为 Mos 发布生成 Sparkle appcast XML 以及中文和英文发行说明文件。
它会将文件上传到 GitHub 吗?
不会。它会写入本地文件并构建必须与 GitHub release asset 匹配的 URL。
为什么它需要私钥?
Sparkle 需要发布归档文件的 Ed25519 签名,以便客户端可以验证更新。
它可以生成 beta appcast 吗?
可以。beta 文件名会使生成的 appcast 包含 beta 通道元数据。
我可以提供自定义发行说明吗?
可以。使用文档中说明的发行说明文件环境变量,指向现有 HTML 文件。
在任何 workspace 中运行它都是安全的吗?
不可以。它会执行本地命令并处理签名密钥,因此请使用可信的发布环境。

开发者详情

文件结构