feat: extend PR review with independent acceptance checks #1414
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: Check Extensions | |
| on: | |
| pull_request: | |
| branches: ["*"] | |
| push: | |
| branches: ["main", "master"] | |
| jobs: | |
| validate-claude-code: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@v4 | |
| - name: Setup Node.js | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: "20" | |
| - name: Install Claude Code CLI | |
| run: npm install -g @anthropic-ai/claude-code | |
| - name: Validate all plugins with Claude Code | |
| run: | | |
| failed=0 | |
| for plugin_dir in plugins/*/; do | |
| if [ -d "${plugin_dir}.plugin" ]; then | |
| echo "Validating ${plugin_dir}..." | |
| if ! claude plugin validate "${plugin_dir}"; then | |
| echo "❌ Validation failed for ${plugin_dir}" | |
| failed=1 | |
| else | |
| echo "✅ ${plugin_dir} is valid" | |
| fi | |
| fi | |
| done | |
| if [ "$failed" -ne 0 ]; then | |
| echo "::error::One or more plugins failed Claude Code validation" | |
| exit 1 | |
| fi | |
| sync-extensions: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@v4 | |
| - name: Setup Python | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: "3.12" | |
| - name: Install dependencies | |
| run: pip install pyyaml | |
| - name: Check extensions are in sync | |
| run: python scripts/sync_extensions.py --check | |
| sync-sdk-skill: | |
| permissions: | |
| contents: read | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@v4 | |
| - name: Setup Python | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: "3.12" | |
| - name: Check SDK skill is up to date | |
| env: | |
| GITHUB_TOKEN: ${{ github.token }} | |
| run: python scripts/sync_openhands_sdk_skill.py --check |