mcpField
C
claw-release

claw-release

github.com/prompt-securityクラウド・DevOps1.1k178 回インストール今日更新
リポジトリ

claw-release について

claw-releaseは、ClawSecカタログを管理する内部メンテナー向けのスキルリリースツールです。スクリプトでバージョンを更新してGitタグを作成し、GitHub Releasesで公開する手順と成果物の検証方法を扱います。

主な機能

  1. 01スキルのリリース手順を実行
  2. 02パッケージと説明ファイルの版を更新
  3. 03Gitタグの作成とプッシュ
  4. 04署名済みマニフェストと成果物の検証

活用シーン

  1. 01スキルの修正・機能版の公開
  2. 02プレリリース版の準備
  3. 03GitHub Releaseの状態確認

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/prompt-security/clawsec --skill claw-release

インストール後、Claude Code で/claw-releaseを入力して読み込まれたか確認します。

詳細

Claw Release

スキルのリリースと ClawSec カタログの管理を行う内部ツールです。

Prompt Security の内部ツール


Vercel Skills のインストール

このハーネスには、Vercel Skills CLI を使ってインストールします。

npx skills add prompt-security/clawsec --skill claw-release -a openclaw -y

運用上の注意

  • 内部のメンテナー向けワークフローのみを対象としています。
  • 必要なランタイム:bash、git、jq、gh
  • 必要な認証情報:リリースを作成する権限を持つ、認証済みの GitHub CLI
  • 副作用:コミット、タグの作成、リモートへのプッシュ、GitHub Releases への公開を行います。
  • 信頼モデル:信頼できるチェックアウトからのみ、作業ツリーがクリーンで、メンテナーの承認を得ている場合に実行してください。

リリース成果物の検証

スタンドアロンでインストールする場合は、SKILL.md、skill.json、またはアーカイブを信頼する前に、署名済みリリースマニフェストを検証してください。skill.json ファイルはパッケージのメタデータ/SBOM のソースであり、リリースパイプラインは ClawSec リリースキーを使って checksums.json に署名します。

set -euo pipefail

SKILL_NAME="claw-release"
VERSION="0.0.4"
REPO="prompt-security/clawsec"
TAG="${SKILL_NAME}-v${VERSION}"
BASE="https://github.com/${REPO}/releases/download/${TAG}"
ZIP_NAME="${SKILL_NAME}-v${VERSION}.zip"
TMP_DIR="$(mktemp -d)"
trap 'rm -rf "$TMP_DIR"' EXIT

RELEASE_PUBKEY_SHA256="711424e4535f84093fefb024cd1ca4ec87439e53907b305b79a631d5befba9c8"

curl -fsSL "$BASE/checksums.json" -o "$TMP_DIR/checksums.json"
curl -fsSL "$BASE/checksums.sig" -o "$TMP_DIR/checksums.sig"
curl -fsSL "$BASE/signing-public.pem" -o "$TMP_DIR/signing-public.pem"
curl -fsSL "$BASE/$ZIP_NAME" -o "$TMP_DIR/$ZIP_NAME"
curl -fsSL "$BASE/SKILL.md" -o "$TMP_DIR/SKILL.md"
curl -fsSL "$BASE/skill.json" -o "$TMP_DIR/skill.json"

ACTUAL_PUBKEY_SHA256="$(openssl pkey -pubin -in "$TMP_DIR/signing-public.pem" -outform DER | shasum -a 256 | awk '{print $1}')"
if [ "$ACTUAL_PUBKEY_SHA256" != "$RELEASE_PUBKEY_SHA256" ]; then
  echo "ERROR: signing-public.pem fingerprint mismatch" >&2
  exit 1
fi

openssl base64 -d -A -in "$TMP_DIR/checksums.sig" -out "$TMP_DIR/checksums.sig.bin"
openssl pkeyutl -verify -rawin -pubin \
  -inkey "$TMP_DIR/signing-public.pem" \
  -sigfile "$TMP_DIR/checksums.sig.bin" \
  -in "$TMP_DIR/checksums.json" >/dev/null

hash_file() {
  if command -v shasum >/dev/null 2>&1; then
    shasum -a 256 "$1" | awk '{print $1}'
  else
    sha256sum "$1" | awk '{print $1}'
  fi
}

verify_manifest_file() {
  asset="$1"
  path="$2"
  expected="$(jq -r --arg asset "$asset" '.files[$asset].sha256 // empty' "$TMP_DIR/checksums.json")"
  if [ -z "$expected" ]; then
    echo "ERROR: checksums.json missing $asset" >&2
    exit 1
  fi
  actual="$(hash_file "$path")"
  if [ "$actual" != "$expected" ]; then
    echo "ERROR: checksum mismatch for $asset" >&2
    exit 1
  fi
}

expected_archive="$(jq -r '.archive.sha256 // empty' "$TMP_DIR/checksums.json")"
if [ -z "$expected_archive" ]; then
  echo "ERROR: checksums.json missing archive.sha256" >&2
  exit 1
