| 123456789101112131415161718192021222324252627282930313233343536373839404142 |
- 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<<EOF" >> "$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
|