name: Test Plugin Installation on: push: pull_request: workflow_dispatch: jobs: validate-skills: name: Validate skill content runs-on: ubuntu-latest steps: - uses: actions/checkout@v6 with: fetch-depth: 0 - name: Set up Node.js uses: actions/setup-node@v6 with: node-version: '24' - name: Validate all skills run: node scripts/validate-skills.js - name: Test skill lint rules run: node --test scripts/lib/skill-lint-test.js - name: Validate manifest versions run: node scripts/validate-versions.js - name: Test manifest version validator run: node --test scripts/validate-versions-test.js - name: Test skill eval runner run: node --test scripts/run-evals-test.js - name: Run skill evals (trigger + routing) run: node scripts/run-evals.js --min-rank1 95 - name: Validate references/ links in skills run: node scripts/validate-reference-links.js - name: Test reference-link validator run: node --test scripts/validate-reference-links-test.js - name: Test floor-guard reference run: node --test scripts/floor-guard-reference-test.js - name: Test session-start hook payload run: bash hooks/session-start-test.sh validate-commands: name: Validate command parity and description sync runs-on: ubuntu-latest steps: - uses: actions/checkout@v6 - name: Set up Node.js uses: actions/setup-node@v6 with: node-version: '24' - name: Validate commands across all tool directories run: node scripts/validate-commands.js - name: Test command validator run: node --test scripts/validate-commands-test.js - name: Validate spec/plan/todo artifact paths run: node scripts/validate-artifact-paths.js - name: Test artifact-path validator run: node --test scripts/validate-artifact-paths-test.js # Ubuntu coverage stays in the existing jobs above, preserving their check names. validate-platforms: name: Validate tooling (${{ matrix.os }}) runs-on: ${{ matrix.os }} strategy: fail-fast: false matrix: os: [macos-latest, windows-latest] steps: - uses: actions/checkout@v6 with: fetch-depth: 0 - name: Set up Node.js uses: actions/setup-node@v6 with: node-version: '24' - name: Test validators and eval runner run: >- node --test scripts/lib/skill-lint-test.js scripts/validate-versions-test.js scripts/run-evals-test.js scripts/validate-reference-links-test.js scripts/validate-commands-test.js scripts/validate-artifact-paths-test.js scripts/floor-guard-reference-test.js - name: Validate all skills run: node scripts/validate-skills.js - name: Validate manifest versions run: node scripts/validate-versions.js - name: Validate references/ links in skills run: node scripts/validate-reference-links.js - name: Validate commands across all tool directories run: node scripts/validate-commands.js - name: Validate spec/plan/todo artifact paths run: node scripts/validate-artifact-paths.js - name: Run skill evals (trigger + routing) run: node scripts/run-evals.js --min-rank1 95 test-hooks: name: Hook regression tests runs-on: ubuntu-latest steps: - uses: actions/checkout@v6 - name: Test sdd-cache hooks (stubbed curl, no network) run: bash hooks/sdd-cache-test.sh - name: Test simplify-ignore hook run: bash hooks/simplify-ignore-test.sh validate: name: Validate plugin structure needs: [validate-skills, validate-commands, validate-platforms] runs-on: ubuntu-latest steps: - uses: actions/checkout@v6 - name: Install Claude Code run: npm install -g @anthropic-ai/claude-code - name: Validate marketplace and plugin manifests run: claude plugin validate . test-install: name: Test plugin installation runs-on: ubuntu-latest needs: validate steps: - uses: actions/checkout@v6 - name: Install Claude Code run: npm install -g @anthropic-ai/claude-code - name: Configure git to use HTTPS run: git config --global url."https://github.com/".insteadOf "git@github.com:" - name: Add marketplace run: claude plugin marketplace add ./ - name: List marketplaces run: claude plugin marketplace list - name: Install plugin run: claude plugin install agent-skills@addy-agent-skills --scope user