Repository navigation
feat: every skill lists the snippets that serve it, from snippets/ski… #10
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Plugin install check | |
| # ROADMAP 1.0 criterion: "Install paths that work and are tested" (#497). | |
| # Builds the plugin-dist tree, validates every manifest with Claude Code's own | |
| # validator in --strict mode, then installs both plugins into a throwaway | |
| # config directory and checks they are listed and enabled. On the weekly run | |
| # it also installs from the published plugin-dist branch, which is what users | |
| # actually add. No account or API key is involved: plugin commands are local. | |
| on: | |
| workflow_dispatch: | |
| schedule: | |
| - cron: "0 10 * * 3" # weekly, Wednesday 10:00 UTC | |
| push: | |
| branches: [main] | |
| paths: | |
| - ".claude-plugin/**" | |
| - ".cursor-plugin/**" | |
| - "live-session/**" | |
| - "skills/**" | |
| - "claude/**" | |
| - "exports/**" | |
| - "scripts/build_plugin_dist.py" | |
| - ".github/workflows/plugin-install.yml" | |
| pull_request: | |
| branches: [main] | |
| paths: | |
| - ".claude-plugin/**" | |
| - ".cursor-plugin/**" | |
| - "live-session/**" | |
| - "skills/**" | |
| - "claude/**" | |
| - "exports/**" | |
| - "scripts/build_plugin_dist.py" | |
| - ".github/workflows/plugin-install.yml" | |
| permissions: | |
| contents: read | |
| jobs: | |
| install: | |
| name: Validate and install the plugins (Claude Code) | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 15 | |
| env: | |
| CLAUDE_CODE_VERSION: "2.1.296" | |
| steps: | |
| - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7 | |
| - name: Install the Claude Code CLI (pinned) | |
| run: npm install -g "@anthropic-ai/claude-code@${CLAUDE_CODE_VERSION}" | |
| - name: Build plugin-dist and validate it strictly | |
| run: | | |
| set -euo pipefail | |
| python3 scripts/build_plugin_dist.py --out "$RUNNER_TEMP/dist" | |
| for target in "$RUNNER_TEMP/dist" "$RUNNER_TEMP/dist/live-session" \ | |
| "$RUNNER_TEMP/dist/.claude-plugin/marketplace.json"; do | |
| claude plugin validate --strict "$target" | |
| done | |
| - name: Install both plugins from the build into a clean profile | |
| env: | |
| CLAUDE_CONFIG_DIR: ${{ runner.temp }}/claude-cfg-local | |
| run: | | |
| set -euo pipefail | |
| claude plugin marketplace add "$RUNNER_TEMP/dist" | |
| claude plugin install blender-developer-tools@blender-developer-tools | |
| claude plugin install blender-live-session@blender-developer-tools | |
| list=$(claude plugin list) | |
| echo "$list" | |
| for p in blender-developer-tools@blender-developer-tools blender-live-session@blender-developer-tools; do | |
| echo "$list" | grep -qF "$p" || { echo "::error::$p is not listed after install"; exit 1; } | |
| done | |
| - name: Install from the published plugin-dist branch (weekly) | |
| if: github.event_name == 'schedule' || github.event_name == 'workflow_dispatch' | |
| env: | |
| CLAUDE_CONFIG_DIR: ${{ runner.temp }}/claude-cfg-published | |
| run: | | |
| set -euo pipefail | |
| claude plugin marketplace add "TMHSDigital/Blender-Developer-Tools@plugin-dist" | |
| claude plugin install blender-developer-tools@blender-developer-tools | |
| claude plugin install blender-live-session@blender-developer-tools | |
| claude plugin list | |
| report-scheduled-failure: | |
| # A red weekly cron otherwise goes unnoticed (#482, #538): open an issue, | |
| # or comment on the one already open. | |
| name: Report a failed weekly run | |
| needs: [install] | |
| if: >- | |
| always() && github.event_name == 'schedule' && | |
| (contains(needs.*.result, 'failure') || contains(needs.*.result, 'cancelled')) | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 5 | |
| permissions: | |
| issues: write | |
| steps: | |
| - name: Open or update the tracking issue | |
| env: | |
| GH_TOKEN: ${{ github.token }} | |
| GH_REPO: ${{ github.repository }} | |
| RUN_URL: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }} | |
| run: | | |
| set -euo pipefail | |
| title="Weekly plugin install check failed" | |
| body="Scheduled run: $RUN_URL | |
| Building, validating or installing the plugin failed; on the weekly run this includes installing from the published plugin-dist branch, which is what users add. | |
| Opened by plugin-install.yml (report-scheduled-failure). Close it once a weekly run is green." | |
| num=$(gh issue list --state open --search "\"$title\" in:title" --json number --jq '.[0].number // empty') | |
| if [ -n "$num" ]; then | |
| gh issue comment "$num" --body "$body" | |
| echo "commented on #$num" | |
| else | |
| gh issue create --title "$title" --body "$body" --label "bug,ci,priority: high" | |
| fi |