Skill Open Sourcer(技能开源发布器)
将一个本地技能变成一个干净的公开发布包。通常的输入仅为一个 SKILL.md 文件路径或技能目录。
默认姿态:快速行动,但在遇到发布风险时停下。如果安全扫描发现机密、私有路径、客户数据、未发布的专有材料或模糊的所有权,则报告阻塞项,在用户解决之前不进行发布。
快速开始
- 将输入解析为真实的技能目录。接受
SKILL.md文件、包含SKILL.md的文件夹,或位于.codex/skills、.agents/skills、.claude/skills或其他本地技能根目录下的符号链接。 - 在打包或发布前运行环境检查:
SKILL_OPEN_SOURCER_DIR="${CODEX_HOME:-$HOME/.codex}/skills/skill-open-sourcer"
python3 "$SKILL_OPEN_SOURCER_DIR/scripts/check_release_env.py"
需要的本地命令为 python3、git、node 和 npx。gh 是默认的本地 GitHub 发布界面,但 GitHub MCP/应用或现有的已验证远程仓库可替代它。如果没有可用的 GitHub 发布界面,则在本地构建并验证仓库,然后因缺少设置而停止。
- 读取技能入口点,并检查直接引用的
scripts/、references/、assets/和agents/文件。不要复制不相关的本地文件夹。 - 运行安全扫描器:
SKILL_OPEN_SOURCER_DIR="${CODEX_HOME:-$HOME/.codex}/skills/skill-open-sourcer"
python3 "$SKILL_OPEN_SOURCER_DIR/scripts/scan_skill_release.py" /path/to/skill-or-SKILL.md
- 如果环境和安全扫描都通过,则在源技能目录之外创建一个新的发布仓库。
- 对于单一技能仓库,直接将
SKILL.md、agents/、references/、scripts/和assets/复制到仓库根目录。仅当是多个技能的合集仓库时,才使用skills/<skill-name>/加上skills.sh.json的布局。 - 添加
references/release-package.md中描述的公共发布文件,包括 README 质量门控和 GitHub 元数据建议。 - 在发布前,验证打包的技能和
npx skills列表。 - 当低风险检查通过时发布到 GitHub,然后生成发布文案。
在编写发布仓库前,请阅读 references/release-package.md。
输出契约
成功发布时,返回:
- GitHub 仓库 URL。
- 使用
npx skills的安装命令。 - 技能验证和
npx skills add <owner>/<repo> --list的验证结果。 - 简短的风险摘要:扫描了什么,移除了什么或清理了什么,以及任何残留的假设。
- 创建新公共仓库时的 GitHub 描述和主题建议。
- 发布文案:至少一条 X/Twitter 帖子,以及当用户使用中文工作时的可选中文版本。
如果被阻塞,返回:
- 阻塞项列表,包括文件路径和原因。
- 建议的清理步骤。
- 最安全的下一步操作,通常是“清理这些文件,然后重新运行发布”。
安全规则
当源包中出现以下任何一项时,硬停止:
- API 密钥、令牌、私钥、cookie、凭证、
.env文件或认证配置。 - 绝对个人路径,如
/Users/...、/home/...、本地 vault 路径或仅限机器的缓存路径,这些会混淆公共用户。 - 客户名称、私有公司数据、内部文档、私有 URL、未发布的提示词或没有明确许可的付费/专有资产。
- 逃逸出包的符号链接、大型二进制文件、数据库、日志、浏览器配置文件、
.DS_Store、__pycache__或生成的缓存文件。 - 捆绑代码/资产的不明确许可或所有权。
仅当扫描器和人工审查未发现阻塞项时,才允许低风险自动发布。如果目标 GitHub 仓库已存在且包含无关内容,则停止并在覆盖或强制推送前询问用户。
打包规则
- 保持原始技能行为不变。仅进行必要的重构,以移除私有假设并确保公共安装的可靠性。
- 默认对单个公共技能采用扁平根目录布局。仅当一个仓库发布多个技能时,才使用嵌套的
skills/<skill-name>/布局。 - 优先使用精简的
SKILL.md;仅当代理确实需要时,才将详细的公共指南移入references/。 - 不要在技能文件夹内添加 README。将面向人类的文档放在发布仓库根目录。
- 当存在
agents/openai.yaml时保留它。如果不存在,则创建它,包含display_name、short_description和一个明确提及$<skill-name>的default_prompt。 - 仅包含技能实际使用的确定性辅助逻辑,才包含
scripts/。 - 仅当许可和大小适合公开发布时,才包含
assets/。 - 仅当源技能没有冲突的许可且所有权明确时,使用 MIT 作为默认许可。
发布流程
- 运行
scripts/check_release_env.py。当更新现有本地仓库时,添加--repo-dir <release-repo>。当不确定包/网络访问时,添加--check-npx-skills。 - 如果缺少所需命令,则停止并报告确切的阻塞项。如果仅缺少
gh,则仅在 GitHub MCP/应用可用或发布仓库已有经过验证的origin远程时继续。 - 在本地构建发布仓库。
- 当可用时,使用系统技能验证器进行验证:
python3 "${CODEX_HOME:-$HOME/.codex}/skills/.system/skill-creator/scripts/quick_validate.py" .
- 使用可用的 GitHub 界面(
gh、GitHub MCP/应用或现有远程)创建或更新 GitHub 仓库。避免强制推送。 - 推送分支或
main。 - 验证列表:
npx skills add <owner>/<repo> --list
- 如果列表工作正常,提供安装命令:
npx skills add <owner>/<repo> -g -a codex --skill <skill-name> -y
当目标平台不是 Codex 时,调整代理标志和安装措辞。
发布文案
成功发布后,起草简明的社交媒体文案,说明:
- 该技能解决的问题。
- 用户输入什么。
- 它发布或自动化了什么。
- 安装命令或仓库链接。
- 一个具体的请求示例。
对于中文用户,包括一条自然的中文发布帖子。保持面向人类;不要过度解释脚本。