fi
actual_archive="$(hash_file "$TMP_DIR/$ZIP_NAME")"
if [ "$actual_archive" != "$expected_archive" ]; then
  echo "ERROR: archive checksum mismatch" >&2
  exit 1
fi

verify_manifest_file "SKILL.md" "$TMP_DIR/SKILL.md"
verify_manifest_file "skill.json" "$TMP_DIR/skill.json"

echo "Signed release manifest, archive, SKILL.md, and skill.json verified."

この検証が成功した場合にのみ、アーカイブをインストールまたは展開してください。

クイックリファレンス

リリースタイプコマンドタグ形式
スキルのリリース./scripts/release-skill.sh <name> <version><name>-v<version>
プレリリース./scripts/release-skill.sh <name> 1.0.0-beta1<name>-v1.0.0-beta1

リリースワークフロー

ステップ 1:バージョンの種類を決める

変更内容を確認します。

  • バグ修正のみ → パッチ(1.0.0 → 1.0.1)
  • 新機能、後方互換性あり → マイナー(1.0.0 → 1.1.0)
  • 破壊的変更 → メジャー(1.0.0 → 2.0.0)
  • テスト中/不安定 → プレリリース(1.0.0-beta1、1.0.0-rc1)
ステップ 2:リリース前の確認
# Check for uncommitted changes
git status

# Verify skill directory exists
ls skills/<skill-name>/skill.json

# Get current version
jq -r '.version' skills/<skill-name>/skill.json
ステップ 3:リリーススクリプトを実行
./scripts/release-skill.sh <skill-name> <new-version>

スクリプトは以下を行います。

  1. バージョン形式を検証します(semver)。
  2. タグがすでに存在しないことを確認します。
  3. skill.json のバージョンを更新します。
  4. SKILL.md のフロントマターのバージョンを更新します(ファイルが存在する場合)。
  5. ハードコードされたバージョン URL(feed_url)を更新します。
  6. 変更をコミットします。
  7. 注釈付き git タグを作成します。
ステップ 4:リリースをプッシュ
git push && git push origin <skill-name>-v<version>
ステップ 5:リリースを検証

プッシュ後、CI/CD パイプラインは以下を行います。

  1. スキルが存在することを検証します。
  2. バージョンが skill.json と一致することを確認します。
  3. バージョンが SKILL.md のフロントマターと一致することを確認します(存在する場合)。
  4. SBOM からチェックサムを生成します。
  5. .skill パッケージ(ZIP)を作成します。
  6. GitHub Release を作成します。
  7. ウェブサイトの再ビルドを開始します(内部向けではないスキルの場合)。

以下で確認してください。

  • GitHub Releases: https://github.com/prompt-security/clawsec/releases/tag/<skill-name>-v<version>
  • GitHub Actions: ワークフローの実行ステータスを確認します。

リリースを取り消す(プッシュ前)

プッシュ前に取り消す必要がある場合:

git tag -d <skill-name>-v<version>
git reset --soft HEAD~1

git reset --soft はリリースの変更を作業ツリーに保持するため、データを破棄せずに確認したり、修正したりできます。


プレリリースバージョン

ベータ版、アルファ版、またはリリース候補版の場合:

./scripts/release-skill.sh <skill-name> 1.2.0-beta1
./scripts/release-skill.sh <skill-name> 1.2.0-alpha1
./scripts/release-skill.sh <skill-name> 1.2.0-rc1

プレリリースは GitHub Releases で自動的にプレリリースとしてマークされます。


よくある問題

エラー解決策
Tag already exists別のバージョン番号を選んでください。
Version mismatch in CI手動でタグを付けず、リリーススクリプトを使用したことを確認してください。
SKILL.md version mismatchskill.json と SKILL.md の両方を更新するリリーススクリプトを使用したことを確認してください。
Uncommitted changes先にコミットまたはスタッシュしてください:git stash または git add . && git commit
skill.json not foundスキルのディレクトリパスが正しいことを確認してください。

内部スキル

openclaw セクションに "internal": true が設定されたスキルは、以下のとおりです。

  • 通常どおり GitHub Releases からリリースされます。
  • 公開スキルカタログのウェブサイトには表示されません。
  • リリース URL から直接ダウンロードできます。

このスキル(claw-release)は内部スキルです。


既存のスキル

スキルカテゴリ内部
clawsec-feedセキュリティいいえ
clawtributorセキュリティいいえ
openclaw-audit-watchdogセキュリティいいえ
soul-guardianセキュリティいいえ
claw-releaseユーティリティはい

検証チェックリスト

リリース後、以下を確認してください。

  • GitHub リリースが正しいタグで作成されている
  • リリースに次のものが含まれている:skill.json、SKILL.md、checksums.json、.skill パッケージ
  • 該当する場合、リリースがプレリリースとしてマークされている
  • GitHub Actions のワークフローが正常に完了している
  • ウェブサイトが更新されている(内部向けスキルを除く)

ライセンス

GNU AGPL v3.0 or later - 詳細はリポジトリをご覧ください。

Prompt Security チームによって構築されました。

コメント