name: Docs Site Checks on: # No paths filter — the job must always run so the required check # reports a status (path-gated workflows leave checks "pending" forever # when no matching files change, which blocks merge). pull_request: branches: [main] workflow_dispatch: permissions: contents: read jobs: docs-site-checks: runs-on: ubuntu-latest steps: - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 with: fetch-depth: 0 # full history so detect-changes can diff base...head # Skip the site build on PRs that touch nothing the docs site is built # from (website/, skills/, optional-skills/). The job still reports green # (only the steps below are skipped) so the required check never hangs. - name: Detect affected areas id: changes uses: ./.github/actions/detect-changes - uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4 if: steps.changes.outputs.site == 'true' with: node-version: 22 cache: npm cache-dependency-path: website/package-lock.json - name: Install website dependencies if: steps.changes.outputs.site == 'true' uses: ./.github/actions/retry with: command: npm ci working-directory: website - uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0 if: steps.changes.outputs.site == 'true' with: python-version: "3.11" - name: Install ascii-guard if: steps.changes.outputs.site == 'true' uses: ./.github/actions/retry with: command: python -m pip install ascii-guard==2.3.0 pyyaml==6.0.3 - name: Extract skill metadata for dashboard if: steps.changes.outputs.site == 'true' run: python3 website/scripts/extract-skills.py - name: Regenerate per-skill docs pages + catalogs if: steps.changes.outputs.site == 'true' run: python3 website/scripts/generate-skill-docs.py - name: Lint docs diagrams if: steps.changes.outputs.site == 'true' run: npm run lint:diagrams working-directory: website - name: Build Docusaurus if: steps.changes.outputs.site == 'true' run: npm run build working-directory: website