The reusable workflows section is a great addition. One thing I’ve found useful is treating the workflow interface almost like an API: keep inputs and outputs explicit, document the expected permissions, and avoid making the reusable workflow depend on repository-specific assumptions. That makes it much easier to reuse the same workflow across projects without creating hidden coupling. The combination of reusable workflows, caching, and concurrency can make a surprisingly big difference as a project grows.
The reusable-workflow section is missing one option worth naming: secrets: inherit instead of listing each secret name explicitly. Handy once a caller needs a dozen secrets, but it also means every secret available to the caller becomes available to the callee, which is a real governance tradeoff once a shared workflow lives in a repo with anything sensitive in it. Worth deciding per-repo rather than defaulting to it.
Lukas Mueller
Setting concurrency groups with cancel-in-progress on pull requests saves a lot of runner time. It prevents older commits from queuing up duplicate test runs when developers push rapid fixup commits.