name: Publish Skill

on:
  release:
    types: [published]

jobs:
  publish:
    runs-on: ubuntu-latest
    permissions:
      contents: write
      pull-requests: write
      issues: write
    steps:
      - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
      - name: Prepare skill package
        id: package
        shell: bash
        run: |
          SOURCE_DIR="skills/my-skill"
          PACKAGE_DIR="publish-package-${GITHUB_RUN_ID}-${GITHUB_RUN_ATTEMPT}"
          mkdir -p "${PACKAGE_DIR}/references" "${PACKAGE_DIR}/schemas"
          cp "${SOURCE_DIR}/SKILL.md" "${SOURCE_DIR}/skill.json" "${PACKAGE_DIR}/"
          if [[ -f "${SOURCE_DIR}/apis.json" ]]; then
            cp "${SOURCE_DIR}/apis.json" "${PACKAGE_DIR}/"
          fi
          if [[ -f "${SOURCE_DIR}/llms.txt" ]]; then
            cp "${SOURCE_DIR}/llms.txt" "${PACKAGE_DIR}/"
          fi
          if [[ -d "${SOURCE_DIR}/references" ]]; then
            shopt -s nullglob
            reference_files=("${SOURCE_DIR}"/references/*.md)
            if (( ${#reference_files[@]} > 0 )); then
              cp "${reference_files[@]}" "${PACKAGE_DIR}/references/"
            fi
          fi
          if [[ -f "${SOURCE_DIR}/schemas/skill.schema.json" ]]; then
            cp "${SOURCE_DIR}/schemas/skill.schema.json" "${PACKAGE_DIR}/schemas/"
          fi
          echo "dir=${PACKAGE_DIR}" >> "$GITHUB_OUTPUT"
      - name: Resolve publish version
        id: version
        shell: bash
        run: |
          RELEASE_TAG="${{ github.event.release.tag_name }}"
          if [[ -n "${RELEASE_TAG}" ]]; then
            RESOLVED_VERSION="${RELEASE_TAG#v}"
          else
            RESOLVED_VERSION="$(node -p "require('./skills/my-skill/skill.json').version")"
          fi
          echo "version=${RESOLVED_VERSION}" >> "$GITHUB_OUTPUT"
      - name: Publish skill package
        uses: hashgraph-online/skill-publish@9742f4cab7ca48683d39dcd16f92ec7dfe565df7
        with:
          mode: publish
          api-key: ${{ secrets.RB_API_KEY }}
          skill-dir: ${{ steps.package.outputs.dir }}
          version: ${{ steps.version.outputs.version }}
          annotate: "true"
          submit-indexnow: "true"
          github-token: ${{ github.token }}
