Agent Skillsopenclaw/openclaw › openclaw-ghsa-maintainer

openclaw-ghsa-maintainer

GitHub

用于管理 OpenClaw 仓库的 GitHub Security Advisories 工作流,涵盖获取状态、验证私有分支、构建补丁及发布确认等安全合规操作。

.agents/skills/openclaw-ghsa-maintainer/SKILL.md openclaw/openclaw

Trigger Scenarios

需要审查或发布 GHSA 安全公告时 执行安全漏洞修复流程时

Install

npx skills add openclaw/openclaw --skill openclaw-ghsa-maintainer -g -y
More Options

Non-standard path

npx skills add https://github.com/openclaw/openclaw/tree/main/.agents/skills/openclaw-ghsa-maintainer -g -y

Use without installing

npx skills use openclaw/openclaw@openclaw-ghsa-maintainer

指定 Agent (Claude Code)

npx skills add openclaw/openclaw --skill openclaw-ghsa-maintainer -a claude-code -g -y

安装 repo 全部 skill

npx skills add openclaw/openclaw --all -g -y

预览 repo 内 skill

npx skills add openclaw/openclaw --list

SKILL.md

Frontmatter
{
    "name": "openclaw-ghsa-maintainer",
    "description": "Inspect, patch, validate, publish, or confirm OpenClaw GHSA security advisories and private-fork state."
}

OpenClaw GHSA Maintainer

Use this skill for repo security advisory workflow only. Keep general release work in release-openclaw-maintainer.

Respect advisory guardrails

  • Before reviewing or publishing a repo advisory, read SECURITY.md.
  • Ask permission before any publish action.
  • Treat this skill as GHSA-only. Do not use it for stable or beta release work.

Fetch and inspect advisory state

Fetch the current advisory and the latest published npm version:

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

Use the fetch output to confirm the advisory state, linked private fork, and vulnerability payload shape before patching.

Verify private fork PRs are closed

Before publishing, verify that the advisory's private fork has no open PRs:

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

The PR list must be empty before publish.

Prepare advisory Markdown and JSON safely

  • Write advisory Markdown via heredoc to a temp file. Do not use escaped \n strings.
  • Build PATCH payload JSON with jq, not hand-escaped shell JSON.

Example pattern:

cat > /tmp/ghsa.desc.md <<'EOF'
<markdown description>
EOF

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

Apply PATCH calls in the correct sequence

  • Do not set severity and cvss_vector_string in the same PATCH call.
  • Use separate calls when the advisory requires both fields.
  • Publish by PATCHing the advisory and setting "state":"published". There is no separate /publish endpoint.

Example shape:

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

Publish and verify success

After publish, re-fetch the advisory and confirm:

  • state=published
  • published_at is set
  • the description does not contain literal escaped \\n

Verification pattern:

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

Common GHSA footguns

  • Publishing fails with HTTP 422 if required fields are missing or the private fork still has open PRs.
  • A payload that looks correct in shell can still be wrong if Markdown was assembled with escaped newline strings.
  • Advisory PATCH sequencing matters; separate field updates when GHSA API constraints require it.
  • Public hardening/no-publish comments and draft text should avoid raw commit hashes, PR titles/numbers, and fix-mechanism summaries. Prefer patched-version fields or release-only wording; keep SHAs, PRs, and implementation notes in internal evidence.

Version History

  • 3374458 Current 2026-08-20 13:29

Same Skill Collection

.agents/skills/agent-transcript/SKILL.md
.agents/skills/auto-qa/SKILL.md
.agents/skills/autoreview/SKILL.md
.agents/skills/channel-message-flows/SKILL.md
.agents/skills/claw-score/SKILL.md
.agents/skills/clawdtributor/SKILL.md
.agents/skills/clawsweeper/SKILL.md
.agents/skills/control-ui-e2e/SKILL.md
.agents/skills/crabbox/SKILL.md
.agents/skills/deslop/SKILL.md
.agents/skills/discord-clawd/SKILL.md
.agents/skills/discord-user-post/SKILL.md
.agents/skills/discrawl/SKILL.md
.agents/skills/gitcrawl/SKILL.md
.agents/skills/graincrawl/SKILL.md
.agents/skills/notcrawl/SKILL.md
.agents/skills/openclaw-changelog-update/SKILL.md
.agents/skills/openclaw-ci-limits/SKILL.md
.agents/skills/openclaw-debugging/SKILL.md
.agents/skills/openclaw-docker-e2e-authoring/SKILL.md
.agents/skills/openclaw-live-updater/SKILL.md
.agents/skills/openclaw-parallels-smoke/SKILL.md
.agents/skills/openclaw-pr-maintainer/SKILL.md
.agents/skills/openclaw-qa-testing/SKILL.md
.agents/skills/openclaw-refactor-docs/SKILL.md
.agents/skills/openclaw-release-validation/SKILL.md
.agents/skills/openclaw-repair-sweep/SKILL.md
.agents/skills/openclaw-secret-scanning-maintainer/SKILL.md
.agents/skills/openclaw-test-heap-leaks/SKILL.md
.agents/skills/openclaw-test-performance/SKILL.md
.agents/skills/openclaw-testing/SKILL.md
.agents/skills/parallels-discord-roundtrip/SKILL.md
.agents/skills/prototype-openclaw-tui/SKILL.md
.agents/skills/release-openclaw-announcement/SKILL.md
.agents/skills/release-openclaw-ci/SKILL.md
.agents/skills/release-openclaw-mac/SKILL.md
.agents/skills/release-openclaw-maintainer/SKILL.md
.agents/skills/release-openclaw-nightly/SKILL.md
.agents/skills/release-openclaw-plugin-testing/SKILL.md
.agents/skills/security-triage/SKILL.md
.agents/skills/slacrawl/SKILL.md
.agents/skills/tag-duplicate-prs-issues/SKILL.md
.agents/skills/technical-documentation/SKILL.md
.agents/skills/telegram-crabbox-e2e-proof/SKILL.md
.agents/skills/test-audit/SKILL.md
.agents/skills/verify-release/SKILL.md
custodian-skills/add-model-provider/SKILL.md
custodian-skills/cloud-image-bake/SKILL.md
custodian-skills/configure-channel/SKILL.md

Metadata

Files
0
Version
3374458
Hash
d516ee15
Indexed
2026-08-20 13:29

Главная - Вики-сайт
Copyright © 2011-2026 iteam. Current version is 2.155.2. UTC+08:00, 2026-08-30 04:43
浙ICP备14020137号-1 $Гость$