GitHub安全公告维护技能

386554 801365 更新时间: 2026-07-15 14:05:52

该技能是OpenClaw个人AI助手生态系统中的一个组件,专门用于维护GitHub安全公告(GHSA)。它帮助开发者高效管理、创建和更新安全公告,确保开源项目的安全性。通过自动化流程,减少手动操作错误,提升安全响应速度。适用于需要频繁处理安全漏洞报告、发布安全补丁和协调安全披露的GitHub项目维护者。

安装
bunx skills add https://github.com/openclaw/openclaw.git --skill openclaw-ghsa-maintainer
技能详情 readonly

一、技能概述

该技能用于 OpenClaw 项目中与 GitHub 安全公告(GHSA)相关的所有操作,涵盖从获取公告状态、验证私有 fork、准备 Markdown/JSON 负载,到最终发布和验证的完整流程。

核心原则

  • 在审查或发布仓库安全公告之前,必须先阅读 SECURITY.md

  • 任何发布操作前必须征得许可

  • 该技能仅限 GHSA 工作,不得用于稳定版或 Beta 版发布


二、核心功能

1. 获取与检查公告状态

获取当前安全公告和最新的已发布 npm 版本:

gh api /repos/openclaw/openclaw/security-advisories/
npm view openclaw version --userconfig "$(mktemp)"

使用获取的输出确认公告状态、关联的私有 fork 以及漏洞负载结构

2. 验证私有 fork PR 已关闭

在发布之前,必须验证公告的私有 fork 没有打开的 PR:

fork=$(gh api /repos/openclaw/openclaw/security-advisories/ | jq -r .private_fork.full_name)
gh pr list -R "$fork" --state open

PR 列表在发布前必须为空

3. 安全地准备公告 Markdown 和 JSON

  • 写入公告 Markdown:通过 heredoc 写入临时文件,不要使用转义的 \n 字符串

  • 构建 PATCH 负载 JSON:使用 jq 构建,不要手动转义 shell JSON

示例模式:

cat > /tmp/ghsa.desc.md <<'EOF'
EOF
jq -n --rawfile desc /tmp/ghsa.desc.md \
'{summary,severity,description:$desc,vulnerabilities:[...]}' \
> /tmp/ghsa.patch.json

4. 按正确顺序应用 PATCH 调用

  • 不要在同一 PATCH 调用中同时设置 severity 和 cvss_vector_string

  • 当公告需要这两个字段时,使用单独的调用

  • 通过 PATCH 公告并设置 "state":"published" 来发布——没有独立的 /publish 端点

示例:

gh api -X PATCH /repos/openclaw/openclaw/security-advisories/ \
  --input /tmp/ghsa.patch.json

5. 发布后验证

发布后,重新获取公告并确认:

  • state=published

  • published_at 已设置

  • 描述中不包含字面转义的 \\n

验证模式:

gh api /repos/openclaw/openclaw/security-advisories/ |
  jq -r .description < /tmp/ghsa.refetch.json | rg '\\\\n'

三、主要用途

  1. 审查安全公告:获取并检查现有的 GHSA 公告状态和漏洞负载

  2. 修补安全公告:更新公告的摘要、严重等级、描述和漏洞信息

  3. 发布安全公告:将草案状态的公告正式发布为公开 GHSA

  4. 验证私有 fork 状态:确保发布前私有 fork 中没有未关闭的 PR

  5. 确认发布成功:发布后验证 state、published_at 和描述格式


四、常见陷阱(Footguns)

技能文档明确列出了以下常见问题

陷阱 说明
HTTP 422 发布失败 缺少必填字段,或私有 fork 仍有打开的 PR
Shell 中看似正确的负载实际错误 Markdown 用转义换行符字符串组装时可能出错
PATCH 顺序问题 GHSA API 约束要求某些字段分开更新
公开硬编码/不发布评论 草案文本应避免原始 commit hash、PR 标题/编号和修复机制摘要。优先使用 patched-version 字段或仅发布措辞;将 SHA、PR 和实现说明保留在内部证据中

五、重要原则

  1. 先读 SECURITY.md:在审查或发布公告前必须阅读安全策略

  2. 发布前必须征得许可:任何 publish 操作前都要询问

  3. 仅限 GHSA:该技能不得用于稳定版或 Beta 版发布

  4. 私有 fork PR 必须为空:发布前必须确认

  5. 使用 heredoc 和 jq:安全地准备 Markdown 和 JSON,避免手动转义

  6. 分离 severity 和 cvss_vector_string:不要在同一 PATCH 调用中同时设置

  7. 发布通过 PATCH state=published:没有独立的 publish 端点

  8. 发布后验证描述格式:确认不包含 \\n


六、总结

OpenClaw GHSA Maintainer 是 OpenClaw 项目中专门用于 GitHub 安全公告(GHSA)维护与发布的技能,覆盖从获取公告状态、验证私有 fork、安全准备 Markdown/JSON 负载,到按正确顺序 PATCH 发布和最终验证的完整工作流。它与常规发布工作严格分离,强调先读安全策略、发布前征得许可、私有 fork 必须干净等安全原则,并明确列出了 HTTP 422、转义换行符、PATCH 顺序等常见陷阱。该技能适用于 OpenClaw 维护者在处理安全漏洞、发布安全公告和管理私有 fork 的场景。