mirror of
https://github.com/prompt-security/clawsec.git
synced 2026-06-13 05:28:02 +03:00
fix(skills): namespace ClawHub skill slugs (#263)
* fix(release): map ClawHub publish slugs * fix(release): share skill platform parsing
This commit is contained in:
@@ -845,6 +845,7 @@ jobs:
|
||||
publishable: ${{ steps.publishable.outputs.publishable }}
|
||||
openclaw_skill: ${{ steps.publishable.outputs.openclaw_skill }}
|
||||
publish_clawhub: ${{ steps.publishable.outputs.publish_clawhub }}
|
||||
clawhub_slug: ${{ steps.publishable.outputs.clawhub_slug }}
|
||||
steps:
|
||||
- name: Parse tag
|
||||
id: parse
|
||||
@@ -942,10 +943,13 @@ jobs:
|
||||
PUBLISH_CLAWHUB=true
|
||||
fi
|
||||
|
||||
CLAWHUB_SLUG=$(node scripts/ci/resolve_clawhub_slug.mjs "$SKILL_PATH")
|
||||
|
||||
echo "internal=${INTERNAL}" >> $GITHUB_OUTPUT
|
||||
echo "openclaw_skill=${OPENCLAW_SKILL}" >> $GITHUB_OUTPUT
|
||||
echo "publish_clawhub=${PUBLISH_CLAWHUB}" >> $GITHUB_OUTPUT
|
||||
echo "publishable=${PUBLISHABLE}" >> $GITHUB_OUTPUT
|
||||
echo "clawhub_slug=${CLAWHUB_SLUG}" >> $GITHUB_OUTPUT
|
||||
|
||||
- name: Setup Node
|
||||
uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
|
||||
@@ -1318,6 +1322,7 @@ jobs:
|
||||
run: |
|
||||
set -euo pipefail
|
||||
SKILL_NAME="${{ steps.parse.outputs.skill_name }}"
|
||||
CLAWHUB_SLUG="${{ steps.publishable.outputs.clawhub_slug }}"
|
||||
VERSION="${{ steps.parse.outputs.version }}"
|
||||
REPO="${{ github.repository }}"
|
||||
TAG="${{ github.ref_name }}"
|
||||
@@ -1351,7 +1356,7 @@ jobs:
|
||||
|
||||
**Via ClawHub (recommended):**
|
||||
\`\`\`bash
|
||||
npx clawhub@latest install ${SKILL_NAME}
|
||||
npx clawhub@latest install ${CLAWHUB_SLUG}
|
||||
\`\`\`
|
||||
|
||||
**If you already have \`clawsec-suite\` installed:**
|
||||
@@ -1567,23 +1572,24 @@ jobs:
|
||||
SITE=${CLAWHUB_SITE:-https://clawhub.ai}
|
||||
REGISTRY=${CLAWHUB_REGISTRY:-$SITE}
|
||||
SKILL_NAME="${{ needs.release-tag.outputs.skill_name }}"
|
||||
CLAWHUB_SLUG="${{ needs.release-tag.outputs.clawhub_slug }}"
|
||||
VERSION="${{ needs.release-tag.outputs.version }}"
|
||||
export CLAWHUB_CONFIG_PATH="$HOME/.clawhub-ci/config.json"
|
||||
|
||||
set +e
|
||||
CLAWHUB_DISABLE_TELEMETRY=1 CLAWHUB_SITE="$SITE" CLAWHUB_REGISTRY="$REGISTRY" \
|
||||
clawhub inspect "$SKILL_NAME" --version "$VERSION" --json \
|
||||
clawhub inspect "$CLAWHUB_SLUG" --version "$VERSION" --json \
|
||||
> /tmp/clawhub-existing-version.json 2> /tmp/clawhub-existing-version.err
|
||||
STATUS=$?
|
||||
set -e
|
||||
|
||||
if [ "$STATUS" -eq 0 ]; then
|
||||
echo "::error::ClawHub already contains ${SKILL_NAME}@${VERSION}. Bump the version before tagging."
|
||||
echo "::error::ClawHub already contains ${CLAWHUB_SLUG}@${VERSION}. Bump the version before tagging."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if grep -Eqi "Version not found|Skill not found" /tmp/clawhub-existing-version.err; then
|
||||
echo "No existing ${SKILL_NAME}@${VERSION} detected in ClawHub. Proceeding."
|
||||
echo "No existing ${CLAWHUB_SLUG}@${VERSION} detected in ClawHub. Proceeding."
|
||||
else
|
||||
echo "::error::Failed to verify ClawHub version precondition."
|
||||
cat /tmp/clawhub-existing-version.err
|
||||
@@ -1598,6 +1604,7 @@ jobs:
|
||||
REGISTRY=${CLAWHUB_REGISTRY:-$SITE}
|
||||
SKILL_PATH="${{ needs.release-tag.outputs.skill_path }}"
|
||||
SKILL_NAME="${{ needs.release-tag.outputs.skill_name }}"
|
||||
CLAWHUB_SLUG="${{ needs.release-tag.outputs.clawhub_slug }}"
|
||||
VERSION="${{ needs.release-tag.outputs.version }}"
|
||||
NAME=$(jq -r '.name' "$SKILL_PATH/skill.json")
|
||||
CHANGELOG="Release ${VERSION} via CI"
|
||||
@@ -1606,7 +1613,7 @@ jobs:
|
||||
|
||||
if ! CLAWHUB_DISABLE_TELEMETRY=1 CLAWHUB_SITE="$SITE" CLAWHUB_REGISTRY="$REGISTRY" \
|
||||
clawhub publish "$SKILL_PATH" \
|
||||
--slug "$SKILL_NAME" \
|
||||
--slug "$CLAWHUB_SLUG" \
|
||||
--name "$NAME" \
|
||||
--version "$VERSION" \
|
||||
--changelog "$CHANGELOG" \
|
||||
@@ -1616,7 +1623,7 @@ jobs:
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "✓ Successfully published $SKILL_NAME@$VERSION to ClawHub"
|
||||
echo "✓ Successfully published $SKILL_NAME@$VERSION to ClawHub as $CLAWHUB_SLUG"
|
||||
|
||||
republish-clawhub:
|
||||
# Manual workflow to republish a specific tag to ClawHub
|
||||
@@ -1643,6 +1650,12 @@ jobs:
|
||||
|
||||
echo "Parsed tag: skill=${SKILL_NAME}, version=${VERSION}"
|
||||
|
||||
- name: Checkout workflow helpers
|
||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||||
|
||||
- name: Prepare ClawHub slug helper
|
||||
run: cp scripts/ci/resolve_clawhub_slug.mjs "$RUNNER_TEMP/resolve_clawhub_slug.mjs"
|
||||
|
||||
- name: Checkout tag
|
||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||||
with:
|
||||
@@ -1672,6 +1685,8 @@ jobs:
|
||||
exit 1
|
||||
fi
|
||||
|
||||
CLAWHUB_SLUG=$(node "$RUNNER_TEMP/resolve_clawhub_slug.mjs" "$SKILL_PATH")
|
||||
echo "clawhub_slug=${CLAWHUB_SLUG}" >> $GITHUB_OUTPUT
|
||||
echo "Skill is publishable to ClawHub"
|
||||
|
||||
- name: Setup Node
|
||||
@@ -1750,18 +1765,19 @@ jobs:
|
||||
REGISTRY=${CLAWHUB_REGISTRY:-$SITE}
|
||||
SKILL_PATH="${{ steps.parse.outputs.skill_path }}"
|
||||
SKILL_NAME="${{ steps.parse.outputs.skill_name }}"
|
||||
CLAWHUB_SLUG="${{ steps.publishable.outputs.clawhub_slug }}"
|
||||
VERSION="${{ steps.parse.outputs.version }}"
|
||||
NAME=$(jq -r '.name' "$SKILL_PATH/skill.json")
|
||||
CHANGELOG="Manual republish of ${VERSION} via workflow_dispatch"
|
||||
|
||||
export CLAWHUB_CONFIG_PATH="$HOME/.clawhub-ci/config.json"
|
||||
|
||||
echo "Publishing $SKILL_NAME@$VERSION to ClawHub..."
|
||||
echo "Publishing $SKILL_NAME@$VERSION to ClawHub as $CLAWHUB_SLUG..."
|
||||
|
||||
# Publish with idempotent retry handling
|
||||
if ! CLAWHUB_DISABLE_TELEMETRY=1 CLAWHUB_SITE="$SITE" CLAWHUB_REGISTRY="$REGISTRY" \
|
||||
clawhub publish "$SKILL_PATH" \
|
||||
--slug "$SKILL_NAME" \
|
||||
--slug "$CLAWHUB_SLUG" \
|
||||
--name "$NAME" \
|
||||
--version "$VERSION" \
|
||||
--changelog "$CHANGELOG" \
|
||||
|
||||
Reference in New Issue
Block a user