Reusable workflows: workflow_call, no copies el YAML entre repos
Resumen
on.workflow_call define un workflow llamable. jobs.<id>.uses: org/repo/.github/workflows/ci.yml@v1 lo invoca. Un agente que pega el mismo ci.yml en 8 repos no versiona el pin. Distinct de workflow_dispatch. Docs GitHub reusing workflows.

Qué resuelve
Esta pieza se queda en la decisión práctica: qué instalar, qué riesgo agrega y cómo aplicarlo sin romper operación.
workflow_dispatch es el botón. workflow_call es función: otro workflow lo llama con uses:.
Pin SHA o tag, no @main. Un agente que apunta a main del repo de org se come el próximo commit roto.
El curso instalar un agente no cubre reusable. gh pr no versiona el pin.
Receta callee
# .github/workflows/ci.yml
on:
workflow_call:
inputs:
node:
type: string
default: "22"
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/setup-node@v4
with:
node-version: ${{ inputs.node }}
Caller:
jobs:
ci:
uses: org/tooling/.github/workflows/ci.yml@a1b2c3d
with:
node: "22"
secrets: inherit
secrets: inherit pasa los secrets del caller. No lo uses en un workflow público que un fork pueda llamar.

Qué no hacer
- Copiar 200 líneas de ci.yml a cada repo “por ahora”.
workflow_callypull_requesten el mismo file sin entender que el callee no tiene el evento del caller igual.- Nested reusables más allá de lo que GitHub permite (documenta el límite).
Receta AGENTS.md
Reusable workflows: uses: owner/repo/.github/workflows/file.yml@sha
Never pin @main. secrets: inherit only for trusted callers.
Do not duplicate CI YAML across repos if a callee exists.

FAQ
¿outputs? El callee declara on.workflow_call.outputs. El caller lee needs.ci.outputs.*.
¿permissions? El caller fija permissions: del job uses. El callee no sube privilegios solo.
¿local? uses: ./.github/workflows/ci.yml en el mismo repo. Sigue siendo un call.
Verificado 2026-09-03 contra GitHub Docs reusing workflows y on.workflow_call.
Lecturas relacionadas
Sigue explorando Coding Agents y otras piezas para builders.



