name: Claude Code Plugin Checks # On PRs this is invoked by ci-gate.yml (the single required check); # push-to-main and manual runs remain standalone. on: workflow_dispatch: push: branches: [main] paths: - 'integrations/claude-code-plugin/**' - '.github/workflows/claude-code-plugin-checks.yml' workflow_call: jobs: test: runs-on: ubuntu-latest strategy: fail-fast: false matrix: python-version: ["3.10", "3.11", "3.12"] steps: - uses: actions/checkout@v4 - name: Set up Python ${{ matrix.python-version }} uses: actions/setup-python@v5 with: python-version: ${{ matrix.python-version }} - name: Install test tooling run: pip install pytest ruff # The plugin itself has zero runtime dependencies — nothing else to install. - name: Check manifests are valid JSON working-directory: integrations/claude-code-plugin run: | for f in .claude-plugin/plugin.json .mcp.json hooks/hooks.json; do jq empty "$f" || (echo "Invalid JSON: $f" && exit 1) done - name: Lint working-directory: integrations/claude-code-plugin run: python3 -m ruff check . - name: Run tests working-directory: integrations/claude-code-plugin run: python3 -m pytest tests -q