Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Release automation for Claw skills and website. Guides through version bumping, tagging, and release verification.
.claude/skills/prompt-security-claw-release/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | 95% | 0% |
| case-02 | ✗→✓ | ▲ Improved | 145% | 0% |
| case-07 | ✗→✓ | ▲ Improved | 200% | 0% |
| case-09 | ✗→✓ | ▲ Improved | 83% | 0% |
| case-10 | ✗→✓ | ▲ Improved | 126% | 0% |
Internal tool for releasing skills and managing the ClawSec catalog.
An internal tool by Prompt Security
Install with the Vercel Skills CLI for this harness:
bashnpx skills add prompt-security/clawsec --skill claw-release -a openclaw -y
bash, git, jq, ghFor standalone installs, verify the signed release manifest before trusting SKILL.md, skill.json, or the archive. The skill.json file is the package metadata/SBOM source, and the release pipeline signs checksums.json with the ClawSec release key.
bashset -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."
Only install or extract the archive after this verification succeeds.
| Release Type | Command | Tag Format | |-------------|---------|------------| | Skill release | ./scripts/release-skill.sh <name> <version> | <name>-v<version> | | Pre-release | ./scripts/release-skill.sh <name> 1.0.0-beta1 | <name>-v1.0.0-beta1 |
Ask what changed:
bash# 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
bash./scripts/release-skill.sh <skill-name> <new-version>
The script will:
bashgit push && git push origin <skill-name>-v<version>
After pushing, the CI/CD pipeline will:
Verify at:
https://github.com/prompt-security/clawsec/releases/tag/<skill-name>-v<version>If you need to undo before pushing:
bashgit tag -d <skill-name>-v<version> git reset --soft HEAD~1
git reset --soft preserves the release changes in your working tree so you can inspect or amend them without discarding data.
For beta, alpha, or release candidates:
bash./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
Pre-releases are automatically marked in GitHub Releases.
| Error | Solution | |-------|----------| | Tag already exists | Choose a different version number | | Version mismatch in CI | Ensure you used the release script (not manual tagging) | | SKILL.md version mismatch | Ensure you used the release script which updates both skill.json and SKILL.md | | Uncommitted changes | Commit or stash first: git stash or git add . && git commit | | skill.json not found | Verify skill directory path is correct |
Skills with "internal": true in their openclaw section:
This skill (claw-release) is an internal skill.
| Skill | Category | Internal | |-------|----------|----------| | clawsec-feed | security | No | | clawtributor | security | No | | openclaw-audit-watchdog | security | No | | soul-guardian | security | No | | claw-release | utility | Yes |
After release, confirm:
GNU AGPL v3.0 or later - See repository for details.
Built by the Prompt Security team.
Other measured skills in the registry, with their headline benchmark lift.