name: Label PR

# SECURITY: this workflow runs with write access to the base repo on fork PRs,
# because `pull_request_target` executes in the context of the base branch.
# Keep it metadata-only — do NOT add actions/checkout or any step that
# executes PR-supplied content (install scripts, build commands, etc.).
# See https://securitylab.github.com/resources/github-actions-preventing-pwn-requests/
on:
  pull_request_target:
    types: [opened, edited]

jobs:
  label:
    runs-on: ubuntu-latest
    permissions:
      pull-requests: write
    steps:
      - uses: actions/github-script@v7
        with:
          script: |
            const body = context.payload.pull_request.body || '';
            const labels = [];

            if (body.includes('[x] **Feature skill**'))       { labels.push('PR: Skill'); labels.push('PR: Feature'); }
            else if (body.includes('[x] **Utility skill**'))   labels.push('PR: Skill');
            else if (body.includes('[x] **Operational/container skill**')) labels.push('PR: Skill');
            else if (body.includes('[x] **Fix**'))             labels.push('PR: Fix');
            else if (body.includes('[x] **Simplification**'))  labels.push('PR: Refactor');
            else if (body.includes('[x] **Documentation**'))   labels.push('PR: Docs');

            if (body.includes('contributing-guide: v1')) labels.push('follows-guidelines');

            if (labels.length > 0) {
              await github.rest.issues.addLabels({
                owner: context.repo.owner,
                repo: context.repo.repo,
                issue_number: context.payload.pull_request.number,
                labels,
              });
            }
