- name
- edit-workflow
- description
- Apply repository conventions when editing GitHub Actions workflows.
# Edit Workflow
GitHub Actions conventions. Run this skill before modifying workflow files in `.github/`.
## Action Version Pinning (Required)
All actions must be pinned to commit SHA with version comment:
```yaml
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
```
- Never use version tags alone (`@v4` is wrong)
- Local actions (`./.github/actions/*`) are exempt from pinning
## Runner Selection
Self-hosted runners (`[self-hosted-ghr, size-*-x64]`) are a shared EF devops
pool — reserve them for jobs that need the capacity. Non-critical or low-load
jobs belong on GitHub-hosted runners (`ubuntu-latest`), which also avoids a
provisioning wait (~2.5 min) if the self-hosted warm pool is exhausted.
- **Pattern**: lightweight job (short runtime, no heavy parallelism) →
`ubuntu-latest` (e.g. `spec-tools` in #3177).
- **Anti-pattern**: defaulting a quick gate, lint, or cache-restore job to
`size-xl-x64` "to be safe".
- **Exception**: a job may need self-hosted for reasons other than load, e.g.
Docker Hub pulls from GHR egress IPs to dodge per-IP rate limits (#3185
keeps push runs self-hosted while PR runs use `ubuntu-latest`).
If unsure which runner a job needs, flag it and ask instead of guessing.
## Validation
Run `just lint-actions` before committing to validate YAML syntax and structure.
Ver en GitHub