name: Validate Frontmatter on: pull_request: paths: - '**/agents/*.md' - '**/skills/*/SKILL.md' - '**/commands/*.md' jobs: validate: # Fork PRs are auto-closed by close-external-prs.yml, so skip validation # for them entirely. This also prevents untrusted filenames from forks # from ever reaching the shell steps below. if: github.event.pull_request.head.repo.full_name == github.repository runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: oven-sh/setup-bun@v2 - name: Install dependencies run: cd .github/scripts && bun install yaml - name: Get changed frontmatter files id: changed env: GH_TOKEN: ${{ github.token }} PR_NUMBER: ${{ github.event.pull_request.number }} run: | # Use diff-filter=AMRC to exclude deleted files (D) - only Added, Modified, Renamed, Copied FILES=$(gh pr diff "$PR_NUMBER" --name-only --diff-filter=AMRC | grep -E '(agents/.*\.md|skills/.*/SKILL\.md|commands/.*\.md)$' || true) echo "files<> "$GITHUB_OUTPUT" echo "$FILES" >> "$GITHUB_OUTPUT" echo "EOF" >> "$GITHUB_OUTPUT" - name: Validate frontmatter if: steps.changed.outputs.files != '' env: FILES: ${{ steps.changed.outputs.files }} run: | printf '%s\n' "$FILES" | xargs bun .github/scripts/validate-frontmatter.ts