diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 700546bb..e834d6e0 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -36,6 +36,7 @@ jobs: outputs: rust: ${{ steps.filter.outputs.rust }} nix: ${{ steps.filter.outputs.nix }} + skills: ${{ steps.filter.outputs.skills }} steps: - uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4 - uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3 @@ -52,6 +53,8 @@ jobs: nix: - 'flake.nix' - 'flake.lock' + skills: + - 'skills/**' test: name: Test @@ -190,6 +193,27 @@ jobs: echo "::warning::Skills are out of date — the hourly auto-sync PR will fix this automatically." fi + lint-skills: + name: Lint Skills + needs: changes + if: needs.changes.outputs.skills == 'true' || github.event_name == 'push' + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4 + + - name: Validate skills + run: | + failed=0 + for skill_dir in skills/*/; do + if ! uvx --from skills-ref@0.1.1 agentskills validate "$skill_dir"; then + failed=1 + fi + done + if [ "$failed" -ne 0 ]; then + echo "::error::One or more skills failed validation." + exit 1 + fi + build-linux: name: Build (Linux x86_64) needs: changes